mozilla-aarch64-bmo-810631.patch
changeset 748 72ba5129e5fd
parent 746 b441942b2a3f
child 751 8517d10e87ab
child 762 f20576d5885a
equal deleted inserted replaced
746:b441942b2a3f 748:72ba5129e5fd
     1 
       
     2 # HG changeset patch
       
     3 # User Ryan VanderMeulen <ryanvm@gmail.com>
       
     4 # Date 1395835684 14400
       
     5 # Node ID 1c6abf8c653a8788f5f2cb30779e46647ac8d504
       
     6 # Parent  9afe2a1145bd2962684186fe78d0fc4773630144
       
     7 Bug 810631 - Update libffi to version 3.1rc1.
       
     8 
       
     9 diff --git a/js/src/ctypes/libffi/ChangeLog b/js/src/ctypes/libffi/ChangeLog
       
    10 --- a/js/src/ctypes/libffi/ChangeLog
       
    11 +++ b/js/src/ctypes/libffi/ChangeLog
       
    12 @@ -1,4259 +1,4883 @@
       
    13 -2010-08-05  Dan Witte  <dwitte@mozilla.com>
       
    14 -
       
    15 -        * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the
       
    16 -        debug CRT when --enable-debug is given.
       
    17 -        * configure.ac: Define it.
       
    18 -        * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately.
       
    19 -
       
    20 -2010-08-04  Dan Witte  <dwitte@mozilla.com>
       
    21 -
       
    22 -	* src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64
       
    23 -	platforms.
       
    24 -	* src/x86/ffi.c: Remove redundant ifdef checks.
       
    25 -	* src/prep_cif.c: Push stack space computation into src/x86/ffi.c
       
    26 -	for X86_ANY so return value space doesn't get added twice.
       
    27 -
       
    28 -2010-08-03  Neil Rashbrooke <neil@parkwaycc.co.uk>
       
    29 -
       
    30 -	* msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy.
       
    31 -
       
    32 -2010-07-22  Dan Witte  <dwitte@mozilla.com>
       
    33 -
       
    34 -	* src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI.
       
    35 -	* src/prep_cif.c: Fix ABI assertion.
       
    36 -        * src/cris/ffi.c: Ditto.
       
    37 -
       
    38 -2010-07-10  Evan Phoenix  <evan@fallingsnow.net>
       
    39 -
       
    40 -	* src/closures.c (selinux_enabled_check): Fix strncmp usage bug.
       
    41 -
       
    42 -2010-07-07  Dan Horák <dan@danny.cz>
       
    43 -
       
    44 -	* include/ffi.h.in: Protect #define with #ifndef.
       
    45 -	* src/powerpc/ffitarget.h: Ditto.
       
    46 -	* src/s390/ffitarget.h: Ditto.
       
    47 -	* src/sparc/ffitarget.h: Ditto.
       
    48 -
       
    49 -2010-05-11  Dan Witte  <dwitte@mozilla.com>
       
    50 -
       
    51 -	* doc/libffi.tex: Document previous change.
       
    52 -
       
    53 -2010-05-11  Makoto Kato <m_kato@ga2.so-net.ne.jp>
       
    54 -
       
    55 -	* src/x86/ffi.c (ffi_call): Don't copy structs passed by value.
       
    56 -
       
    57 -2010-05-05  Michael Kohler <michaelkohler@live.com>
       
    58 -
       
    59 -	* src/dlmalloc.c (dlfree): Fix spelling.
       
    60 -	* src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto.
       
    61 -	* configure.ac: Ditto.
       
    62 -	* configure: Rebuilt.
       
    63 -
       
    64 -2010-04-13  Dan Witte  <dwitte@mozilla.com>
       
    65 -
       
    66 -	* msvcc.sh: Build with -W3 instead of -Wall.
       
    67 -	* src/powerpc/ffi_darwin.c: Remove build warnings.
       
    68 -	* src/x86/ffi.c: Ditto.
       
    69 -	* src/x86/ffitarget.h: Ditto.
       
    70 -
       
    71 -2010-03-30  Dan Witte  <dwitte@mozilla.com>
       
    72 -
       
    73 -	* msvcc.sh: Disable build warnings.
       
    74 -	* README (tested): Clarify windows build procedure.
       
    75 -
       
    76 -2010-03-14  Matthias Klose  <doko@ubuntu.com>
       
    77 -
       
    78 -	* src/x86/ffi64.c: Fix typo in comment.
       
    79 -	* src/x86/ffi.c: Use /* ... */ comment style.
       
    80 -
       
    81 -2010-07-07   Neil Roberts <neil@linux.intel.com>
       
    82 -
       
    83 -	* src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to
       
    84 -	16-bytes.
       
    85 -
       
    86 -2010-07-02  Jakub Jelinek  <jakub@redhat.com>
       
    87 -
       
    88 -	* Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes.
       
    89 -	* Makefile.in: Regenerated.
       
    90 -
       
    91 -2010-05-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
    92 -
       
    93 -	* configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as
       
    94 -	output, too.
       
    95 -	(libffi_cv_as_ascii_pseudo_op): Check for .ascii.
       
    96 -	(libffi_cv_as_string_pseudo_op): Check for .string.
       
    97 -	* configure: Regenerate.
       
    98 -	* fficonfig.h.in: Regenerate.
       
    99 -	* src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.
       
   100 -
       
   101 -2010-04-07  Jakub Jelinek  <jakub@redhat.com>
       
   102 -
       
   103 -	* regex.c (byte_re_match_2_internal): Avoid set but not used
       
   104 -	warning.
       
   105 -
       
   106 -2010-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
   107 -
       
   108 -	* Makefile.in: Regenerate.
       
   109 -	* aclocal.m4: Regenerate.
       
   110 -	* include/Makefile.in: Regenerate.
       
   111 -	* man/Makefile.in: Regenerate.
       
   112 -	* testsuite/Makefile.in: Regenerate.
       
   113 -
       
   114 -2010-03-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
   115 -
       
   116 -	* configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
       
   117 -	* configure: Regenerate.
       
   118 -	* fficonfig.h.in: Regenerate.
       
   119 -	* libffi/src/x86/unix64.S (.eh_frame)
       
   120 -	[HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.
       
   121 -
       
   122 -2010-02-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
   123 -
       
   124 -	* doc/libffi.texi (The Closure API): Fix typo.
       
   125 -	* doc/libffi.info: Remove.
       
   126 -
       
   127 -2010-02-15  Matthias Klose  <doko@ubuntu.com>
       
   128 -
       
   129 -	* src/arm/sysv.S (__ARM_ARCH__): Define for processor
       
   130 -	__ARM_ARCH_7EM__.
       
   131 -
       
   132 -2010-01-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
   133 -
       
   134 -	PR libffi/40701
       
   135 -	* testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL,
       
   136 -	PRIuLL, PRId64, PRIu64, PRIuPTR): Define.
       
   137 -	* testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on
       
   138 -	alpha*-dec-osf*.
       
   139 -	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
       
   140 -	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
   141 -	* testsuite/libffi.call/return_ll1.c: Likewise.
       
   142 -	* testsuite/libffi.call/stret_medium2.c: Likewise.
       
   143 -	* testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast
       
   144 -	MAP_FAILED to char *.
       
   145 -
       
   146 -2010-01-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
   147 -
       
   148 -	* src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__.
       
   149 -
       
   150 -2009-12-31  Anthony Green  <green@redhat.com>
       
   151 -
       
   152 -	* README: Update for libffi 3.0.9.
       
   153 -
       
   154 -2009-12-27  Matthias Klose  <doko@ubuntu.com>
       
   155 -
       
   156 -	* configure.ac (HAVE_LONG_DOUBLE): Define for mips when
       
   157 -	appropriate.
       
   158 -	* configure: Rebuilt.
       
   159 -
       
   160 -2009-12-26  Anthony Green  <green@redhat.com>
       
   161 -
       
   162 -	* testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for
       
   163 -	avr32*-*-*.
       
   164 -	* testsuite/libffi.call/cls_double_va.c: Ditto.
       
   165 -
       
   166 -2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
       
   167 -
       
   168 -	* testsuite/libffi.call/ffitest.h: Conditionally include stdint.h
       
   169 -	and inttypes.h.
       
   170 -	* testsuite/libffi.special/unwindtest.cc: Ditto.
       
   171 -
       
   172 -2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
       
   173 -
       
   174 -	* configure.ac: Add amd64-*-openbsd*.
       
   175 -	* configure: Rebuilt.
       
   176 -	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Link
       
   177 -	openbsd programs with -lpthread.
       
   178 -
       
   179 -2009-12-26  Anthony Green  <green@redhat.com>
       
   180 -
       
   181 -	* testsuite/libffi.call/cls_double_va.c,
       
   182 -	testsuite/libffi.call/cls_longdouble.c,
       
   183 -	testsuite/libffi.call/cls_longdouble_va.c,
       
   184 -	testsuite/libffi.call/cls_pointer.c,
       
   185 -	testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for
       
   186 -	mips*-*-* and arm*-*-*.
       
   187 -	* testsuite/libffi.call/cls_align_longdouble_split.c,
       
   188 -	testsuite/libffi.call/cls_align_longdouble_split2.c,
       
   189 -	testsuite/libffi.call/stret_medium2.c,
       
   190 -	testsuite/libffi.call/stret_medium.c,
       
   191 -	testsuite/libffi.call/stret_large.c,
       
   192 -	testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*.
       
   193 -
       
   194 -2009-12-31  Kay Tietz  <ktietz70@googlemail.com>
       
   195 -
       
   196 -	* testsuite/libffi.call/ffitest.h,
       
   197 -	testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix
       
   198 -	definitions.
       
   199 -
       
   200 -2009-12-31  Carlo Bramini  <carlo.bramix@libero.it>
       
   201 -
       
   202 -	* configure.ac (AM_LTLDFLAGS): Define for windows hosts.
       
   203 -	* Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS.
       
   204 -	* configure: Rebuilt.
       
   205 -	* Makefile.in: Rebuilt.
       
   206 -
       
   207 -2009-12-31  Anthony Green  <green@redhat.com>
       
   208 -	    Blake Chaffin.
       
   209 -
       
   210 -	* testsuite/libffi.call/huge_struct.c: New test case from Blake
       
   211 -	Chaffin @ Apple.
       
   212 -
       
   213 -2009-12-28  David Edelsohn  <edelsohn@gnu.org>
       
   214 -
       
   215 -	* src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to
       
   216 -	local variables.
       
   217 -	(aix_adjust_aggregate_sizes): New function.
       
   218 -	(ffi_prep_cif_machdep): Call it.
       
   219 -
       
   220 -2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
       
   221 -
       
   222 -	* configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
       
   223 -	* configure: Regenerate.
       
   224 -	* fficonfig.h.in: Likewise.
       
   225 -	* src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
       
   226 -	Solaris/x86.
       
   227 -
       
   228 -2009-12-26  Andreas Schwab  <schwab@linux-m68k.org>
       
   229 -
       
   230 -	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
       
   231 -	when a float arguments is passed in memory.
       
   232 -	(ffi_closure_helper_SYSV): Mark general registers as used up when
       
   233 -	a 64bit or soft-float long double argument is passed in memory.
       
   234 -
       
   235 -2009-12-25  Matthias Klose  <doko@ubuntu.com>
       
   236 -
       
   237 -	* man/ffi_call.3: Fix #include in examples.
       
   238 -	* doc/libffi.texi: Add dircategory.
       
   239 -
       
   240 -2009-12-25  Frank Everdij <f.p.x.everdij@tudelft.nl>
       
   241 -
       
   242 -	* include/ffi.h.in: Placed '__GNUC__' ifdef around
       
   243 -	'__attribute__((aligned(8)))' in ffi_closure, fixes compile for
       
   244 -	IRIX MIPSPro c99.
       
   245 -	* include/ffi_common.h: Added '__sgi' define to non
       
   246 -	'__attribute__((__mode__()))' integer typedefs.
       
   247 -	* src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32,
       
   248 -	ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check.
       
   249 -	(ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added
       
   250 -	FFI_LONGDOUBLE support and alignment(N32 only).
       
   251 -	* src/mips/ffitarget.h: Corrected '#include <sgidefs.h>' for IRIX and
       
   252 -	fixed non '__attribute__((__mode__()))' integer typedefs.
       
   253 -	* src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame'
       
   254 -	since they are Linux/GNU Assembler specific.
       
   255 -
       
   256 -2009-12-25  Bradley Smith  <brad@brad-smith.co.uk>
       
   257 -
       
   258 -	* configure.ac, Makefile.am, src/avr32/ffi.c,
       
   259 -	src/avr32/ffitarget.h,
       
   260 -	src/avr32/sysv.S: Add AVR32 port.
       
   261 -	* configure, Makefile.in: Rebuilt.
       
   262 -
       
   263 -2009-12-21  Andreas Tobler  <a.tobler@schweiz.org>
       
   264 -
       
   265 -	* configure.ac: Make i?86 build on FreeBSD and OpenBSD.
       
   266 -	* configure: Regenerate.
       
   267 -
       
   268 -2009-12-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
   269 -
       
   270 -	* testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX.
       
   271 -
       
   272 -2009-12-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
   273 -
       
   274 -	* src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
       
   275 -	type on HP-UX.
       
   276 -
       
   277 -2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
       
   278 -
       
   279 -	* src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long
       
   280 -	double' arguments.
       
   281 -
       
   282 -2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
       
   283 -
       
   284 -	* testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10.
       
   285 -
       
   286 -2009-12-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
   287 -
       
   288 -	PR libffi/40700
       
   289 -	* src/closures.c [X86_64 && __sun__ && __svr4__]
       
   290 -	(FFI_MMAP_EXEC_WRIT): Define.
       
   291 -
       
   292 -2009-12-08  David Daney  <ddaney@caviumnetworks.com>
       
   293 -
       
   294 -	* testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-*
       
   295 -	* testsuite/libffi.call/cls_align_longdouble_split2.c: Same.
       
   296 -	* testsuite/libffi.call/stret_large.c: Same.
       
   297 -	* testsuite/libffi.call/cls_align_longdouble_split.c: Same.
       
   298 -	* testsuite/libffi.call/stret_large2.c: Same.
       
   299 -	* testsuite/libffi.call/stret_medium2.c: Same.
       
   300 -
       
   301 -2009-12-07  David Edelsohn  <edelsohn@gnu.org>
       
   302 -
       
   303 -	* src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump
       
   304 -	typo.
       
   305 -
       
   306 -2009-12-05  David Edelsohn  <edelsohn@gnu.org>
       
   307 -
       
   308 -	* src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64
       
   309 -	code.
       
   310 -	* src/powerpc/aix_closure.S: Same.
       
   311 -
       
   312 -2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
   313 -
       
   314 -	* Makefile.in: Regenerate.
       
   315 -	* configure: Regenerate.
       
   316 -	* include/Makefile.in: Regenerate.
       
   317 -	* man/Makefile.in: Regenerate.
       
   318 -	* testsuite/Makefile.in: Regenerate.
       
   319 -
       
   320 -2009-12-04  David Edelsohn  <edelsohn@gnu.org>
       
   321 -
       
   322 -	* src/powerpc/aix_closure.S: Reorganize 64-bit code to match
       
   323 -	linux64_closure.S.
       
   324 -
       
   325 -2009-12-04  Uros Bizjak  <ubizjak@gmail.com>
       
   326 -
       
   327 -	PR libffi/41908
       
   328 -	* src/x86/ffi64.c (classify_argument): Update from
       
   329 -	gcc/config/i386/i386.c.
       
   330 -	(ffi_closure_unix64_inner): Do not use the address of two consecutive
       
   331 -	SSE registers directly.
       
   332 -	* testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail
       
   333 -	for x86_64 linux targets.
       
   334 -
       
   335 -2009-12-04  David Edelsohn  <edelsohn@gnu.org>
       
   336 -
       
   337 -	* src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment
       
   338 -	pfr for long double split between fpr13 and stack.
       
   339 -
       
   340 -2009-12-03  David Edelsohn  <edelsohn@gnu.org>
       
   341 -
       
   342 -	* src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and
       
   343 -	fparg_count twice for long double.
       
   344 -
       
   345 -2009-12-03  David Edelsohn  <edelsohn@gnu.org>
       
   346 -
       
   347 -	PR libffi/42243
       
   348 -	* src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses.
       
   349 -
       
   350 -2009-12-03  Uros Bizjak  <ubizjak@gmail.com>
       
   351 -
       
   352 -	* testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string.
       
   353 -	Remove xfails for x86 linux targets.
       
   354 -
       
   355 -2009-12-02  David Edelsohn  <edelsohn@gnu.org>
       
   356 -
       
   357 -	* src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64
       
   358 -	case.
       
   359 -
       
   360 -2009-12-01  David Edelsohn  <edelsohn@gnu.org>
       
   361 -
       
   362 -	* src/powerpc/aix.S (ffi_call_AIX): Convert to more standard
       
   363 -	register usage.  Call ffi_prep_args directly.  Add long double
       
   364 -	return value support.
       
   365 -	* src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment
       
   366 -	applies to FFI_TYPE_DOUBLE.  Correct fpr_base increment typo.
       
   367 -	Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases.
       
   368 -	(ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit
       
   369 -	mode.
       
   370 -	(ffi_closure_helper_DARWIN): Remove nf and ng counters.  Move temp
       
   371 -	into case.
       
   372 -	* src/powerpc/aix_closure.S: Maintain 16 byte stack alignment.
       
   373 -	Allocate result area between params and FPRs.
       
   374 -
       
   375 -2009-11-30  David Edelsohn  <edelsohn@gnu.org>
       
   376 -
       
   377 -	PR target/35484
       
   378 -	* src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and
       
   379 -	AIX64.
       
   380 -	* src/powerpc/aix.S: Implement AIX64 version.
       
   381 -	* src/powerpc/aix_closure.S: Implement AIX64 version.
       
   382 -	(ffi_closure_ASM): Use extsb, lha and displament addresses.
       
   383 -	* src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64
       
   384 -	support.
       
   385 -	(ffi_prep_cif_machdep): Same.
       
   386 -	(ffi_call): Same.
       
   387 -	(ffi_closure_helper_DARWIN): Same.
       
   388 -
       
   389 -2009-11-02  Andreas Tobler  <a.tobler@schweiz.org>
       
   390 -
       
   391 -	PR libffi/41908
       
   392 -	* testsuite/libffi.call/testclosure.c: New test.
       
   393 -
       
   394 -2009-09-28  Kai Tietz  <kai.tietz@onevision.com>
       
   395 -
       
   396 -	* src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu
       
   397 -	assembly version use of ___chkstk.
       
   398 -
       
   399 -2009-09-23  Matthias Klose  <doko@ubuntu.com>
       
   400 -
       
   401 -	PR libffi/40242, PR libffi/41443
       
   402 -	* src/arm/sysv.S (__ARM_ARCH__): Define for processors
       
   403 -	__ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__,
       
   404 -	__ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__.
       
   405 -	Change the conditionals to __SOFTFP__ || __ARM_EABI__
       
   406 -	for -mfloat-abi=softfp to work.
       
   407 -
       
   408 -2009-09-17  Loren J. Rittle  <ljrittle@acm.org>
       
   409 -
       
   410 -	PR testsuite/32843 (strikes again)
       
   411 -	* src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to
       
   412 -	enable proper extension on char and short.
       
   413 -
       
   414 -2009-09-15  David Daney  <ddaney@caviumnetworks.com>
       
   415 -
       
   416 -	* src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special
       
   417 -	handling for FFI_TYPE_POINTER.
       
   418 -	* src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT,
       
   419 -	FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT,
       
   420 -	FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT,
       
   421 -	FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines.
       
   422 -	(FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations.
       
   423 -	(enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float.
       
   424 -	* src/mips/n32.S (ffi_call_N32): Add handling for soft-float
       
   425 -	structure and pointer returns.
       
   426 -	(ffi_closure_N32): Add handling for pointer returns.
       
   427 -	* src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags,
       
   428 -	calc_n32_return_struct_flags): Handle soft-float.
       
   429 -	(ffi_prep_cif_machdep):  Handle soft-float, fix pointer handling.
       
   430 -	(ffi_call_N32): Declare proper argument types.
       
   431 -	(ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle
       
   432 -	soft-float.
       
   433 -
       
   434 -2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
   435 -
       
   436 -	* configure.ac (AC_PREREQ): Bump to 2.64.
       
   437 -
       
   438 -2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
   439 -
       
   440 -	* Makefile.am (install-html, install-pdf): Remove.
       
   441 -	* Makefile.in: Regenerate.
       
   442 -
       
   443 -	* Makefile.in: Regenerate.
       
   444 -	* aclocal.m4: Regenerate.
       
   445 -	* configure: Regenerate.
       
   446 -	* fficonfig.h.in: Regenerate.
       
   447 -	* include/Makefile.in: Regenerate.
       
   448 -	* man/Makefile.in: Regenerate.
       
   449 -	* testsuite/Makefile.in: Regenerate.
       
   450 -
       
   451 -2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
   452 -
       
   453 -	* configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force.
       
   454 -
       
   455 -2009-07-24  Dave Korn  <dave.korn.cygwin@gmail.com>
       
   456 -
       
   457 -	PR libffi/40807
       
   458 -	* src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending
       
   459 -	return types for X86_WIN32.
       
   460 -	* src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types.
       
   461 -	(_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV,
       
   462 -	_ffi_closure_STDCALL): Likewise.
       
   463 -
       
   464 -	* src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin.
       
   465 -	(dlmmap, dlmunmap): Also use these functions on Cygwin.
       
   466 -
       
   467 -2009-07-11  Richard Sandiford  <rdsandiford@googlemail.com>
       
   468 -
       
   469 -	PR testsuite/40699
       
   470 -	PR testsuite/40707
       
   471 -	PR testsuite/40709
       
   472 -	* testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and
       
   473 -	2009-06-30 commits.
       
   474 -
       
   475 -2009-07-01  Richard Sandiford  <r.sandiford@uk.ibm.com>
       
   476 -
       
   477 -	* testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path
       
   478 -	to "" before adding paths.  (This reinstates an assignment that
       
   479 -	was removed by my 2009-06-30 commit, but changes the initial
       
   480 -	value from "." to "".)
       
   481 -
       
   482 -2009-07-01  H.J. Lu  <hongjiu.lu@intel.com>
       
   483 -
       
   484 -	PR testsuite/40601
       
   485 -	* testsuite/lib/libffi-dg.exp (libffi-init): Properly set
       
   486 -	gccdir.  Adjust ld_library_path for gcc only if gccdir isn't
       
   487 -	empty.
       
   488 -
       
   489 -2009-06-30  Richard Sandiford  <r.sandiford@uk.ibm.com>
       
   490 -
       
   491 -	* testsuite/lib/libffi-dg.exp (libffi-init): Don't add "."
       
   492 -	to ld_library_path.  Use add_path.  Add just find_libgcc_s
       
   493 -	to ld_library_path, not every libgcc multilib directory.
       
   494 -
       
   495 -2009-06-16  Wim Lewis  <wiml@hhhh.org>
       
   496 -
       
   497 -	* src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are
       
   498 -	supposed to be callee-saved.
       
   499 -	* src/powerpc/sysv.S (small_struct_return_value): Fix overrun of
       
   500 -	return buffer for odd-size structs.
       
   501 -
       
   502 -2009-06-16  Andreas Tobler  <a.tobler@schweiz.org>
       
   503 -
       
   504 -	PR libffi/40444
       
   505 -	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Add
       
   506 -	allow_stack_execute for Darwin.
       
   507 -
       
   508 -2009-06-16  Andrew Haley  <aph@redhat.com>
       
   509 -
       
   510 -	* configure.ac (TARGETDIR): Add missing blank lines.
       
   511 -	* configure: Regenerate.
       
   512 -
       
   513 -2009-06-16  Andrew Haley  <aph@redhat.com>
       
   514 -
       
   515 -	* testsuite/libffi.call/cls_align_sint64.c,
       
   516 -	testsuite/libffi.call/cls_align_uint64.c,
       
   517 -	testsuite/libffi.call/cls_longdouble_va.c,
       
   518 -	testsuite/libffi.call/cls_ulonglong.c,
       
   519 -	testsuite/libffi.call/return_ll1.c,
       
   520 -	testsuite/libffi.call/stret_medium2.c: Fix printf format
       
   521 -	specifiers.
       
   522 -	* testsuite/libffi.call/ffitest.h,
       
   523 -	testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define.
       
   524 -
       
   525 -2009-06-15  Andrew Haley  <aph@redhat.com>
       
   526 -
       
   527 -	* testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
       
   528 -	* testsuite/libffi.call/err_bad_abi.c: Likewise.
       
   529 -
       
   530 -2009-06-12  Andrew Haley  <aph@redhat.com>
       
   531 -
       
   532 -	* Makefile.am: Remove info_TEXINFOS.
       
   533 -
       
   534 -2009-06-12  Andrew Haley  <aph@redhat.com>
       
   535 -
       
   536 -	* ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c,
       
   537 -	testsuite/libffi.call/cls_align_uint64.c,
       
   538 -	testsuite/libffi.call/cls_ulonglong.c,
       
   539 -	testsuite/libffi.call/return_ll1.c,
       
   540 -	testsuite/libffi.call/stret_medium2.c: Fix printf format
       
   541 -	specifiers.
       
   542 -	testsuite/libffi.special/unwindtest.cc: include stdint.h.
       
   543 -
       
   544 -2009-06-11  Timothy Wall  <twall@users.sf.net>
       
   545 -
       
   546 -	* Makefile.am,
       
   547 -	configure.ac,
       
   548 -	include/ffi.h.in,
       
   549 -	include/ffi_common.h,
       
   550 -	src/closures.c,
       
   551 -	src/dlmalloc.c,
       
   552 -	src/x86/ffi.c,
       
   553 -	src/x86/ffitarget.h,
       
   554 -	src/x86/win64.S (new),
       
   555 -	README: Added win64 support (mingw or MSVC)
       
   556 -	* Makefile.in,
       
   557 -	include/Makefile.in,
       
   558 -	man/Makefile.in,
       
   559 -	testsuite/Makefile.in,
       
   560 -	configure,
       
   561 -	aclocal.m4: Regenerated
       
   562 -	* ltcf-c.sh: properly escape cygwin/w32 path
       
   563 -	* man/ffi_call.3: Clarify size requirements for return value.
       
   564 -	* src/x86/ffi64.c: Fix filename in comment.
       
   565 -	* src/x86/win32.S: Remove unused extern.
       
   566 -
       
   567 -	* testsuite/libffi.call/closure_fn0.c,
       
   568 -	testsuite/libffi.call/closure_fn1.c,
       
   569 -	testsuite/libffi.call/closure_fn2.c,
       
   570 -	testsuite/libffi.call/closure_fn3.c,
       
   571 -	testsuite/libffi.call/closure_fn4.c,
       
   572 -	testsuite/libffi.call/closure_fn5.c,
       
   573 -	testsuite/libffi.call/closure_fn6.c,
       
   574 -	testsuite/libffi.call/closure_stdcall.c,
       
   575 -	testsuite/libffi.call/cls_12byte.c,
       
   576 -	testsuite/libffi.call/cls_16byte.c,
       
   577 -	testsuite/libffi.call/cls_18byte.c,
       
   578 -	testsuite/libffi.call/cls_19byte.c,
       
   579 -	testsuite/libffi.call/cls_1_1byte.c,
       
   580 -	testsuite/libffi.call/cls_20byte.c,
       
   581 -	testsuite/libffi.call/cls_20byte1.c,
       
   582 -	testsuite/libffi.call/cls_24byte.c,
       
   583 -	testsuite/libffi.call/cls_2byte.c,
       
   584 -	testsuite/libffi.call/cls_3_1byte.c,
       
   585 -	testsuite/libffi.call/cls_3byte1.c,
       
   586 - 	testsuite/libffi.call/cls_3byte2.c,
       
   587 - 	testsuite/libffi.call/cls_4_1byte.c,
       
   588 - 	testsuite/libffi.call/cls_4byte.c,
       
   589 - 	testsuite/libffi.call/cls_5_1_byte.c,
       
   590 - 	testsuite/libffi.call/cls_5byte.c,
       
   591 - 	testsuite/libffi.call/cls_64byte.c,
       
   592 - 	testsuite/libffi.call/cls_6_1_byte.c,
       
   593 - 	testsuite/libffi.call/cls_6byte.c,
       
   594 - 	testsuite/libffi.call/cls_7_1_byte.c,
       
   595 - 	testsuite/libffi.call/cls_7byte.c,
       
   596 - 	testsuite/libffi.call/cls_8byte.c,
       
   597 - 	testsuite/libffi.call/cls_9byte1.c,
       
   598 - 	testsuite/libffi.call/cls_9byte2.c,
       
   599 - 	testsuite/libffi.call/cls_align_double.c,
       
   600 - 	testsuite/libffi.call/cls_align_float.c,
       
   601 - 	testsuite/libffi.call/cls_align_longdouble.c,
       
   602 - 	testsuite/libffi.call/cls_align_longdouble_split.c,
       
   603 - 	testsuite/libffi.call/cls_align_longdouble_split2.c,
       
   604 - 	testsuite/libffi.call/cls_align_pointer.c,
       
   605 - 	testsuite/libffi.call/cls_align_sint16.c,
       
   606 - 	testsuite/libffi.call/cls_align_sint32.c,
       
   607 - 	testsuite/libffi.call/cls_align_sint64.c,
       
   608 - 	testsuite/libffi.call/cls_align_uint16.c,
       
   609 - 	testsuite/libffi.call/cls_align_uint32.c,
       
   610 - 	testsuite/libffi.call/cls_align_uint64.c,
       
   611 - 	testsuite/libffi.call/cls_dbls_struct.c,
       
   612 - 	testsuite/libffi.call/cls_double.c,
       
   613 - 	testsuite/libffi.call/cls_double_va.c,
       
   614 - 	testsuite/libffi.call/cls_float.c,
       
   615 - 	testsuite/libffi.call/cls_longdouble.c,
       
   616 - 	testsuite/libffi.call/cls_longdouble_va.c,
       
   617 - 	testsuite/libffi.call/cls_multi_schar.c,
       
   618 - 	testsuite/libffi.call/cls_multi_sshort.c,
       
   619 - 	testsuite/libffi.call/cls_multi_sshortchar.c,
       
   620 - 	testsuite/libffi.call/cls_multi_uchar.c,
       
   621 - 	testsuite/libffi.call/cls_multi_ushort.c,
       
   622 - 	testsuite/libffi.call/cls_multi_ushortchar.c,
       
   623 - 	testsuite/libffi.call/cls_pointer.c,
       
   624 - 	testsuite/libffi.call/cls_pointer_stack.c,
       
   625 - 	testsuite/libffi.call/cls_schar.c,
       
   626 - 	testsuite/libffi.call/cls_sint.c,
       
   627 - 	testsuite/libffi.call/cls_sshort.c,
       
   628 - 	testsuite/libffi.call/cls_uchar.c,
       
   629 - 	testsuite/libffi.call/cls_uint.c,
       
   630 - 	testsuite/libffi.call/cls_ulonglong.c,
       
   631 - 	testsuite/libffi.call/cls_ushort.c,
       
   632 - 	testsuite/libffi.call/err_bad_abi.c,
       
   633 - 	testsuite/libffi.call/err_bad_typedef.c,
       
   634 - 	testsuite/libffi.call/float2.c,
       
   635 - 	testsuite/libffi.call/huge_struct.c,
       
   636 - 	testsuite/libffi.call/nested_struct.c,
       
   637 - 	testsuite/libffi.call/nested_struct1.c,
       
   638 - 	testsuite/libffi.call/nested_struct10.c,
       
   639 - 	testsuite/libffi.call/nested_struct2.c,
       
   640 - 	testsuite/libffi.call/nested_struct3.c,
       
   641 - 	testsuite/libffi.call/nested_struct4.c,
       
   642 - 	testsuite/libffi.call/nested_struct5.c,
       
   643 - 	testsuite/libffi.call/nested_struct6.c,
       
   644 - 	testsuite/libffi.call/nested_struct7.c,
       
   645 - 	testsuite/libffi.call/nested_struct8.c,
       
   646 - 	testsuite/libffi.call/nested_struct9.c,
       
   647 - 	testsuite/libffi.call/problem1.c,
       
   648 - 	testsuite/libffi.call/return_ldl.c,
       
   649 - 	testsuite/libffi.call/return_ll1.c,
       
   650 - 	testsuite/libffi.call/stret_large.c,
       
   651 - 	testsuite/libffi.call/stret_large2.c,
       
   652 - 	testsuite/libffi.call/stret_medium.c,
       
   653 - 	testsuite/libffi.call/stret_medium2.c,
       
   654 -	testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead
       
   655 -	of checking for MMAP.  Use intptr_t instead of long casts.
       
   656 -
       
   657 -2009-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>
       
   658 -
       
   659 -	* testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*.
       
   660 -	* testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*.
       
   661 -	* testsuite/libffi.call/err_bad_typedef.c: Likewise.
       
   662 -
       
   663 -2009-06-09  Andrew Haley  <aph@redhat.com>
       
   664 -
       
   665 -	* src/x86/freebsd.S: Add missing file.
       
   666 -
       
   667 -2009-06-08  Andrew Haley  <aph@redhat.com>
       
   668 -
       
   669 -	Import from libffi 3.0.8:
       
   670 -
       
   671 -	* doc/libffi.texi: New file.
       
   672 -	* doc/libffi.info: Likewise.
       
   673 -	* doc/stamp-vti: Likewise.
       
   674 -	* man/Makefile.am: New file.
       
   675 -	* man/ffi_call.3: New file.
       
   676 -
       
   677 -	* Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S,
       
   678 -	src/dlmalloc.c.
       
   679 -	(nodist_libffi_la_SOURCES): Add X86_FREEBSD.
       
   680 -
       
   681 -	* configure.ac: Bump version to 3.0.8.
       
   682 -	parisc*-*-linux*: Add.
       
   683 -	i386-*-freebsd* | i386-*-openbsd*: Add.
       
   684 -	powerpc-*-beos*: Add.
       
   685 -	AM_CONDITIONAL X86_FREEBSD: Add.
       
   686 -	AC_CONFIG_FILES: Add man/Makefile.
       
   687 -
       
   688 -	* include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void).
       
   689 -
       
   690 -2009-06-08  Andrew Haley  <aph@redhat.com>
       
   691 -
       
   692 -	* README: Import from libffi 3.0.8.
       
   693 -
       
   694 -2009-06-08  Andrew Haley  <aph@redhat.com>
       
   695 -
       
   696 -	* testsuite/libffi.call/err_bad_abi.c: Add xfails.
       
   697 -	* testsuite/libffi.call/cls_longdouble_va.c: Add xfails.
       
   698 -	* testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*.
       
   699 -	* testsuite/libffi.call/err_bad_typedef.c: Add xfails.
       
   700 -
       
   701 -	* testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args.
       
   702 -	* testsuite/libffi.call/stret_medium.c: Likewise.
       
   703 -	* testsuite/libffi.call/stret_large2.c: Likewise.
       
   704 -	* testsuite/libffi.call/stret_large.c:  Likewise.
       
   705 -
       
   706 -2008-12-26  Timothy Wall  <twall@users.sf.net>
       
   707 -
       
   708 -	* testsuite/libffi.call/cls_longdouble.c,
       
   709 -	testsuite/libffi.call/cls_longdouble_va.c,
       
   710 -	testsuite/libffi.call/cls_align_longdouble.c,
       
   711 -	testsuite/libffi.call/cls_align_longdouble_split.c,
       
   712 -	testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected
       
   713 -	failures on x86_64 cygwin/mingw.
       
   714 -
       
   715 -2008-12-22  Timothy Wall  <twall@users.sf.net>
       
   716 -
       
   717 -	* testsuite/libffi.call/closure_fn0.c,
       
   718 -	testsuite/libffi.call/closure_fn1.c,
       
   719 -	testsuite/libffi.call/closure_fn2.c,
       
   720 -	testsuite/libffi.call/closure_fn3.c,
       
   721 -	testsuite/libffi.call/closure_fn4.c,
       
   722 -	testsuite/libffi.call/closure_fn5.c,
       
   723 -	testsuite/libffi.call/closure_fn6.c,
       
   724 -	testsuite/libffi.call/closure_loc_fn0.c,
       
   725 -	testsuite/libffi.call/closure_stdcall.c,
       
   726 -	testsuite/libffi.call/cls_align_pointer.c,
       
   727 -	testsuite/libffi.call/cls_pointer.c,
       
   728 -	testsuite/libffi.call/cls_pointer_stack.c: use portable cast from
       
   729 -	pointer to integer (intptr_t).
       
   730 -	* testsuite/libffi.call/cls_longdouble.c: disable for win64.
       
   731 -
       
   732 -2008-07-24  Anthony Green  <green@redhat.com>
       
   733 -
       
   734 -	* testsuite/libffi.call/cls_dbls_struct.c,
       
   735 -	testsuite/libffi.call/cls_double_va.c,
       
   736 -	testsuite/libffi.call/cls_longdouble.c,
       
   737 -	testsuite/libffi.call/cls_longdouble_va.c,
       
   738 -	testsuite/libffi.call/cls_pointer.c,
       
   739 -	testsuite/libffi.call/cls_pointer_stack.c,
       
   740 -	testsuite/libffi.call/err_bad_abi.c: Clean up failures from
       
   741 -	compiler warnings.
       
   742 -
       
   743 -2008-03-04  Anthony Green  <green@redhat.com>
       
   744 -	    Blake Chaffin
       
   745 -	    hos@tamanegi.org
       
   746 -
       
   747 -	* testsuite/libffi.call/cls_align_longdouble_split2.c
       
   748 -	  testsuite/libffi.call/cls_align_longdouble_split.c
       
   749 -	  testsuite/libffi.call/cls_dbls_struct.c
       
   750 -	  testsuite/libffi.call/cls_double_va.c
       
   751 -	  testsuite/libffi.call/cls_longdouble.c
       
   752 -	  testsuite/libffi.call/cls_longdouble_va.c
       
   753 -	  testsuite/libffi.call/cls_pointer.c
       
   754 -	  testsuite/libffi.call/cls_pointer_stack.c
       
   755 -	  testsuite/libffi.call/err_bad_abi.c
       
   756 -	  testsuite/libffi.call/err_bad_typedef.c
       
   757 -	  testsuite/libffi.call/stret_large2.c
       
   758 -	  testsuite/libffi.call/stret_large.c
       
   759 -	  testsuite/libffi.call/stret_medium2.c
       
   760 -	  testsuite/libffi.call/stret_medium.c: New tests from Apple.
       
   761 -
       
   762 -2009-06-05  Andrew Haley  <aph@redhat.com>
       
   763 -
       
   764 -	* src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from
       
   765 -	libffi.
       
   766 -
       
   767 -2009-06-04  Andrew Haley  <aph@redhat.com>
       
   768 -
       
   769 -	* src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out
       
   770 -	stdcall changes.
       
   771 -
       
   772 -2008-02-26  Anthony Green  <green@redhat.com>
       
   773 -	    Thomas Heller  <theller@ctypes.org>
       
   774 -
       
   775 -	* src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
       
   776 -	comment.
       
   777 -
       
   778 -2008-02-03  Timothy Wall  <twall@users.sf.net>
       
   779 -
       
   780 -	* src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return
       
   781 -	  offset based on code pointer, not data pointer.
       
   782 -
       
   783 -2008-01-31  Timothy Wall <twall@users.sf.net>
       
   784 -
       
   785 -	* testsuite/libffi.call/closure_stdcall.c: Add test for stdcall
       
   786 -	closures.
       
   787 -	* src/x86/ffitarget.h: Increase size of trampoline for stdcall
       
   788 -	closures.
       
   789 -	* src/x86/win32.S: Add assembly for stdcall closure.
       
   790 -	* src/x86/ffi.c: Initialize stdcall closure trampoline.
       
   791 -
       
   792 -2009-06-04  Andrew Haley  <aph@redhat.com>
       
   793 -
       
   794 -	* include/ffi.h.in: Change void (*)() to void (*)(void).
       
   795 -	* src/x86/ffi.c: Likewise.
       
   796 -
       
   797 -2009-06-04  Andrew Haley  <aph@redhat.com>
       
   798 -
       
   799 -	* src/powerpc/ppc_closure.S: Insert licence header.
       
   800 -	* src/powerpc/linux64_closure.S: Likewise.
       
   801 -	* src/m68k/sysv.S: Likewise.
       
   802 -
       
   803 -	* src/sh64/ffi.c: Change void (*)() to void (*)(void).
       
   804 -	* src/powerpc/ffi.c: Likewise.
       
   805 -	* src/powerpc/ffi_darwin.c: Likewise.
       
   806 -	* src/m32r/ffi.c: Likewise.
       
   807 -	* src/sh64/ffi.c: Likewise.
       
   808 -	* src/x86/ffi64.c: Likewise.
       
   809 -	* src/alpha/ffi.c: Likewise.
       
   810 -	* src/alpha/osf.S: Likewise.
       
   811 -	* src/frv/ffi.c: Likewise.
       
   812 -	* src/s390/ffi.c: Likewise.
       
   813 -	* src/pa/ffi.c: Likewise.
       
   814 -	* src/pa/hpux32.S: Likewise.
       
   815 -	* src/ia64/unix.S: Likewise.
       
   816 -	* src/ia64/ffi.c: Likewise.
       
   817 -	* src/sparc/ffi.c: Likewise.
       
   818 -	* src/mips/ffi.c: Likewise.
       
   819 -	* src/sh/ffi.c: Likewise.
       
   820 -
       
   821 -2008-02-15  David Daney  <ddaney@avtrex.com>
       
   822 -
       
   823 -	* src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
       
   824 -	Define (conditionally), and use it to include cachectl.h.
       
   825 -	(ffi_prep_closure_loc): Fix cache flushing.
       
   826 -	* src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
       
   827 -
       
   828 -2009-06-04  Andrew Haley  <aph@redhat.com>
       
   829 -
       
   830 -	include/ffi.h.in,
       
   831 -	src/arm/ffitarget.h,
       
   832 -	src/arm/ffi.c,
       
   833 -	src/arm/sysv.S,
       
   834 -	src/powerpc/ffitarget.h,
       
   835 -	src/closures.c,
       
   836 -	src/sh64/ffitarget.h,
       
   837 -	src/sh64/ffi.c,
       
   838 -	src/sh64/sysv.S,
       
   839 -	src/types.c,
       
   840 -	src/x86/ffi64.c,
       
   841 -	src/x86/ffitarget.h,
       
   842 -	src/x86/win32.S,
       
   843 -	src/x86/darwin.S,
       
   844 -	src/x86/ffi.c,
       
   845 -	src/x86/sysv.S,
       
   846 -	src/x86/unix64.S,
       
   847 -	src/alpha/ffitarget.h,
       
   848 -	src/alpha/ffi.c,
       
   849 -	src/alpha/osf.S,
       
   850 -	src/m68k/ffitarget.h,
       
   851 -	src/frv/ffitarget.h,
       
   852 -	src/frv/ffi.c,
       
   853 -	src/s390/ffitarget.h,
       
   854 -	src/s390/sysv.S,
       
   855 -	src/cris/ffitarget.h,
       
   856 -	src/pa/linux.S,
       
   857 -	src/pa/ffitarget.h,
       
   858 -	src/pa/ffi.c,
       
   859 -	src/raw_api.c,
       
   860 -	src/ia64/ffitarget.h,
       
   861 -	src/ia64/unix.S,
       
   862 -	src/ia64/ffi.c,
       
   863 -	src/ia64/ia64_flags.h,
       
   864 -	src/java_raw_api.c,
       
   865 -	src/debug.c,
       
   866 -	src/sparc/v9.S,
       
   867 -	src/sparc/ffitarget.h,
       
   868 -	src/sparc/ffi.c,
       
   869 -	src/sparc/v8.S,
       
   870 -	src/mips/ffitarget.h,
       
   871 -	src/mips/n32.S,
       
   872 -	src/mips/o32.S,
       
   873 -	src/mips/ffi.c,
       
   874 -	src/prep_cif.c,
       
   875 -	src/sh/ffitarget.h,
       
   876 -	src/sh/ffi.c,
       
   877 -	src/sh/sysv.S: Update license text.
       
   878 -
       
   879 -2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
       
   880 -
       
   881 -	* src/x86/win32.S (_ffi_closure_STDCALL):  New function.
       
   882 -	(.eh_frame):  Add FDE for it.
       
   883 -
       
   884 -2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
       
   885 -
       
   886 -	* configure.ac:  Also check if assembler supports pc-relative
       
   887 -	relocs on X86_WIN32 targets.
       
   888 -	* configure:  Regenerate.
       
   889 -	* src/x86/win32.S (ffi_prep_args):  Declare extern, not global.
       
   890 -	(_ffi_call_SYSV):  Add missing function type symbol .def and
       
   891 -	add EH markup labels.
       
   892 -	(_ffi_call_STDCALL):  Likewise.
       
   893 -	(_ffi_closure_SYSV):  Likewise.
       
   894 -	(_ffi_closure_raw_SYSV):  Likewise.
       
   895 -	(.eh_frame):  Add hand-crafted EH data.
       
   896 -
       
   897 -2009-04-09  Jakub Jelinek  <jakub@redhat.com>
       
   898 -
       
   899 -	* testsuite/lib/libffi-dg.exp: Change copyright header to refer to
       
   900 -	version 3 of the GNU General Public License and to point readers
       
   901 -	at the COPYING3 file and the FSF's license web page.
       
   902 -	* testsuite/libffi.call/call.exp: Likewise.
       
   903 -	* testsuite/libffi.special/special.exp: Likewise.
       
   904 -
       
   905 -2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
   906 -
       
   907 -	* configure: Regenerate.
       
   908 -
       
   909 -2008-12-18  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
   910 -
       
   911 -	PR libffi/26048
       
   912 -	* configure.ac (HAVE_AS_X86_PCREL): New test.
       
   913 -	* configure: Regenerate.
       
   914 -	* fficonfig.h.in: Regenerate.
       
   915 -	* src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate
       
   916 -	RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET,
       
   917 -	RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler.
       
   918 -	(.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
       
   919 -	* src/x86/unix64.S (.Lstore_table): Move to .text section.
       
   920 -	(.Lload_table): Likewise.
       
   921 -	(.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
       
   922 -
       
   923 -2008-12-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
   924 -
       
   925 -	* configure: Regenerate.
       
   926 -
       
   927 -2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
       
   928 -
       
   929 -	* src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for
       
   930 -	signed/unsigned int8/16 return values.
       
   931 -	* src/sparc/v8.S (ffi_call_v8): Likewise.
       
   932 -	(ffi_closure_v8): Likewise.
       
   933 -
       
   934 -2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
       
   935 -	    Steve Ellcey  <sje@cup.hp.com>
       
   936 -
       
   937 -	* configure: Regenerate for new libtool.
       
   938 -	* Makefile.in: Ditto.
       
   939 -	* include/Makefile.in: Ditto.
       
   940 -	* aclocal.m4: Ditto.
       
   941 -
       
   942 -2008-08-25  Andreas Tobler  <a.tobler@schweiz.org>
       
   943 -
       
   944 -	* src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and
       
   945 -	FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum.
       
   946 -	Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT.
       
   947 -	Adjust copyright notice.
       
   948 -	* src/powerpc/ffi.c: Add two new flags to indicate if we have one
       
   949 -	register or two register to use for FFI_SYSV structs.
       
   950 -	(ffi_prep_cif_machdep): Pass the right register flag introduced above.
       
   951 -	(ffi_closure_helper_SYSV): Fix the return type for
       
   952 -	FFI_SYSV_TYPE_SMALL_STRUCT. Comment.
       
   953 -	Adjust copyright notice.
       
   954 -
       
   955 -2008-07-16  Kaz Kojima  <kkojima@gcc.gnu.org>
       
   956 -
       
   957 -	* src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned
       
   958 -	int.
       
   959 -
       
   960 -2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
   961 -
       
   962 -	* configure: Regenerate.
       
   963 -	* include/Makefile.in: Regenerate.
       
   964 -	* testsuite/Makefile.in: Regenerate.
       
   965 -
       
   966 -2008-06-07  Joseph Myers  <joseph@codesourcery.com>
       
   967 -
       
   968 -	* configure.ac (parisc*-*-linux*, powerpc-*-sysv*,
       
   969 -	powerpc-*-beos*): Remove.
       
   970 -	* configure: Regenerate.
       
   971 -
       
   972 -2008-05-09  Julian Brown  <julian@codesourcery.com>
       
   973 -
       
   974 -	* Makefile.am (LTLDFLAGS): New.
       
   975 -	(libffi_la_LDFLAGS): Use above.
       
   976 -	* Makefile.in: Regenerate.
       
   977 -
       
   978 -2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
       
   979 -
       
   980 -	PR bootstrap/35457
       
   981 -	* aclocal.m4: Regenerate.
       
   982 -	* configure: Regenerate.
       
   983 -
       
   984 -2008-03-26  Kaz Kojima  <kkojima@gcc.gnu.org>
       
   985 -
       
   986 -	* src/sh/sysv.S: Add .note.GNU-stack on Linux.
       
   987 -	* src/sh64/sysv.S: Likewise.
       
   988 -
       
   989 -2008-03-26  Daniel Jacobowitz  <dan@debian.org>
       
   990 -
       
   991 -	* src/arm/sysv.S: Fix ARM comment marker.
       
   992 -
       
   993 -2008-03-26  Jakub Jelinek  <jakub@redhat.com>
       
   994 -
       
   995 -	* src/alpha/osf.S: Add .note.GNU-stack on Linux.
       
   996 -	* src/s390/sysv.S: Likewise.
       
   997 -	* src/powerpc/ppc_closure.S: Likewise.
       
   998 -	* src/powerpc/sysv.S: Likewise.
       
   999 -	* src/x86/unix64.S: Likewise.
       
  1000 -	* src/x86/sysv.S: Likewise.
       
  1001 -	* src/sparc/v8.S: Likewise.
       
  1002 -	* src/sparc/v9.S: Likewise.
       
  1003 -	* src/m68k/sysv.S: Likewise.
       
  1004 -	* src/arm/sysv.S: Likewise.
       
  1005 -
       
  1006 -2008-03-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
  1007 -
       
  1008 -	* aclocal.m4: Regenerate.
       
  1009 -	* configure: Likewise.
       
  1010 -	* Makefile.in: Likewise.
       
  1011 -	* include/Makefile.in: Likewise.
       
  1012 -	* testsuite/Makefile.in: Likewise.
       
  1013 -
       
  1014 -2008-02-12  Bjoern Koenig  <bkoenig@alpha-tierchen.de>
       
  1015 -	    Andreas Tobler  <a.tobler@schweiz.org>
       
  1016 -
       
  1017 -	* configure.ac: Add amd64-*-freebsd* target.
       
  1018 -	* configure: Regenerate.
       
  1019 -
       
  1020 -2008-01-30  H.J. Lu  <hongjiu.lu@intel.com>
       
  1021 -
       
  1022 -	PR libffi/34612
       
  1023 -	* src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when
       
  1024 -	returning struct.
       
  1025 -
       
  1026 -	* testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
       
  1027 -	tests.
       
  1028 -
       
  1029 -2008-01-24  David Edelsohn  <edelsohn@gnu.org>
       
  1030 -
       
  1031 -	* configure: Regenerate.
       
  1032 -
       
  1033 -2008-01-06  Andreas Tobler  <a.tobler@schweiz.org>
       
  1034 -
       
  1035 -	* src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko.
       
  1036 -
       
  1037 -2008-01-05  Andreas Tobler  <a.tobler@schweiz.org>
       
  1038 -
       
  1039 -	PR testsuite/32843
       
  1040 -	* src/x86/ffi.c (ffi_prep_cif_machdep): Add code for
       
  1041 -	signed/unsigned int8/16 for X86_DARWIN.
       
  1042 -	Updated copyright info.
       
  1043 -	Handle one and two byte structs with special cif->flags.
       
  1044 -	* src/x86/ffitarget.h: Add special types for one and two byte structs.
       
  1045 -	Updated copyright info.
       
  1046 -	* src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like
       
  1047 -	sysv.S
       
  1048 -	Remove code to pop args from the stack after call.
       
  1049 -	Special-case signed/unsigned for int8/16, one and two byte structs.
       
  1050 -	(ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
       
  1051 -	FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
       
  1052 -	FFI_TYPE_SINT32.
       
  1053 -	Updated copyright info.
       
  1054 -
       
  1055 -2007-12-08  David Daney  <ddaney@avtrex.com>
       
  1056 -
       
  1057 -	* src/mips/n32.S (ffi_call_N32):  Replace dadd with ADDU, dsub with
       
  1058 -	SUBU, add with ADDU and use smaller code sequences.
       
  1059 -
       
  1060 -2007-12-07  David Daney  <ddaney@avtrex.com>
       
  1061 -
       
  1062 -	* src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return
       
  1063 -	type.
       
  1064 -
       
  1065 -2007-12-06  David Daney  <ddaney@avtrex.com>
       
  1066 -
       
  1067 -	* include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not	already
       
  1068 -	defined.
       
  1069 -	(ffi_java_raw): New typedef.
       
  1070 -	(ffi_java_raw_call, ffi_java_ptrarray_to_raw,
       
  1071 -	ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to
       
  1072 -	ffi_java_raw.
       
  1073 -	(ffi_java_raw_closure) : Same.
       
  1074 -	(ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change
       
  1075 -	parameter types.
       
  1076 -	* src/java_raw_api.c (ffi_java_raw_size):  Replace FFI_SIZEOF_ARG with
       
  1077 -	FFI_SIZEOF_JAVA_RAW.
       
  1078 -	(ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw.
       
  1079 -	Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use
       
  1080 -	sizeof(ffi_java_raw) for alignment calculations.
       
  1081 -	(ffi_java_ptrarray_to_raw): Same.
       
  1082 -	(ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER
       
  1083 -	if FFI_SIZEOF_JAVA_RAW == 4.
       
  1084 -	(ffi_java_raw_to_rvalue): Same.
       
  1085 -	(ffi_java_raw_call): Change type of raw to ffi_java_raw.
       
  1086 -	(ffi_java_translate_args): Same.
       
  1087 -	(ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change
       
  1088 -	parameter types.
       
  1089 -	* src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI.
       
  1090 -
       
  1091 -2007-12-06  David Daney  <ddaney@avtrex.com>
       
  1092 -
       
  1093 -	* src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on
       
  1094 -	pointer values.
       
  1095 -
       
  1096 -2007-12-01  Andreas Tobler  <a.tobler@schweiz.org>
       
  1097 -
       
  1098 -	PR libffi/31937
       
  1099 -	* src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT.
       
  1100 -	Add local FFI_TYPE_UINT128 to handle soft-float long-double-128.
       
  1101 -	* src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and
       
  1102 -	set the NUM_FPR_ARG_REGISTERS according to.
       
  1103 -	Add support for potential soft-float support under hard-float
       
  1104 -	architecture.
       
  1105 -	(ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of
       
  1106 -	FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according
       
  1107 -	to the FFI_LINUX_SOFT_FLOAT ABI.
       
  1108 -	(ffi_prep_cif_machdep): Likewise.
       
  1109 -	(ffi_closure_helper_SYSV): Likewise.
       
  1110 -	* src/powerpc/ppc_closure.S: Make sure not to store float/double
       
  1111 -	on archs where __NO_FPRS__ is true.
       
  1112 -	Add FFI_TYPE_UINT128 support.
       
  1113 -	* src/powerpc/sysv.S: Add support for soft-float long-double-128.
       
  1114 -	Adjust copyright notice.
       
  1115 -
       
  1116 -2007-11-25  Andreas Tobler  <a.tobler@schweiz.org>
       
  1117 -
       
  1118 -	* src/closures.c: Move defintion of MAYBE_UNUSED from here to ...
       
  1119 -	* include/ffi_common.h: ... here.
       
  1120 -	Update copyright.
       
  1121 -
       
  1122 -2007-11-17  Andreas Tobler  <a.tobler@schweiz.org>
       
  1123 -
       
  1124 -	* src/powerpc/sysv.S: Load correct cr to compare if we have long double.
       
  1125 -	* src/powerpc/linux64.S: Likewise.
       
  1126 -	* src/powerpc/ffi.c: Add a comment to show which part goes into cr6.
       
  1127 -	* testsuite/libffi.call/return_ldl.c: New test.
       
  1128 -
       
  1129 -2007-09-04    <aph@redhat.com>
       
  1130 -
       
  1131 -	* src/arm/sysv.S (UNWIND): New.
       
  1132 -	(Whole file): Conditionally compile unwinder directives.
       
  1133 -	* src/arm/sysv.S: Add unwinder directives.
       
  1134 -
       
  1135 -	* src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes.
       
  1136 -	Only treat r0 as a struct address if we're actually returning a
       
  1137 -	struct by address.
       
  1138 -	Only copy the bytes that are actually within a struct.
       
  1139 -	(ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes
       
  1140 -	is returned in r0, not passed by address.
       
  1141 -	(ffi_call): Allocate a word-sized temporary for the case where
       
  1142 -	a composite is returned in r0.
       
  1143 -	(ffi_prep_incoming_args_SYSV): Align as necessary.
       
  1144 -
       
  1145 -2007-08-05  Steven Newbury  <s_j_newbury@yahoo.co.uk>
       
  1146 -
       
  1147 -	* src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of
       
  1148 -	directly using the sys_cacheflush syscall.
       
  1149 -
       
  1150 -2007-07-27  Andrew Haley  <aph@redhat.com>
       
  1151 -
       
  1152 -	* src/arm/sysv.S (ffi_closure_SYSV): Add soft-float.
       
  1153 -
       
  1154 -2007-09-03  Maciej W. Rozycki  <macro@linux-mips.org>
       
  1155 -
       
  1156 -	* Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS.
       
  1157 -	* configure.ac: Likewise.
       
  1158 -	* Makefile.in: Regenerate.
       
  1159 -	* include/Makefile.in: Likewise.
       
  1160 -	* testsuite/Makefile.in: Likewise.
       
  1161 -	* configure: Likewise.
       
  1162 -
       
  1163 -2007-08-24  David Daney  <ddaney@avtrex.com>
       
  1164 -
       
  1165 -	* testsuite/libffi.call/return_sl.c: New test.
       
  1166 -
       
  1167 -2007-08-10  David Daney  <ddaney@avtrex.com>
       
  1168 -
       
  1169 -	* testsuite/libffi.call/cls_multi_ushort.c,
       
  1170 -	testsuite/libffi.call/cls_align_uint16.c,
       
  1171 -	testsuite/libffi.call/nested_struct1.c,
       
  1172 -	testsuite/libffi.call/nested_struct3.c,
       
  1173 -	testsuite/libffi.call/cls_7_1_byte.c,
       
  1174 -	testsuite/libffi.call/nested_struct5.c,
       
  1175 -	testsuite/libffi.call/cls_double.c,
       
  1176 -	testsuite/libffi.call/nested_struct7.c,
       
  1177 -	testsuite/libffi.call/cls_sint.c,
       
  1178 -	testsuite/libffi.call/nested_struct9.c,
       
  1179 -	testsuite/libffi.call/cls_20byte1.c,
       
  1180 -	testsuite/libffi.call/cls_multi_sshortchar.c,
       
  1181 -	testsuite/libffi.call/cls_align_sint64.c,
       
  1182 -	testsuite/libffi.call/cls_3byte2.c,
       
  1183 -	testsuite/libffi.call/cls_multi_schar.c,
       
  1184 -	testsuite/libffi.call/cls_multi_uchar.c,
       
  1185 -	testsuite/libffi.call/cls_19byte.c,
       
  1186 -	testsuite/libffi.call/cls_9byte1.c,
       
  1187 -	testsuite/libffi.call/cls_align_float.c,
       
  1188 -	testsuite/libffi.call/closure_fn1.c,
       
  1189 -	testsuite/libffi.call/problem1.c,
       
  1190 -	testsuite/libffi.call/closure_fn3.c,
       
  1191 -	testsuite/libffi.call/cls_sshort.c,
       
  1192 -	testsuite/libffi.call/closure_fn5.c,
       
  1193 -	testsuite/libffi.call/cls_align_double.c,
       
  1194 -	testsuite/libffi.call/nested_struct.c,
       
  1195 -	testsuite/libffi.call/cls_2byte.c,
       
  1196 -	testsuite/libffi.call/nested_struct10.c,
       
  1197 -	testsuite/libffi.call/cls_4byte.c,
       
  1198 -	testsuite/libffi.call/cls_6byte.c,
       
  1199 -	testsuite/libffi.call/cls_8byte.c,
       
  1200 -	testsuite/libffi.call/cls_multi_sshort.c,
       
  1201 -	testsuite/libffi.call/cls_align_sint16.c,
       
  1202 -	testsuite/libffi.call/cls_align_uint32.c,
       
  1203 -	testsuite/libffi.call/cls_20byte.c,
       
  1204 -	testsuite/libffi.call/cls_float.c,
       
  1205 -	testsuite/libffi.call/nested_struct2.c,
       
  1206 -	testsuite/libffi.call/cls_5_1_byte.c,
       
  1207 -	testsuite/libffi.call/nested_struct4.c,
       
  1208 -	testsuite/libffi.call/cls_24byte.c,
       
  1209 -	testsuite/libffi.call/nested_struct6.c,
       
  1210 -	testsuite/libffi.call/cls_64byte.c,
       
  1211 -	testsuite/libffi.call/nested_struct8.c,
       
  1212 -	testsuite/libffi.call/cls_uint.c,
       
  1213 -	testsuite/libffi.call/cls_multi_ushortchar.c,
       
  1214 -	testsuite/libffi.call/cls_schar.c,
       
  1215 -	testsuite/libffi.call/cls_uchar.c,
       
  1216 -	testsuite/libffi.call/cls_align_uint64.c,
       
  1217 -	testsuite/libffi.call/cls_ulonglong.c,
       
  1218 -	testsuite/libffi.call/cls_align_longdouble.c,
       
  1219 -	testsuite/libffi.call/cls_1_1byte.c,
       
  1220 -	testsuite/libffi.call/cls_12byte.c,
       
  1221 -	testsuite/libffi.call/cls_3_1byte.c,
       
  1222 -	testsuite/libffi.call/cls_3byte1.c,
       
  1223 -	testsuite/libffi.call/cls_4_1byte.c,
       
  1224 -	testsuite/libffi.call/cls_6_1_byte.c,
       
  1225 -	testsuite/libffi.call/cls_16byte.c,
       
  1226 -	testsuite/libffi.call/cls_18byte.c,
       
  1227 -	testsuite/libffi.call/closure_fn0.c,
       
  1228 -	testsuite/libffi.call/cls_9byte2.c,
       
  1229 -	testsuite/libffi.call/closure_fn2.c,
       
  1230 -	testsuite/libffi.call/closure_fn4.c,
       
  1231 -	testsuite/libffi.call/cls_ushort.c,
       
  1232 -	testsuite/libffi.call/closure_fn6.c,
       
  1233 -	testsuite/libffi.call/cls_5byte.c,
       
  1234 -	testsuite/libffi.call/cls_align_pointer.c,
       
  1235 -	testsuite/libffi.call/cls_7byte.c,
       
  1236 -	testsuite/libffi.call/cls_align_sint32.c,
       
  1237 -	testsuite/libffi.special/unwindtest_ffi_call.cc,
       
  1238 -	testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*.
       
  1239 -
       
  1240 -2007-08-10  David Daney  <ddaney@avtrex.com>
       
  1241 -
       
  1242 -	PR libffi/28313
       
  1243 -	* configure.ac: Don't treat mips64 as a special case.
       
  1244 -	* Makefile.am (nodist_libffi_la_SOURCES): Add n32.S.
       
  1245 -	* configure: Regenerate
       
  1246 -	* Makefile.in: Ditto.
       
  1247 -	* fficonfig.h.in: Ditto.
       
  1248 -	* src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent.
       
  1249 -	(LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros.
       
  1250 -	(FFI_DEFAULT_ABI): Set for n64 case.
       
  1251 -	(FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases.
       
  1252 -	* src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE.
       
  1253 -	(ffi_closure_N32): New function.
       
  1254 -	(.eh_frame): New section
       
  1255 -	* src/mips/o32.S: Clean up comments.
       
  1256 -	(ffi_closure_O32): Pass ffi_closure parameter in $12.
       
  1257 -	* src/mips/ffi.c: Use FFI_MIPS_N32 instead of
       
  1258 -	_MIPS_SIM == _ABIN32 throughout.
       
  1259 -	(FFI_MIPS_STOP_HERE): New, use in place of
       
  1260 -	ffi_stop_here.
       
  1261 -	(ffi_prep_args): Use unsigned long to hold pointer values.  Rewrite
       
  1262 -	to support n32/n64 ABIs.
       
  1263 -	(calc_n32_struct_flags): Rewrite.
       
  1264 -	(calc_n32_return_struct_flags): Remove unused variable.  Reverse
       
  1265 -	position of flag bits.
       
  1266 -	(ffi_prep_cif_machdep): Rewrite n32 portion.
       
  1267 -	(ffi_call): Enable for n64.  Add special handling for small structure
       
  1268 -	return values.
       
  1269 -	(ffi_prep_closure_loc): Add n32 and n64 support.
       
  1270 -	(ffi_closure_mips_inner_O32): Add cast to silence warning.
       
  1271 -	(copy_struct_N32, ffi_closure_mips_inner_N32): New functions.
       
  1272 -
       
  1273 -2007-08-08  David Daney  <ddaney@avtrex.com>
       
  1274 -
       
  1275 -	* testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition.
       
  1276 -	* testsuite/libffi.call/cls_align_uint16.c (main): Use correct type
       
  1277 -	specifiers.
       
  1278 -	* testsuite/libffi.call/nested_struct1.c (main): Ditto.
       
  1279 -	* testsuite/libffi.call/cls_sint.c (main): Ditto.
       
  1280 -	* testsuite/libffi.call/nested_struct9.c (main): Ditto.
       
  1281 -	* testsuite/libffi.call/cls_20byte1.c (main): Ditto.
       
  1282 -	* testsuite/libffi.call/cls_9byte1.c (main): Ditto.
       
  1283 -	* testsuite/libffi.call/closure_fn1.c (main): Ditto.
       
  1284 -	* testsuite/libffi.call/closure_fn3.c (main): Ditto.
       
  1285 -	* testsuite/libffi.call/return_dbl2.c (main): Ditto.
       
  1286 -	* testsuite/libffi.call/cls_sshort.c (main): Ditto.
       
  1287 -	* testsuite/libffi.call/return_fl3.c (main): Ditto.
       
  1288 -	* testsuite/libffi.call/closure_fn5.c (main): Ditto.
       
  1289 -	* testsuite/libffi.call/nested_struct.c (main): Ditto.
       
  1290 -	* testsuite/libffi.call/nested_struct10.c (main): Ditto.
       
  1291 -	* testsuite/libffi.call/return_ll1.c (main): Ditto.
       
  1292 -	* testsuite/libffi.call/cls_8byte.c (main): Ditto.
       
  1293 -	* testsuite/libffi.call/cls_align_uint32.c (main): Ditto.
       
  1294 -	* testsuite/libffi.call/cls_align_sint16.c (main): Ditto.
       
  1295 -	* testsuite/libffi.call/cls_20byte.c (main): Ditto.
       
  1296 -	* testsuite/libffi.call/nested_struct2.c (main): Ditto.
       
  1297 -	* testsuite/libffi.call/cls_24byte.c (main): Ditto.
       
  1298 -	* testsuite/libffi.call/nested_struct6.c (main): Ditto.
       
  1299 -	* testsuite/libffi.call/cls_uint.c (main): Ditto.
       
  1300 -	* testsuite/libffi.call/cls_12byte.c (main): Ditto.
       
  1301 -	* testsuite/libffi.call/cls_16byte.c (main): Ditto.
       
  1302 -	* testsuite/libffi.call/closure_fn0.c (main): Ditto.
       
  1303 -	* testsuite/libffi.call/cls_9byte2.c (main): Ditto.
       
  1304 -	* testsuite/libffi.call/closure_fn2.c (main): Ditto.
       
  1305 -	* testsuite/libffi.call/return_dbl1.c (main): Ditto.
       
  1306 -	* testsuite/libffi.call/closure_fn4.c (main): Ditto.
       
  1307 -	* testsuite/libffi.call/closure_fn6.c (main): Ditto.
       
  1308 -	* testsuite/libffi.call/cls_align_sint32.c (main): Ditto.
       
  1309 -
       
  1310 -2007-08-07  Andrew Haley  <aph@redhat.com>
       
  1311 -
       
  1312 -	* src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous
       
  1313 -	checkin.
       
  1314 -
       
  1315 -2007-08-06  Andrew Haley  <aph@redhat.com>
       
  1316 -
       
  1317 -	PR testsuite/32843
       
  1318 -	* src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
       
  1319 -	FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
       
  1320 -	FFI_TYPE_SINT32.
       
  1321 -
       
  1322 -2007-08-02  David Daney  <ddaney@avtrex.com>
       
  1323 -
       
  1324 -	* testsuite/libffi.call/return_ul.c (main): Define return type as
       
  1325 -	ffi_arg.  Use proper printf conversion specifier.
       
  1326 -
       
  1327 -2007-07-30  Andrew Haley  <aph@redhat.com>
       
  1328 -
       
  1329 -	PR testsuite/32843
       
  1330 -	* src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for
       
  1331 -	signed/unsigned int8/16.
       
  1332 -	* src/x86/sysv.S (ffi_call_SYSV): Rewrite to:
       
  1333 -	Use a jump table.
       
  1334 -	Remove code to pop args from the stack after call.
       
  1335 -	Special-case signed/unsigned int8/16.
       
  1336 -	* testsuite/libffi.call/return_sc.c (main): Revert.
       
  1337 -
       
  1338 -2007-07-26  Richard Guenther  <rguenther@suse.de>
       
  1339 -
       
  1340 -	PR testsuite/32843
       
  1341 -	* testsuite/libffi.call/return_sc.c (main): Verify call
       
  1342 -	result as signed char, not ffi_arg.
       
  1343 -
       
  1344 -2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  1345 -
       
  1346 -	* configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64.
       
  1347 -	* configure: Regenerate.
       
  1348 -
       
  1349 -2007-07-11  David Daney  <ddaney@avtrex.com>
       
  1350 -
       
  1351 -	* src/mips/ffi.c: Don't include sys/cachectl.h.
       
  1352 -	(ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
       
  1353 -	cacheflush().
       
  1354 -
       
  1355 -2007-05-18  Aurelien Jarno  <aurelien@aurel32.net>
       
  1356 -
       
  1357 -	* src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
       
  1358 -	from (ffi_prep_closure): ... this.
       
  1359 -	(FFI_INIT_TRAMPOLINE): Adjust.
       
  1360 -
       
  1361 -2005-12-31  Phil Blundell  <pb@reciva.com>
       
  1362 -
       
  1363 -	* src/arm/ffi.c (ffi_prep_incoming_args_SYSV,
       
  1364 -	ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
       
  1365 -	* src/arm/sysv.S(ffi_closure_SYSV): Likewise.
       
  1366 -	* src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
       
  1367 -	(FFI_CLOSURES): Enable closure support.
       
  1368 -
       
  1369 -2007-07-03  Andrew Haley  <aph@hedges.billgatliff.com>
       
  1370 -
       
  1371 -	* testsuite/libffi.call/cls_multi_ushort.c,
       
  1372 -	testsuite/libffi.call/cls_align_uint16.c,
       
  1373 -	testsuite/libffi.call/nested_struct1.c,
       
  1374 -	testsuite/libffi.call/nested_struct3.c,
       
  1375 -	testsuite/libffi.call/cls_7_1_byte.c,
       
  1376 -	testsuite/libffi.call/cls_double.c,
       
  1377 -	testsuite/libffi.call/nested_struct5.c,
       
  1378 -	testsuite/libffi.call/nested_struct7.c,
       
  1379 -	testsuite/libffi.call/cls_sint.c,
       
  1380 -	testsuite/libffi.call/nested_struct9.c,
       
  1381 -	testsuite/libffi.call/cls_20byte1.c,
       
  1382 -	testsuite/libffi.call/cls_multi_sshortchar.c,
       
  1383 -	testsuite/libffi.call/cls_align_sint64.c,
       
  1384 -	testsuite/libffi.call/cls_3byte2.c,
       
  1385 -	testsuite/libffi.call/cls_multi_schar.c,
       
  1386 -	testsuite/libffi.call/cls_multi_uchar.c,
       
  1387 -	testsuite/libffi.call/cls_19byte.c,
       
  1388 -	testsuite/libffi.call/cls_9byte1.c,
       
  1389 -	testsuite/libffi.call/cls_align_float.c,
       
  1390 -	testsuite/libffi.call/closure_fn1.c,
       
  1391 -	testsuite/libffi.call/problem1.c,
       
  1392 -	testsuite/libffi.call/closure_fn3.c,
       
  1393 -	testsuite/libffi.call/cls_sshort.c,
       
  1394 -	testsuite/libffi.call/closure_fn5.c,
       
  1395 -	testsuite/libffi.call/cls_align_double.c,
       
  1396 -	testsuite/libffi.call/cls_2byte.c,
       
  1397 -	testsuite/libffi.call/nested_struct.c,
       
  1398 -	testsuite/libffi.call/nested_struct10.c,
       
  1399 -	testsuite/libffi.call/cls_4byte.c,
       
  1400 -	testsuite/libffi.call/cls_6byte.c,
       
  1401 -	testsuite/libffi.call/cls_8byte.c,
       
  1402 -	testsuite/libffi.call/cls_multi_sshort.c,
       
  1403 -	testsuite/libffi.call/cls_align_uint32.c,
       
  1404 -	testsuite/libffi.call/cls_align_sint16.c,
       
  1405 -	testsuite/libffi.call/cls_float.c,
       
  1406 -	testsuite/libffi.call/cls_20byte.c,
       
  1407 -	testsuite/libffi.call/cls_5_1_byte.c,
       
  1408 -	testsuite/libffi.call/nested_struct2.c,
       
  1409 -	testsuite/libffi.call/cls_24byte.c,
       
  1410 -	testsuite/libffi.call/nested_struct4.c,
       
  1411 -	testsuite/libffi.call/nested_struct6.c,
       
  1412 -	testsuite/libffi.call/cls_64byte.c,
       
  1413 -	testsuite/libffi.call/nested_struct8.c,
       
  1414 -	testsuite/libffi.call/cls_uint.c,
       
  1415 -	testsuite/libffi.call/cls_multi_ushortchar.c,
       
  1416 -	testsuite/libffi.call/cls_schar.c,
       
  1417 -	testsuite/libffi.call/cls_uchar.c,
       
  1418 -	testsuite/libffi.call/cls_align_uint64.c,
       
  1419 -	testsuite/libffi.call/cls_ulonglong.c,
       
  1420 -	testsuite/libffi.call/cls_align_longdouble.c,
       
  1421 -	testsuite/libffi.call/cls_1_1byte.c,
       
  1422 -	testsuite/libffi.call/cls_12byte.c,
       
  1423 -	testsuite/libffi.call/cls_3_1byte.c,
       
  1424 -	testsuite/libffi.call/cls_3byte1.c,
       
  1425 -	testsuite/libffi.call/cls_4_1byte.c,
       
  1426 -	testsuite/libffi.call/cls_6_1_byte.c,
       
  1427 -	testsuite/libffi.call/cls_16byte.c,
       
  1428 -	testsuite/libffi.call/cls_18byte.c,
       
  1429 -	testsuite/libffi.call/closure_fn0.c,
       
  1430 -	testsuite/libffi.call/cls_9byte2.c,
       
  1431 -	testsuite/libffi.call/closure_fn2.c,
       
  1432 -	testsuite/libffi.call/closure_fn4.c,
       
  1433 -	testsuite/libffi.call/cls_ushort.c,
       
  1434 -	testsuite/libffi.call/closure_fn6.c,
       
  1435 -	testsuite/libffi.call/cls_5byte.c,
       
  1436 -	testsuite/libffi.call/cls_align_pointer.c,
       
  1437 -	testsuite/libffi.call/cls_7byte.c,
       
  1438 -	testsuite/libffi.call/cls_align_sint32.c,
       
  1439 -	testsuite/libffi.special/unwindtest_ffi_call.cc,
       
  1440 -	testsuite/libffi.special/unwindtest.cc: Enable for ARM.
       
  1441 -
       
  1442 -2007-07-05  H.J. Lu  <hongjiu.lu@intel.com>
       
  1443 -
       
  1444 -	* aclocal.m4: Regenerated.
       
  1445 -
       
  1446 -2007-06-02  Paolo Bonzini  <bonzini@gnu.org>
       
  1447 -
       
  1448 -	* configure: Regenerate.
       
  1449 -
       
  1450 -2007-05-23  Steve Ellcey  <sje@cup.hp.com>
       
  1451 -
       
  1452 -	* Makefile.in: Regenerate.
       
  1453 -	* configure: Regenerate.
       
  1454 -	* aclocal.m4: Regenerate.
       
  1455 -	* include/Makefile.in: Regenerate.
       
  1456 -	* testsuite/Makefile.in: Regenerate.
       
  1457 -
       
  1458 -2007-05-10  Roman Zippel <zippel@linux-m68k.org>
       
  1459 -
       
  1460 -	* src/m68k/ffi.c (ffi_prep_incoming_args_SYSV,
       
  1461 -	ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support.
       
  1462 -	* src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise.
       
  1463 -	* src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
       
  1464 -	(FFI_CLOSURES): Enable closure support.
       
  1465 -
       
  1466 -2007-05-10  Roman Zippel <zippel@linux-m68k.org>
       
  1467 -
       
  1468 -	* configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test.
       
  1469 -	* configure: Regenerate.
       
  1470 -	* fficonfig.h.in: Regenerate.
       
  1471 -	* src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC,
       
  1472 -	CFI_OFFSET,CFI_DEF_CFA): New macros.
       
  1473 -	(ffi_call_SYSV): Add callframe annotation.
       
  1474 -
       
  1475 -2007-05-10  Roman Zippel <zippel@linux-m68k.org>
       
  1476 -
       
  1477 -	* src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix
       
  1478 -	numerous test suite failures.
       
  1479 -	* src/m68k/sysv.S (ffi_call_SYSV): Likewise.
       
  1480 -
       
  1481 -2007-04-11  Paolo Bonzini  <bonzini@gnu.org>
       
  1482 -
       
  1483 -	* Makefile.am (EXTRA_DIST): Bring up to date.
       
  1484 -	* Makefile.in: Regenerate.
       
  1485 -	* src/frv/eabi.S: Remove RCS keyword.
       
  1486 -
       
  1487 -2007-04-06  Richard Henderson  <rth@redhat.com>
       
  1488 -
       
  1489 -	* configure.ac: Tidy target case.
       
  1490 -	(HAVE_LONG_DOUBLE): Allow the target to override.
       
  1491 -	* configure: Regenerate.
       
  1492 -	* include/ffi.h.in: Don't define ffi_type_foo if
       
  1493 -	LIBFFI_HIDE_BASIC_TYPES is defined.
       
  1494 -	(ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define
       
  1495 -	to ffi_type_double.
       
  1496 -	* types.c (LIBFFI_HIDE_BASIC_TYPES): Define.
       
  1497 -	(FFI_TYPEDEF, ffi_type_void): Mark the data const.
       
  1498 -	(ffi_type_longdouble): Special case for Alpha.  Don't define
       
  1499 -	if long double == double.
       
  1500 -
       
  1501 -	* src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value.
       
  1502 -	(ffi_prep_cif_machdep): Handle it as the 128-bit type.
       
  1503 -	(ffi_call, ffi_closure_osf_inner): Likewise.
       
  1504 -	(ffi_closure_osf_inner): Likewise.  Mark hidden.
       
  1505 -	(ffi_call_osf, ffi_closure_osf): Mark hidden.
       
  1506 -	* src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition.
       
  1507 -	* src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden.
       
  1508 -	(load_table): Handle 128-bit long double.
       
  1509 -
       
  1510 -	* testsuite/libffi.call/float4.c: Add -mieee for alpha.
       
  1511 -
       
  1512 -2007-04-06  Tom Tromey  <tromey@redhat.com>
       
  1513 -
       
  1514 -	PR libffi/31491:
       
  1515 -	* README: Fixed bug in example.
       
  1516 -
       
  1517 -2007-04-03  Jakub Jelinek  <jakub@redhat.com>
       
  1518 -
       
  1519 -	* src/closures.c: Include sys/statfs.h.
       
  1520 -	(_GNU_SOURCE): Define on Linux.
       
  1521 -	(FFI_MMAP_EXEC_SELINUX): Define.
       
  1522 -	(selinux_enabled): New variable.
       
  1523 -	(selinux_enabled_check): New function.
       
  1524 -	(is_selinux_enabled): Define.
       
  1525 -	(dlmmap): Use it.
       
  1526 -
       
  1527 -2007-03-24  Uros Bizjak  <ubizjak@gmail.com>
       
  1528 -
       
  1529 -	* testsuite/libffi.call/return_fl2.c (return_fl): Mark as static.
       
  1530 -	Use 'volatile float sum' to create sum of floats to avoid false
       
  1531 -	negative due to excess precision on ix86 targets.
       
  1532 -	(main): Ditto.
       
  1533 -
       
  1534 -2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
       
  1535 -
       
  1536 -	* src/powerpc/ffi.c (flush_icache): Fix left-over from previous
       
  1537 -	patch.
       
  1538 -	(ffi_prep_closure_loc): Remove unneeded casts.  Add needed ones.
       
  1539 -
       
  1540 -2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
       
  1541 -
       
  1542 -	* include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
       
  1543 -	(ffi_prep_closure_loc): New.
       
  1544 -	(ffi_prep_raw_closure_loc): New.
       
  1545 -	(ffi_prep_java_raw_closure_loc): New.
       
  1546 -	* src/closures.c: New file.
       
  1547 -	* src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment):
       
  1548 -	Replace sflags with exec_offset.
       
  1549 -	[FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset,
       
  1550 -	sub_segment_exec_offset): New macros.
       
  1551 -	(get_segment_flags, set_segment_flags, check_segment_merge): New
       
  1552 -	macros.
       
  1553 -	(is_mmapped_segment, is_extern_segment): Use get_segment_flags.
       
  1554 -	(add_segment, sys_alloc, create_mspace, create_mspace_with_base,
       
  1555 -	destroy_mspace): Use new macros.
       
  1556 -	(sys_alloc): Silence warning.
       
  1557 -	* Makefile.am (libffi_la_SOURCES): Add src/closures.c.
       
  1558 -	* Makefile.in: Rebuilt.
       
  1559 -	* src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in
       
  1560 -	terms of ffi_prep_closure_loc.
       
  1561 -	* src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted
       
  1562 -	from...
       
  1563 -	(ffi_prep_raw_closure): ... this.  Re-implement in terms of the
       
  1564 -	renamed version.
       
  1565 -	* src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and
       
  1566 -	adjusted from...
       
  1567 -	(ffi_prep_java_raw_closure): ... this.  Re-implement in terms of
       
  1568 -	the renamed version.
       
  1569 -	* src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from
       
  1570 -	(ffi_prep_closure): ... this.
       
  1571 -	* src/pa/ffi.c: Likewise.
       
  1572 -	* src/cris/ffi.c: Likewise.  Adjust.
       
  1573 -	* src/frv/ffi.c: Likewise.
       
  1574 -	* src/ia64/ffi.c: Likewise.
       
  1575 -	* src/mips/ffi.c: Likewise.
       
  1576 -	* src/powerpc/ffi_darwin.c: Likewise.
       
  1577 -	* src/s390/ffi.c: Likewise.
       
  1578 -	* src/sh/ffi.c: Likewise.
       
  1579 -	* src/sh64/ffi.c: Likewise.
       
  1580 -	* src/sparc/ffi.c: Likewise.
       
  1581 -	* src/x86/ffi64.c: Likewise.
       
  1582 -	* src/x86/ffi.c: Likewise.
       
  1583 -	(FFI_INIT_TRAMPOLINE): Adjust.
       
  1584 -	(ffi_prep_raw_closure_loc): Renamed and adjusted from...
       
  1585 -	(ffi_prep_raw_closure): ... this.
       
  1586 -	* src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from
       
  1587 -	(ffi_prep_closure): ... this.
       
  1588 -	(flush_icache): Adjust.
       
  1589 -
       
  1590 -2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
       
  1591 -
       
  1592 -	* src/dlmalloc.c: New file, imported version 2.8.3 of Doug
       
  1593 -	Lea's malloc.
       
  1594 -
       
  1595 -2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
       
  1596 -
       
  1597 -	* Makefile.am: Add dummy install-pdf target.
       
  1598 -	* Makefile.in: Regenerate
       
  1599 -
       
  1600 -2007-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
       
  1601 -
       
  1602 -	* src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep,
       
  1603 -	ffi_closure_helper_SYSV): Add long double handling.
       
  1604 -
       
  1605 -2007-02-02  Jakub Jelinek  <jakub@redhat.com>
       
  1606 -
       
  1607 -	* src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2
       
  1608 -	immediately after bctrl instruction.
       
  1609 -
       
  1610 -2007-01-18  Alexandre Oliva  <aoliva@redhat.com>
       
  1611 -
       
  1612 -	* Makefile.am (all-recursive, install-recursive,
       
  1613 -	mostlyclean-recursive, clean-recursive, distclean-recursive,
       
  1614 -	maintainer-clean-recursive): Add missing targets.
       
  1615 -	* Makefile.in: Rebuilt.
       
  1616 -
       
  1617 -2006-12-14  Andreas Tobler  <a.tobler@schweiz.org>
       
  1618 -
       
  1619 -	* configure.ac: Add TARGET for x86_64-*-darwin*.
       
  1620 -	* Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources
       
  1621 -	for X86_DARWIN.
       
  1622 -	* src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*.
       
  1623 -	* src/x86/darwin64.S: New file for x86_64-*-darwin* support.
       
  1624 -	* configure: Regenerate.
       
  1625 -	* Makefile.in: Regenerate.
       
  1626 -	* include/Makefile.in: Regenerate.
       
  1627 -	* testsuite/Makefile.in: Regenerate.
       
  1628 -	* testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for
       
  1629 -	ffi_call only.
       
  1630 -
       
  1631 -2006-12-13  Andreas Tobler <a.tobler@schweiz.org>
       
  1632 -
       
  1633 -	* aclocal.m4: Regenerate with aclocal -I .. as written in the
       
  1634 -	Makefile.am.
       
  1635 -
       
  1636 -2006-10-31  Geoffrey Keating  <geoffk@apple.com>
       
  1637 -
       
  1638 -	* src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New.
       
  1639 -	(ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for
       
  1640 -	Darwin.
       
  1641 -	* testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL.
       
  1642 -	* testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL.
       
  1643 -
       
  1644 -2006-10-10  Paolo Bonzini  <bonzini@gnu.org>
       
  1645 -	    Sandro Tolaini  <tolaini@libero.it>
       
  1646 -
       
  1647 -	* configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and
       
  1648 -	conditional.
       
  1649 -	* configure: Regenerated.
       
  1650 -	* Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
       
  1651 -	(EXTRA_DIST): Add src/x86/darwin.S.
       
  1652 -	* Makefile.in: Regenerated.
       
  1653 -	* include/Makefile.in: Regenerated.
       
  1654 -	* testsuite/Makefile.in: Regenerated.
       
  1655 -
       
  1656 -	* src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like
       
  1657 -	X86_WIN32, and additionally align stack to 16 bytes.
       
  1658 -	* src/x86/darwin.S: New, based on sysv.S.
       
  1659 -	* src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs.
       
  1660 -
       
  1661 -2006-09-12  David Daney  <ddaney@avtrex.com>
       
  1662 -
       
  1663 -	PR libffi/23935
       
  1664 -	* include/Makefile.am: Install both ffi.h and ffitarget.h in
       
  1665 -	$(libdir)/gcc/$(target_alias)/$(gcc_version)/include.
       
  1666 -	* aclocal.m4: Regenerated for automake 1.9.6.
       
  1667 -	* Makefile.in: Regenerated.
       
  1668 -	* include/Makefile.in: Regenerated.
       
  1669 -	* testsuite/Makefile.in: Regenerated.
       
  1670 -
       
  1671 -2006-08-17  Andreas Tobler  <a.tobler@schweiz.ch>
       
  1672 -
       
  1673 -	* include/ffi_common.h (struct): Revert accidental commit.
       
  1674 -
       
  1675 -2006-08-15  Andreas Tobler  <a.tobler@schweiz.ch>
       
  1676 -
       
  1677 -	* include/ffi_common.h: Remove lint directives.
       
  1678 -	* include/ffi.h.in: Likewise.
       
  1679 -
       
  1680 -2006-07-25  Torsten Schoenfeld  <kaffeetisch@gmx.de>
       
  1681 -
       
  1682 -	* include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly
       
  1683 -	for 32-bit architectures.
       
  1684 -	* testsuite/libffi.call/return_ul.c: New test case.
       
  1685 -
       
  1686 -2006-07-19  David Daney  <ddaney@avtrex.com>
       
  1687 -
       
  1688 -	* testsuite/libffi.call/closure_fn6.c: Remove xfail for mips,
       
  1689 -	xfail remains for mips64.
       
  1690 -
       
  1691 -2006-05-23  Carlos O'Donell  <carlos@codesourcery.com>
       
  1692 -
       
  1693 -	* Makefile.am: Add install-html target. Add install-html to .PHONY
       
  1694 -	* Makefile.in: Regenerate.
       
  1695 -	* aclocal.m4: Regenerate.
       
  1696 -	* include/Makefile.in: Regenerate.
       
  1697 -	* testsuite/Makefile.in: Regenerate.
       
  1698 -
       
  1699 -2006-05-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
  1700 -
       
  1701 -	* pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from
       
  1702 -	stack slot.
       
  1703 -
       
  1704 -2006-04-22  Andreas Tobler  <a.tobler@schweiz.ch>
       
  1705 -
       
  1706 -	* README: Remove notice about 'Crazy Comments'.
       
  1707 -	* src/debug.c: Remove lint directives. Cleanup white spaces.
       
  1708 -	* src/java_raw_api.c: Likewise.
       
  1709 -	* src/prep_cif.c: Likewise.
       
  1710 -	* src/raw_api.c: Likewise.
       
  1711 -	* src/ffitest.c: Delete. No longer needed, all test cases migrated
       
  1712 -	to the testsuite.
       
  1713 -	* src/arm/ffi.c: Remove lint directives.
       
  1714 -	* src/m32r/ffi.c: Likewise.
       
  1715 -	* src/pa/ffi.c: Likewise.
       
  1716 -	* src/powerpc/ffi.c: Likewise.
       
  1717 -	* src/powerpc/ffi_darwin.c: Likewise.
       
  1718 -	* src/sh/ffi.c: Likewise.
       
  1719 -	* src/sh64/ffi.c: Likewise.
       
  1720 -	* src/x86/ffi.c: Likewise.
       
  1721 -	* testsuite/libffi.call/float2.c: Likewise.
       
  1722 -	* testsuite/libffi.call/promotion.c: Likewise.
       
  1723 -	* testsuite/libffi.call/struct1.c: Likewise.
       
  1724 -
       
  1725 -2006-04-13  Andreas Tobler  <a.tobler@schweiz.ch>
       
  1726 -
       
  1727 -	* src/pa/hpux32.S: Correct unwind offset calculation for
       
  1728 -	ffi_closure_pa32.
       
  1729 -	* src/pa/linux.S: Likewise.
       
  1730 -
       
  1731 -2006-04-12  James E Wilson  <wilson@specifix.com>
       
  1732 -
       
  1733 -	PR libgcj/26483
       
  1734 -	* src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros.
       
  1735 -	(hfa_type_load): Call stf_spill.
       
  1736 -	(hfa_type_store): Call ldf_fill.
       
  1737 -	(ffi_call): Adjust calls to above routines.  Add local temps for
       
  1738 -	macro result.
       
  1739 -
       
  1740 -2006-04-10  Matthias Klose  <doko@debian.org>
       
  1741 -
       
  1742 -	* testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib
       
  1743 -	directory names containing underscores.
       
  1744 -
       
  1745 -2006-04-07  James E Wilson  <wilson@specifix.com>
       
  1746 -
       
  1747 -	* testsuite/libffi.call/float4.c: New testcase.
       
  1748 -
       
  1749 -2006-04-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
  1750 -	    Andreas Tobler  <a.tobler@schweiz.ch>
       
  1751 -
       
  1752 -	* Makefile.am: Add PA_HPUX port.
       
  1753 -	* Makefile.in: Regenerate.
       
  1754 -	* include/Makefile.in: Likewise.
       
  1755 -	* testsuite/Makefile.in: Likewise.
       
  1756 -	* configure.ac: Add PA_HPUX rules.
       
  1757 -	* configure: Regenerate.
       
  1758 -	* src/pa/ffitarget.h: Rename linux target to PA_LINUX.
       
  1759 -	Add PA_HPUX and PA64_HPUX.
       
  1760 -	Rename FFI_LINUX ABI to FFI_PA32 ABI.
       
  1761 -	(FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets.
       
  1762 -	(FFI_TYPE_SMALL_STRUCT2): Define.
       
  1763 -	(FFI_TYPE_SMALL_STRUCT4): Likewise.
       
  1764 -	(FFI_TYPE_SMALL_STRUCT8): Likewise.
       
  1765 -	(FFI_TYPE_SMALL_STRUCT3): Redefine.
       
  1766 -	(FFI_TYPE_SMALL_STRUCT5): Likewise.
       
  1767 -	(FFI_TYPE_SMALL_STRUCT6): Likewise.
       
  1768 -	(FFI_TYPE_SMALL_STRUCT7): Likewise.
       
  1769 -	* src/pa/ffi.c (ROUND_DOWN): Delete.
       
  1770 -	(fldw, fstw, fldd, fstd): Use '__asm__'.
       
  1771 -	(ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2,
       
  1772 -	FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8.
       
  1773 -	(ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment.
       
  1774 -	Simplify incrementing of stack slot variable. Change type of local
       
  1775 -	'n' to unsigned int.
       
  1776 -	(ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long
       
  1777 -	double on PA_HPUX.
       
  1778 -	(ffi_prep_cif_machdep): Likewise.
       
  1779 -	(ffi_call): Likewise.
       
  1780 -	(ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change
       
  1781 -	return type to ffi_status. Simplify incrementing of stack slot
       
  1782 -	variable. Only copy floating point argument registers when PA_LINUX
       
  1783 -	is true. Reformat debug statement.
       
  1784 -	Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and
       
  1785 -	FFI_TYPE_SMALL_STRUCT8.
       
  1786 -	(ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to
       
  1787 -	declaration.
       
  1788 -	(ffi_prep_closure): Make linux trampoline conditional on PA_LINUX.
       
  1789 -	Add nops to cache flush.  Add trampoline for PA_HPUX.
       
  1790 -	* src/pa/hpux32.S: New file.
       
  1791 -	* src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename
       
  1792 -	ffi_prep_args_LINUX to ffi_prep_args_pa32.
       
  1793 -	Localize labels. Add support for 2, 4 and 8-byte small structs. Handle
       
  1794 -	unaligned destinations in 3, 5, 6 and 7-byte small structs. Order
       
  1795 -	argument type checks so that common argument types appear first.
       
  1796 -	(ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename
       
  1797 -	ffi_closure_inner_LINUX to ffi_closure_inner_pa32.
       
  1798 -
       
  1799 -2006-03-24  Alan Modra  <amodra@bigpond.net.au>
       
  1800 -
       
  1801 -	* src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX.  Default
       
  1802 -	for 32-bit using IBM extended double format.  Fix FFI_LAST_ABI.
       
  1803 -	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of
       
  1804 -	FFI_TYPE_LONGDOUBLE.
       
  1805 -	(ffi_prep_args64): Assert using IBM extended double.
       
  1806 -	(ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type.
       
  1807 -	Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args.
       
  1808 -	(ffi_call): Handle FFI_LINUX.
       
  1809 -	(ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs
       
  1810 -	gpr3 return pointer as for struct return.  Handle FFI_LINUX
       
  1811 -	FFI_TYPE_LONGDOUBLE return and args.  Don't increment "nf"
       
  1812 -	unnecessarily.
       
  1813 -	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2
       
  1814 -	for FFI_TYPE_LONGDOUBLE.  Move epilogue insns into case table.
       
  1815 -	Don't use r6 as pointer to results, instead use sp offset.  Don't
       
  1816 -	make a special call to load lr with case table address, instead
       
  1817 -	use offset from previous call.
       
  1818 -	* src/powerpc/sysv.S (ffi_call_SYSV): Save long double return.
       
  1819 -	* src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double
       
  1820 -	return.
       
  1821 -
       
  1822 -2006-03-15  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  1823 -
       
  1824 -	* src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments
       
  1825 -	passed with FP registers correctly.
       
  1826 -	(ffi_closure_helper_SYSV): Likewise.
       
  1827 -	* src/sh64/sysv.S: Likewise.
       
  1828 -
       
  1829 -2006-03-01  Andreas Tobler  <a.tobler@schweiz.ch>
       
  1830 -
       
  1831 -	* testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif,
       
  1832 -	args and userdata unused.
       
  1833 -	(closure_test_fn1): Mark cif and userdata unused.
       
  1834 -	(main): Remove unused res.
       
  1835 -
       
  1836 -2006-02-28  Andreas Tobler  <a.tobler@schweiz.ch>
       
  1837 -
       
  1838 -	* testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for
       
  1839 -	-O2, -O3, -Os and the warning flags -W -Wall.
       
  1840 -	* testsuite/libffi.special/special.exp: Likewise.
       
  1841 -	* testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark
       
  1842 -	unused parameter unused for gcc or else do nothing.
       
  1843 -	* testsuite/libffi.special/ffitestcxx.h: Likewise.
       
  1844 -	* testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif
       
  1845 -	and userdata unused.
       
  1846 -	* testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise.
       
  1847 -	* testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise.
       
  1848 -	* testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise.
       
  1849 -	* testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise.
       
  1850 -	* testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise.
       
  1851 -	* testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise.
       
  1852 -	* testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise.
       
  1853 -	* testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise.
       
  1854 -	* testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise.
       
  1855 -	* testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise.
       
  1856 -	* testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise.
       
  1857 -	* testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise.
       
  1858 -	* testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise.
       
  1859 -	* testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise.
       
  1860 -	* testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise.
       
  1861 -	* testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise.
       
  1862 -	* testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise.
       
  1863 -	* testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise.
       
  1864 -	* testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise.
       
  1865 -	* testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise.
       
  1866 -	* testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise.
       
  1867 -	* testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise.
       
  1868 -	* testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise.
       
  1869 -	* testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn):
       
  1870 -	Likewise.
       
  1871 -	* testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn):
       
  1872 -	Likewise.
       
  1873 -	* testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn):
       
  1874 -	Likewise.
       
  1875 -	* testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast
       
  1876 -	void* to avoid compiler warning.
       
  1877 -	(main): Likewise.
       
  1878 -	(cls_struct_align_gn): Mark cif and userdata unused.
       
  1879 -	* testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn):
       
  1880 -	Likewise.
       
  1881 -	* testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn):
       
  1882 -	Likewise.
       
  1883 -	* testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn):
       
  1884 -	Likewise.
       
  1885 -	* testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn):
       
  1886 -	Likewise.
       
  1887 -	* testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn):
       
  1888 -	Likewise.
       
  1889 -	* testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise.
       
  1890 -	* testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise.
       
  1891 -	* testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and
       
  1892 -	data unused.
       
  1893 -	(main): Cast res_call to silence gcc.
       
  1894 -	* testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and
       
  1895 -	data unused.
       
  1896 -	(main): Cast res_call to silence gcc.
       
  1897 -	* testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif
       
  1898 -	and data unused.
       
  1899 -	(main): Cast res_call to silence gcc.
       
  1900 -	* testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and
       
  1901 -	data unused.
       
  1902 -	(main): Cast res_call to silence gcc.
       
  1903 -	* testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and
       
  1904 -	data unused.
       
  1905 -	(main): Cast res_call to silence gcc.
       
  1906 -	* testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif
       
  1907 -	and data unused.
       
  1908 -	(main): Cast res_call to silence gcc.
       
  1909 -	* testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and
       
  1910 -	userdata unused.
       
  1911 -	(cls_ret_schar_fn): Cast printf parameter to silence gcc.
       
  1912 -	* testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and
       
  1913 -	userdata unused.
       
  1914 -	(cls_ret_sint_fn): Cast printf parameter to silence gcc.
       
  1915 -	* testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and
       
  1916 -	userdata unused.
       
  1917 -	(cls_ret_sshort_fn): Cast printf parameter to silence gcc.
       
  1918 -	* testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn):  Mark cif and
       
  1919 -	userdata unused.
       
  1920 -	(cls_ret_uchar_fn): Cast printf parameter to silence gcc.
       
  1921 -	* testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and
       
  1922 -	userdata unused.
       
  1923 -	(cls_ret_uint_fn): Cast printf parameter to silence gcc.
       
  1924 -	* testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif
       
  1925 -	and userdata unused.
       
  1926 -	* testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and
       
  1927 -	userdata unused.
       
  1928 -	(cls_ret_ushort_fn): Cast printf parameter to silence gcc.
       
  1929 -	* testsuite/libffi.call/float.c (floating): Remove unused parameter e.
       
  1930 -	* testsuite/libffi.call/float1.c (main): Remove unused variable i.
       
  1931 -	Cleanup white spaces.
       
  1932 -	* testsuite/libffi.call/negint.c (checking): Remove unused variable i.
       
  1933 -	* testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark
       
  1934 -	cif and userdata unused.
       
  1935 -	* testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn):
       
  1936 -	Likewise.
       
  1937 -	* testsuite/libffi.call/nested_struct10.c (B_gn): Likewise.
       
  1938 -	* testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf
       
  1939 -	formatters to silence gcc.
       
  1940 -	(B_gn): Mark cif and userdata unused.
       
  1941 -	* testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata
       
  1942 -	unused.
       
  1943 -	* testsuite/libffi.call/nested_struct4.c: Mention related PR.
       
  1944 -	(B_gn): Mark cif and userdata unused.
       
  1945 -	* testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata
       
  1946 -	unused.
       
  1947 -	* testsuite/libffi.call/nested_struct6.c: Mention related PR.
       
  1948 -	(B_gn): Mark cif and userdata unused.
       
  1949 -	* testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata
       
  1950 -	unused.
       
  1951 -	* testsuite/libffi.call/nested_struct8.c (B_gn): Likewise.
       
  1952 -	* testsuite/libffi.call/nested_struct9.c (B_gn): Likewise.
       
  1953 -	* testsuite/libffi.call/problem1.c (stub): Likewise.
       
  1954 -	* testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence
       
  1955 -	gcc.
       
  1956 -	* testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned
       
  1957 -	in the last commit for this test case in the test case itself.
       
  1958 -	* testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as
       
  1959 -	unused.
       
  1960 -	* testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise.
       
  1961 -	* testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise.
       
  1962 -	* testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise.
       
  1963 -	* testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise.
       
  1964 -	* testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise.
       
  1965 -	* testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise.
       
  1966 -
       
  1967 -2006-02-22  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  1968 -
       
  1969 -	* src/sh/sysv.S: Fix register numbers in the FDE for
       
  1970 -	ffi_closure_SYSV.
       
  1971 -
       
  1972 -2006-02-20  Andreas Tobler  <a.tobler@schweiz.ch>
       
  1973 -
       
  1974 -	* testsuite/libffi.call/return_fl2.c (return_fl): Remove static
       
  1975 -	declaration to avoid a false negative on ix86. See PR323.
       
  1976 -
       
  1977 -2006-02-18  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  1978 -
       
  1979 -	* src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
       
  1980 -	and cast integer to void * if needed.  Update the pointer to
       
  1981 -	the FP register saved area correctly.
       
  1982 -
       
  1983 -2006-02-17  Andreas Tobler  <a.tobler@schweiz.ch>
       
  1984 -
       
  1985 -	* testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630
       
  1986 -	is fixed.
       
  1987 -	* testsuite/libffi.call/nested_struct4.c: Likewise.
       
  1988 -
       
  1989 -2006-02-16  Andreas Tobler  <a.tobler@schweiz.ch>
       
  1990 -
       
  1991 -	* testsuite/libffi.call/return_dbl.c: New test case.
       
  1992 -	* testsuite/libffi.call/return_dbl1.c: Likewise.
       
  1993 -	* testsuite/libffi.call/return_dbl2.c: Likewise.
       
  1994 -	* testsuite/libffi.call/return_fl.c: Likewise.
       
  1995 -	* testsuite/libffi.call/return_fl1.c: Likewise.
       
  1996 -	* testsuite/libffi.call/return_fl2.c: Likewise.
       
  1997 -	* testsuite/libffi.call/return_fl3.c: Likewise.
       
  1998 -	* testsuite/libffi.call/closure_fn6.c: Likewise.
       
  1999 -
       
  2000 -	* testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong
       
  2001 -	definition.
       
  2002 -	* testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition
       
  2003 -	here to be used by other test cases too.
       
  2004 -
       
  2005 -	* testsuite/libffi.call/nested_struct10.c: New test case.
       
  2006 -	* testsuite/libffi.call/nested_struct9.c: Likewise.
       
  2007 -	* testsuite/libffi.call/nested_struct8.c: Likewise.
       
  2008 -	* testsuite/libffi.call/nested_struct7.c: Likewise.
       
  2009 -	* testsuite/libffi.call/nested_struct6.c: Likewise.
       
  2010 -	* testsuite/libffi.call/nested_struct5.c: Likewise.
       
  2011 -	* testsuite/libffi.call/nested_struct4.c: Likewise.
       
  2012 -
       
  2013 -2006-01-21  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2014 -
       
  2015 -	* configure.ac: Enable libffi for sparc64-*-freebsd*.
       
  2016 -	* configure: Rebuilt.
       
  2017 -
       
  2018 -2006-01-18  Jakub Jelinek  <jakub@redhat.com>
       
  2019 -
       
  2020 -	* src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3,
       
  2021 -	instead do the shifting inline.
       
  2022 -	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5
       
  2023 -	shift count unconditionally.  Simplify load sequences for 1, 2, 3, 4
       
  2024 -	and 8 byte structs, for the remaining struct sizes don't call
       
  2025 -	__lshrdi3, instead do the shifting inline.
       
  2026 -
       
  2027 -2005-12-07  Thiemo Seufer  <ths@networkno.de>
       
  2028 -
       
  2029 -	* src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add
       
  2030 -	missing parentheses.
       
  2031 -	* src/mips/o32.S (ffi_call_O32): Code formatting. Define
       
  2032 -	and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations.
       
  2033 -	(ffi_closure_O32): Likewise, but with newly defined A3_OFF2,
       
  2034 -	A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2,
       
  2035 -	V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2,
       
  2036 -	FA_0_0_OFF2.
       
  2037 -	* src/mips/ffi.c (ffi_prep_args): Code formatting. Fix
       
  2038 -	endianness bugs.
       
  2039 -	(ffi_prep_closure): Improve trampoline instruction scheduling.
       
  2040 -	(ffi_closure_mips_inner_O32): Fix endianness bugs.
       
  2041 -
       
  2042 -2005-12-03  Alan Modra  <amodra@bigpond.net.au>
       
  2043 -
       
  2044 -	* src/powerpc/ffi.c: Formatting.
       
  2045 -	(ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions.
       
  2046 -	(ffi_prep_args64): Likewise.
       
  2047 -
       
  2048 -2005-09-30  Geoffrey Keating  <geoffk@apple.com>
       
  2049 -
       
  2050 -	* testsuite/lib/libffi-dg.exp (libffi_target_compile): For
       
  2051 -	darwin, use -shared-libgcc not -lgcc_s, and explain why.
       
  2052 -
       
  2053 -2005-09-26  Tom Tromey  <tromey@redhat.com>
       
  2054 -
       
  2055 -	* testsuite/libffi.call/float1.c (value_type): New typedef.
       
  2056 -	(CANARY): New define.
       
  2057 -	(main): Check for result buffer overflow.
       
  2058 -	* src/powerpc/linux64.S: Handle linux64 long double returns.
       
  2059 -	* src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant.
       
  2060 -	(ffi_prep_cif_machdep): Handle linux64 long double returns.
       
  2061 -
       
  2062 -2005-08-25  Alan Modra  <amodra@bigpond.net.au>
       
  2063 -
       
  2064 -	PR target/23404
       
  2065 -	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack
       
  2066 -	homed fp args.
       
  2067 -	(ffi_status ffi_prep_cif_machdep): Correct stack sizing for same.
       
  2068 -
       
  2069 -2005-08-11  Jakub Jelinek  <jakub@redhat.com>
       
  2070 -
       
  2071 -	* configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test.
       
  2072 -	(AH_BOTTOM): Add FFI_HIDDEN definition.
       
  2073 -	* configure: Rebuilt.
       
  2074 -	* fficonfig.h.in: Rebuilt.
       
  2075 -	* src/powerpc/ffi.c (hidden): Remove.
       
  2076 -	(ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64,
       
  2077 -	ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden.
       
  2078 -	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64,
       
  2079 -	.ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden.
       
  2080 -	* src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove,
       
  2081 -	add FFI_HIDDEN to its prototype.
       
  2082 -	(ffi_closure_SYSV_inner): New.
       
  2083 -	* src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
       
  2084 -	* src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
       
  2085 -
       
  2086 -2005-08-10  Alfred M. Szmidt  <ams@gnu.org>
       
  2087 -
       
  2088 -	PR libffi/21819:
       
  2089 -	* configure: Rebuilt.
       
  2090 -	* configure.ac: Handle i*86-*-gnu*.
       
  2091 -
       
  2092 -2005-08-09  Jakub Jelinek  <jakub@redhat.com>
       
  2093 -
       
  2094 -	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use
       
  2095 -	DW_CFA_offset_extended_sf rather than
       
  2096 -	DW_CFA_GNU_negative_offset_extended.
       
  2097 -	* src/powerpc/sysv.S (ffi_call_SYSV): Likewise.
       
  2098 -
       
  2099 -2005-07-22  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
       
  2100 -
       
  2101 -	* src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly
       
  2102 -	on sh3.
       
  2103 -	(ffi_closure_SYSV): Change the stack layout for sh3 struct argument.
       
  2104 -	* src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is
       
  2105 -	partially on register.
       
  2106 -	(ffi_closure_helper_SYSV): Likewise.
       
  2107 -	(ffi_prep_cif_machdep): Don't set too many cif->flags.
       
  2108 -
       
  2109 -2005-07-20  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  2110 -
       
  2111 -	* src/sh/ffi.c (ffi_call): Handle small structures correctly.
       
  2112 -	Remove empty line.
       
  2113 -	* src/sh64/ffi.c (simple_type): Remove.
       
  2114 -	(return_type): Handle small structures correctly.
       
  2115 -	(ffi_prep_args): Likewise.
       
  2116 -	(ffi_call): Likewise.
       
  2117 -	(ffi_closure_helper_SYSV): Likewise.
       
  2118 -	* src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return.
       
  2119 -	Emit position independent code if PIC and remove wrong datalabel
       
  2120 -	prefixes from EH data.
       
  2121 -
       
  2122 -2005-07-19  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2123 -
       
  2124 -	* Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD.
       
  2125 -	* Makefile.in: Regenerate.
       
  2126 -	* include/Makefile.in: Likewise.
       
  2127 -	* testsuite/Makefile.in: Likewise.
       
  2128 -	* configure.ac: Add POWERPC_FREEBSD rules.
       
  2129 -	* configure: Regenerate.
       
  2130 -	* src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules.
       
  2131 -	(FFI_SYSV_TYPE_SMALL_STRUCT): Define.
       
  2132 -	* src/powerpc/ffi.c: Add flags to handle small structure returns
       
  2133 -	in ffi_call_SYSV.
       
  2134 -	(ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI.
       
  2135 -	Aka FFI_SYSV.
       
  2136 -	(ffi_closure_helper_SYSV): Likewise.
       
  2137 -	* src/powerpc/ppc_closure.S: Add return types for small structures.
       
  2138 -	* src/powerpc/sysv.S: Add bits to handle small structures for
       
  2139 -	final SYSV 4 ABI.
       
  2140 -
       
  2141 -2005-07-10  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2142 -
       
  2143 -	* testsuite/libffi.call/cls_5_1_byte.c: New test file.
       
  2144 -	* testsuite/libffi.call/cls_6_1_byte.c: Likewise.
       
  2145 -	* testsuite/libffi.call/cls_7_1_byte.c: Likewise.
       
  2146 -
       
  2147 -2005-07-05  Randolph Chung  <tausq@debian.org>
       
  2148 -
       
  2149 -	* src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1
       
  2150 -	as FFI_TYPE_SMALL_STRUCT3.  Break out handling for 5-7 byte
       
  2151 -	structures.  Kill compilation warnings.
       
  2152 -	(ffi_closure_inner_LINUX): Print return values as hex in debug
       
  2153 -	message.  Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3.
       
  2154 -	Properly handle 5-7 byte structure returns.
       
  2155 -	* src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1)
       
  2156 -	(FFI_TYPE_SMALL_STRUCT2): Remove.
       
  2157 -	(FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5)
       
  2158 -	(FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define.
       
  2159 -	* src/pa/linux.S: Mark source file as using PA1.1 assembly.
       
  2160 -	(checksmst1, checksmst2): Remove.
       
  2161 -	(checksmst3): Optimize handling of 3-byte struct returns.
       
  2162 -	(checksmst567): Properly handle 5-7 byte struct returns.
       
  2163 -
       
  2164 -2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  2165 -
       
  2166 -	PR libgcj/21943
       
  2167 -	* src/mips/n32.S: Enforce PIC code.
       
  2168 -	* src/mips/o32.S: Likewise.
       
  2169 -
       
  2170 -2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  2171 -
       
  2172 -	* configure.ac: Treat i*86-*-solaris2.10 and up as X86_64.
       
  2173 -	* configure: Regenerate.
       
  2174 -
       
  2175 -2005-06-01  Alan Modra  <amodra@bigpond.net.au>
       
  2176 -
       
  2177 -	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET
       
  2178 -	to call ffi_closure_helper_SYSV.  Append @local instead.
       
  2179 -	* src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV.
       
  2180 -
       
  2181 -2005-05-17  Kelley Cook  <kcook@gcc.gnu.org>
       
  2182 -
       
  2183 -	* configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
       
  2184 -	Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
       
  2185 -	* Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config.
       
  2186 -	* aclocal.m4, configure, fficonfig.h.in, Makefile.in,
       
  2187 -	include/Makefile.in, testsuite/Makefile.in: Regenerate.
       
  2188 -
       
  2189 -2005-05-09  Mike Stump  <mrs@apple.com>
       
  2190 -
       
  2191 -	* configure: Regenerate.
       
  2192 -
       
  2193 -2005-05-08  Richard Henderson  <rth@redhat.com>
       
  2194 -
       
  2195 -	PR libffi/21285
       
  2196 -	* src/alpha/osf.S: Update unwind into to match code.
       
  2197 -
       
  2198 -2005-05-04  Andreas Degert <ad@papyrus-gmbh.de>
       
  2199 -	    Richard Henderson  <rth@redhat.com>
       
  2200 -
       
  2201 -	* src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in
       
  2202 -	bit 11 of flags.
       
  2203 -	(ffi_call): Mask return type field.  Pass ssecount to ffi_call_unix64.
       
  2204 -	(ffi_prep_closure): Set carry bit if sse-used flag set.
       
  2205 -	* src/x86/unix64.S (ffi_call_unix64): Add ssecount argument.
       
  2206 -	Only load sse registers if ssecount non-zero.
       
  2207 -	(ffi_closure_unix64): Only save sse registers if carry set on entry.
       
  2208 -
       
  2209 -2005-04-29  Ralf Corsepius  <ralf.corsepius@rtems.org>
       
  2210 -
       
  2211 -	* configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*,
       
  2212 -	powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*.
       
  2213 -	* configure: Regenerate.
       
  2214 -
       
  2215 -2005-04-20  Hans-Peter Nilsson  <hp@axis.com>
       
  2216 -
       
  2217 -	* testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use,
       
  2218 -	have Tcl8.3-compatible intermediate variable.
       
  2219 -
       
  2220 -2005-04-18  Simon Posnjak <simon.posnjak@siol.net>
       
  2221 -	    Hans-Peter Nilsson  <hp@axis.com>
       
  2222 -
       
  2223 -	* Makefile.am: Add CRIS support.
       
  2224 -	* configure.ac: Likewise.
       
  2225 -	* Makefile.in, configure, testsuite/Makefile.in,
       
  2226 -	include/Makefile.in: Regenerate.
       
  2227 -	* src/cris: New directory.
       
  2228 -	* src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files.
       
  2229 -	* src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__.
       
  2230 -
       
  2231 -	* testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with
       
  2232 -	\r?\n in output tests.
       
  2233 -
       
  2234 -2005-04-12  Mike Stump  <mrs@apple.com>
       
  2235 -
       
  2236 -	* configure: Regenerate.
       
  2237 -
       
  2238 -2005-03-30  Hans Boehm  <Hans.Boehm@hp.com>
       
  2239 -
       
  2240 -	* src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI.
       
  2241 -
       
  2242 -2005-03-30  Steve Ellcey  <sje@cup.hp.com>
       
  2243 -
       
  2244 -	* src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.
       
  2245 -	(ffi_sarg) Ditto.
       
  2246 -	* src/ia64/unix.S (ffi_closure_unix): Extend gp
       
  2247 -	to 64 bits in ILP32 mode.
       
  2248 -	Load 64 bits even for short data.
       
  2249 -
       
  2250 -2005-03-23  Mike Stump  <mrs@apple.com>
       
  2251 -
       
  2252 -	* src/powerpc/darwin.S: Update for -m64 multilib.
       
  2253 -	* src/powerpc/darwin_closure.S: Likewise.
       
  2254 -
       
  2255 -2005-03-21  Zack Weinberg  <zack@codesourcery.com>
       
  2256 -
       
  2257 -	* configure.ac: Do not invoke TL_AC_GCC_VERSION.
       
  2258 -	Do not set tool_include_dir.
       
  2259 -	* aclocal.m4, configure, Makefile.in, testsuite/Makefile.in:
       
  2260 -	Regenerate.
       
  2261 -	* include/Makefile.am: Set gcc_version and toollibffidir.
       
  2262 -	* include/Makefile.in: Regenerate.
       
  2263 -
       
  2264 -2005-02-22  Andrew Haley  <aph@redhat.com>
       
  2265 -
       
  2266 -	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to
       
  2267 -	odd-numbered register pairs for 64-bit integer types.
       
  2268 -
       
  2269 -2005-02-23  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2270 -
       
  2271 -	PR libffi/20104
       
  2272 -	* testsuite/libffi.call/return_ll1.c: New test case.
       
  2273 -
       
  2274 -2005-02-11  Janis Johnson  <janis187@us.ibm.com>
       
  2275 -
       
  2276 -	* testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options.
       
  2277 -	* testsuite/libffi.call/float.c: Ditto.
       
  2278 -	* testsuite/libffi.call/float2.c: Ditto.
       
  2279 -	* testsuite/libffi.call/float3.c: Ditto.
       
  2280 -
       
  2281 -2005-02-08  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2282 -
       
  2283 -	* src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv.
       
  2284 -
       
  2285 -2005-01-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
       
  2286 -
       
  2287 -	* testsuite/libffi.special/special.exp (cxx_options): Add
       
  2288 -	-shared-libgcc.
       
  2289 -
       
  2290 -2004-12-31  Richard Henderson  <rth@redhat.com>
       
  2291 -
       
  2292 -	* src/types.c (FFI_AGGREGATE_TYPEDEF): Remove.
       
  2293 -	(FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF.  Replace size and
       
  2294 -	offset parameters with a type parameter; deduce size and structure
       
  2295 -	alignment.  Update all users.
       
  2296 -
       
  2297 -2004-12-31  Richard Henderson  <rth@redhat.com>
       
  2298 -
       
  2299 -	* src/types.c (FFI_TYPE_POINTER): Define with sizeof.
       
  2300 -	(FFI_TYPE_LONGDOUBLE): Fix for ia64.
       
  2301 -	* src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move
       
  2302 -	into ffi_prep_closure.
       
  2303 -	* src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite
       
  2304 -	from scratch.
       
  2305 -
       
  2306 -2004-12-27  Richard Henderson  <rth@redhat.com>
       
  2307 -
       
  2308 -	* src/x86/unix64.S: Fix typo in unwind info.
       
  2309 -
       
  2310 -2004-12-25  Richard Henderson  <rth@redhat.com>
       
  2311 -
       
  2312 -	* src/x86/ffi64.c (struct register_args): Rename from stackLayout.
       
  2313 -	(enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS.
       
  2314 -	(merge_classes): Check for it.
       
  2315 -	(SSE_CLASS_P): New.
       
  2316 -	(classify_argument): Pass byte_offset by value; perform all updates
       
  2317 -	inside struct case.
       
  2318 -	(examine_argument): Add classes argument; handle
       
  2319 -	X86_64_COMPLEX_X87_CLASS.
       
  2320 -	(ffi_prep_args): Merge into ...
       
  2321 -	(ffi_call): ... here.  Share stack frame with ffi_call_unix64.
       
  2322 -	(ffi_prep_cif_machdep): Setup cif->flags for proper structure return.
       
  2323 -	(ffi_fill_return_value): Remove.
       
  2324 -	(ffi_prep_closure): Remove dead assert.
       
  2325 -	(ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner.
       
  2326 -	Rewrite to use struct register_args instead of va_list.  Create
       
  2327 -	flags for handling structure returns.
       
  2328 -	* src/x86/unix64.S: Remove dead strings.
       
  2329 -	(ffi_call_unix64): Rename from ffi_call_UNIX64.  Rewrite to share
       
  2330 -	stack frame with ffi_call.  Handle structure returns properly.
       
  2331 -	(float2sse, floatfloat2sse, double2sse): Remove.
       
  2332 -	(sse2float, sse2double, sse2floatfloat): Remove.
       
  2333 -	(ffi_closure_unix64): Rename from ffi_closure_UNIX64.  Rewrite
       
  2334 -	to handle structure returns properly.
       
  2335 -
       
  2336 -2004-12-08  David Edelsohn  <edelsohn@gnu.org>
       
  2337 -
       
  2338 -	* Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and
       
  2339 -	PICFLAG.
       
  2340 -	* Makefile.in: Regenerated.
       
  2341 -
       
  2342 -2004-12-02  Richard Sandiford  <rsandifo@redhat.com>
       
  2343 -
       
  2344 -	* configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.
       
  2345 -	* configure, aclocal.m4, Makefile.in: Regenerate.
       
  2346 -	* include/Makefile.in, testsuite/Makefile.in: Regenerate.
       
  2347 -
       
  2348 -2004-11-29  Kelley Cook  <kcook@gcc.gnu.org>
       
  2349 -
       
  2350 -	* configure: Regenerate for libtool change.
       
  2351 -
       
  2352 -2004-11-25  Kelley Cook  <kcook@gcc.gnu.org>
       
  2353 -
       
  2354 -	* configure: Regenerate for libtool reversion.
       
  2355 -
       
  2356 -2004-11-24  Kelley Cook  <kcook@gcc.gnu.org>
       
  2357 -
       
  2358 -	* configure: Regenerate for libtool change.
       
  2359 -
       
  2360 -2004-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
  2361 -
       
  2362 -	* testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp.
       
  2363 -
       
  2364 -2004-11-23  Richard Sandiford  <rsandifo@redhat.com>
       
  2365 -
       
  2366 -	* src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead
       
  2367 -	of jal.  Use an absolute encoding for the frame information.
       
  2368 -
       
  2369 -2004-11-23  Kelley Cook  <kcook@gcc.gnu.org>
       
  2370 -
       
  2371 -	* Makefile.am: Remove no-dependencies.  Add ACLOCAL_AMFLAGS.
       
  2372 -	* acinclude.m4: Delete logic for sincludes.
       
  2373 -	* aclocal.m4, Makefile.in, configure: Regenerate.
       
  2374 -	* include/Makefile: Likewise.
       
  2375 -	* testsuite/Makefile: Likewise.
       
  2376 -
       
  2377 -2004-11-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
       
  2378 -
       
  2379 -	* src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers
       
  2380 -	on a 8-byte boundary.
       
  2381 -	* src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments.
       
  2382 -
       
  2383 -2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
       
  2384 -
       
  2385 -	* src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return
       
  2386 -	long long values.  Round stack allocation to a multiple of 8 bytes
       
  2387 -	for ATPCS compatibility.
       
  2388 -	* src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register
       
  2389 -	names.  Handle returning long long types.  Add Thumb and interworking
       
  2390 -	support.  Improve soft-float code.
       
  2391 -
       
  2392 -2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
       
  2393 -
       
  2394 -	* testsuite/lib/libffi-db.exp (load_gcc_lib): New function.
       
  2395 -	(libffi_exit): New function.
       
  2396 -	(libffi_init): Build the testglue wrapper if needed.
       
  2397 -
       
  2398 -2004-10-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
       
  2399 -
       
  2400 -	PR other/18138
       
  2401 -	* testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc.
       
  2402 -
       
  2403 -2004-10-25  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
       
  2404 -
       
  2405 -	* src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0.
       
  2406 -
       
  2407 -2004-10-20  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  2408 -
       
  2409 -	* src/sh/sysv.S (ffi_call_SYSV): Don't align for double data.
       
  2410 -	* testsuite/libffi.call/float3.c: New test case.
       
  2411 -
       
  2412 -2004-10-18  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  2413 -
       
  2414 -	* src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for
       
  2415 -	the function returning a structure pointed with R2.
       
  2416 -	* src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to
       
  2417 -	the structure return value if T bit set.  Emit position
       
  2418 -	independent code and EH data if PIC.
       
  2419 -
       
  2420 -2004-10-13  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
       
  2421 -
       
  2422 -	* Makefile.am: Add m32r support.
       
  2423 -	* configure.ac: Likewise.
       
  2424 -	* Makefile.in: Regenerate.
       
  2425 -	* confiugre: Regenerate.
       
  2426 -	* src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF
       
  2427 -	(uint64, sint64, double, longdouble)
       
  2428 -	* src/m32r: New directory.
       
  2429 -	* src/m32r/ffi.c: New file.
       
  2430 -	* src/m32r/sysv.S: Likewise.
       
  2431 -	* src/m32r/ffitarget.h: Likewise.
       
  2432 -
       
  2433 -2004-10-02  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  2434 -
       
  2435 -	* testsuite/libffi.call/negint.c: New test case.
       
  2436 -
       
  2437 -2004-09-14  H.J. Lu  <hongjiu.lu@intel.com>
       
  2438 -
       
  2439 -	PR libgcj/17465
       
  2440 -	* testsuite/lib/libffi-dg.exp: Don't use global ld_library_path.
       
  2441 -	Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH,
       
  2442 -	LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and
       
  2443 -	DYLD_LIBRARY_PATH.
       
  2444 -
       
  2445 -2004-09-05  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2446 -
       
  2447 -	* testsuite/libffi.call/many_win32.c: Remove whitespaces.
       
  2448 -	* testsuite/libffi.call/promotion.c: Likewise.
       
  2449 -	* testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup
       
  2450 -	whitespaces.
       
  2451 -	* testsuite/libffi.call/return_sc.c: Likewise.
       
  2452 -	* testsuite/libffi.call/return_uc.c: Likewise.
       
  2453 -
       
  2454 -2004-09-05  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2455 -
       
  2456 -	* src/powerpc/darwin.S: Fix comments and identation.
       
  2457 -	* src/powerpc/darwin_closure.S: Likewise.
       
  2458 -
       
  2459 -2004-09-02  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2460 -
       
  2461 -	* src/powerpc/ffi_darwin.c: Add flag for longdouble return values.
       
  2462 -	(ffi_prep_args): Handle longdouble arguments.
       
  2463 -	(ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for
       
  2464 -	longdouble.
       
  2465 -	(ffi_closure_helper_DARWIN): Add closure handling for longdouble.
       
  2466 -	* src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble
       
  2467 -	values.
       
  2468 -	* src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise.
       
  2469 -	* src/types.c: Defined longdouble size and alignment for darwin.
       
  2470 -
       
  2471 -2004-09-02  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2472 -
       
  2473 -	* src/powerpc/aix.S: Remove whitespaces.
       
  2474 -	* src/powerpc/aix_closure.S: Likewise.
       
  2475 -	* src/powerpc/asm.h: Likewise.
       
  2476 -	* src/powerpc/ffi.c: Likewise.
       
  2477 -	* src/powerpc/ffitarget.h: Likewise.
       
  2478 -	* src/powerpc/linux64.S: Likewise.
       
  2479 -	* src/powerpc/linux64_closure.S: Likewise.
       
  2480 -	* src/powerpc/ppc_closure.S: Likewise.
       
  2481 -	* src/powerpc/sysv.S: Likewise.
       
  2482 -
       
  2483 -2004-08-30  Anthony Green  <green@redhat.com>
       
  2484 -
       
  2485 -	* Makefile.am: Add frv support.
       
  2486 -	* Makefile.in, testsuite/Makefile.in: Rebuilt.
       
  2487 -	* configure.ac: Read configure.host.
       
  2488 -	* configure.in: Read configure.host.
       
  2489 -	* configure.host: New file.  frv-elf needs libgloss.
       
  2490 -	* include/ffi.h.in: Force ffi_closure to have a nice big (8)
       
  2491 -	alignment.  This is needed to frv and shouldn't harm the others.
       
  2492 -	* include/ffi_common.h (ALIGN_DOWN): New macro.
       
  2493 -	* src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files.
       
  2494 -
       
  2495 -2004-08-24  David Daney  <daney@avtrex.com>
       
  2496 -
       
  2497 -	* testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*.
       
  2498 -	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
  2499 -	* testsuite/libffi.call/closure_fn2.c  Likewise.
       
  2500 -	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
  2501 -	* testsuite/libffi.call/closure_fn4.c: Likewise.
       
  2502 -	* testsuite/libffi.call/closure_fn5.c: Likewise.
       
  2503 -	* testsuite/libffi.call/cls_18byte.c: Likewise.
       
  2504 -	* testsuite/libffi.call/cls_19byte.c: Likewise.
       
  2505 -	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
  2506 -	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
  2507 -	* testsuite/libffi.call/cls_20byte1.c: Likewise.
       
  2508 -	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
  2509 -	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
  2510 -	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
  2511 -	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
  2512 -	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
  2513 -	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
  2514 -	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
  2515 -	* testsuite/libffi.call/cls_64byte.c: Likewise.
       
  2516 -	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
  2517 -	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
  2518 -	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
  2519 -	* testsuite/libffi.call/cls_9byte1.c: Likewise.
       
  2520 -	* testsuite/libffi.call/cls_9byte2.c: Likewise.
       
  2521 -	* testsuite/libffi.call/cls_align_double.c: Likewise.
       
  2522 -	* testsuite/libffi.call/cls_align_float.c: Likewise.
       
  2523 -	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
       
  2524 -	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
       
  2525 -	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
       
  2526 -	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
       
  2527 -	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
       
  2528 -	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
       
  2529 -	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
       
  2530 -	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
       
  2531 -	* testsuite/libffi.call/cls_double.c: Likewise.
       
  2532 -	* testsuite/libffi.call/cls_float.c: Likewise.
       
  2533 -	* testsuite/libffi.call/cls_multi_schar.c: Likewise.
       
  2534 -	* testsuite/libffi.call/cls_multi_sshort.c: Likewise.
       
  2535 -	* testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
       
  2536 -	* testsuite/libffi.call/cls_multi_uchar.c: Likewise.
       
  2537 -	* testsuite/libffi.call/cls_multi_ushort.c: Likewise.
       
  2538 -	* testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
       
  2539 -	* testsuite/libffi.call/cls_schar.c: Likewise.
       
  2540 -	* testsuite/libffi.call/cls_sint.c: Likewise.
       
  2541 -	* testsuite/libffi.call/cls_sshort.c: Likewise.
       
  2542 -	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
  2543 -	* testsuite/libffi.call/cls_uint.c: Likewise.
       
  2544 -	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
  2545 -	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
  2546 -	* testsuite/libffi.call/nested_struct.c: Likewise.
       
  2547 -	* testsuite/libffi.call/nested_struct1.c: Likewise.
       
  2548 -	* testsuite/libffi.call/nested_struct2.c: Likewise.
       
  2549 -	* testsuite/libffi.call/nested_struct3.c: Likewise.
       
  2550 -	* testsuite/libffi.call/problem1.c: Likewise.
       
  2551 -	* testsuite/libffi.special/unwindtest.cc: Likewise.
       
  2552 -	* testsuite/libffi.call/cls_12byte.c: Likewise and set return value
       
  2553 -	to zero.
       
  2554 -	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
  2555 -	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
  2556 -
       
  2557 -2004-08-23  David Daney <daney@avtrex.com>
       
  2558 -
       
  2559 -	PR libgcj/13141
       
  2560 -	* src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI.
       
  2561 -	* src/mips/ffi.c (ffi_prep_args): Fix alignment calculation.
       
  2562 -	(ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point
       
  2563 -	parameters and return types.
       
  2564 -	(ffi_call): Handle FFI_O32_SOFT_FLOAT ABI.
       
  2565 -	(ffi_prep_closure): Ditto.
       
  2566 -	(ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix
       
  2567 -	alignment calculations.
       
  2568 -	* src/mips/o32.S (ffi_closure_O32): Don't use floating point
       
  2569 -	instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant.
       
  2570 -
       
  2571 -2004-08-14  Casey Marshall <csm@gnu.org>
       
  2572 -
       
  2573 -	* src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to
       
  2574 -	contain `FFI_TYPE_UINT64' as return type for any 64-bit
       
  2575 -	integer (O32 ABI only).
       
  2576 -	(ffi_prep_closure): new function.
       
  2577 -	(ffi_closure_mips_inner_O32): new function.
       
  2578 -	* src/mips/ffitarget.h: Define `FFI_CLOSURES' and
       
  2579 -	`FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32.
       
  2580 -	* src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return
       
  2581 -	64 bit integers correctly.
       
  2582 -	(ffi_closure_O32): new function.
       
  2583 -	Added DWARF-2 unwind info for both functions.
       
  2584 -
       
  2585 -2004-08-10  Andrew Haley  <aph@redhat.com>
       
  2586 -
       
  2587 -	* src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments.
       
  2588 -
       
  2589 -2004-08-01  Robert Millan  <robertmh@gnu.org>
       
  2590 -
       
  2591 -	* configure.ac: Detect knetbsd-gnu and kfreebsd-gnu.
       
  2592 -	* configure: Regenerate.
       
  2593 -
       
  2594 -2004-07-30  Maciej W. Rozycki  <macro@linux-mips.org>
       
  2595 -
       
  2596 -	* acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
       
  2597 -	and mmap() explicitly instead of relying on preset autoconf cache
       
  2598 -	variables.
       
  2599 -	* aclocal.m4: Regenerate.
       
  2600 -	* configure: Regenerate.
       
  2601 -
       
  2602 -2004-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
       
  2603 -
       
  2604 -	* src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation.
       
  2605 -	(ffi_check_float_struct): Remove unused prototype.
       
  2606 -
       
  2607 -2004-06-30  Geoffrey Keating  <geoffk@apple.com>
       
  2608 -
       
  2609 -	* src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment
       
  2610 -	character on Darwin, use '\n\t' instead.
       
  2611 -
       
  2612 -2004-06-26  Matthias Klose  <doko@debian.org>
       
  2613 -
       
  2614 -	* libtool-version: Fix typo in revision/age.
       
  2615 -
       
  2616 -2004-06-17  Matthias Klose  <doko@debian.org>
       
  2617 -
       
  2618 -	* libtool-version: New.
       
  2619 -	* Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname.
       
  2620 -	* Makefile.in: Regenerate.
       
  2621 -
       
  2622 -2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
       
  2623 -
       
  2624 -	* Makefile.am: Remove useless multilib rules.
       
  2625 -	* Makefile.in: Regenerate.
       
  2626 -	* aclocal.m4: Regenerate with automake 1.8.5.
       
  2627 -	* configure.ac: Remove useless multilib configury.
       
  2628 -	* configure: Regenerate.
       
  2629 -
       
  2630 -2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
       
  2631 -
       
  2632 -	* .cvsignore: New file.
       
  2633 -
       
  2634 -2004-06-10  Jakub Jelinek  <jakub@redhat.com>
       
  2635 -
       
  2636 -	* src/ia64/unix.S (ffi_call_unix): Insert group barrier break
       
  2637 -	fp_done.
       
  2638 -	(ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever
       
  2639 -	changed from 8.
       
  2640 -
       
  2641 -2004-06-06  Sean McNeil  <sean@mcneil.com>
       
  2642 -
       
  2643 -	* configure.ac: Add x86_64-*-freebsd* support.
       
  2644 -	* configure: Regenerate.
       
  2645 -
       
  2646 -2004-04-26  Joe Buck <jbuck@welsh-buck.org>
       
  2647 -
       
  2648 -	Bug 15093
       
  2649 -	* configure.ac: Test for existence of mmap and sys/mman.h before
       
  2650 -	checking blacklist.  Fix suggested by Jim Wilson.
       
  2651 -	* configure: Regenerate.
       
  2652 -
       
  2653 -2004-04-26  Matt Austern  <austern@apple.com>
       
  2654 -
       
  2655 -	* src/powerpc/darwin.S: Go through a non-lazy pointer for initial
       
  2656 -	FDE location.
       
  2657 -	* src/powerpc/darwin_closure.S: Likewise.
       
  2658 -
       
  2659 -2004-04-24  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2660 -
       
  2661 -	* testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization
       
  2662 -	error. Reported by Thomas Heller <theller@python.net>.
       
  2663 -	* testsuite/libffi.call/cls_multi_sshort.c (main): Likewise.
       
  2664 -	* testsuite/libffi.call/cls_multi_ushort.c (main): Likewise.
       
  2665 -
       
  2666 -2004-03-20  Matthias Klose  <doko@debian.org>
       
  2667 -
       
  2668 -	* src/pa/linux.S: Fix typo.
       
  2669 -
       
  2670 -2004-03-19  Matthias Klose  <doko@debian.org>
       
  2671 -
       
  2672 -	* Makefile.am: Update.
       
  2673 -	* Makefile.in: Regenerate.
       
  2674 -	* src/pa/ffi.h.in: Remove.
       
  2675 -	* src/pa/ffitarget.h: New file.
       
  2676 -
       
  2677 -2004-02-10  Randolph Chung  <tausq@debian.org>
       
  2678 -
       
  2679 -	* Makefile.am: Add PA support.
       
  2680 -	* Makefile.in: Regenerate.
       
  2681 -	* include/Makefile.in: Regenerate.
       
  2682 -	* configure.ac: Add PA target.
       
  2683 -	* configure: Regenerate.
       
  2684 -	* src/pa/ffi.c: New file.
       
  2685 -	* src/pa/ffi.h.in: Add PA support.
       
  2686 -	* src/pa/linux.S: New file.
       
  2687 -	* prep_cif.c: Add PA support.
       
  2688 -
       
  2689 -2004-03-16  Hosaka Yuji  <hos@tamanegi.org>
       
  2690 -
       
  2691 -	* src/types.c: Fix alignment size of X86_WIN32 case int64 and
       
  2692 -	double.
       
  2693 -	* src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type
       
  2694 -	with ecif->cif->flags.
       
  2695 -	(ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type
       
  2696 -	with cif->flags.
       
  2697 -	(ffi_prep_cif_machdep): Add X86_WIN32 struct case.
       
  2698 -	(ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32.
       
  2699 -	* src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b,
       
  2700 -	sc_retstruct2b): Add for 1 or 2-bytes struct case.
       
  2701 -
       
  2702 -2004-03-15 Kelley Cook <kcook@gcc.gnu.org>
       
  2703 -
       
  2704 -	* configure.in: Rename file to ...
       
  2705 -	* configure.ac: ... this.
       
  2706 -	* fficonfig.h.in: Regenerate.
       
  2707 -	* Makefile.in: Regenerate.
       
  2708 -	* include/Makefile.in: Regenerate.
       
  2709 -	* testsuite/Makefile.in: Regenerate.
       
  2710 -
       
  2711 -2004-03-12  Matt Austern  <austern@apple.com>
       
  2712 -
       
  2713 -	* src/powerpc/darwin.S: Fix EH information so it corresponds to
       
  2714 -	changes in EH format resulting from addition of linkonce support.
       
  2715 -	* src/powerpc/darwin_closure.S: Likewise.
       
  2716 -
       
  2717 -2004-03-11  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2718 -	    Paolo Bonzini  <bonzini@gnu.org>
       
  2719 -
       
  2720 -	* Makefile.am (AUTOMAKE_OPTIONS): Set them.
       
  2721 -	Remove VPATH. Remove rules for object files. Remove multilib support.
       
  2722 -	(AM_CCASFLAGS): Add.
       
  2723 -	* configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER.
       
  2724 -	(AC_PREREQ): Bump version to 2.59.
       
  2725 -	(AC_INIT): Fill with version info and bug address.
       
  2726 -	(ORIGINAL_LD_FOR_MULTILIBS): Remove.
       
  2727 -	(AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE.
       
  2728 -	De-precious CC so that the right flags are passed down to multilibs.
       
  2729 -	(AC_MSG_ERROR): Replace obsolete macro AC_ERROR.
       
  2730 -	(AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES.
       
  2731 -	(AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS.
       
  2732 -	* configure: Rebuilt.
       
  2733 -	* aclocal.m4: Likewise.
       
  2734 -	* Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise.
       
  2735 -	* fficonfig.h.in: Likewise.
       
  2736 -
       
  2737 -2004-03-11  Andreas Schwab  <schwab@suse.de>
       
  2738 -
       
  2739 -	* src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point
       
  2740 -	arguments from fp registers only for the first 8 parameter slots.
       
  2741 -	Don't convert a float parameter when passed in memory.
       
  2742 -
       
  2743 -2004-03-09  Hans-Peter Nilsson  <hp@axis.com>
       
  2744 -
       
  2745 -	* configure: Regenerate for config/accross.m4 correction.
       
  2746 -
       
  2747 -2004-02-25  Matt Kraai  <kraai@alumni.cmu.edu>
       
  2748 -
       
  2749 -	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Change
       
  2750 -	ecif->cif->bytes to bytes.
       
  2751 -	(ffi_prep_cif_machdep): Add braces around nested if statement.
       
  2752 -
       
  2753 -2004-02-09  Alan Modra  <amodra@bigpond.net.au>
       
  2754 -
       
  2755 -	* src/types.c (pointer): POWERPC64 has 8 byte pointers.
       
  2756 -
       
  2757 -	* src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling.
       
  2758 -	(ffi_closure_helper_LINUX64): Fix typo.
       
  2759 -	* testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128
       
  2760 -	for powerpc64-*-*.
       
  2761 -	* testsuite/libffi.call/float.c: Likewise.
       
  2762 -	* testsuite/libffi.call/float2.c: Likewise.
       
  2763 -
       
  2764 -2004-02-08  Alan Modra  <amodra@bigpond.net.au>
       
  2765 -
       
  2766 -	* src/powerpc/ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct
       
  2767 -	long double function return and long double arg handling.
       
  2768 -	(ffi_closure_helper_LINUX64): Formatting.  Delete unused "ng" var.
       
  2769 -	Use "end_pfr" instead of "nf".  Correct long double handling.
       
  2770 -	Localise "temp".
       
  2771 -	* src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double
       
  2772 -	return value.
       
  2773 -	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate
       
  2774 -	space for long double return value.  Adjust stack frame and offsets.
       
  2775 -	Load f2 long double return.
       
  2776 -
       
  2777 -2004-02-07  Alan Modra  <amodra@bigpond.net.au>
       
  2778 -
       
  2779 -	* src/types.c: Use 16 byte long double for POWERPC64.
       
  2780 -
       
  2781 -2004-01-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
       
  2782 -
       
  2783 -	* src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array
       
  2784 -	when the structure return address is passed in %o0.
       
  2785 -	(ffi_V9_return_struct): Rename into ffi_v9_layout_struct.
       
  2786 -	(ffi_v9_layout_struct): Align the field following a nested structure
       
  2787 -	on a word boundary.  Use memmove instead of memcpy.
       
  2788 -	(ffi_call): Update call to ffi_V9_return_struct.
       
  2789 -	(ffi_prep_closure): Define 'ctx' only for V8.
       
  2790 -	(ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8
       
  2791 -	and ffi_closure_sparc_inner_v9.
       
  2792 -	(ffi_closure_sparc_inner_v8): Return long doubles by reference.
       
  2793 -	Always skip the structure return address.  For structures and long
       
  2794 -	doubles, copy the argument directly.
       
  2795 -	(ffi_closure_sparc_inner_v9): Skip the structure return address only
       
  2796 -	if required.  Shift the maximum floating-point slot accordingly.  For
       
  2797 -	big structures, copy the argument directly; otherwise, left-justify the
       
  2798 -	argument and call ffi_v9_layout_struct to lay out the structure on
       
  2799 -	the stack.
       
  2800 -	* src/sparc/v8.S: Undef STACKFRAME before defining it.
       
  2801 -	(ffi_closure_v8): Pass the structure return address.  Update call to
       
  2802 -	ffi_closure_sparc_inner_v8.  Short-circuit FFI_TYPE_INT handling.
       
  2803 -	Skip the 'unimp' insn when returning long doubles and structures.
       
  2804 -	* src/sparc/v9.S: Undef STACKFRAME before defining it.
       
  2805 -	(ffi_closure_v9): Increase the frame size by 2 words.  Short-circuit
       
  2806 -	FFI_TYPE_INT handling.  Load structures both in integers and
       
  2807 -	floating-point registers on return.
       
  2808 -	* README: Update status of the SPARC port.
       
  2809 -
       
  2810 -2004-01-24  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2811 -
       
  2812 -	* testsuite/libffi.call/pyobjc-tc.c (main): Treat result value
       
  2813 -	as of type ffi_arg.
       
  2814 -	* testsuite/libffi.call/struct3.c (main): Fix CHECK.
       
  2815 -
       
  2816 -2004-01-22  Ulrich Weigand  <uweigand@de.ibm.com>
       
  2817 -
       
  2818 -	* testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result
       
  2819 -	value as of type ffi_arg, not unsigned int.
       
  2820 -
       
  2821 -2004-01-21  Michael Ritzert  <ritzert@t-online.de>
       
  2822 -
       
  2823 -	* ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead
       
  2824 -	of the LHS.
       
  2825 -
       
  2826 -2004-01-12  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2827 -
       
  2828 -	* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for
       
  2829 -	Solaris.
       
  2830 -
       
  2831 -2004-01-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  2832 -
       
  2833 -	* testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED
       
  2834 -	to void *.
       
  2835 -
       
  2836 -2003-12-10  Richard Henderson  <rth@redhat.com>
       
  2837 -
       
  2838 -	* testsuite/libffi.call/cls_align_pointer.c: Cast pointers to
       
  2839 -	size_t instead of int.
       
  2840 -
       
  2841 -2003-12-04  Hosaka Yuji  <hos@tamanegi.org>
       
  2842 -
       
  2843 -	* testsuite/libffi.call/many_win32.c: Include <float.h>.
       
  2844 -	* testsuite/libffi.call/many_win32.c (main): Replace variable
       
  2845 -	int i with unsigned long ul.
       
  2846 -
       
  2847 -	* testsuite/libffi.call/cls_align_uint64.c: New test case.
       
  2848 -	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
       
  2849 -	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
       
  2850 -	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
       
  2851 -	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
       
  2852 -	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
       
  2853 -	* testsuite/libffi.call/cls_align_float.c: Likewise.
       
  2854 -	* testsuite/libffi.call/cls_align_double.c: Likewise.
       
  2855 -	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
       
  2856 -	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
       
  2857 -
       
  2858 -2003-12-02  Hosaka Yuji  <hos@tamanegi.org>
       
  2859 -
       
  2860 -	PR other/13221
       
  2861 -	* src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV):
       
  2862 -	Align arguments to 32 bits.
       
  2863 -
       
  2864 -2003-12-01  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2865 -
       
  2866 -	PR other/13221
       
  2867 -	* testsuite/libffi.call/cls_multi_sshort.c: New test case.
       
  2868 -	* testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
       
  2869 -	* testsuite/libffi.call/cls_multi_uchar.c: Likewise.
       
  2870 -	* testsuite/libffi.call/cls_multi_schar.c: Likewise.
       
  2871 -	* testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
       
  2872 -	* testsuite/libffi.call/cls_multi_ushort.c: Likewise.
       
  2873 -
       
  2874 -	* testsuite/libffi.special/unwindtest.cc: Cosmetics.
       
  2875 -
       
  2876 -2003-11-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
       
  2877 -
       
  2878 -	* testsuite/libffi.call/ffitest.h: Include <fcntl.h>.
       
  2879 -	* testsuite/libffi.special/ffitestcxx.h: Likewise.
       
  2880 -
       
  2881 -2003-11-22  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2882 -
       
  2883 -	* Makefile.in: Rebuilt.
       
  2884 -	* configure: Likewise.
       
  2885 -	* testsuite/libffi.special/unwindtest.cc: Convert the mmap to
       
  2886 -	the right type.
       
  2887 -
       
  2888 -2003-11-21  Andreas Jaeger  <aj@suse.de>
       
  2889 -	    Andreas Tobler  <a.tobler@schweiz.ch>
       
  2890 -
       
  2891 -	* acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST.
       
  2892 -	* configure.in: Call AC_FUNC_MMAP_BLACKLIST.
       
  2893 -	* Makefile.in: Rebuilt.
       
  2894 -	* aclocal.m4: Likewise.
       
  2895 -	* configure: Likewise.
       
  2896 -	* fficonfig.h.in: Likewise.
       
  2897 -	* testsuite/lib/libffi-dg.exp: Add include dir.
       
  2898 -	* testsuite/libffi.call/ffitest.h: Add MMAP definitions.
       
  2899 -	* testsuite/libffi.special/ffitestcxx.h: Likewise.
       
  2900 -	* testsuite/libffi.call/closure_fn0.c: Use MMAP functionality
       
  2901 -	for ffi_closure if available.
       
  2902 -	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
  2903 -	* testsuite/libffi.call/closure_fn2.c: Likewise.
       
  2904 -	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
  2905 -	* testsuite/libffi.call/closure_fn4.c: Likewise.
       
  2906 -	* testsuite/libffi.call/closure_fn5.c: Likewise.
       
  2907 -	* testsuite/libffi.call/cls_12byte.c: Likewise.
       
  2908 -	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
  2909 -	* testsuite/libffi.call/cls_18byte.c: Likewise.
       
  2910 -	* testsuite/libffi.call/cls_19byte.c: Likewise.
       
  2911 -	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
  2912 -	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
  2913 -	* testsuite/libffi.call/cls_20byte1.c: Likewise.
       
  2914 -	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
  2915 -	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
  2916 -	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
  2917 -	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
  2918 -	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
  2919 -	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
  2920 -	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
  2921 -	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
  2922 -	* testsuite/libffi.call/cls_64byte.c: Likewise.
       
  2923 -	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
  2924 -	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
  2925 -	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
  2926 -	* testsuite/libffi.call/cls_9byte1.c: Likewise.
       
  2927 -	* testsuite/libffi.call/cls_9byte2.c: Likewise.
       
  2928 -	* testsuite/libffi.call/cls_double.c: Likewise.
       
  2929 -	* testsuite/libffi.call/cls_float.c: Likewise.
       
  2930 -	* testsuite/libffi.call/cls_schar.c: Likewise.
       
  2931 -	* testsuite/libffi.call/cls_sint.c: Likewise.
       
  2932 -	* testsuite/libffi.call/cls_sshort.c: Likewise.
       
  2933 -	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
  2934 -	* testsuite/libffi.call/cls_uint.c: Likewise.
       
  2935 -	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
  2936 -	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
  2937 -	* testsuite/libffi.call/nested_struct.c: Likewise.
       
  2938 -	* testsuite/libffi.call/nested_struct1.c: Likewise.
       
  2939 -	* testsuite/libffi.call/nested_struct2.c: Likewise.
       
  2940 -	* testsuite/libffi.call/nested_struct3.c: Likewise.
       
  2941 -	* testsuite/libffi.call/problem1.c: Likewise.
       
  2942 -	* testsuite/libffi.special/unwindtest.cc: Likewise.
       
  2943 -
       
  2944 -2003-11-20  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2945 -
       
  2946 -	* testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional.
       
  2947 -
       
  2948 -2003-11-19  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2949 -
       
  2950 -	* testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin.
       
  2951 -	Add -lgcc_s to additional flags.
       
  2952 -
       
  2953 -2003-11-12  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2954 -
       
  2955 -	* configure.in, include/Makefile.am: PR libgcj/11147, install
       
  2956 -	the ffitarget.h header file in a gcc versioned and target
       
  2957 -	dependent place.
       
  2958 -	* configure: Regenerated.
       
  2959 -	* Makefile.in, include/Makefile.in: Likewise.
       
  2960 -	* testsuite/Makefile.in: Likewise.
       
  2961 -
       
  2962 -2003-11-09  Andreas Tobler  <a.tobler@schweiz.ch>
       
  2963 -
       
  2964 -	* testsuite/libffi.call/closure_fn0.c: Print result and check
       
  2965 -	with dg-output to make debugging easier.
       
  2966 -	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
  2967 -	* testsuite/libffi.call/closure_fn2.c: Likewise.
       
  2968 -	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
  2969 -	* testsuite/libffi.call/closure_fn4.c: Likewise.
       
  2970 -	* testsuite/libffi.call/closure_fn5.c: Likewise.
       
  2971 -	* testsuite/libffi.call/cls_12byte.c: Likewise.
       
  2972 -	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
  2973 -	* testsuite/libffi.call/cls_18byte.c: Likewise.
       
  2974 -	* testsuite/libffi.call/cls_19byte.c: Likewise.
       
  2975 -	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
  2976 -	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
  2977 -	* testsuite/libffi.call/cls_20byte1.c: Likewise.
       
  2978 -	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
  2979 -	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
  2980 -	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
  2981 -	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
  2982 -	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
  2983 -	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
  2984 -	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
  2985 -	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
  2986 -	* testsuite/libffi.call/cls_64byte.c: Likewise.
       
  2987 -	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
  2988 -	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
  2989 -	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
  2990 -	* testsuite/libffi.call/cls_9byte1.c: Likewise.
       
  2991 -	* testsuite/libffi.call/cls_9byte2.c: Likewise.
       
  2992 -	* testsuite/libffi.call/cls_double.c: Likewise.
       
  2993 -	* testsuite/libffi.call/cls_float.c: Likewise.
       
  2994 -	* testsuite/libffi.call/cls_schar.c: Likewise.
       
  2995 -	* testsuite/libffi.call/cls_sint.c: Likewise.
       
  2996 -	* testsuite/libffi.call/cls_sshort.c: Likewise.
       
  2997 -	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
  2998 -	* testsuite/libffi.call/cls_uint.c: Likewise.
       
  2999 -	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
  3000 -	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
  3001 -	* testsuite/libffi.call/problem1.c: Likewise.
       
  3002 -
       
  3003 -	* testsuite/libffi.special/unwindtest.cc: Make ffi_closure
       
  3004 -	static.
       
  3005 -
       
  3006 -2003-11-08  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3007 -
       
  3008 -	* testsuite/libffi.call/cls_9byte2.c: New test case.
       
  3009 -	* testsuite/libffi.call/cls_9byte1.c: Likewise.
       
  3010 -	* testsuite/libffi.call/cls_64byte.c: Likewise.
       
  3011 -	* testsuite/libffi.call/cls_20byte1.c: Likewise.
       
  3012 -	* testsuite/libffi.call/cls_19byte.c: Likewise.
       
  3013 -	* testsuite/libffi.call/cls_18byte.c: Likewise.
       
  3014 -	* testsuite/libffi.call/closure_fn4.c: Likewise.
       
  3015 -	* testsuite/libffi.call/closure_fn5.c: Likewise.
       
  3016 -	* testsuite/libffi.call/cls_schar.c: Likewise.
       
  3017 -	* testsuite/libffi.call/cls_sint.c: Likewise.
       
  3018 -	* testsuite/libffi.call/cls_sshort.c: Likewise.
       
  3019 -	* testsuite/libffi.call/nested_struct2.c: Likewise.
       
  3020 -	* testsuite/libffi.call/nested_struct3.c: Likewise.
       
  3021 -
       
  3022 -2003-11-08  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3023 -
       
  3024 -	* testsuite/libffi.call/cls_double.c: Do a check on the result.
       
  3025 -	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
  3026 -	* testsuite/libffi.call/cls_uint.c: Likewise.
       
  3027 -	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
  3028 -	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
  3029 -	* testsuite/libffi.call/return_sc.c: Cleanup whitespaces.
       
  3030 -
       
  3031 -2003-11-06  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3032 -
       
  3033 -	* src/prep_cif.c (ffi_prep_cif): Move the validity check after
       
  3034 -	the initialization.
       
  3035 -
       
  3036 -2003-10-23  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3037 -
       
  3038 -	* src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace
       
  3039 -	FFI_ASSERT(FALSE) with FFI_ASSERT(0).
       
  3040 -
       
  3041 -2003-10-22  David Daney  <ddaney@avtrex.com>
       
  3042 -
       
  3043 -	* src/mips/ffitarget.h: Replace undefined UINT32 and friends with
       
  3044 -	__attribute__((__mode__(__SI__))) and friends.
       
  3045 -
       
  3046 -2003-10-22  Andreas Schwab  <schwab@suse.de>
       
  3047 -
       
  3048 -	* src/ia64/ffi.c: Replace FALSE/TRUE with false/true.
       
  3049 -
       
  3050 -2003-10-21  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3051 -
       
  3052 -	* configure.in: AC_LINK_FILES(ffitarget.h).
       
  3053 -	* configure: Regenerate.
       
  3054 -	* Makefile.in: Likewise.
       
  3055 -	* include/Makefile.in: Likewise.
       
  3056 -	* testsuite/Makefile.in: Likewise.
       
  3057 -	* fficonfig.h.in: Likewise.
       
  3058 -
       
  3059 -2003-10-21  Paolo Bonzini  <bonzini@gnu.org>
       
  3060 -	    Richard Henderson  <rth@redhat.com>
       
  3061 -
       
  3062 -	Avoid that ffi.h includes fficonfig.h.
       
  3063 -
       
  3064 -	* Makefile.am (EXTRA_DIST): Include ffitarget.h files
       
  3065 -	(TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
       
  3066 -	(TARGET_SRC_MIPS_SGI): Removed.
       
  3067 -	(MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
       
  3068 -	(MIPS_SGI): Removed.
       
  3069 -	(CLEANFILES): Removed.
       
  3070 -	(mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New
       
  3071 -	targets.
       
  3072 -	* acconfig.h: Removed.
       
  3073 -	* configure.in: Compute sizeofs only for double and long double.
       
  3074 -	Use them to define and subst HAVE_LONG_DOUBLE.  Include comments
       
  3075 -	into AC_DEFINE instead of using acconfig.h.  Create
       
  3076 -	include/ffitarget.h instead of include/fficonfig.h.  Rename
       
  3077 -	MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree.
       
  3078 -	AC_DEFINE EH_FRAME_FLAGS.
       
  3079 -	* include/Makefile.am (DISTCLEANFILES): New automake macro.
       
  3080 -	(hack_DATA): Add ffitarget.h.
       
  3081 -	* include/ffi.h.in: Remove all system specific definitions.
       
  3082 -	Declare raw API even if it is not installed, why bother?
       
  3083 -	Use limits.h instead of SIZEOF_* to define ffi_type_*.  Do
       
  3084 -	not define EH_FRAME_FLAGS, it is in fficonfig.h now.  Include
       
  3085 -	ffitarget.h instead of fficonfig.h.  Remove ALIGN macro.
       
  3086 -	(UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead.
       
  3087 -	* include/ffi_common.h (bool): Do not define.
       
  3088 -	(ffi_assert): Accept failed assertion.
       
  3089 -	(ffi_type_test): Return void and accept file/line.
       
  3090 -	(FFI_ASSERT): Pass stringized failed assertion.
       
  3091 -	(FFI_ASSERT_AT): New macro.
       
  3092 -	(FFI_ASSERT_VALID_TYPE): New macro.
       
  3093 -	(UINT8, SINT8, UINT16, SINT16, UINT32, SINT32,
       
  3094 -	UINT64, SINT64): Define here with gcc's __attribute__ macro
       
  3095 -	instead of in ffi.h
       
  3096 -	(FLOAT32, ALIGN): Define here instead of in ffi.h
       
  3097 -	* include/ffi-mips.h: Removed.  Its content moved to
       
  3098 -	src/mips/ffitarget.h after separating assembly and C sections.
       
  3099 -	* src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c
       
  3100 -	src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c,
       
  3101 -	src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S,
       
  3102 -	src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c:
       
  3103 -	SIZEOF_ARG -> FFI_SIZEOF_ARG.
       
  3104 -	* src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+).
       
  3105 -	* src/debug.c (ffi_assert): Accept stringized failed assertion.
       
  3106 -	(ffi_type_test): Rewritten.
       
  3107 -	* src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call
       
  3108 -	FFI_ASSERT_VALID_TYPE.
       
  3109 -	* src/alpha/ffitarget.h, src/arm/ffitarget.h,
       
  3110 -	src/ia64/ffitarget.h, src/m68k/ffitarget.h,
       
  3111 -	src/mips/ffitarget.h, src/powerpc/ffitarget.h,
       
  3112 -	src/s390/ffitarget.h, src/sh/ffitarget.h,
       
  3113 -	src/sh64/ffitarget.h, src/sparc/ffitarget.h,
       
  3114 -	src/x86/ffitarget.h: New files.
       
  3115 -	* src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S,
       
  3116 -	src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S,
       
  3117 -	src/powerpc/aix.S, src/powerpc/darwin.S,
       
  3118 -	src/powerpc/ffi_darwin.c, src/powerpc/linux64.S,
       
  3119 -	src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S,
       
  3120 -	src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S,
       
  3121 -	src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S,
       
  3122 -	src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S:
       
  3123 -	include fficonfig.h
       
  3124 -
       
  3125 -2003-10-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  3126 -
       
  3127 -	* src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external
       
  3128 -	_MIPS_SIM_NABI32, _MIPS_SIM_ABI32.
       
  3129 -
       
  3130 -2003-10-19  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3131 -
       
  3132 -	* src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again.
       
  3133 -	Used when FFI_DEBUG = 1.
       
  3134 -
       
  3135 -2003-10-14  Alan Modra  <amodra@bigpond.net.au>
       
  3136 -
       
  3137 -	* src/types.c (double, longdouble): Default POWERPC64 to 8 byte size
       
  3138 -	and align.
       
  3139 -
       
  3140 -2003-10-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  3141 -
       
  3142 -	* include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs,
       
  3143 -	FFI_MIPS_O32 for O32 ABI.
       
  3144 -
       
  3145 -2003-10-01  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3146 -
       
  3147 -	* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for
       
  3148 -	SPARC64. Cleanup whitespaces.
       
  3149 -
       
  3150 -2003-09-19  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3151 -
       
  3152 -	* testsuite/libffi.call/closure_fn0.c: Xfail mips, arm,
       
  3153 -	strongarm, xscale. Cleanup whitespaces.
       
  3154 -	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
  3155 -	* testsuite/libffi.call/closure_fn2.c: Likewise.
       
  3156 -	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
  3157 -	* testsuite/libffi.call/cls_12byte.c: Likewise.
       
  3158 -	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
  3159 -	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
  3160 -	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
  3161 -	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
  3162 -	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
  3163 -	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
  3164 -	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
  3165 -	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
  3166 -	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
  3167 -	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
  3168 -	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
  3169 -	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
  3170 -	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
  3171 -	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
  3172 -	* testsuite/libffi.call/cls_double.c: Likewise.
       
  3173 -	* testsuite/libffi.call/cls_float.c: Likewise.
       
  3174 -	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
  3175 -	* testsuite/libffi.call/cls_uint.c: Likewise.
       
  3176 -	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
  3177 -	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
  3178 -	* testsuite/libffi.call/nested_struct.c: Likewise.
       
  3179 -	* testsuite/libffi.call/nested_struct1.c: Likewise.
       
  3180 -	* testsuite/libffi.call/problem1.c: Likewise.
       
  3181 -	* testsuite/libffi.special/unwindtest.cc: Likewise.
       
  3182 -	* testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces.
       
  3183 -
       
  3184 -2003-09-18  David Edelsohn  <edelsohn@gnu.org>
       
  3185 -
       
  3186 -	* src/powerpc/aix.S: Cleanup whitespaces.
       
  3187 -	* src/powerpc/aix_closure.S: Likewise.
       
  3188 -
       
  3189 -2003-09-18  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3190 -
       
  3191 -	* src/powerpc/darwin.S: Cleanup whitespaces, comment formatting.
       
  3192 -	* src/powerpc/darwin_closure.S: Likewise.
       
  3193 -	* src/powerpc/ffi_darwin.c: Likewise.
       
  3194 -
       
  3195 -2003-09-18  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3196 -	    David Edelsohn  <edelsohn@gnu.org>
       
  3197 -
       
  3198 -	* src/types.c (double): Add AIX and Darwin to the right TYPEDEF.
       
  3199 -	* src/powerpc/aix_closure.S: Remove the pointer to the outgoing
       
  3200 -	parameter stack.
       
  3201 -	* src/powerpc/darwin_closure.S: Likewise.
       
  3202 -	* src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures
       
  3203 -	according to the Darwin/AIX ABI.
       
  3204 -	(ffi_prep_cif_machdep): Likewise.
       
  3205 -	(ffi_closure_helper_DARWIN): Likewise.
       
  3206 -	Remove the outgoing parameter stack logic. Simplify the evaluation
       
  3207 -	of the different CASE types.
       
  3208 -	(ffi_prep_clousure): Avoid the casts on lvalues. Change the branch
       
  3209 -	statement in the trampoline code.
       
  3210 -
       
  3211 -2003-09-18  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  3212 -
       
  3213 -	* src/sh/ffi.c (ffi_prep_args): Take account into the alignement
       
  3214 -	for the register size.
       
  3215 -	(ffi_closure_helper_SYSV): Handle the structure return value
       
  3216 -	address correctly.
       
  3217 -	(ffi_closure_helper_SYSV): Return the appropriate type when
       
  3218 -	the registers are used for the structure return value.
       
  3219 -	* src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for
       
  3220 -	the 64-bit return value.  Update copyright years.
       
  3221 -
       
  3222 -2003-09-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  3223 -
       
  3224 -	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in
       
  3225 -	srcdir for ffi_mips.h.
       
  3226 -
       
  3227 -2003-09-12  Alan Modra  <amodra@bigpond.net.au>
       
  3228 -
       
  3229 -	* src/prep_cif.c (initialize_aggregate): Include tail padding in
       
  3230 -	structure size.
       
  3231 -	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct
       
  3232 -	placement of float result.
       
  3233 -	* testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct
       
  3234 -	cast of "resp" for big-endian 64 bit machines.
       
  3235 -
       
  3236 -2003-09-11  Alan Modra  <amodra@bigpond.net.au>
       
  3237 -
       
  3238 -	* src/types.c (double, longdouble): Merge identical SH and ARM
       
  3239 -	typedefs, and add POWERPC64.
       
  3240 -	* src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for
       
  3241 -	struct split over gpr and rest.
       
  3242 -	(ffi_prep_cif_machdep): Correct intarg_count for structures.
       
  3243 -	* src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets.
       
  3244 -
       
  3245 -2003-09-09  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3246 -
       
  3247 -	* src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct
       
  3248 -	passing correctly.
       
  3249 -
       
  3250 -2003-09-09  Alan Modra  <amodra@bigpond.net.au>
       
  3251 -
       
  3252 -	* configure: Regenerate.
       
  3253 -
       
  3254 -2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3255 -
       
  3256 -	* Makefile.am: Remove build rules for ffitest.
       
  3257 -	* Makefile.in: Rebuilt.
       
  3258 -
       
  3259 -2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3260 -
       
  3261 -	* src/java_raw_api.c: Include <stdlib.h> to fix compiler warning
       
  3262 -	about implicit declaration of abort().
       
  3263 -
       
  3264 -2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3265 -
       
  3266 -	* Makefile.am: Add dejagnu test framework. Fixes PR other/11411.
       
  3267 -	* Makefile.in: Rebuilt.
       
  3268 -	* configure.in: Add dejagnu test framework.
       
  3269 -	* configure: Rebuilt.
       
  3270 -
       
  3271 -	* testsuite/Makefile.am: New file.
       
  3272 -	* testsuite/Makefile.in: Built
       
  3273 -	* testsuite/lib/libffi-dg.exp: New file.
       
  3274 -	* testsuite/config/default.exp: Likewise.
       
  3275 -	* testsuite/libffi.call/call.exp: Likewise.
       
  3276 -	* testsuite/libffi.call/ffitest.h: Likewise.
       
  3277 -	* testsuite/libffi.call/closure_fn0.c: Likewise.
       
  3278 -	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
  3279 -	* testsuite/libffi.call/closure_fn2.c: Likewise.
       
  3280 -	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
  3281 -	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
  3282 -	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
  3283 -	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
  3284 -	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
  3285 -	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
  3286 -	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
  3287 -	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
  3288 -	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
  3289 -	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
  3290 -	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
  3291 -	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
  3292 -	* testsuite/libffi.call/cls_12byte.c: Likewise.
       
  3293 -	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
  3294 -	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
  3295 -	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
  3296 -	* testsuite/libffi.call/cls_double.c: Likewise.
       
  3297 -	* testsuite/libffi.call/cls_float.c: Likewise.
       
  3298 -	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
  3299 -	* testsuite/libffi.call/cls_uint.c: Likewise.
       
  3300 -	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
  3301 -	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
  3302 -	* testsuite/libffi.call/float.c: Likewise.
       
  3303 -	* testsuite/libffi.call/float1.c: Likewise.
       
  3304 -	* testsuite/libffi.call/float2.c: Likewise.
       
  3305 -	* testsuite/libffi.call/many.c: Likewise.
       
  3306 -	* testsuite/libffi.call/many_win32.c: Likewise.
       
  3307 -	* testsuite/libffi.call/nested_struct.c: Likewise.
       
  3308 -	* testsuite/libffi.call/nested_struct1.c: Likewise.
       
  3309 -	* testsuite/libffi.call/pyobjc-tc.c: Likewise.
       
  3310 -	* testsuite/libffi.call/problem1.c: Likewise.
       
  3311 -	* testsuite/libffi.call/promotion.c: Likewise.
       
  3312 -	* testsuite/libffi.call/return_ll.c: Likewise.
       
  3313 -	* testsuite/libffi.call/return_sc.c: Likewise.
       
  3314 -	* testsuite/libffi.call/return_uc.c: Likewise.
       
  3315 -	* testsuite/libffi.call/strlen.c: Likewise.
       
  3316 -	* testsuite/libffi.call/strlen_win32.c: Likewise.
       
  3317 -	* testsuite/libffi.call/struct1.c: Likewise.
       
  3318 -	* testsuite/libffi.call/struct2.c: Likewise.
       
  3319 -	* testsuite/libffi.call/struct3.c: Likewise.
       
  3320 -	* testsuite/libffi.call/struct4.c: Likewise.
       
  3321 -	* testsuite/libffi.call/struct5.c: Likewise.
       
  3322 -	* testsuite/libffi.call/struct6.c: Likewise.
       
  3323 -	* testsuite/libffi.call/struct7.c: Likewise.
       
  3324 -	* testsuite/libffi.call/struct8.c: Likewise.
       
  3325 -	* testsuite/libffi.call/struct9.c: Likewise.
       
  3326 -	* testsuite/libffi.special/special.exp: New file.
       
  3327 -	* testsuite/libffi.special/ffitestcxx.h: Likewise.
       
  3328 -	* testsuite/libffi.special/unwindtest.cc: Likewise.
       
  3329 -
       
  3330 -
       
  3331 -2003-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  3332 -
       
  3333 -	* src/sh/ffi.c (OFS_INT16): Set 0 for little endian case.  Update
       
  3334 -	copyright years.
       
  3335 -
       
  3336 -2003-08-02  Alan Modra  <amodra@bigpond.net.au>
       
  3337 -
       
  3338 -	* src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc
       
  3339 -	structure passing.
       
  3340 -	(ffi_closure_helper_LINUX64): Likewise.
       
  3341 -	* src/powerpc/linux64.S: Remove code writing to parm save area.
       
  3342 -	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return
       
  3343 -	address in lr from ffi_closure_helper_LINUX64 call to calculate
       
  3344 -	table address.  Optimize function tail.
       
  3345 -
       
  3346 -2003-07-28  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3347 -
       
  3348 -	* src/sparc/ffi.c: Handle all floating point registers.
       
  3349 -	* src/sparc/v9.S: Likewise. Fixes second part of PR target/11410.
       
  3350 -
       
  3351 -2003-07-11  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
       
  3352 -
       
  3353 -	* README: Note that libffi is not part of GCC.  Update the project
       
  3354 -	URL and status.
       
  3355 -
       
  3356 -2003-06-19  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
       
  3357 -
       
  3358 -	* src/powerpc/ppc_closure.S: Include ffi.h.
       
  3359 -
       
  3360 -2003-06-13  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  3361 -
       
  3362 -	* src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives.
       
  3363 -	Use C style comments.
       
  3364 -
       
  3365 -2003-06-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
       
  3366 -
       
  3367 -	* Makefile.am: Add SHmedia support.  Fix a typo of SH support.
       
  3368 -	* Makefile.in: Regenerate.
       
  3369 -	* configure.in (sh64-*-linux*, sh5*-*-linux*): Add target.
       
  3370 -	* configure: Regenerate.
       
  3371 -	* include/ffi.h.in: Add SHmedia support.
       
  3372 -	* src/sh64/ffi.c: New file.
       
  3373 -	* src/sh64/sysv.S: New file.
       
  3374 -
       
  3375 -2003-05-16  Jakub Jelinek  <jakub@redhat.com>
       
  3376 -
       
  3377 -	* configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section
       
  3378 -	should be read-only.
       
  3379 -	* configure: Rebuilt.
       
  3380 -	* fficonfig.h.in: Rebuilt.
       
  3381 -	* include/ffi.h.in (EH_FRAME_FLAGS): Define.
       
  3382 -	* src/alpha/osf.S: Use EH_FRAME_FLAGS.
       
  3383 -	* src/powerpc/linux64.S: Likewise.
       
  3384 -	* src/powerpc/linux64_closure.S: Likewise.  Include ffi.h.
       
  3385 -	* src/powerpc/sysv.S: Use EH_FRAME_FLAGS.  Use pcrel encoding
       
  3386 -	if -fpic/-fPIC/-mrelocatable.
       
  3387 -	* src/powerpc/powerpc_closure.S: Likewise.
       
  3388 -	* src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include
       
  3389 -	#write in .eh_frame flags.
       
  3390 -	* src/sparc/v9.S: Likewise.
       
  3391 -	* src/x86/unix64.S: Use EH_FRAME_FLAGS.
       
  3392 -	* src/x86/sysv.S: Likewise.  Use pcrel encoding if -fpic/-fPIC.
       
  3393 -	* src/s390/sysv.S: Use EH_FRAME_FLAGS.  Include ffi.h.
       
  3394 -
       
  3395 -2003-05-07  Jeff Sturm  <jsturm@one-point.com>
       
  3396 -
       
  3397 -	Fixes PR bootstrap/10656
       
  3398 -	* configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler
       
  3399 -	support for .register pseudo-op.
       
  3400 -	* src/sparc/v8.S: Use it.
       
  3401 -	* fficonfig.h.in: Rebuilt.
       
  3402 -	* configure: Rebuilt.
       
  3403 -
       
  3404 -2003-04-18  Jakub Jelinek  <jakub@redhat.com>
       
  3405 -
       
  3406 -	* include/ffi.h.in (POWERPC64): Define if 64-bit.
       
  3407 -	(enum ffi_abi): Add FFI_LINUX64 on POWERPC.
       
  3408 -	Make it the default on POWERPC64.
       
  3409 -	(FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64.
       
  3410 -	* configure.in: Change powerpc-*-linux* into powerpc*-*-linux*.
       
  3411 -	* configure: Rebuilt.
       
  3412 -	* src/powerpc/ffi.c (hidden): Define.
       
  3413 -	(ffi_prep_args_SYSV): Renamed from
       
  3414 -	ffi_prep_args.  Cast pointers to unsigned long to shut up warnings.
       
  3415 -	(NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64,
       
  3416 -	ASM_NEEDS_REGISTERS64): New.
       
  3417 -	(ffi_prep_args64): New function.
       
  3418 -	(ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI.
       
  3419 -	(ffi_call): Likewise.
       
  3420 -	(ffi_prep_closure): Likewise.
       
  3421 -	(flush_icache): Surround by #ifndef POWERPC64.
       
  3422 -	(ffi_dblfl): New union type.
       
  3423 -	(ffi_closure_helper_SYSV): Use it to avoid aliasing problems.
       
  3424 -	(ffi_closure_helper_LINUX64): New function.
       
  3425 -	* src/powerpc/ppc_closure.S: Surround whole file by #ifndef
       
  3426 -	__powerpc64__.
       
  3427 -	* src/powerpc/sysv.S: Likewise.
       
  3428 -	(ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV.
       
  3429 -	* src/powerpc/linux64.S: New file.
       
  3430 -	* src/powerpc/linux64_closure.S: New file.
       
  3431 -	* Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and
       
  3432 -	src/powerpc/linux64_closure.S.
       
  3433 -	(TARGET_SRC_POWERPC): Likewise.
       
  3434 -
       
  3435 -	* src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2,
       
  3436 -	closure_test_fn3): Fix result printing on big-endian 64-bit
       
  3437 -	machines.
       
  3438 -	(main): Print tst2_arg instead of uninitialized tst2_result.
       
  3439 -
       
  3440 -	* src/ffitest.c (main): Hide what closure pointer really points to
       
  3441 -	from the compiler.
       
  3442 -
       
  3443 -2003-04-16  Richard Earnshaw  <rearnsha@arm.com>
       
  3444 -
       
  3445 -	* configure.in (arm-*-netbsdelf*): Add configuration.
       
  3446 -	(configure): Regenerated.
       
  3447 -
       
  3448 -2003-04-04  Loren J. Rittle  <ljrittle@acm.org>
       
  3449 -
       
  3450 -	* include/Makefile.in: Regenerate.
       
  3451 -
       
  3452 -2003-03-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
       
  3453 -
       
  3454 -	* libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32
       
  3455 -	bit mode.
       
  3456 -	* libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV):
       
  3457 -	Receive closure pointer through parameter, read args using
       
  3458 -	__builtin_dwarf_cfa.
       
  3459 -	(FFI_INIT_TRAMPOLINE): Send closure reference through eax.
       
  3460 -
       
  3461 -2003-03-12  Andreas Schwab  <schwab@suse.de>
       
  3462 -
       
  3463 -	* configure.in: Avoid trailing /. in toolexeclibdir.
       
  3464 -	* configure: Rebuilt.
       
  3465 -
       
  3466 -2003-03-03  Andreas Tobler <a.tobler@schweiz.ch>
       
  3467 -
       
  3468 -	* src/powerpc/darwin_closure.S: Recode to fit dynamic libraries.
       
  3469 -
       
  3470 -2003-02-06  Andreas Tobler <a.tobler@schweiz.ch>
       
  3471 -
       
  3472 -	* libffi/src/powerpc/darwin_closure.S:
       
  3473 -	Fix alignement bug, allocate 8 bytes for the result.
       
  3474 -	* libffi/src/powerpc/aix_closure.S:
       
  3475 -	Likewise.
       
  3476 -	* libffi/src/powerpc/ffi_darwin.c:
       
  3477 -	Update stackframe description for aix/darwin_closure.S.
       
  3478 -
       
  3479 -2003-02-06  Jakub Jelinek  <jakub@redhat.com>
       
  3480 -
       
  3481 -	* src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility
       
  3482 -	attribute.
       
  3483 -
       
  3484 -2003-01-31  Christian Cornelssen  <ccorn@cs.tu-berlin.de>,
       
  3485 -	    Andreas Schwab  <schwab@suse.de>
       
  3486 -
       
  3487 -	* configure.in: Adjust command to source config-ml.in to account
       
  3488 -	for changes to the libffi_basedir definition.
       
  3489 -	(libffi_basedir): Remove ${srcdir} from value and include trailing
       
  3490 -	slash if nonempty.
       
  3491 -
       
  3492 -	* configure: Regenerate.
       
  3493 -
       
  3494 -2003-01-29  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
       
  3495 -
       
  3496 -	* src/powerpc/ppc_closure.S: Recode to fit shared libs.
       
  3497 -
       
  3498 -2003-01-28  Andrew Haley  <aph@redhat.com>
       
  3499 -
       
  3500 -	* include/ffi.h.in: Enable FFI_CLOSURES for x86_64.
       
  3501 -	* src/x86/ffi64.c (ffi_prep_closure): New.
       
  3502 -	(ffi_closure_UNIX64_inner): New.
       
  3503 -	* src/x86/unix64.S (ffi_closure_UNIX64): New.
       
  3504 -
       
  3505 -2003-01-27  Alexandre Oliva  <aoliva@redhat.com>
       
  3506 -
       
  3507 -	* configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST.
       
  3508 -	Remove USE_LIBDIR conditional.
       
  3509 -	* Makefile.am (toolexecdir, toolexeclibdir): Don't override.
       
  3510 -	* Makefile.in, configure: Rebuilt.
       
  3511 -
       
  3512 -2003-01027  David Edelsohn  <edelsohn@gnu.org>
       
  3513 -
       
  3514 -	* Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo.
       
  3515 -	* Makefile.in: Regenerate.
       
  3516 -
       
  3517 -2003-01-22  Andrew Haley  <aph@redhat.com>
       
  3518 -
       
  3519 -	* src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to
       
  3520 -	unwind info.
       
  3521 -
       
  3522 -2003-01-21  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3523 -
       
  3524 -	* src/powerpc/darwin.S: Add unwind info.
       
  3525 -	* src/powerpc/darwin_closure.S: Likewise.
       
  3526 -
       
  3527 -2003-01-14  Andrew Haley  <aph@redhat.com>
       
  3528 -
       
  3529 -	* src/x86/ffi64.c (ffi_prep_args): Check for void retval.
       
  3530 -	(ffi_prep_cif_machdep): Likewise.
       
  3531 -	* src/x86/unix64.S: Add unwind info.
       
  3532 -
       
  3533 -2003-01-14  Andreas Jaeger  <aj@suse.de>
       
  3534 -
       
  3535 -	* src/ffitest.c (main): Only use ffi_closures if those are
       
  3536 -	supported.
       
  3537 -
       
  3538 -2003-01-13 Andreas Tobler <a.tobler@schweiz.ch>
       
  3539 -
       
  3540 -	* libffi/src/ffitest.c
       
  3541 -	 add closure testcases
       
  3542 -
       
  3543 -2003-01-13 Kevin B. Hendricks <khendricks@ivey.uwo.ca>
       
  3544 -
       
  3545 -	* libffi/src/powerpc/ffi.c
       
  3546 -	 fix alignment bug for float (4 byte aligned iso 8 byte)
       
  3547 -
       
  3548 -2003-01-09  Geoffrey Keating  <geoffk@apple.com>
       
  3549 -
       
  3550 -	* src/powerpc/ffi_darwin.c: Remove RCS version string.
       
  3551 -	* src/powerpc/darwin.S: Remove RCS version string.
       
  3552 -
       
  3553 -2003-01-03  Jeff Sturm  <jsturm@one-point.com>
       
  3554 -
       
  3555 -	* include/ffi.h.in: Add closure defines for SPARC, SPARC64.
       
  3556 -	* src/ffitest.c (main): Use static storage for closure.
       
  3557 -	* src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New.
       
  3558 -	* src/sparc/v8.S (ffi_closure_v8): New.
       
  3559 -	* src/sparc/v9.S (ffi_closure_v9): New.
       
  3560 -
       
  3561 -2002-11-10  Ranjit Mathew <rmathew@hotmail.com>
       
  3562 -
       
  3563 -	* include/ffi.h.in: Added FFI_STDCALL ffi_type
       
  3564 -	  enumeration for X86_WIN32.
       
  3565 -	* src/x86/win32.S: Added ffi_call_STDCALL function
       
  3566 -	  definition.
       
  3567 -	* src/x86/ffi.c (ffi_call/ffi_raw_call): Added
       
  3568 -	  switch cases for recognising FFI_STDCALL and
       
  3569 -	  calling ffi_call_STDCALL if target is X86_WIN32.
       
  3570 -	* src/ffitest.c (my_stdcall_strlen/stdcall_many):
       
  3571 -	  stdcall versions of the "my_strlen" and "many"
       
  3572 -	  test functions (for X86_WIN32).
       
  3573 -	  Added test cases to test stdcall invocation using
       
  3574 -	  these functions.
       
  3575 -
       
  3576 -2002-12-02  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  3577 -
       
  3578 -	* src/sh/sysv.S: Add DWARF2 unwind info.
       
  3579 -
       
  3580 -2002-11-27  Ulrich Weigand  <uweigand@de.ibm.com>
       
  3581 -
       
  3582 -	* src/s390/sysv.S (.eh_frame section): Make section read-only.
       
  3583 -
       
  3584 -2002-11-26  Jim Wilson  <wilson@redhat.com>
       
  3585 -
       
  3586 -	* src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64.
       
  3587 -
       
  3588 -2002-11-23  H.J. Lu <hjl@gnu.org>
       
  3589 -
       
  3590 -	* acinclude.m4: Add dummy AM_PROG_LIBTOOL.
       
  3591 -	Include ../config/accross.m4.
       
  3592 -	* aclocal.m4; Rebuild.
       
  3593 -	* configure: Likewise.
       
  3594 -
       
  3595 -2002-11-15  Ulrich Weigand  <uweigand@de.ibm.com>
       
  3596 -
       
  3597 -	* src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding.
       
  3598 -
       
  3599 -2002-11-11  DJ Delorie  <dj@redhat.com>
       
  3600 -
       
  3601 -	* configure.in: Look for common files in the right place.
       
  3602 -
       
  3603 -2002-10-08  Ulrich Weigand  <uweigand@de.ibm.com>
       
  3604 -
       
  3605 -	* src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret
       
  3606 -	raw data as _Jv_word values, not ffi_raw.
       
  3607 -	(ffi_java_ptrarray_to_raw): Likewise.
       
  3608 -	(ffi_java_rvalue_to_raw): New function.
       
  3609 -	(ffi_java_raw_call): Call it.
       
  3610 -	(ffi_java_raw_to_rvalue): New function.
       
  3611 -	(ffi_java_translate_args): Call it.
       
  3612 -	* src/ffitest.c (closure_test_fn): Interpret return value
       
  3613 -	as ffi_arg, not int.
       
  3614 -	* src/s390/ffi.c (ffi_prep_cif_machdep): Add missing
       
  3615 -	FFI_TYPE_POINTER case.
       
  3616 -	(ffi_closure_helper_SYSV): Likewise.  Also, assume return
       
  3617 -	values extended to word size.
       
  3618 -
       
  3619 -2002-10-02  Andreas Jaeger  <aj@suse.de>
       
  3620 -
       
  3621 -	* src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output.
       
  3622 -
       
  3623 -2002-10-01  Bo Thorsen  <bo@smetana.suse.de>
       
  3624 -
       
  3625 -	* include/ffi.h.in: Fix i386 win32 compilation.
       
  3626 -
       
  3627 -2002-09-30  Ulrich Weigand  <uweigand@de.ibm.com>
       
  3628 -
       
  3629 -	* configure.in: Add s390x-*-linux-* target.
       
  3630 -	* configure: Regenerate.
       
  3631 -	* include/ffi.h.in: Define S390X for s390x targets.
       
  3632 -	(FFI_CLOSURES): Define for s390/s390x.
       
  3633 -	(FFI_TRAMPOLINE_SIZE): Likewise.
       
  3634 -	(FFI_NATIVE_RAW_API): Likewise.
       
  3635 -	* src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390.
       
  3636 -	* src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x.
       
  3637 -	* src/s390/ffi.c: Major rework of existing code.  Add support for
       
  3638 -	s390x targets.  Add closure support.
       
  3639 -	* src/s390/sysv.S: Likewise.
       
  3640 -
       
  3641 -2002-09-29  Richard Earnshaw  <rearnsha@arm.com>
       
  3642 -
       
  3643 -	* src/arm/sysv.S: Fix typo.
       
  3644 -
       
  3645 -2002-09-28  Richard Earnshaw  <rearnsha@arm.com>
       
  3646 -
       
  3647 -	* src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor
       
  3648 -	has defined __USER_LABEL_PREFIX__, then use it in CNAME.
       
  3649 -	(ffi_call_SYSV): Handle soft-float.
       
  3650 -
       
  3651 -2002-09-27  Bo Thorsen  <bo@suse.de>
       
  3652 -
       
  3653 -	* include/ffi.h.in: Fix multilib x86-64 support.
       
  3654 -
       
  3655 -2002-09-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
       
  3656 -
       
  3657 -	* Makefile.am (all-multi): Fix multilib parallel build.
       
  3658 -
       
  3659 -2002-07-19  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  3660 -
       
  3661 -	* configure.in (sh[34]*-*-linux*): Add brackets.
       
  3662 -	* configure: Regenerate.
       
  3663 -
       
  3664 -2002-07-18  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  3665 -
       
  3666 -	* Makefile.am: Add SH support.
       
  3667 -	* Makefile.in: Regenerate.
       
  3668 -	* configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target.
       
  3669 -	* configure: Regenerate.
       
  3670 -	* include/ffi.h.in: Add SH support.
       
  3671 -	* src/sh/ffi.c: New file.
       
  3672 -	* src/sh/sysv.S: New file.
       
  3673 -	* src/types.c: Add SH support.
       
  3674 -
       
  3675 -2002-07-16  Bo Thorsen  <bo@suse.de>
       
  3676 -
       
  3677 -	* src/x86/ffi64.c: New file that adds x86-64 support.
       
  3678 -	* src/x86/unix64.S: New file that handles argument setup for
       
  3679 -	x86-64.
       
  3680 -	* src/x86/sysv.S: Don't use this on x86-64.
       
  3681 -	* src/x86/ffi.c: Don't use this on x86-64.
       
  3682 -	Remove unused vars.
       
  3683 -	* src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation
       
  3684 -	for x86-64.
       
  3685 -	* src/ffitest.c (struct6): New test that tests a special case in
       
  3686 -	the x86-64 ABI.
       
  3687 -	(struct7): Likewise.
       
  3688 -	(struct8): Likewise.
       
  3689 -	(struct9): Likewise.
       
  3690 -	(closure_test_fn): Silence warning about this when it's not used.
       
  3691 -	(main): Add the new tests.
       
  3692 -	(main): Fix a couple of wrong casts and silence some compiler warnings.
       
  3693 -	* include/ffi.h.in: Add x86-64 ABI definition.
       
  3694 -	* fficonfig.h.in: Regenerate.
       
  3695 -	* Makefile.am: Add x86-64 support.
       
  3696 -	* configure.in: Likewise.
       
  3697 -	* Makefile.in: Regenerate.
       
  3698 -	* configure: Likewise.
       
  3699 -
       
  3700 -2002-06-24  Bo Thorsen  <bo@suse.de>
       
  3701 -
       
  3702 -	* src/types.c: Merge settings for similar architectures.
       
  3703 -	Add x86-64 sizes and alignments.
       
  3704 -
       
  3705 -2002-06-23  Bo Thorsen  <bo@suse.de>
       
  3706 -
       
  3707 -	* src/arm/ffi.c (ffi_prep_args): Remove unused vars.
       
  3708 -	* src/sparc/ffi.c (ffi_prep_args_v8): Likewise.
       
  3709 -	* src/mips/ffi.c (ffi_prep_args): Likewise.
       
  3710 -	* src/m68k/ffi.c (ffi_prep_args): Likewise.
       
  3711 -
       
  3712 -2002-07-18  H.J. Lu  (hjl@gnu.org)
       
  3713 -
       
  3714 -	* Makefile.am (TARGET_SRC_MIPS_LINUX): New.
       
  3715 -	(libffi_la_SOURCES): Support MIPS_LINUX.
       
  3716 -	(libffi_convenience_la_SOURCES): Likewise.
       
  3717 -	* Makefile.in: Regenerated.
       
  3718 -
       
  3719 -	* configure.in (mips64*-*): Skip.
       
  3720 -	(mips*-*-linux*): New.
       
  3721 -	* configure: Regenerated.
       
  3722 -
       
  3723 -	* src/mips/ffi.c: Include <sgidefs.h>.
       
  3724 -
       
  3725 -2002-06-06  Ulrich Weigand  <uweigand@de.ibm.com>
       
  3726 -
       
  3727 -	* src/s390/sysv.S: Save/restore %r6.  Add DWARF-2 unwind info.
       
  3728 -
       
  3729 -2002-05-27  Roger Sayle  <roger@eyesopen.com>
       
  3730 -
       
  3731 -	* src/x86/ffi.c (ffi_prep_args): Remove reference to avn.
       
  3732 -
       
  3733 -2002-05-27  Bo Thorsen  <bo@suse.de>
       
  3734 -
       
  3735 -	* src/x86/ffi.c (ffi_prep_args): Remove unused variable and
       
  3736 -	fix formatting.
       
  3737 -
       
  3738 -2002-05-13  Andreas Tobler  <a.tobler@schweiz.ch>
       
  3739 -
       
  3740 -	* src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at
       
  3741 -	beginning of function (for older apple cc).
       
  3742 -
       
  3743 -2002-05-08  Alexandre Oliva  <aoliva@redhat.com>
       
  3744 -
       
  3745 -	* configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
       
  3746 -	script entry, and set LD to it when configuring multilibs.
       
  3747 -	* configure: Rebuilt.
       
  3748 -
       
  3749 -2002-05-05  Jason Thorpe  <thorpej@wasabisystems.com>
       
  3750 -
       
  3751 -	* configure.in (sparc64-*-netbsd*): Add target.
       
  3752 -	(sparc-*-netbsdelf*): Likewise.
       
  3753 -	* configure: Regenerate.
       
  3754 -
       
  3755 -2002-04-28  David S. Miller  <davem@redhat.com>
       
  3756 -
       
  3757 -	* configure.in, configure: Fix SPARC test in previous change.
       
  3758 -
       
  3759 -2002-04-29  Gerhard Tonn  <GerhardTonn@swol.de>
       
  3760 -
       
  3761 -	* Makefile.am: Add Linux for S/390 support.
       
  3762 -	* Makefile.in: Regenerate.
       
  3763 -	* configure.in: Add Linux for S/390 support.
       
  3764 -	* configure: Regenerate.
       
  3765 -	* include/ffi.h.in: Add Linux for S/390 support.
       
  3766 -	* src/s390/ffi.c: New file from libffi CVS tree.
       
  3767 -	* src/s390/sysv.S: New file from libffi CVS tree.
       
  3768 -
       
  3769 -2002-04-28  Jakub Jelinek  <jakub@redhat.com>
       
  3770 -
       
  3771 -	* configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working
       
  3772 -	%r_disp32().
       
  3773 -	* src/sparc/v8.S: Use it.
       
  3774 -	* src/sparc/v9.S: Likewise.
       
  3775 -	* fficonfig.h.in: Rebuilt.
       
  3776 -	* configure: Rebuilt.
       
  3777 -
       
  3778 -2002-04-08  Hans Boehm  <Hans_Boehm@hp.com>
       
  3779 -
       
  3780 -	* src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE
       
  3781 -	correctly.
       
  3782 -	* src/ia64/unix.S: Add unwind information. Fix comments.
       
  3783 -	Save sp in a way that's compatible with unwind info.
       
  3784 -	(ffi_call_unix): Correctly restore sp in all cases.
       
  3785 -	* src/ia64/ffi.c: Add, fix comments.
       
  3786 -
       
  3787 -2002-04-08  Jakub Jelinek  <jakub@redhat.com>
       
  3788 -
       
  3789 -	* src/sparc/v8.S: Make .eh_frame dependent on target word size.
       
  3790 -
       
  3791 -2002-04-06  Jason Thorpe  <thorpej@wasabisystems.com>
       
  3792 -
       
  3793 -	* configure.in (alpha*-*-netbsd*): Add target.
       
  3794 -	* configure: Regenerate.
       
  3795 -
       
  3796 -2002-04-04  Jeff Sturm  <jsturm@one-point.com>
       
  3797 -
       
  3798 -	* src/sparc/v8.S: Add unwind info.
       
  3799 -	* src/sparc/v9.S: Likewise.
       
  3800 -
       
  3801 -2002-03-30  Krister Walfridsson  <cato@df.lth.se>
       
  3802 -
       
  3803 -	* configure.in: Enable i*86-*-netbsdelf*.
       
  3804 -	* configure: Rebuilt.
       
  3805 -
       
  3806 -2002-03-29  David Billinghurst <David.Billinghurst@riotinto.com>
       
  3807 -
       
  3808 -	PR other/2620
       
  3809 -	* src/mips/n32.s: Delete
       
  3810 -	* src/mips/o32.s: Delete
       
  3811 -
       
  3812 -2002-03-21  Loren J. Rittle  <ljrittle@acm.org>
       
  3813 -
       
  3814 -	* configure.in: Enable alpha*-*-freebsd*.
       
  3815 -	* configure: Rebuilt.
       
  3816 -
       
  3817 -2002-03-17  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
       
  3818 -
       
  3819 -	* Makefile.am: libfficonvenience -> libffi_convenience.
       
  3820 -	* Makefile.in: Rebuilt.
       
  3821 -
       
  3822 -	* Makefile.am: Define ffitest_OBJECTS.
       
  3823 -	* Makefile.in: Rebuilt.
       
  3824 -
       
  3825 -2002-03-07  Andreas Tobler  <toa@pop.agri.ch>
       
  3826 -	    David Edelsohn  <edelsohn@gnu.org>
       
  3827 -
       
  3828 -	* Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files.
       
  3829 -	(TARGET_SRC_POWERPC_AIX): Add aix_closure.S.
       
  3830 -	(TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S.
       
  3831 -	* Makefile.in: Regenerate.
       
  3832 -	* include/ffi.h.in: Add AIX and Darwin closure definitions.
       
  3833 -	* src/powerpc/ffi_darwin.c (ffi_prep_closure): New function.
       
  3834 -	(flush_icache, flush_range): New functions.
       
  3835 -	(ffi_closure_helper_DARWIN): New function.
       
  3836 -	* src/powerpc/aix_closure.S: New file.
       
  3837 -	* src/powerpc/darwin_closure.S: New file.
       
  3838 -
       
  3839 -2002-02-24  Jeff Sturm  <jsturm@one-point.com>
       
  3840 -
       
  3841 -	* include/ffi.h.in: Add typedef for ffi_arg.
       
  3842 -	* src/ffitest.c (main): Declare rint with ffi_arg.
       
  3843 -
       
  3844 -2002-02-21  Andreas Tobler  <toa@pop.agri.ch>
       
  3845 -
       
  3846 -	* src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate
       
  3847 -	number of GPRs for floating-point arguments.
       
  3848 -
       
  3849 -2002-01-31  Anthony Green  <green@redhat.com>
       
  3850 -
       
  3851 -	* configure: Rebuilt.
       
  3852 -	* configure.in: Replace CHECK_SIZEOF and endian tests with
       
  3853 -	cross-compiler friendly macros.
       
  3854 -	* aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New
       
  3855 -	macros.
       
  3856 -
       
  3857 -2002-01-18  David Edelsohn  <edelsohn@gnu.org>
       
  3858 -
       
  3859 -	* src/powerpc/darwin.S (_ffi_call_AIX): New.
       
  3860 -	* src/powerpc/aix.S (ffi_call_DARWIN): New.
       
  3861 -
       
  3862 -2002-01-17  David Edelsohn  <edelsohn@gnu.org>
       
  3863 -
       
  3864 -	* Makefile.am (EXTRA_DIST): Add Darwin and AIX files.
       
  3865 -	(TARGET_SRC_POWERPC_AIX): New.
       
  3866 -	(POWERPC_AIX): New stanza.
       
  3867 -	* Makefile.in: Regenerate.
       
  3868 -	* configure.in: Add AIX case.
       
  3869 -	* configure: Regenerate.
       
  3870 -	* include/ffi.h.in (ffi_abi): Add FFI_AIX.
       
  3871 -	* src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame
       
  3872 -	size.  Fix "long double" support.
       
  3873 -	(ffi_call): Add FFI_AIX case.
       
  3874 -	* src/powerpc/aix.S: New.
       
  3875 -
       
  3876 -2001-10-09  John Hornkvist  <john@toastedmarshmallow.com>
       
  3877 -
       
  3878 -	Implement Darwin PowerPC ABI.
       
  3879 -	* configure.in: Handle powerpc-*-darwin*.
       
  3880 -	* Makefile.am: Set source files for POWERPC_DARWIN.
       
  3881 -	* configure: Rebuilt.
       
  3882 -	* Makefile.in: Rebuilt.
       
  3883 -	* include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for
       
  3884 -	POWERPC_DARWIN.
       
  3885 -	* src/powerpc/darwin.S: New file.
       
  3886 -	* src/powerpc/ffi_darwin.c: New file.
       
  3887 -
       
  3888 -2001-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
       
  3889 -
       
  3890 -	* src/x86/ffi.c: Fix spelling error of "separate" as "seperate".
       
  3891 -
       
  3892 -2001-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  3893 -
       
  3894 -	* src/x86/sysv.S: Avoid gas-only .balign directive.
       
  3895 -	Use C style comments.
       
  3896 -
       
  3897 -2001-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  3898 -
       
  3899 -	* src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic.
       
  3900 -	Fixes PR bootstrap/3563.
       
  3901 -
       
  3902 -2001-06-26  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  3903 -
       
  3904 -	* src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF.
       
  3905 -
       
  3906 -2001-06-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
  3907 -
       
  3908 -	* configure.in: Recognize sparc*-sun-* host.
       
  3909 -	* configure: Regenerate.
       
  3910 -
       
  3911 -2001-06-06  Andrew Haley  <aph@redhat.com>
       
  3912 -
       
  3913 -	* src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF.
       
  3914 -
       
  3915 -2001-06-03  Andrew Haley  <aph@redhat.com>
       
  3916 -
       
  3917 -	* src/alpha/osf.S: Add unwind info.
       
  3918 -	* src/powerpc/sysv.S: Add unwind info.
       
  3919 -	* src/powerpc/ppc_closure.S: Likewise.
       
  3920 -
       
  3921 -2000-05-31  Jeff Sturm  <jsturm@one-point.com>
       
  3922 -
       
  3923 -	* configure.in: Fix AC_ARG_ENABLE usage.
       
  3924 -	* configure: Rebuilt.
       
  3925 -
       
  3926 -2001-05-06  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
       
  3927 -
       
  3928 -	* configure.in: Remove warning about beta code.
       
  3929 -	* configure: Rebuilt.
       
  3930 -
       
  3931 -2001-04-25  Hans Boehm <Hans_Boehm@hp.com>
       
  3932 -
       
  3933 -	* src/ia64/unix.S: Restore stack pointer when returning from
       
  3934 -	ffi_closure_UNIX.
       
  3935 -	* src/ia64/ffi.c: Fix typo in comment.
       
  3936 -
       
  3937 -2001-04-18  Jim Wilson  <wilson@redhat.com>
       
  3938 -
       
  3939 -	* src/ia64/unix.S: Delete unnecessary increment and decrement of loc2
       
  3940 -	to eliminate RAW DV.
       
  3941 -
       
  3942 -2001-04-12  Bryce McKinlay  <bryce@albatross.co.nz>
       
  3943 -
       
  3944 -	* Makefile.am: Make a libtool convenience library.
       
  3945 -	* Makefile.in: Rebuilt.
       
  3946 -
       
  3947 -2001-03-29  Bryce McKinlay  <bryce@albatross.co.nz>
       
  3948 -
       
  3949 -	* configure.in: Use different syntax for subdirectory creation.
       
  3950 -	* configure: Rebuilt.
       
  3951 -
       
  3952 -2001-03-27  Jon Beniston  <jon@beniston.com>
       
  3953 -
       
  3954 -	* configure.in: Added X86_WIN32 target (Win32, CygWin, MingW).
       
  3955 -	* configure: Rebuilt.
       
  3956 -	* Makefile.am: Added X86_WIN32 target support.
       
  3957 -	* Makefile.in: Rebuilt.
       
  3958 -
       
  3959 -	* include/ffi.h.in: Added X86_WIN32 target support.
       
  3960 -
       
  3961 -	* src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets.
       
  3962 -	* src/types.c: Added X86_WIN32 target support.
       
  3963 -
       
  3964 -	* src/x86/win32.S: New file. Based on sysv.S, but with EH
       
  3965 -	stuff removed and made to work with CygWin's gas.
       
  3966 -
       
  3967 -2001-03-26  Bryce McKinlay  <bryce@albatross.co.nz>
       
  3968 -
       
  3969 -	* configure.in: Make target subdirectory in build dir.
       
  3970 -	* Makefile.am: Override suffix based rules to specify correct output
       
  3971 -	subdirectory.
       
  3972 -	* Makefile.in: Rebuilt.
       
  3973 -	* configure: Rebuilt.
       
  3974 -
       
  3975 -2001-03-23  Kevin B Hendricks  <khendricks@ivey.uwo.ca>
       
  3976 -
       
  3977 -	* src/powerpc/ppc_closure.S: New file.
       
  3978 -	* src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug
       
  3979 -	involving long long and register pairs.
       
  3980 -	(ffi_prep_closure): New function.
       
  3981 -	(flush_icache): Likewise.
       
  3982 -	(ffi_closure_helper_SYSV): Likewise.
       
  3983 -	* include/ffi.h.in (FFI_CLOSURES): Define on PPC.
       
  3984 -	(FFI_TRAMPOLINE_SIZE): Likewise.
       
  3985 -	(FFI_NATIVE_RAW_API): Likewise.
       
  3986 -	* Makefile.in: Rebuilt.
       
  3987 -	* Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S.
       
  3988 -	(TARGET_SRC_POWERPC): Likewise.
       
  3989 -
       
  3990 -2001-03-19  Tom Tromey  <tromey@redhat.com>
       
  3991 -
       
  3992 -	* Makefile.in: Rebuilt.
       
  3993 -	* Makefile.am (ffitest_LDFLAGS): New macro.
       
  3994 -
       
  3995 -2001-03-02  Nick Clifton  <nickc@redhat.com>
       
  3996 -
       
  3997 -	* include/ffi.h.in: Remove RCS ident string.
       
  3998 -	* include/ffi_mips.h: Remove RCS ident string.
       
  3999 -	* src/debug.c: Remove RCS ident string.
       
  4000 -	* src/ffitest.c: Remove RCS ident string.
       
  4001 -	* src/prep_cif.c: Remove RCS ident string.
       
  4002 -	* src/types.c: Remove RCS ident string.
       
  4003 -	* src/alpha/ffi.c: Remove RCS ident string.
       
  4004 -	* src/alpha/osf.S: Remove RCS ident string.
       
  4005 -	* src/arm/ffi.c: Remove RCS ident string.
       
  4006 -	* src/arm/sysv.S: Remove RCS ident string.
       
  4007 -	* src/mips/ffi.c: Remove RCS ident string.
       
  4008 -	* src/mips/n32.S: Remove RCS ident string.
       
  4009 -	* src/mips/o32.S: Remove RCS ident string.
       
  4010 -	* src/sparc/ffi.c: Remove RCS ident string.
       
  4011 -	* src/sparc/v8.S: Remove RCS ident string.
       
  4012 -	* src/sparc/v9.S: Remove RCS ident string.
       
  4013 -	* src/x86/ffi.c: Remove RCS ident string.
       
  4014 -	* src/x86/sysv.S: Remove RCS ident string.
       
  4015 -
       
  4016 -2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
       
  4017 -
       
  4018 -	* include/ffi.h.in: Change sourceware.cygnus.com references to
       
  4019 -	gcc.gnu.org.
       
  4020 -
       
  4021 -2000-12-09  Richard Henderson  <rth@redhat.com>
       
  4022 -
       
  4023 -	* src/alpha/ffi.c (ffi_call): Simplify struct return test.
       
  4024 -	(ffi_closure_osf_inner): Index rather than increment avalue
       
  4025 -	and arg_types.  Give ffi_closure_osf the raw return value type.
       
  4026 -	* src/alpha/osf.S (ffi_closure_osf): Handle return value type
       
  4027 -	promotion.
       
  4028 -
       
  4029 -2000-12-07  Richard Henderson  <rth@redhat.com>
       
  4030 -
       
  4031 -	* src/raw_api.c (ffi_translate_args): Fix typo.
       
  4032 -	(ffi_prep_closure): Likewise.
       
  4033 -
       
  4034 -	* include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and
       
  4035 -	FFI_TRAMPOLINE_SIZE.
       
  4036 -	* src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal
       
  4037 -	cif->bytes for new ffi_call_osf implementation.
       
  4038 -	(ffi_prep_args): Absorb into ...
       
  4039 -	(ffi_call): ... here.  Do all stack allocation here and
       
  4040 -	avoid a callback function.
       
  4041 -	(ffi_prep_closure, ffi_closure_osf_inner): New.
       
  4042 -	* src/alpha/osf.S (ffi_call_osf): Reimplement with no callback.
       
  4043 -	(ffi_closure_osf): New.
       
  4044 -
       
  4045 -2000-09-10  Alexandre Oliva  <aoliva@redhat.com>
       
  4046 -
       
  4047 -	* config.guess, config.sub, install-sh: Removed.
       
  4048 -	* ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise.
       
  4049 -	* Makefile.in: Rebuilt.
       
  4050 -
       
  4051 -	* acinclude.m4: Include libtool macros from the top level.
       
  4052 -	* aclocal.m4, configure: Rebuilt.
       
  4053 -
       
  4054 -2000-08-22  Alexandre Oliva  <aoliva@redhat.com>
       
  4055 -
       
  4056 -	* configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set.
       
  4057 -	* configure: Rebuilt.
       
  4058 -
       
  4059 -2000-05-11  Scott Bambrough  <scottb@netwinder.org>
       
  4060 -
       
  4061 -	* libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to
       
  4062 -	memory correctly.  Use conditional instructions, not branches where
       
  4063 -	possible.
       
  4064 -
       
  4065 -2000-05-04  Tom Tromey  <tromey@cygnus.com>
       
  4066 -
       
  4067 -	* configure: Rebuilt.
       
  4068 -	* configure.in: Match `arm*-*-linux-*'.
       
  4069 -	From Chris Dornan <cdornan@arm.com>.
       
  4070 -
       
  4071 -2000-04-28  Jakub Jelinek  <jakub@redhat.com>
       
  4072 -
       
  4073 -	* Makefile.am (SUBDIRS): Define.
       
  4074 -	(AM_MAKEFLAGS): Likewise.
       
  4075 -	(Multilib support.): Add section.
       
  4076 -	* Makefile.in: Rebuilt.
       
  4077 -	* ltconfig (extra_compiler_flags, extra_compiler_flags_value):
       
  4078 -	New variables. Set for gcc using -print-multi-lib. Export them
       
  4079 -	to libtool.
       
  4080 -	(sparc64-*-linux-gnu*): Use libsuff 64 for search paths.
       
  4081 -	* ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options
       
  4082 -	for -shared links.
       
  4083 -	(extra_compiler_flags_value, extra_compiler_flags): Check these
       
  4084 -	for extra compiler options which need to be passed down in
       
  4085 -	compiler_flags.
       
  4086 -
       
  4087 -2000-04-16  Anthony Green  <green@redhat.com>
       
  4088 -
       
  4089 -	* configure: Rebuilt.
       
  4090 -	* configure.in: Change i*86-pc-linux* to i*86-*-linux*.
       
  4091 -
       
  4092 -2000-04-14  Jakub Jelinek  <jakub@redhat.com>
       
  4093 -
       
  4094 -	* include/ffi.h.in (SPARC64): Define for 64bit SPARC builds.
       
  4095 -	Set SPARC FFI_DEFAULT_ABI based on SPARC64 define.
       
  4096 -	* src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args.
       
  4097 -	Replace all void * sizeofs with sizeof(int).
       
  4098 -	Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is
       
  4099 -	different than DOUBLE.
       
  4100 -	Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere).
       
  4101 -	(ffi_prep_args_v9): New function.
       
  4102 -	(ffi_prep_cif_machdep): Handle V9 ABI and long long on V8.
       
  4103 -	(ffi_V9_return_struct): New function.
       
  4104 -	(ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from
       
  4105 -	32bit code (not yet cross-arch calls).
       
  4106 -	* src/sparc/v8.S: Add struct return delay nop.
       
  4107 -	Handle long long.
       
  4108 -	* src/sparc/v9.S: New file.
       
  4109 -	* src/prep_cif.c (ffi_prep_cif): Return structure pointer
       
  4110 -	is used on sparc64 only for structures larger than 32 bytes.
       
  4111 -	Pass by reference for structures is done for structure arguments
       
  4112 -	larger than 16 bytes.
       
  4113 -	* src/ffitest.c (main): Use 64bit rint on sparc64.
       
  4114 -	Run long long tests on sparc.
       
  4115 -	* src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and
       
  4116 -	sparc64.
       
  4117 -	(FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits
       
  4118 -	on sparc64.
       
  4119 -	* configure.in (sparc-*-linux*): New supported target.
       
  4120 -	(sparc64-*-linux*): Likewise.
       
  4121 -	* configure: Rebuilt.
       
  4122 -	* Makefile.am: Add v9.S to SPARC files.
       
  4123 -	* Makefile.in: Likewise.
       
  4124 -	(LINK): Surround $(CCLD) into double quotes, so that multilib
       
  4125 -	compiles work correctly.
       
  4126 -
       
  4127 -2000-04-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
       
  4128 -
       
  4129 -	* configure: Rebuilt.
       
  4130 -	* configure.in: (i*86-*-solaris*): New libffi target. Patch
       
  4131 -	proposed by Bryce McKinlay.
       
  4132 -
       
  4133 -2000-03-20  Tom Tromey  <tromey@cygnus.com>
       
  4134 -
       
  4135 -	* Makefile.in: Hand edit for java_raw_api.lo.
       
  4136 -
       
  4137 -2000-03-08  Bryce McKinlay  <bryce@albatross.co.nz>
       
  4138 -
       
  4139 -	* config.guess, config.sub: Update from the gcc tree.
       
  4140 -	Fix for PR libgcj/168.
       
  4141 -
       
  4142 -2000-03-03  Tom Tromey  <tromey@cygnus.com>
       
  4143 -
       
  4144 -	* Makefile.in: Fixed ia64 by hand.
       
  4145 -
       
  4146 -	* configure: Rebuilt.
       
  4147 -	* configure.in (--enable-multilib): New option.
       
  4148 -	(libffi_basedir): New subst.
       
  4149 -	(AC_OUTPUT): Added multilib code.
       
  4150 -
       
  4151 -2000-03-02  Tom Tromey  <tromey@cygnus.com>
       
  4152 -
       
  4153 -	* Makefile.in: Rebuilt.
       
  4154 -	* Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as
       
  4155 -	directory name.
       
  4156 -
       
  4157 -2000-02-25  Hans Boehm <boehm@acm.org>
       
  4158 -
       
  4159 -	* src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New
       
  4160 -	files.
       
  4161 -	* src/raw_api.c (ffi_translate_args): Fixed typo in argument
       
  4162 -	list.
       
  4163 -	(ffi_prep_raw_closure): Use ffi_translate_args, not
       
  4164 -	ffi_closure_translate.
       
  4165 -	* src/java_raw_api.c: New file.
       
  4166 -	* src/ffitest.c (closure_test_fn): New function.
       
  4167 -	(main): Define `rint' as long long on IA64.  Added new test when
       
  4168 -	FFI_CLOSURES is defined.
       
  4169 -	* include/ffi.h.in (ALIGN): Use size_t, not unsigned.
       
  4170 -	(ffi_abi): Recognize IA64.
       
  4171 -	(ffi_raw): Added `flt' field.
       
  4172 -	Added "Java raw API" code.
       
  4173 -	* configure.in: Recognize ia64.
       
  4174 -	* Makefile.am (TARGET_SRC_IA64): New macro.
       
  4175 -	(libffi_la_common_SOURCES): Added java_raw_api.c.
       
  4176 -	(libffi_la_SOURCES): Define in IA64 case.
       
  4177 -
       
  4178 -2000-01-04  Tom Tromey  <tromey@cygnus.com>
       
  4179 -
       
  4180 -	* Makefile.in: Rebuilt with newer automake.
       
  4181 -
       
  4182 -1999-12-31  Tom Tromey  <tromey@cygnus.com>
       
  4183 -
       
  4184 -	* Makefile.am (INCLUDES): Added -I$(top_srcdir)/src.
       
  4185 -
       
  4186 -1999-09-01  Tom Tromey  <tromey@cygnus.com>
       
  4187 -
       
  4188 -	* include/ffi.h.in: Removed PACKAGE and VERSION defines and
       
  4189 -	undefs.
       
  4190 -	* fficonfig.h.in: Rebuilt.
       
  4191 -	* configure: Rebuilt.
       
  4192 -	* configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE.
       
  4193 -	Use AM_PROG_LIBTOOL (automake 1.4 compatibility).
       
  4194 -	* acconfig.h: Don't #undef PACKAGE or VERSION.
       
  4195 -
       
  4196 -1999-08-09  Anthony Green  <green@cygnus.com>
       
  4197 -
       
  4198 -	* include/ffi.h.in: Try to work around messy header problem
       
  4199 -	with PACKAGE and VERSION.
       
  4200 -
       
  4201 -	* configure: Rebuilt.
       
  4202 -	* configure.in: Change version to 2.00-beta.
       
  4203 -
       
  4204 -	* fficonfig.h.in: Rebuilt.
       
  4205 -	* acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define.
       
  4206 -
       
  4207 -	* src/x86/ffi.c (ffi_raw_call): Rename.
       
  4208 -
       
  4209 -1999-08-02  Kresten Krab Thorup  <krab@dominiq.is.s.u-tokyo.ac.jp>
       
  4210 -
       
  4211 -	* src/x86/ffi.c (ffi_closure_SYSV): New function.
       
  4212 -	(ffi_prep_incoming_args_SYSV): Ditto.
       
  4213 -	(ffi_prep_closure): Ditto.
       
  4214 -	(ffi_closure_raw_SYSV): Ditto.
       
  4215 -	(ffi_prep_raw_closure): More ditto.
       
  4216 -	(ffi_call_raw): Final ditto.
       
  4217 -
       
  4218 -	* include/ffi.h.in: Add definitions for closure and raw API.
       
  4219 -
       
  4220 -	* src/x86/ffi.c (ffi_prep_cif_machdep): Added case for
       
  4221 -	FFI_TYPE_UINT64.
       
  4222 -
       
  4223 -	* Makefile.am (libffi_la_common_SOURCES): Added raw_api.c
       
  4224 -
       
  4225 -	* src/raw_api.c: New file.
       
  4226 -
       
  4227 -	* include/ffi.h.in (ffi_raw): New type.
       
  4228 -	(UINT_ARG, SINT_ARG): New defines.
       
  4229 -	(ffi_closure, ffi_raw_closure): New types.
       
  4230 -	(ffi_prep_closure, ffi_prep_raw_closure): New declarations.
       
  4231 -
       
  4232 -	* configure.in: Add check for endianness and sizeof void*.
       
  4233 -
       
  4234 -	* src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument,
       
  4235 -	instead of directly.
       
  4236 -
       
  4237 -	* configure: Rebuilt.
       
  4238 -
       
  4239 -Thu Jul  8 14:28:42 1999  Anthony Green  <green@cygnus.com>
       
  4240 -
       
  4241 -	* configure.in: Add x86 and powerpc BeOS configurations.
       
  4242 -	From Makoto Kato <m_kato@ga2.so-net.ne.jp>.
       
  4243 -
       
  4244 -1999-05-09  Anthony Green  <green@cygnus.com>
       
  4245 -
       
  4246 -	* configure.in: Add warning about this being beta code.
       
  4247 -	Remove src/Makefile.am from the picture.
       
  4248 -	* configure: Rebuilt.
       
  4249 -
       
  4250 -	* Makefile.am: Move logic from src/Makefile.am.  Add changes
       
  4251 -	to support libffi as a target library.
       
  4252 -	* Makefile.in: Rebuilt.
       
  4253 -
       
  4254 -	* aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh:
       
  4255 -	Upgraded to new autoconf, automake, libtool.
       
  4256 -
       
  4257 -	* README: Tweaks.
       
  4258 -
       
  4259 -	* LICENSE: Update copyright date.
       
  4260 -
       
  4261 -	* src/Makefile.am, src/Makefile.in: Removed.
       
  4262 -
       
  4263 -1998-11-29  Anthony Green  <green@cygnus.com>
       
  4264 -
       
  4265 -	* include/ChangeLog: Removed.
       
  4266 -	* src/ChangeLog: Removed.
       
  4267 -	* src/mips/ChangeLog: Removed.
       
  4268 -	* src/sparc/ChangeLog: Remboved.
       
  4269 -	* src/x86/ChangeLog: Removed.
       
  4270 -
       
  4271 -	* ChangeLog.v1: Created.
       
  4272 +commit c860a992fef5d7cd7bb0975b1632d17a9fafe007
       
  4273 +Author: Anthony Green <green@moxielogic.com>
       
  4274 +Date:   Tue Mar 25 17:02:51 2014 -0400
       
  4275 +
       
  4276 +    Upgrade version to 3.1-rc1
       
  4277 +
       
  4278 +commit 9837073e6203048a162a226798c5d252600219ed
       
  4279 +Author: Anthony Green <green@moxielogic.com>
       
  4280 +Date:   Tue Mar 25 16:24:14 2014 -0400
       
  4281 +
       
  4282 +    Update copyright date and clean up README notes.
       
  4283 +
       
  4284 +commit 18d3baa9f597b026675baa1b4e5a5eeef7577a08
       
  4285 +Merge: afee537 f0c8a31
       
  4286 +Author: Anthony Green <green@moxielogic.com>
       
  4287 +Date:   Tue Mar 25 16:12:53 2014 -0400
       
  4288 +
       
  4289 +    Merge pull request #108 from joshtriplett/freebsd
       
  4290 +    
       
  4291 +    [3.1 blocker] Fix FreeBSD support
       
  4292 +
       
  4293 +commit afee53738a995e23bd2f89fd0f7b30b380566106
       
  4294 +Merge: 7d24785 b2d610e
       
  4295 +Author: Anthony Green <green@moxielogic.com>
       
  4296 +Date:   Tue Mar 25 16:12:35 2014 -0400
       
  4297 +
       
  4298 +    Merge pull request #106 from joshtriplett/darwin-award
       
  4299 +    
       
  4300 +    [3.1 blocker] Update OS X build system to include win32.S on 32-bit
       
  4301 +
       
  4302 +commit 7d2478568ed9f03cbf57627f449a2d2cf4d1571c
       
  4303 +Merge: beab5f3 56be47f
       
  4304 +Author: Anthony Green <green@moxielogic.com>
       
  4305 +Date:   Tue Mar 25 16:12:17 2014 -0400
       
  4306 +
       
  4307 +    Merge pull request #110 from joshtriplett/w64
       
  4308 +    
       
  4309 +    Fix 64-bit Windows support
       
  4310 +
       
  4311 +commit beab5f334d9ec5b8b91d1cc727d1029b40358e7e
       
  4312 +Merge: 28fb197 ef5890e
       
  4313 +Author: Anthony Green <green@moxielogic.com>
       
  4314 +Date:   Tue Mar 25 16:07:47 2014 -0400
       
  4315 +
       
  4316 +    Merge pull request #105 from joshtriplett/win32-relocations
       
  4317 +    
       
  4318 +    [3.1 blocker] win32.S needs to handle relocations/GOT
       
  4319 +
       
  4320 +commit f0c8a31577172104049283f0a80c723084a5bd77
       
  4321 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4322 +Date:   Mon Mar 24 22:14:26 2014 -0700
       
  4323 +
       
  4324 +    Compile win32.S on FreeBSD
       
  4325 +
       
  4326 +commit b2d610e028b5ce48d1ad7e5d0debc9c321d891b2
       
  4327 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4328 +Date:   Fri Mar 21 11:10:13 2014 -0700
       
  4329 +
       
  4330 +    Compile win32.S on 32-bit Darwin as well
       
  4331 +
       
  4332 +commit be50b87a490e794362cb4a27ada2fbaab202adb8
       
  4333 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4334 +Date:   Mon Mar 24 21:44:13 2014 -0700
       
  4335 +
       
  4336 +    Always use configure to detect whether global symbols need underscores
       
  4337 +    
       
  4338 +    64-bit Windows already used this check; make it universal, and use it in
       
  4339 +    place of an ifdef on X86_WIN32, to handle non-Windows platforms that use
       
  4340 +    the underscore, such as Darwin.
       
  4341 +
       
  4342 +commit 56be47f87629e31afbcb0774aa65735f539ee972
       
  4343 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4344 +Date:   Mon Mar 24 21:24:53 2014 -0700
       
  4345 +
       
  4346 +    Fix a warning on 64-bit Windows
       
  4347 +    
       
  4348 +    When sizeof(size_t) != sizeof(unsigned), adding a size_t to cif->bytes
       
  4349 +    produces a "possible loss of data" warning.  However, the size_t in
       
  4350 +    question refers to the size of a single parameter.  Use a cast to avoid
       
  4351 +    the warning.
       
  4352 +
       
  4353 +commit 48a8eda74aad8a21b6f26df5df08fe64c043d208
       
  4354 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4355 +Date:   Mon Mar 24 21:21:12 2014 -0700
       
  4356 +
       
  4357 +    Avoid referencing undefined ABIs on 64-bit Windows builds
       
  4358 +    
       
  4359 +    64-bit Windows does not have FFI_STDCALL, FFI_THISCALL, or FFI_FASTCALL.
       
  4360 +
       
  4361 +commit f0f4138f90345d7d67dfa6783a7e1c7cc30d3c6f
       
  4362 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4363 +Date:   Sat Mar 22 10:00:53 2014 -0700
       
  4364 +
       
  4365 +    win32.S: Add handling for position-independent code on Darwin
       
  4366 +    
       
  4367 +    Newer versions of Darwin generate the necessary stub functions
       
  4368 +    automatically and just need a call instruction, but accomodating older
       
  4369 +    versions as well requires adding the stub.
       
  4370 +
       
  4371 +commit ef5890ebafb7cd2fbf9acf161edb55fe1382871c
       
  4372 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4373 +Date:   Fri Mar 21 11:01:39 2014 -0700
       
  4374 +
       
  4375 +    win32.S: Use shifting for multiplication rather than repeated addition
       
  4376 +    
       
  4377 +    The jump table code added a register to itself twice to multiply by 4;
       
  4378 +    shift the register left by 2 instead.
       
  4379 +
       
  4380 +commit 4fca48901e7e4f53bf490ed22607b2d2d8f4bfcc
       
  4381 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4382 +Date:   Fri Mar 21 11:00:41 2014 -0700
       
  4383 +
       
  4384 +    win32.S: Make the jump tables position-independent
       
  4385 +    
       
  4386 +    Now that non-Windows platforms include win32.S, it needs to support
       
  4387 +    building as position-independent code.  This fixes build failures on
       
  4388 +    target platforms that do not allow text relocations.
       
  4389 +
       
  4390 +commit 2087dcf736274286f76c69d3988fb6d7cc4fd0f5
       
  4391 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4392 +Date:   Fri Mar 21 10:57:06 2014 -0700
       
  4393 +
       
  4394 +    win32.S: Make calls to ffi_closure_SYSV_inner position-independent
       
  4395 +    
       
  4396 +    Now that non-Windows platforms include win32.S, it needs to support
       
  4397 +    building as position-independent code.  This fixes one source of build
       
  4398 +    failures on target platforms that do not allow text relocations.
       
  4399 +
       
  4400 +commit 28fb197079cf1d11da4eef7c8c243ab05590c528
       
  4401 +Merge: c697472 c3dd0a1
       
  4402 +Author: Anthony Green <green@moxielogic.com>
       
  4403 +Date:   Tue Mar 18 12:19:36 2014 -0400
       
  4404 +
       
  4405 +    Merge pull request #107 from rvandermeulen/msvcc
       
  4406 +    
       
  4407 +    Various compatibility fixes and improvements to msvcc.sh.
       
  4408 +
       
  4409 +commit c3dd0a1a0245fc174361a70876e88ae24285f861
       
  4410 +Author: Ryan VanderMeulen <ryanvm@gmail.com>
       
  4411 +Date:   Tue Mar 18 12:09:45 2014 -0400
       
  4412 +
       
  4413 +    Various compatibility fixes and improvements to msvcc.sh.
       
  4414 +    
       
  4415 +    * Don't try to mix incompatible optimization flags in debug builds.
       
  4416 +    * Workaround ax_cc_maxopt.m4 not supporting MSVC and change -O3 to -O2.
       
  4417 +    * Fix MSVC warning by properly passing linker flags to compiler.
       
  4418 +    * Make msvcc.sh return 1 if invalid command line options are used rather than silently eating them.
       
  4419 +    * Add more comments.
       
  4420 +
       
  4421 +commit c697472fccfbb5b87b007c053cda9ef014b346b9
       
  4422 +Merge: 83fd2bc e48918e
       
  4423 +Author: Anthony Green <green@moxielogic.com>
       
  4424 +Date:   Mon Mar 17 00:32:42 2014 -0400
       
  4425 +
       
  4426 +    Merge pull request #102 from joshtriplett/test-generic
       
  4427 +    
       
  4428 +    Add ABIs to the test matrix; unify many bits of the testsuite
       
  4429 +
       
  4430 +commit e48918ecf876bc85d040fc50a232059c566553a8
       
  4431 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4432 +Date:   Sun Mar 16 20:29:27 2014 -0700
       
  4433 +
       
  4434 +    testsuite: Add ABIs to the test matrix; unify tests across ABIs
       
  4435 +    
       
  4436 +    This eliminates all the *_win32.c tests in favor of the tests they were
       
  4437 +    branched from, and expands test coverage to run many more tests on
       
  4438 +    stdcall, thiscall, and fastcall.
       
  4439 +    
       
  4440 +    This same mechanism also supports testing any other target that has
       
  4441 +    multiple ABIs.
       
  4442 +
       
  4443 +commit 4d4d368e5a55d9443c4c53b1b70d58ab6d8c941c
       
  4444 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4445 +Date:   Sun Mar 16 17:02:05 2014 -0700
       
  4446 +
       
  4447 +    testsuite: Replace ffitestcxx.h with ffitest.h
       
  4448 +    
       
  4449 +    ffitest.h contains a superset of the functionality of ffitestcxx.h;
       
  4450 +    make the C++ tests include ffitest.h instead, and remove ffitestcxx.h.
       
  4451 +
       
  4452 +commit 3f97cf3413c46caf2a79f32ac9cda4620972c2d7
       
  4453 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4454 +Date:   Sun Mar 16 16:53:42 2014 -0700
       
  4455 +
       
  4456 +    testsuite: Unify the C and C++ testsuites
       
  4457 +    
       
  4458 +    These two testsuites differ only in the source file glob and a couple of
       
  4459 +    additional compiler options; unify the remaining bits.
       
  4460 +
       
  4461 +commit 0d9cce8edb937bbe771a6cdd25f671edf06d2128
       
  4462 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4463 +Date:   Sun Mar 16 16:22:58 2014 -0700
       
  4464 +
       
  4465 +    testsuite: ffitest.h: Parenthesize the CHECK macro
       
  4466 +
       
  4467 +commit 5695ec1444c5323e48fe4314f8c8f027625e67df
       
  4468 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4469 +Date:   Sun Mar 16 16:04:58 2014 -0700
       
  4470 +
       
  4471 +    testsuite: Factor out a function to run a matrix of tests
       
  4472 +    
       
  4473 +    This commons up code from libffi.call/call.exp and
       
  4474 +    libffi.special/special.exp, unifies the optimization option matrix
       
  4475 +    between the two, and makes it easier to add more axes to the matrix
       
  4476 +    in the future.
       
  4477 +
       
  4478 +commit dfdb02cc869855d3b68571e5f7aa77ae8c9d254a
       
  4479 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4480 +Date:   Sun Mar 16 15:26:26 2014 -0700
       
  4481 +
       
  4482 +    testsuite: Introduce a __THISCALL__ compiler-specific macro
       
  4483 +
       
  4484 +commit 83fd2bce0456224483435d4b764063f4513fd464
       
  4485 +Merge: 3658a07 06ff924
       
  4486 +Author: Anthony Green <green@moxielogic.com>
       
  4487 +Date:   Sun Mar 16 22:03:29 2014 -0400
       
  4488 +
       
  4489 +    Merge pull request #99 from joshtriplett/gitignore
       
  4490 +    
       
  4491 +    .gitignore: Ignore more generated files
       
  4492 +
       
  4493 +commit 3658a0700a50d37a2fdba04fd9d79ad2f706d9f5
       
  4494 +Merge: d948d0a 46c5d3c
       
  4495 +Author: Anthony Green <green@moxielogic.com>
       
  4496 +Date:   Sun Mar 16 21:37:42 2014 -0400
       
  4497 +
       
  4498 +    Merge pull request #100 from rvandermeulen/bug-756740
       
  4499 +    
       
  4500 +    Change double quotes in Makefile.am to single quotes.
       
  4501 +
       
  4502 +commit 46c5d3c30fdc2b43c076ad955078d7c5f1e75b37
       
  4503 +Author: Ryan VanderMeulen <ryanvm@gmail.com>
       
  4504 +Date:   Sun Mar 16 21:16:08 2014 -0400
       
  4505 +
       
  4506 +    Change double quotes in Makefile.am to single quotes.
       
  4507 +    
       
  4508 +    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.
       
  4509 +
       
  4510 +commit 06ff924215a2f9739efa2c059dc595bc4ec1c851
       
  4511 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4512 +Date:   Sun Mar 16 16:19:46 2014 -0700
       
  4513 +
       
  4514 +    .gitignore: Ignore more generated files
       
  4515 +    
       
  4516 +    The build process generates doc/libffi.info and fficonfig.h.in, so add
       
  4517 +    them to .gitignore.
       
  4518 +
       
  4519 +commit bad8948346e9b8813023a0cc78a3b6eb8d9c14c6
       
  4520 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4521 +Date:   Sun Mar 16 15:16:18 2014 -0700
       
  4522 +
       
  4523 +    testsuite: Introduce a __STDCALL__ compiler-specific macro
       
  4524 +    
       
  4525 +    Several tests want to use stdcall, which differs in syntax by compiler,
       
  4526 +    so introduce a macro for it in ffitest.h.
       
  4527 +
       
  4528 +commit 98a793fa36a4ab3ba24d059cb80a2891cdb940e1
       
  4529 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4530 +Date:   Sun Mar 16 15:20:36 2014 -0700
       
  4531 +
       
  4532 +    testsuite: Common up the ifdef blocks for compiler-specific macros
       
  4533 +
       
  4534 +commit d948d0a729c934b0224749338a3ba0a2c8f51c45
       
  4535 +Merge: b61b472 a86bd31
       
  4536 +Author: Anthony Green <green@moxielogic.com>
       
  4537 +Date:   Sun Mar 16 10:53:48 2014 -0400
       
  4538 +
       
  4539 +    Merge pull request #98 from joshtriplett/unconfigure.host
       
  4540 +    
       
  4541 +    Merge configure.host into configure.ac
       
  4542 +
       
  4543 +commit a86bd318e2424d879d784ee7b29d6536d7a17c18
       
  4544 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4545 +Date:   Sun Mar 16 06:58:59 2014 -0700
       
  4546 +
       
  4547 +    Merge configure.host into configure.ac
       
  4548 +    
       
  4549 +    configure.host only has a single entry, and shows no signs of needing
       
  4550 +    more added.
       
  4551 +
       
  4552 +commit b61b472bd0647006d6685238721002017f1d119c
       
  4553 +Author: Anthony Green <green@moxielogic.com>
       
  4554 +Date:   Sun Mar 16 09:45:55 2014 -0400
       
  4555 +
       
  4556 +    Update version to 3.1-rc0.  Clean up README.
       
  4557 +
       
  4558 +commit 7a64e7dbba54e6e9f69954adfb943be1856ff928
       
  4559 +Merge: 11a5c5c eef2e02
       
  4560 +Author: Anthony Green <green@moxielogic.com>
       
  4561 +Date:   Sun Mar 16 09:39:08 2014 -0400
       
  4562 +
       
  4563 +    Merge pull request #97 from joshtriplett/remove-more-generated-files
       
  4564 +    
       
  4565 +    Remove more generated files
       
  4566 +
       
  4567 +commit 11a5c5c39f5861011f6c5ddf795da3a32b5f0082
       
  4568 +Merge: 9a62a21 1c68c07
       
  4569 +Author: Anthony Green <green@moxielogic.com>
       
  4570 +Date:   Sun Mar 16 09:38:47 2014 -0400
       
  4571 +
       
  4572 +    Merge pull request #96 from joshtriplett/sawing-changelogs
       
  4573 +    
       
  4574 +    Generate ChangeLog from git in make dist; remove it from version control
       
  4575 +
       
  4576 +commit eef2e02a13d7d1c8145d47a64467f654406a3548
       
  4577 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4578 +Date:   Sun Mar 16 06:26:03 2014 -0700
       
  4579 +
       
  4580 +    doc: Remove autogenerated info file and stamp
       
  4581 +
       
  4582 +commit 9fb403d3c5d9643e0f561cab6d4a07b1e54907ff
       
  4583 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4584 +Date:   Sun Mar 16 06:25:52 2014 -0700
       
  4585 +
       
  4586 +    fficonfig.h.in: Remove, configure generates it
       
  4587 +
       
  4588 +commit 1c68c07217fda78a779778c1480fedef7a58d5b4
       
  4589 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4590 +Date:   Sun Mar 16 06:11:58 2014 -0700
       
  4591 +
       
  4592 +    Generate ChangeLog from git in make dist
       
  4593 +    
       
  4594 +    Archive the existing ChangeLog to ChangeLog.libffi-3.1
       
  4595 +
       
  4596 +commit c65ed55e655711e008282edbdd82ce95d008b4f6
       
  4597 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4598 +Date:   Sun Mar 16 05:52:00 2014 -0700
       
  4599 +
       
  4600 +    ChangeLog.v1: Fix typo in explanatory header.
       
  4601 +
       
  4602 +commit 9a62a21f5c3a8e1da463229f3170c8ab3031d920
       
  4603 +Author: Anthony Green <green@moxielogic.com>
       
  4604 +Date:   Sun Mar 16 09:03:57 2014 -0400
       
  4605 +
       
  4606 +    Add missing ChangeLog entry.  Clean up some entries.
       
  4607 +
       
  4608 +commit 9bc704c58cb7a049d867837e3a11e2e31886ec66
       
  4609 +Merge: 694447a e892e58
       
  4610 +Author: Anthony Green <green@moxielogic.com>
       
  4611 +Date:   Sun Mar 16 08:41:00 2014 -0400
       
  4612 +
       
  4613 +    Merge pull request #95 from joshtriplett/news
       
  4614 +    
       
  4615 +    README: Update news for 3.0.14
       
  4616 +
       
  4617 +commit e892e581d1838a06c18c7ecd50ebd79915cff92b
       
  4618 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4619 +Date:   Sun Mar 16 05:38:24 2014 -0700
       
  4620 +
       
  4621 +    README: Update news for 3.0.14
       
  4622 +
       
  4623 +commit 694447aa29deadd571efb4e9a26ee3f68ede1493
       
  4624 +Merge: fdc87f3 45a6c21
       
  4625 +Author: Anthony Green <green@moxielogic.com>
       
  4626 +Date:   Sun Mar 16 08:32:05 2014 -0400
       
  4627 +
       
  4628 +    Merge pull request #93 from joshtriplett/travis-dist
       
  4629 +    
       
  4630 +    Make Travis check "make dist"
       
  4631 +
       
  4632 +commit 45a6c21efa944b520842e631dc54919b04884744
       
  4633 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4634 +Date:   Sun Mar 16 05:29:08 2014 -0700
       
  4635 +
       
  4636 +    .travis.yml: Test "make dist" too.
       
  4637 +
       
  4638 +commit fdc87f3b2ea37b58a4a9ae6c35083f544909fe3c
       
  4639 +Merge: 7412b83 e1911f7
       
  4640 +Author: Anthony Green <green@moxielogic.com>
       
  4641 +Date:   Sun Mar 16 08:05:51 2014 -0400
       
  4642 +
       
  4643 +    Merge pull request #85 from joshtriplett/stdcall
       
  4644 +    
       
  4645 +    stdcall support on Linux
       
  4646 +
       
  4647 +commit e1911f78df113ca58738b66089a070d4cf747de7
       
  4648 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4649 +Date:   Sun Mar 16 03:25:53 2014 -0700
       
  4650 +
       
  4651 +    Add support for stdcall, thiscall, and fastcall on non-Windows x86-32
       
  4652 +    
       
  4653 +    Linux supports the stdcall calling convention, either via functions
       
  4654 +    explicitly declared with the stdcall attribute, or via code compiled
       
  4655 +    with -mrtd which effectively makes stdcall the default.
       
  4656 +    
       
  4657 +    This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on
       
  4658 +    non-Windows x86-32 platforms, as non-default calling conventions.
       
  4659 +
       
  4660 +commit 7412b838d543aae4fa925862bd5702d3dacbc29a
       
  4661 +Merge: c0cc5fd 9531d05
       
  4662 +Author: Anthony Green <green@moxielogic.com>
       
  4663 +Date:   Sun Mar 16 07:58:16 2014 -0400
       
  4664 +
       
  4665 +    Merge pull request #90 from joshtriplett/win32-unifdef
       
  4666 +    
       
  4667 +    prep_cif.c: Remove unnecessary ifdef for X86_WIN32
       
  4668 +
       
  4669 +commit c0cc5fdaa237b67e86f22d2f6e13f3b42d9aae33
       
  4670 +Merge: 98b5296 b3a5da0
       
  4671 +Author: Anthony Green <green@moxielogic.com>
       
  4672 +Date:   Sun Mar 16 07:57:59 2014 -0400
       
  4673 +
       
  4674 +    Merge pull request #89 from joshtriplett/travis32
       
  4675 +    
       
  4676 +    .travis.yml: Test on both 32-bit and 64-bit
       
  4677 +
       
  4678 +commit 9531d05f64c2a674e0197158ffad68d69f177bd0
       
  4679 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4680 +Date:   Sun Mar 16 01:50:02 2014 -0700
       
  4681 +
       
  4682 +    prep_cif.c: Remove unnecessary ifdef for X86_WIN32
       
  4683 +    
       
  4684 +    ffi_prep_cif_core had a special case for X86_WIN32, checking for
       
  4685 +    FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI range
       
  4686 +    before returning FFI_BAD_ABI.  However, on X86_WIN32, FFI_THISCALL
       
  4687 +    already falls in that range, making the special case unnecessary.
       
  4688 +    Remove it.
       
  4689 +
       
  4690 +commit b3a5da068abd2f2983d9e67adbf41b0e0f34e37f
       
  4691 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4692 +Date:   Sat Mar 15 23:27:56 2014 -0700
       
  4693 +
       
  4694 +    .travis.yml: Test on both 32-bit and 64-bit
       
  4695 +
       
  4696 +commit 98b52960485a261399f081915f36063de3854a5f
       
  4697 +Merge: 134ce4c f6dd184
       
  4698 +Author: Anthony Green <green@moxielogic.com>
       
  4699 +Date:   Sun Mar 16 07:51:33 2014 -0400
       
  4700 +
       
  4701 +    Merge pull request #94 from joshtriplett/esp-extra-stackery-perception
       
  4702 +    
       
  4703 +    ChangeLog: Document testsuite changes to remove fragile stack pointer checks
       
  4704 +
       
  4705 +commit f6dd1845434dd53e22129becdfa092c082df307c
       
  4706 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4707 +Date:   Sun Mar 16 04:49:36 2014 -0700
       
  4708 +
       
  4709 +    ChangeLog: Document testsuite changes to remove fragile stack pointer checks
       
  4710 +
       
  4711 +commit 134ce4c0266bf994f07518fc534de53f1d3c8de8
       
  4712 +Merge: 2680e9e 9c27932
       
  4713 +Author: Anthony Green <green@moxielogic.com>
       
  4714 +Date:   Sun Mar 16 07:47:17 2014 -0400
       
  4715 +
       
  4716 +    Merge pull request #91 from joshtriplett/esp-extra-stackery-perception
       
  4717 +    
       
  4718 +    testsuite: Remove fragile stack pointer checks
       
  4719 +
       
  4720 +commit 9c279328ee12fc869adff63ca81f1230977bd42b
       
  4721 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4722 +Date:   Sun Mar 16 02:31:19 2014 -0700
       
  4723 +
       
  4724 +    testsuite: Remove fragile stack pointer checks
       
  4725 +    
       
  4726 +    testsuite/libffi.call/closure_stdcall.c and
       
  4727 +    testsuite/libffi.call/closure_thiscall.c include inline assembly to save
       
  4728 +    the stack pointer before and after the call, and compare the values.
       
  4729 +    However, compilers can and do leave the stack in different states for
       
  4730 +    these two pieces of inline assembly, such as by saving a temporary value
       
  4731 +    on the stack across the call; observed with gcc -Os, and verified as
       
  4732 +    spurious through careful inspection of disassembly.
       
  4733 +
       
  4734 +commit 2680e9ea9b4c87ea8042a61e551bd667493d4bd3
       
  4735 +Merge: 071eab3 82f8cb2
       
  4736 +Author: Anthony Green <green@moxielogic.com>
       
  4737 +Date:   Sun Mar 16 07:44:08 2014 -0400
       
  4738 +
       
  4739 +    Merge pull request #88 from joshtriplett/such-precision-many-fail-wow
       
  4740 +    
       
  4741 +    testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision
       
  4742 +
       
  4743 +commit 82f8cb24a1d976db35ae31a4b86cec8926da327d
       
  4744 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4745 +Date:   Sun Mar 16 04:27:32 2014 -0700
       
  4746 +
       
  4747 +    ChangeLog: Document many.c and many_win32.c changes to avoid spurious failures
       
  4748 +
       
  4749 +commit 88d562a8b5912e99306063fe3bc289bab6ca6ebe
       
  4750 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4751 +Date:   Sat Mar 15 22:08:19 2014 -0700
       
  4752 +
       
  4753 +    testsuite/libffi.call/many_win32.c: Avoid spurious failure due to excess precision
       
  4754 +    
       
  4755 +    The test case testsuite/libffi.call/many_win32.c can spuriously fail due
       
  4756 +    to excess floating-point precision.  Instrumenting it with some printf
       
  4757 +    calls shows differences well above FLT_EPSILON.  (Note when
       
  4758 +    instrumenting it that multiple computations of the difference, such as
       
  4759 +    one in a print and another in the conditional, may produce different
       
  4760 +    results.)
       
  4761 +    
       
  4762 +    Rather than complicating the test suite with architecture-specific flags
       
  4763 +    to avoid excess precision, just simplify the floating-point computation
       
  4764 +    to avoid a dependency on potential excess precision.
       
  4765 +
       
  4766 +commit c00a49ecd165b2d06c1c9b249d212dc843fa116f
       
  4767 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4768 +Date:   Sat Mar 15 22:08:19 2014 -0700
       
  4769 +
       
  4770 +    testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision
       
  4771 +    
       
  4772 +    The test case testsuite/libffi.call/many.c can spuriously fail due to
       
  4773 +    excess floating-point precision.  Instrumenting it with some printf
       
  4774 +    calls shows differences well above FLT_EPSILON.  (Note when
       
  4775 +    instrumenting it that multiple computations of the difference, such as
       
  4776 +    one in a print and another in the conditional, may produce different
       
  4777 +    results.)
       
  4778 +    
       
  4779 +    Rather than complicating the test suite with architecture-specific flags
       
  4780 +    to avoid excess precision, just simplify the floating-point computation
       
  4781 +    to avoid a dependency on potential excess precision.
       
  4782 +
       
  4783 +commit 071eab32a7f9fbbef46c0d8f37d9985bc9cceb37
       
  4784 +Merge: 2228c7a 2f44952
       
  4785 +Author: Anthony Green <green@moxielogic.com>
       
  4786 +Date:   Sun Mar 16 07:36:52 2014 -0400
       
  4787 +
       
  4788 +    Merge pull request #92 from joshtriplett/autogen
       
  4789 +    
       
  4790 +    Re-add libtool-ldflags
       
  4791 +
       
  4792 +commit 2f44952c95765c1486fad66f57235f8d459a9748
       
  4793 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4794 +Date:   Sun Mar 16 04:35:12 2014 -0700
       
  4795 +
       
  4796 +    Re-add libtool-ldflags
       
  4797 +
       
  4798 +commit 2228c7ab190f3c529b9018495467b841fa21cba2
       
  4799 +Merge: 76d19d0 35634db
       
  4800 +Author: Anthony Green <green@moxielogic.com>
       
  4801 +Date:   Sun Mar 16 07:25:18 2014 -0400
       
  4802 +
       
  4803 +    Merge pull request #87 from joshtriplett/autogen
       
  4804 +    
       
  4805 +    Remove autogenerated files from the repository
       
  4806 +
       
  4807 +commit 35634dbceaac0a1544f7385addc01d21ef1ef6a8
       
  4808 +Author: Josh Triplett <josh@joshtriplett.org>
       
  4809 +Date:   Sat Mar 15 18:11:16 2014 -0700
       
  4810 +
       
  4811 +    Remove autogenerated files from the repository
       
  4812 +    
       
  4813 +    Add an autogen.sh to regenerate them.
       
  4814 +
       
  4815 +commit 76d19d004e36e99d261ee78261e2f52cea5e4ab1
       
  4816 +Merge: c86d9b6 a1a6f71
       
  4817 +Author: Anthony Green <green@moxielogic.com>
       
  4818 +Date:   Fri Mar 14 16:54:31 2014 -0400
       
  4819 +
       
  4820 +    Ensure the linker supports @unwind sections in libffi.
       
  4821 +
       
  4822 +commit c86d9b6cc6e16ee262844a33b40441374400758c
       
  4823 +Merge: 4efb7db f8cdf11
       
  4824 +Author: Anthony Green <green@moxielogic.com>
       
  4825 +Date:   Fri Mar 14 16:51:20 2014 -0400
       
  4826 +
       
  4827 +    Fix merge
       
  4828 +
       
  4829 +commit 4efb7dbfd9427c478a948cd0d464210123db8de8
       
  4830 +Merge: 634a475 18eb81d
       
  4831 +Author: Anthony Green <green@moxielogic.com>
       
  4832 +Date:   Fri Mar 14 16:47:57 2014 -0400
       
  4833 +
       
  4834 +    Merge pull request #81 from rvandermeulen/bug-756740
       
  4835 +    
       
  4836 +    Allow building for mipsel with Android NDK r8.
       
  4837 +
       
  4838 +commit a1a6f71bfe4199293043b2e4cfb4c8d3cb1112f9
       
  4839 +Author: Ryan VanderMeulen <ryanvm@gmail.com>
       
  4840 +Date:   Mon Mar 10 15:12:47 2014 -0400
       
  4841 +
       
  4842 +    Remove stray hunk that shouldn't have been included in this patch.
       
  4843 +
       
  4844 +commit f8cdf11467181f2a9a6b7e748167569aa58e3a81
       
  4845 +Author: Ryan VanderMeulen <ryanvm@gmail.com>
       
  4846 +Date:   Mon Mar 10 15:04:58 2014 -0400
       
  4847 +
       
  4848 +    Replace double quotes with single quotes in Makefile.in to improve compatibility between some versions of MSYS and gmake. From Mozilla bug 943728.
       
  4849 +    https://bugzilla.mozilla.org/show_bug.cgi?id=943728
       
  4850 +
       
  4851 +commit dfa3738732e1bc3a7f4130395ae4bab55fcebb99
       
  4852 +Author: Ryan VanderMeulen <ryanvm@gmail.com>
       
  4853 +Date:   Mon Mar 10 14:53:48 2014 -0400
       
  4854 +
       
  4855 +    Ensure the linker supports @unwind sections in libffi. From Mozilla bug 756740.
       
  4856 +    https://bugzilla.mozilla.org/show_bug.cgi?id=778414
       
  4857 +    
       
  4858 +    Also tracked as issue #42.
       
  4859 +    https://github.com/atgreen/libffi/issues/42
       
  4860 +
       
  4861 +commit 18eb81d032f29d645d0498ba92bddfd651f009ae
       
  4862 +Author: Ryan VanderMeulen <ryanvm@gmail.com>
       
  4863 +Date:   Mon Mar 10 14:43:37 2014 -0400
       
  4864 +
       
  4865 +    Allow building for mipsel with Android NDK r8. From Mozilla bug 756740.
       
  4866 +    https://bugzilla.mozilla.org/show_bug.cgi?id=756740
       
  4867 +
       
  4868 +commit 634a475eaf1bee31c09f7d519e31c13b64cd24df
       
  4869 +Author: Anthony Green <green@moxielogic.com>
       
  4870 +Date:   Sat Mar 1 18:37:29 2014 -0500
       
  4871 +
       
  4872 +    Update Makefile for new darwin scripts
       
  4873 +
       
  4874 +commit c7b67e874bb89859f9a07d1cf9606052b6c0dcc1
       
  4875 +Author: Anthony Green <green@moxielogic.com>
       
  4876 +Date:   Sat Mar 1 18:34:18 2014 -0500
       
  4877 +
       
  4878 +    Add README note
       
  4879 +
       
  4880 +commit a04e30ba3dc303133d459c1ac273ceefe4d49b32
       
  4881 +Author: Anthony Green <green@moxielogic.com>
       
  4882 +Date:   Fri Feb 28 17:20:59 2014 -0500
       
  4883 +
       
  4884 +    Add missing -DFFI_DEBUG flag
       
  4885 +
       
  4886 +commit 934dc1b5c8d6a9e727bedc72342831eb7d62c35f
       
  4887 +Merge: 11d7aa9 67fbef3
       
  4888 +Author: Anthony Green <green@moxielogic.com>
       
  4889 +Date:   Fri Feb 28 01:10:17 2014 -0500
       
  4890 +
       
  4891 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  4892 +
       
  4893 +commit 11d7aa9d7a4bbe642944edc0f07cf96db9b270b6
       
  4894 +Merge: b40aeda 3b44d41
       
  4895 +Author: Anthony Green <green@moxielogic.com>
       
  4896 +Date:   Fri Feb 28 01:06:48 2014 -0500
       
  4897 +
       
  4898 +    Merge pull request #46 from makotokato/android-clang
       
  4899 +    
       
  4900 +    Fix build failure when using clang for Android
       
  4901 +
       
  4902 +commit 67fbef3b56ff0ef88f9b1a7fe48cb77222fa6cec
       
  4903 +Merge: b40aeda 3b44d41
       
  4904 +Author: Anthony Green <green@moxielogic.com>
       
  4905 +Date:   Fri Feb 28 01:06:48 2014 -0500
       
  4906 +
       
  4907 +    Merge pull request #46 from makotokato/android-clang
       
  4908 +    
       
  4909 +    Fix build failure when using clang for Android
       
  4910 +
       
  4911 +commit b40aeda31a74d95a37c723b6243aabac466e67c4
       
  4912 +Merge: 20698ab 53ceaf1
       
  4913 +Author: Anthony Green <green@moxielogic.com>
       
  4914 +Date:   Fri Feb 28 01:01:29 2014 -0500
       
  4915 +
       
  4916 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  4917 +
       
  4918 +commit 53ceaf14c5eeb16ba09745f0ca87cca367d41a90
       
  4919 +Merge: 860fe66 cc9b518
       
  4920 +Author: Anthony Green <green@moxielogic.com>
       
  4921 +Date:   Fri Feb 28 01:01:02 2014 -0500
       
  4922 +
       
  4923 +    Merge pull request #40 from wojdyr/master
       
  4924 +    
       
  4925 +    Correct the -L flag in libffi.pc.in
       
  4926 +
       
  4927 +commit 20698abc6a00092fd7fd3e434a3a29dc0f048f1e
       
  4928 +Merge: 64bd069 1a0b01e
       
  4929 +Author: Anthony Green <green@moxielogic.com>
       
  4930 +Date:   Fri Feb 28 00:56:27 2014 -0500
       
  4931 +
       
  4932 +    Merge pull request #66 from ppizarro/master
       
  4933 +    
       
  4934 +    BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI
       
  4935 +
       
  4936 +commit 860fe6646f5ae603e99a8d1d722ddddba8b75769
       
  4937 +Merge: 64bd069 1a0b01e
       
  4938 +Author: Anthony Green <green@moxielogic.com>
       
  4939 +Date:   Fri Feb 28 00:56:27 2014 -0500
       
  4940 +
       
  4941 +    Merge pull request #66 from ppizarro/master
       
  4942 +    
       
  4943 +    BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI
       
  4944 +
       
  4945 +commit 64bd06990a7accf72271516a2110b86cdccd8df4
       
  4946 +Author: Anthony Green <green@moxielogic.com>
       
  4947 +Date:   Fri Feb 28 00:52:56 2014 -0500
       
  4948 +
       
  4949 +    Add ChangeLog entry for Josh's change
       
  4950 +
       
  4951 +commit edf29c5169b06fcfc241445e152e325bc3c50e0e
       
  4952 +Merge: 33c9954 3998d26
       
  4953 +Author: Anthony Green <green@moxielogic.com>
       
  4954 +Date:   Fri Feb 28 00:50:25 2014 -0500
       
  4955 +
       
  4956 +    Merge pull request #75 from joshtriplett/longdouble
       
  4957 +    
       
  4958 +    Fix build error on x86 without distinct long double
       
  4959 +
       
  4960 +commit 33c9954f2eec539011a0f93270aaf013318837ae
       
  4961 +Author: Anthony Green <green@moxielogic.com>
       
  4962 +Date:   Fri Feb 28 00:38:41 2014 -0500
       
  4963 +
       
  4964 +    Rebuilt with new libtool
       
  4965 +
       
  4966 +commit 926b6989fbd08488b9105943293353d45ac527e0
       
  4967 +Merge: 5a88c85 cc82051
       
  4968 +Author: Anthony Green <green@moxielogic.com>
       
  4969 +Date:   Fri Feb 28 00:26:57 2014 -0500
       
  4970 +
       
  4971 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  4972 +    
       
  4973 +    Conflicts:
       
  4974 +    	ChangeLog
       
  4975 +
       
  4976 +commit 5a88c85fde304052bed1581ed0b6452ac2c68838
       
  4977 +Author: Anthony Green <green@moxielogic.com>
       
  4978 +Date:   Fri Feb 28 00:23:04 2014 -0500
       
  4979 +
       
  4980 +    Fix spelling errors
       
  4981 +
       
  4982 +commit cc82051c7e80cea772c4b72da026eb7e68d598fc
       
  4983 +Author: Anthony Green <green@moxielogic.com>
       
  4984 +Date:   Fri Feb 28 00:23:04 2014 -0500
       
  4985 +
       
  4986 +    Fix spelling errors
       
  4987 +
       
  4988 +commit 001aaf4b1b56349596bb6f6b5c1613dcbbd84ea8
       
  4989 +Author: Anthony Green <green@moxielogic.com>
       
  4990 +Date:   Fri Feb 28 00:20:17 2014 -0500
       
  4991 +
       
  4992 +    When no VFP arguments are present the IP register is used
       
  4993 +    uninitialized. Initialize it to the value of FP.
       
  4994 +    
       
  4995 +    This fixes a number of testsuite failures when configured for
       
  4996 +    armv7l-unknown-linux-gnueabihf
       
  4997 +
       
  4998 +commit 49f7729c3ce697c12408c42ccb29cdf4eb66bb85
       
  4999 +Author: Anthony Green <green@moxielogic.com>
       
  5000 +Date:   Fri Feb 28 00:17:16 2014 -0500
       
  5001 +
       
  5002 +    aarch64 fix
       
  5003 +
       
  5004 +commit 447483d51c6aa9df7116f346a73fc1cf795f4c2b
       
  5005 +Merge: 51377bd b4df9cf
       
  5006 +Author: Anthony Green <green@moxielogic.com>
       
  5007 +Date:   Thu Feb 27 15:42:41 2014 -0500
       
  5008 +
       
  5009 +    Fix ChangeLog merge
       
  5010 +
       
  5011 +commit 3998d2604b5c0d45a098ff3119a9fd9710ef429d
       
  5012 +Author: Josh Triplett <josh@joshtriplett.org>
       
  5013 +Date:   Mon Feb 17 11:20:33 2014 -0800
       
  5014 +
       
  5015 +    Fix build error on x86 without distinct long double
       
  5016 +    
       
  5017 +    src/x86/ffi64.c: In function 'classify_argument':
       
  5018 +    src/x86/ffi64.c:205:5: error: duplicate case value
       
  5019 +         case FFI_TYPE_LONGDOUBLE:
       
  5020 +         ^
       
  5021 +    src/x86/ffi64.c:202:5: error: previously used here
       
  5022 +         case FFI_TYPE_DOUBLE:
       
  5023 +         ^
       
  5024 +
       
  5025 +commit 51377bda9aed0b2c1309c818460cab9d9ab3d46e
       
  5026 +Merge: f08da54 40927bd
       
  5027 +Author: Anthony Green <green@moxielogic.com>
       
  5028 +Date:   Sat Feb 15 08:06:29 2014 -0500
       
  5029 +
       
  5030 +    Merge pull request #72 from heiher/devel
       
  5031 +    
       
  5032 +    MIPS N32: Fix call floating point va function
       
  5033 +
       
  5034 +commit f08da5465463e60a28f5e921f23ebf2ba984c148
       
  5035 +Merge: 3dc3f32 fa5f25c
       
  5036 +Author: Anthony Green <green@moxielogic.com>
       
  5037 +Date:   Sat Feb 15 08:06:11 2014 -0500
       
  5038 +
       
  5039 +    Merge pull request #68 from zeldin/master
       
  5040 +    
       
  5041 +    Linux/ppc64: Remove assumption on contents of r11 in closure
       
  5042 +
       
  5043 +commit 40927bd3e1e7c6007025ba10854fd8a0664e47df
       
  5044 +Author: Heiher <r@hev.cc>
       
  5045 +Date:   Tue Jan 21 23:18:27 2014 +0800
       
  5046 +
       
  5047 +    Fix call floating point va function
       
  5048 +    
       
  5049 +    I'm not sure floating-point arguments in GPR or FPR before calling
       
  5050 +    variable number arguments function. so, load all arguments to GPR and
       
  5051 +    FPR.
       
  5052 +
       
  5053 +commit b4df9cf9cc4a9a9401a53fd6bea1f3c2c283b97b
       
  5054 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5055 +Date:   Wed Feb 5 14:22:52 2014 -0500
       
  5056 +
       
  5057 +    AArch64: Fix void fall-through case when assertions are enabled
       
  5058 +
       
  5059 +commit f466aad0d91a117e42571d1d6fb434fa0433c930
       
  5060 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5061 +Date:   Tue Jan 21 16:38:31 2014 -0500
       
  5062 +
       
  5063 +    AArch64: Fix missing semicolons when assertions are enabled
       
  5064 +
       
  5065 +commit 7ea677733bd98917241852b8901a6b7580728895
       
  5066 +Author: Anthony Green <green@moxielogic.com>
       
  5067 +Date:   Sat Nov 30 20:58:31 2013 -0500
       
  5068 +
       
  5069 +    Remove build-ios from Makefile
       
  5070 +    
       
  5071 +    Conflicts:
       
  5072 +    	ChangeLog
       
  5073 +
       
  5074 +commit 6ae046cc59c12b2cd40158d6bcb96f4a59886159
       
  5075 +Author: Anthony Green <green@moxielogic.com>
       
  5076 +Date:   Sat Nov 30 21:06:51 2013 -0500
       
  5077 +
       
  5078 +    Mention Aarch64 on iOS
       
  5079 +
       
  5080 +commit bfc06b3fdb32abe90ce0749aedfec649df85a7ef
       
  5081 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5082 +Date:   Mon Dec 30 17:36:39 2013 -0500
       
  5083 +
       
  5084 +    Update ChangeLog
       
  5085 +
       
  5086 +commit 0a0f12ce1f7be81006b08a3c81a636926d283a9b
       
  5087 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5088 +Date:   Thu Jan 9 13:50:17 2014 -0500
       
  5089 +
       
  5090 +    AArch64: Remove duplicitous element_count call.
       
  5091 +    
       
  5092 +    This inhibits an analyzer warning by Clang.
       
  5093 +
       
  5094 +commit 4330fdcd92e67c816288d64ab230237065768206
       
  5095 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5096 +Date:   Thu Jan 9 13:53:30 2014 -0500
       
  5097 +
       
  5098 +    Darwin/aarch64: Respect iOS ABI re: stack argument alignment
       
  5099 +
       
  5100 +commit 0a333d6c3973935d4fe02aae76b10e39d3c88e07
       
  5101 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5102 +Date:   Thu Jan 9 14:03:29 2014 -0500
       
  5103 +
       
  5104 +    Darwin/aarch64: Fix size_t assumptions
       
  5105 +
       
  5106 +commit 2c18e3c76aad1b426617db05a4384e7c3a920176
       
  5107 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5108 +Date:   Mon Dec 30 16:14:02 2013 -0500
       
  5109 +
       
  5110 +    Darwin/aarch64: Fix "shadows declaration" warnings
       
  5111 +
       
  5112 +commit 1b8a8e20e344f3c55495ab6eb46bd14e843d4b3e
       
  5113 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5114 +Date:   Thu Jan 9 13:55:21 2014 -0500
       
  5115 +
       
  5116 +    Darwin/aarch64: Use Clang cache invalidation builtin
       
  5117 +
       
  5118 +commit 6030cdcae776f8fb5876a53168f7d1e75d28a242
       
  5119 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5120 +Date:   Mon Dec 30 15:45:51 2013 -0500
       
  5121 +
       
  5122 +    Darwin/aarch64: Account for long double being equal to double
       
  5123 +
       
  5124 +commit 5658b0892683d2e24e4d5842978c184a7ad33858
       
  5125 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5126 +Date:   Mon Dec 30 16:33:47 2013 -0500
       
  5127 +
       
  5128 +    Darwin/aarch64: Use CNAME, restrict .size like ARM
       
  5129 +
       
  5130 +commit 07175780802acec5dc49fdedd6d20a62409a6707
       
  5131 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5132 +Date:   Mon Dec 30 17:48:22 2013 -0500
       
  5133 +
       
  5134 +    Darwin/aarch64: Fix invalid reference in assembly
       
  5135 +
       
  5136 +commit 9da28b44277fea3aeb827c35dd63d609d2524a8b
       
  5137 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5138 +Date:   Mon Dec 30 16:23:21 2013 -0500
       
  5139 +
       
  5140 +    Darwin/x86_64: Fix 64-bit type shortening warnings
       
  5141 +
       
  5142 +commit 821d398f08bd1d540a5b235507812ffeee49b580
       
  5143 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5144 +Date:   Thu Jan 9 13:15:06 2014 -0500
       
  5145 +
       
  5146 +    Darwin: Merge build scripts, redo project, incl. arm64
       
  5147 +
       
  5148 +commit 6eff9ff9e72463b9783be2514f944b6f05692054
       
  5149 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5150 +Date:   Mon Dec 30 17:48:10 2013 -0500
       
  5151 +
       
  5152 +    Darwin/iOS: Improve unified syntax use for LLVM
       
  5153 +
       
  5154 +commit ba0ea99c82aadd5957386a031e3122011bd36d52
       
  5155 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5156 +Date:   Mon Dec 30 15:27:44 2013 -0500
       
  5157 +
       
  5158 +    Fix dlmalloc warnings due to set_segment_flags, sizeof(size_t)
       
  5159 +
       
  5160 +commit 994be3a5c1d0d17b19103396103e128517fd62f9
       
  5161 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5162 +Date:   Mon Dec 30 15:27:14 2013 -0500
       
  5163 +
       
  5164 +    Darwin/iOS: Fix mis-typing of vfp_reg_free
       
  5165 +
       
  5166 +commit a8e0a835ab1f62d03ad6391760e3e8b7732d24f8
       
  5167 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5168 +Date:   Mon Dec 30 15:26:20 2013 -0500
       
  5169 +
       
  5170 +    Darwin/ARM: Assert on NULL dereference
       
  5171 +    
       
  5172 +    This inhibits an analyzer warning by Clang on all platforms.
       
  5173 +
       
  5174 +commit 13675341581c489ed9df8ba390c8e08a732decb2
       
  5175 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5176 +Date:   Thu Jan 9 13:42:08 2014 -0500
       
  5177 +
       
  5178 +    Darwin/i386: Inhibit Clang previous prototype warnings
       
  5179 +
       
  5180 +commit 66469c381e2e2cc96e7d409266dea0ffe177eeca
       
  5181 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5182 +Date:   Thu Jan 9 13:41:45 2014 -0500
       
  5183 +
       
  5184 +    Darwin/ARM: Inhibit Clang previous prototype warnings
       
  5185 +
       
  5186 +commit 5bfe62a00d2d659eec9f19b39802b6e69844fc27
       
  5187 +Author: Zachary Waldowski <zach@waldowski.me>
       
  5188 +Date:   Thu Jan 9 13:41:27 2014 -0500
       
  5189 +
       
  5190 +    Darwin/AArch64: Inhibit Clang previous prototype warnings
       
  5191 +
       
  5192 +commit fa5f25c20f76a6ef5e950a7ccbce826672c8a620
       
  5193 +Author: Marcus Comstedt <marcus@mc.pp.se>
       
  5194 +Date:   Sat Jan 4 19:00:08 2014 +0100
       
  5195 +
       
  5196 +    Linux/ppc64: Remove assumption on contents of r11 in closure
       
  5197 +
       
  5198 +commit 1a0b01e171e9c750437cef2f18917f5a6e32c498
       
  5199 +Author: Paulo Pizarro <paulo.pizarro@gmail.com>
       
  5200 +Date:   Thu Jan 2 16:17:59 2014 -0200
       
  5201 +
       
  5202 +    When the function called by the ffi called a function defined in a shared library generate a fatal error
       
  5203 +    The correction was to take into consideration the GOT.
       
  5204 +
       
  5205 +commit 3dc3f32c35db5ab995a835225f6815369735ceb7
       
  5206 +Author: Anthony Green <green@moxielogic.com>
       
  5207 +Date:   Thu Dec 5 16:23:25 2013 -0500
       
  5208 +
       
  5209 +    Undo iOS ARM64 changes.
       
  5210 +
       
  5211 +commit 356b2cbc304bfe5bdc28b8d1c68d1ff084e9ec37
       
  5212 +Merge: 484a758 07345a3
       
  5213 +Author: Anthony Green <green@moxielogic.com>
       
  5214 +Date:   Sat Nov 30 22:38:13 2013 -0500
       
  5215 +
       
  5216 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  5217 +
       
  5218 +commit 484a7584260e2fbb399ce90083046834271bf9ff
       
  5219 +Author: Anthony Green <green@moxielogic.com>
       
  5220 +Date:   Sat Nov 30 21:06:51 2013 -0500
       
  5221 +
       
  5222 +    Mention Aarch64 on iOS
       
  5223 +
       
  5224 +commit 07345a30ec0a2fa45a7c363d301f57723690cfa0
       
  5225 +Author: Anthony Green <green@moxielogic.com>
       
  5226 +Date:   Sat Nov 30 21:06:51 2013 -0500
       
  5227 +
       
  5228 +    Mention Aarch64 on iOS
       
  5229 +
       
  5230 +commit d4b931c1b872378c35f12ddbb9a6d55e7f17c65e
       
  5231 +Author: Anthony Green <green@moxielogic.com>
       
  5232 +Date:   Sat Nov 30 20:58:31 2013 -0500
       
  5233 +
       
  5234 +    Remove build-ios from Makefile
       
  5235 +
       
  5236 +commit dfbf236d70fc1ec68e6ff193584a154353508e2f
       
  5237 +Merge: 852ac3b bb9740e
       
  5238 +Author: Anthony Green <green@moxielogic.com>
       
  5239 +Date:   Sat Nov 30 20:54:54 2013 -0500
       
  5240 +
       
  5241 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  5242 +    Add ChangeLog entry.
       
  5243 +
       
  5244 +commit bb9740e545205f93a525c77aa6d1cbf4ca9371f3
       
  5245 +Merge: ac75368 4d701e0
       
  5246 +Author: Anthony Green <green@moxielogic.com>
       
  5247 +Date:   Sat Nov 30 17:54:39 2013 -0800
       
  5248 +
       
  5249 +    Merge pull request #60 from zwaldowski/ios-redo
       
  5250 +    
       
  5251 +    Mac/iOS support, including aarch64 port
       
  5252 +
       
  5253 +commit 4d701e03faa475a5eb3b54b90046114a1e27b813
       
  5254 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5255 +Date:   Sat Nov 30 13:25:27 2013 -0500
       
  5256 +
       
  5257 +    Darwin: Properly export headers from Xcode project
       
  5258 +
       
  5259 +commit 022f12eb9ad2264e838fa5fb453733f5177888f4
       
  5260 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5261 +Date:   Sat Nov 30 12:21:38 2013 -0500
       
  5262 +
       
  5263 +    Darwin: Freshen gen scripts, remove old build-ios.sh
       
  5264 +
       
  5265 +commit e820fe2025d7ad3df7584407946dfaad2af69599
       
  5266 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5267 +Date:   Sat Nov 30 12:03:51 2013 -0500
       
  5268 +
       
  5269 +    Darwin/iOS: Include x86_64+aarch64 pieces in library
       
  5270 +
       
  5271 +commit 0278284e470ec91db7cdc15ac3dcd64683305848
       
  5272 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5273 +Date:   Sat Nov 30 03:03:37 2013 -0500
       
  5274 +
       
  5275 +    Darwin/aarch64: size_t assumptions
       
  5276 +
       
  5277 +commit 9775446b6441c91cd9059215c106aa3bcf949767
       
  5278 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5279 +Date:   Sat Nov 30 02:39:34 2013 -0500
       
  5280 +
       
  5281 +    Darwin/aarch64: Fix “shadows declaration” warnings
       
  5282 +
       
  5283 +commit 4260badc37705d3618e774dfe61184ac709881c1
       
  5284 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5285 +Date:   Sat Nov 30 02:08:14 2013 -0500
       
  5286 +
       
  5287 +    Darwin/aarch64: Use Clang cache invalidation builtin
       
  5288 +
       
  5289 +commit 9fa7998d5f9250908cbf12a671479852ebadf9d1
       
  5290 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5291 +Date:   Sat Nov 30 02:07:48 2013 -0500
       
  5292 +
       
  5293 +    Darwin/aarch64: Inhibit Xcode warning
       
  5294 +
       
  5295 +commit 0e832048a93830575b0976406444e134e649a4f7
       
  5296 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5297 +Date:   Sat Nov 30 02:07:34 2013 -0500
       
  5298 +
       
  5299 +    Darwin/aarch64: double == long double
       
  5300 +
       
  5301 +commit 602dc22d76931092610234cf063f9f1b8dbc1a51
       
  5302 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5303 +Date:   Sat Nov 30 02:06:00 2013 -0500
       
  5304 +
       
  5305 +    Darwin/iOS prep script: try and compile for arm64
       
  5306 +
       
  5307 +commit b513dfe79de4725e8a717325a9e3b5b9f69f63dc
       
  5308 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5309 +Date:   Sat Nov 30 02:05:22 2013 -0500
       
  5310 +
       
  5311 +    Darwin/aarch64: Restrict .size to ELF like arm32.
       
  5312 +
       
  5313 +commit bc978099bf2812de755c076b67ef9c2547607572
       
  5314 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5315 +Date:   Sat Nov 30 02:04:57 2013 -0500
       
  5316 +
       
  5317 +    Darwin/aarch64: Potentially(?) fix compile error
       
  5318 +
       
  5319 +commit d6bb9314467c6e0683156559d23ca341c43fa3c8
       
  5320 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5321 +Date:   Sat Nov 30 02:04:22 2013 -0500
       
  5322 +
       
  5323 +    Darwin/aarch64: Use CNAME refs
       
  5324 +
       
  5325 +commit 33c46ce5680eea28d3437c8771ec1d137e226b45
       
  5326 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5327 +Date:   Sat Nov 30 04:13:42 2013 -0500
       
  5328 +
       
  5329 +    Darwin/Mac: Fix 64/32 shortening warnings
       
  5330 +
       
  5331 +commit 0612081e6c161d9d820742f995975d35da2adbc2
       
  5332 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5333 +Date:   Sat Nov 30 03:03:00 2013 -0500
       
  5334 +
       
  5335 +    Darwin: Misc size_t warnings
       
  5336 +
       
  5337 +commit 6a6247d179ec3859311c2d8775841b884f309f66
       
  5338 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5339 +Date:   Sat Nov 30 02:55:48 2013 -0500
       
  5340 +
       
  5341 +    Darwin: Fix dlmalloc warnings due to sizeof(size_t)
       
  5342 +
       
  5343 +commit 4d60d9e1e32de6166ffd63bbe9ce54cf961c78fc
       
  5344 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5345 +Date:   Sat Nov 30 04:09:30 2013 -0500
       
  5346 +
       
  5347 +    Darwin: Rebuild Xcode project
       
  5348 +
       
  5349 +commit cb719a5c1c2eb391d6a5f5e02484ba4aa990a51b
       
  5350 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5351 +Date:   Sat Nov 30 04:09:18 2013 -0500
       
  5352 +
       
  5353 +    Darwin/iOS: Fix LLVM 3.3 warning re: memcpy.
       
  5354 +
       
  5355 +commit 21bde92c9abb378f9c456a9d95e6f9b99ef8c920
       
  5356 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5357 +Date:   Sat Nov 30 03:43:42 2013 -0500
       
  5358 +
       
  5359 +    Darwin: Clean up, modernize generator scripts
       
  5360 +
       
  5361 +commit fd54eab74cef7891e4acaaafb71e783142ecb69e
       
  5362 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5363 +Date:   Sat Nov 30 03:38:02 2013 -0500
       
  5364 +
       
  5365 +    Darwin/Mac: Also exclude OS X generated source
       
  5366 +
       
  5367 +commit 953b6f14c655141f9e7d82550a312c3eeb961091
       
  5368 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5369 +Date:   Tue Apr 24 11:16:20 2012 -0400
       
  5370 +
       
  5371 +    Darwin/iOS: More unified syntax support w/ Clang.
       
  5372 +    
       
  5373 +    Signed-off-by: Zachary Waldowski <zwaldowski@gmail.com>
       
  5374 +
       
  5375 +commit c713a55379481c339877f2e0003d97cb8d9ed80e
       
  5376 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5377 +Date:   Tue Apr 24 10:25:29 2012 -0400
       
  5378 +
       
  5379 +    Darwin/iOS: Simplify RETLDM arguments for LLVM 3.1
       
  5380 +    
       
  5381 +    Signed-off-by: Zachary Waldowski <zwaldowski@gmail.com>
       
  5382 +
       
  5383 +commit 16ba1b80028db5cb71cf86e5f79f5e48317f83c8
       
  5384 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  5385 +Date:   Wed Apr 11 23:26:04 2012 -0400
       
  5386 +
       
  5387 +    Darwin: Silence Clang warnings.
       
  5388 +
       
  5389 +commit 852ac3bd302d6ed97b1ef65f4cbed69c258a48df
       
  5390 +Merge: ab79d6e ac75368
       
  5391 +Author: Anthony Green <green@moxielogic.com>
       
  5392 +Date:   Thu Nov 21 21:25:44 2013 -0500
       
  5393 +
       
  5394 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  5395 +    
       
  5396 +    Conflicts:
       
  5397 +    	ChangeLog
       
  5398 +
       
  5399 +commit ab79d6e21992dd86139ba07530ff888833b78a04
       
  5400 +Author: Alan Modra <amodra@gmail.com>
       
  5401 +Date:   Thu Nov 21 06:12:35 2013 -0500
       
  5402 +
       
  5403 +    This separates the 32-bit sysv/linux/bsd code from the 64-bit linux
       
  5404 +    code, and makes it possible to link code compiled with different
       
  5405 +    options to those used to compile libffi.  For example, a
       
  5406 +    -mlong-double-128 libffi can be used with -mlong-double-64 code.
       
  5407 +    
       
  5408 +    Using the return value area as a place to pass parameters wasn't such
       
  5409 +    a good idea, causing a failure of cls_ulonglong.c.  I didn't see this
       
  5410 +    when running the mainline gcc libffi testsuite because that version of
       
  5411 +    the test is inferior to the upstreamm libffi test.
       
  5412 +    
       
  5413 +    Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant
       
  5414 +    that a parameter save area could be allocated before it was strictly
       
  5415 +    necessary.  Wrong but harmless.  Found when splitting apart ffi.c
       
  5416 +    into 32-bit and 64-bit support.
       
  5417 +
       
  5418 +commit ac7536889334d4be50709006d7e23536364d7891
       
  5419 +Author: Alan Modra <amodra@gmail.com>
       
  5420 +Date:   Thu Nov 21 06:12:35 2013 -0500
       
  5421 +
       
  5422 +    This separates the 32-bit sysv/linux/bsd code from the 64-bit linux
       
  5423 +    code, and makes it possible to link code compiled with different
       
  5424 +    options to those used to compile libffi.  For example, a
       
  5425 +    -mlong-double-128 libffi can be used with -mlong-double-64 code.
       
  5426 +    
       
  5427 +    Using the return value area as a place to pass parameters wasn't such
       
  5428 +    a good idea, causing a failure of cls_ulonglong.c.  I didn't see this
       
  5429 +    when running the mainline gcc libffi testsuite because that version of
       
  5430 +    the test is inferior to the upstreamm libffi test.
       
  5431 +    
       
  5432 +    Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant
       
  5433 +    that a parameter save area could be allocated before it was strictly
       
  5434 +    necessary.  Wrong but harmless.  Found when splitting apart ffi.c
       
  5435 +    into 32-bit and 64-bit support.
       
  5436 +
       
  5437 +commit 69df91cfb4fa6bcb644350a80bff970f27478a6a
       
  5438 +Merge: 2f45082 aa1f62c
       
  5439 +Author: Anthony Green <green@moxielogic.com>
       
  5440 +Date:   Mon Nov 18 06:34:04 2013 -0800
       
  5441 +
       
  5442 +    Merge pull request #59 from iains/powerpc-darwin-unwind-fix
       
  5443 +    
       
  5444 +    Fix PowerPC Darwin FDE encodings to use pcrel correctly.  Modernise the picbase labels.
       
  5445 +
       
  5446 +commit aa1f62c0a093c30325dff1d4d2b6b4b22eb96929
       
  5447 +Author: Iain Sandoe <iain@codesourcery.com>
       
  5448 +Date:   Mon Nov 18 13:11:56 2013 +0000
       
  5449 +
       
  5450 +    Fix PowerPC Darwin FDE encodings to use pcrel correctly.  Modernise the picbase labels.
       
  5451 +
       
  5452 +commit 2f450822a8698ba88441c56d152c7dc8924b127f
       
  5453 +Author: Anthony Green <green@moxielogic.com>
       
  5454 +Date:   Mon Nov 18 06:52:29 2013 -0500
       
  5455 +
       
  5456 +    Clean up code to appease modern GCC compiler.
       
  5457 +
       
  5458 +commit 16d56c51aded374730920a4acde76ff3d2860ae1
       
  5459 +Author: Alan Modra <amodra@gmail.com>
       
  5460 +Date:   Mon Nov 18 06:36:03 2013 -0500
       
  5461 +
       
  5462 +    An #endif in the wrong place would cause compile failure on powerpcle.
       
  5463 +    Using bl instead of b doesn't cause runtime failures as you might think,
       
  5464 +    but does mess the processor branch prediction.
       
  5465 +
       
  5466 +commit 34f878a5ef28663f6b1d7fd26fb099429ea1579e
       
  5467 +Merge: 83f65b6 1fd0457
       
  5468 +Author: Anthony Green <green@moxielogic.com>
       
  5469 +Date:   Sat Nov 16 06:57:54 2013 -0500
       
  5470 +
       
  5471 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  5472 +    
       
  5473 +    Conflicts:
       
  5474 +    	ChangeLog
       
  5475 +    	src/powerpc/ffi.c
       
  5476 +
       
  5477 +commit 83f65b63d9764a9cc7688fc5cda5ee2bd23faf54
       
  5478 +Author: Alan Modra <amodra@gmail.com>
       
  5479 +Date:   Sat Nov 16 06:53:50 2013 -0500
       
  5480 +
       
  5481 +    Finally, this adds _CALL_ELF == 2 support.  ELFv1 objects can't be
       
  5482 +    linked with ELFv2 objects, so this is one case where preprocessor
       
  5483 +    tests in ffi.c are fine.  Also, there is no need to define a new
       
  5484 +    FFI_ELFv2 or somesuch value in enum ffi_abi.  FFI_LINUX64 will happily
       
  5485 +    serve both ABIs.
       
  5486 +
       
  5487 +commit 1fd045784cac874b5d76b7fa931f67209a8280d3
       
  5488 +Author: Alan Modra <amodra@gmail.com>
       
  5489 +Date:   Sat Nov 16 06:53:50 2013 -0500
       
  5490 +
       
  5491 +    Finally, this adds _CALL_ELF == 2 support.  ELFv1 objects can't be
       
  5492 +    linked with ELFv2 objects, so this is one case where preprocessor
       
  5493 +    tests in ffi.c are fine.  Also, there is no need to define a new
       
  5494 +    FFI_ELFv2 or somesuch value in enum ffi_abi.  FFI_LINUX64 will happily
       
  5495 +    serve both ABIs.
       
  5496 +
       
  5497 +commit 362851379a49ce07d3e36e82c4e5c7b6cc16a352
       
  5498 +Author: Alan Modra <amodra@gmail.com>
       
  5499 +Date:   Sat Nov 16 06:52:43 2013 -0500
       
  5500 +
       
  5501 +    Andreas' 2013-02-08 change reverted some breakage for struct return
       
  5502 +    values from 2011-11-12, but in so doing reintroduced string
       
  5503 +    instructions to sysv.S that are not supported on all powerpc variants.
       
  5504 +    This patch properly copies the bounce buffer to destination in C code
       
  5505 +    rather than in asm.
       
  5506 +    
       
  5507 +    I have tested this on powerpc64-linux, powerpc-linux and
       
  5508 +    powerpc-freebsd.  Well, the last on powerpc-linux by lying to
       
  5509 +    configure with
       
  5510 +    
       
  5511 +    CC="gcc -m32 -msvr4-struct-return -mlong-double-64" \
       
  5512 +    CXX="g++ -m32 -msvr4-struct-return -mlong-double-64" \
       
  5513 +    /src/libffi-current/configure --build=powerpc-freebsd
       
  5514 +    
       
  5515 +    and then
       
  5516 +    
       
  5517 +    make && make CC="gcc -m32" CXX="g++ -m32" \
       
  5518 +    RUNTESTFLAGS=--target_board=unix/-m32/-msvr4-struct-return/-mlong-double-64\
       
  5519 +     check
       
  5520 +
       
  5521 +commit 1c06515d927d9de1582438d4eb5953890e79c5c7
       
  5522 +Author: Alan Modra <amodra@gmail.com>
       
  5523 +Date:   Sat Nov 16 06:41:36 2013 -0500
       
  5524 +
       
  5525 +    The powerpc64 ABIs align structs passed by value, a fact ignored by
       
  5526 +    gcc for quite some time.  Since gcc now does the correct alignment,
       
  5527 +    libffi needs to follow suit.  This ought to be made selectable via
       
  5528 +    a new abi value, and the #ifdefs removed from ffi.c along with many
       
  5529 +    other #ifdefs present there and in assembly.  I'll do that with a
       
  5530 +    followup patch sometime.
       
  5531 +    
       
  5532 +    This is a revised version of
       
  5533 +    https://sourceware.org/ml/libffi-discuss/2013/msg00162.html
       
  5534 +
       
  5535 +commit a97cf1fae575d8bfd5259c5c422025ad43911326
       
  5536 +Author: Alan Modra <amodra@gmail.com>
       
  5537 +Date:   Sat Nov 16 06:40:13 2013 -0500
       
  5538 +
       
  5539 +    This patch prepares for ELFv2, where sizes of these areas change.  It
       
  5540 +    also makes some minor changes to improve code efficiency.
       
  5541 +
       
  5542 +commit 164283f4ac5972ce2ab5e015cc2ab1014c23276c
       
  5543 +Author: Alan Modra <amodra@gmail.com>
       
  5544 +Date:   Sat Nov 16 06:38:55 2013 -0500
       
  5545 +
       
  5546 +    The powerpc64 support opted to pass floating point values both in the
       
  5547 +    fpr area and the parameter save area, necessary when the backend
       
  5548 +    doesn't know if a function argument corresponds to the ellipsis
       
  5549 +    arguments of a variadic function.  This patch adds powerpc support for
       
  5550 +    variadic functions, and changes the code to only pass fp in the ABI
       
  5551 +    mandated area.  ELFv2 needs this change since the parameter save area
       
  5552 +    may not exist there.
       
  5553 +    
       
  5554 +    This also fixes two faulty tests that used a non-variadic function
       
  5555 +    cast to call a variadic function, and spuriously reasoned that this is
       
  5556 +    somehow necessary for static functions..
       
  5557 +
       
  5558 +commit 31257b3189f81a199bc2902c22bc5f2d7c54ccde
       
  5559 +Author: Andrew Haley <aph@redhat.com>
       
  5560 +Date:   Sat Nov 16 06:35:51 2013 -0500
       
  5561 +
       
  5562 +    Fix sample closure code
       
  5563 +
       
  5564 +commit db0ace3a38496af73eae3df02ef353736d16909f
       
  5565 +Author: Andrew Haley <aph@redhat.com>
       
  5566 +Date:   Sat Nov 16 06:29:25 2013 -0500
       
  5567 +
       
  5568 +    Fix broken test cases
       
  5569 +
       
  5570 +commit de10f5039ed7a53382ddcc95c368d03e535edb98
       
  5571 +Merge: 58c2577 f3657da
       
  5572 +Author: Anthony Green <green@moxielogic.com>
       
  5573 +Date:   Thu Nov 14 10:56:29 2013 -0500
       
  5574 +
       
  5575 +    Merge branch 'master' of https://github.com/bivab/libffi
       
  5576 +    
       
  5577 +    Conflicts:
       
  5578 +    	ChangeLog
       
  5579 +
       
  5580 +commit f3657da278dd63afcdd8762894a9bdaea8ef028a
       
  5581 +Author: David Schneider <david.schneider@bivab.de>
       
  5582 +Date:   Thu Nov 14 13:02:16 2013 +0100
       
  5583 +
       
  5584 +    update Changelog
       
  5585 +
       
  5586 +commit 58c2577a3ff80e7416ef0434769e2af23365719c
       
  5587 +Author: Alan Modra <amodra@gmail.com>
       
  5588 +Date:   Wed Nov 13 16:55:36 2013 -0500
       
  5589 +
       
  5590 +    This enshrines the current testsuite practice of using ffi_arg for
       
  5591 +    returned values.  It would be reasonable and logical to use the actual
       
  5592 +    return argument type as passed to ffi_prep_cif, but this would mean
       
  5593 +    changing a large number of tests that use ffi_arg and all backends
       
  5594 +    that write results to an ffi_arg.
       
  5595 +
       
  5596 +commit 8af42f9944f7ed72c81ae360aac6a84dc11f89dc
       
  5597 +Author: Anthony Green <green@moxielogic.com>
       
  5598 +Date:   Wed Nov 13 16:40:28 2013 -0500
       
  5599 +
       
  5600 +    Respect HAVE_ALLOCA_H
       
  5601 +
       
  5602 +commit cdf405d574f479b782454516366bd4f4b9b3415e
       
  5603 +Author: David Schneider <david.schneider@bivab.de>
       
  5604 +Date:   Wed Nov 13 15:50:21 2013 +0100
       
  5605 +
       
  5606 +    add a testcase for the double/float issue on ARMHF
       
  5607 +
       
  5608 +commit 77f823e31ffb557a466b24f7fba845fbf7831798
       
  5609 +Author: David Schneider <david.schneider@bivab.de>
       
  5610 +Date:   Wed Nov 13 14:26:57 2013 +0100
       
  5611 +
       
  5612 +    stop trying to assing vfp regs once we are done with the registers
       
  5613 +
       
  5614 +commit 37067ec5036f2a6ed7a4799f83f8f53160460344
       
  5615 +Author: David Schneider <david.schneider@bivab.de>
       
  5616 +Date:   Tue Nov 12 19:49:01 2013 +0100
       
  5617 +
       
  5618 +    mark all vfp registers as used when done.
       
  5619 +    
       
  5620 +    To avoid assigning registers the would fit, once arguments have been on
       
  5621 +    the stack, we mark all registers as used once we do not find a free
       
  5622 +    register for the first time.
       
  5623 +
       
  5624 +commit 2f5b7ce545473a7f6e41193edc29407cbebe82d5
       
  5625 +Author: Anthony Green <green@moxielogic.com>
       
  5626 +Date:   Sat Nov 9 06:16:32 2013 -0500
       
  5627 +
       
  5628 +    UltraSPARC IIi fix.  Update README and build configury.
       
  5629 +
       
  5630 +commit becd754434173032f426d22ffcbfe24f55b3c137
       
  5631 +Author: Mark Kettenis <kettenis@gnu.org>
       
  5632 +Date:   Wed Nov 6 06:43:49 2013 -0500
       
  5633 +
       
  5634 +    Align the stack pointer to 16-bytes.
       
  5635 +
       
  5636 +commit 05c31093409f7b3e6d795fac21d2c954313d8162
       
  5637 +Author: Konstantin Belousov <kib@freebsd.org>
       
  5638 +Date:   Wed Nov 6 06:40:58 2013 -0500
       
  5639 +
       
  5640 +    Mark executable as not requiring executable stack.
       
  5641 +
       
  5642 +commit cf6bf9818e8394cfcdb07a40c6a5e2ee6b01d333
       
  5643 +Author: Anthony Green <green@moxielogic.com>
       
  5644 +Date:   Sat Nov 2 17:23:59 2013 -0400
       
  5645 +
       
  5646 +    Fix up docs
       
  5647 +
       
  5648 +commit 02177176854d16fc0f1a5958aa34da2f306630ee
       
  5649 +Merge: c242217 c265b4c
       
  5650 +Author: Anthony Green <green@moxielogic.com>
       
  5651 +Date:   Sat Nov 2 17:11:22 2013 -0400
       
  5652 +
       
  5653 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  5654 +
       
  5655 +commit c2422174b3edc0de0b148dfd6b67087bb881c4a6
       
  5656 +Merge: f4b843f d918d47
       
  5657 +Author: Anthony Green <green@moxielogic.com>
       
  5658 +Date:   Sat Nov 2 14:08:23 2013 -0700
       
  5659 +
       
  5660 +    Merge pull request #45 from foss-for-synopsys-dwc-arc-processors/arc_support
       
  5661 +    
       
  5662 +    arc: Fix build error
       
  5663 +
       
  5664 +commit c265b4cacb9130f042699a85de9c7242b3f49cc3
       
  5665 +Merge: f4b843f d918d47
       
  5666 +Author: Anthony Green <green@moxielogic.com>
       
  5667 +Date:   Sat Nov 2 14:08:23 2013 -0700
       
  5668 +
       
  5669 +    Merge pull request #45 from foss-for-synopsys-dwc-arc-processors/arc_support
       
  5670 +    
       
  5671 +    arc: Fix build error
       
  5672 +
       
  5673 +commit f4b843f83710ac378c48abd87fe66bb519d30d2e
       
  5674 +Author: Anthony Green <green@moxielogic.com>
       
  5675 +Date:   Sat Nov 2 17:01:15 2013 -0400
       
  5676 +
       
  5677 +    Don't align stack for win32
       
  5678 +
       
  5679 +commit f3cd39345713db8e414cf642b6cb65a4cfe6018c
       
  5680 +Merge: 666f3e7 6aa1590
       
  5681 +Author: Anthony Green <green@moxielogic.com>
       
  5682 +Date:   Sat Nov 2 13:17:57 2013 -0700
       
  5683 +
       
  5684 +    Merge pull request #51 from vbudovski/for_upstream
       
  5685 +    
       
  5686 +    Don't use 16 byte aligned stack for WIN32
       
  5687 +
       
  5688 +commit 666f3e71b56d92c49fcd2d7f349b8f8ebca0f8a3
       
  5689 +Author: Anthony Green <green@moxielogic.com>
       
  5690 +Date:   Sat Oct 26 09:12:42 2013 -0400
       
  5691 +
       
  5692 +    Add more credits to README.  Tidy up.
       
  5693 +
       
  5694 +commit 73ada14e756bad97fad0e6915a821a3c7e079f81
       
  5695 +Author: Anthony Green <green@moxielogic.com>
       
  5696 +Date:   Sat Oct 26 09:09:45 2013 -0400
       
  5697 +
       
  5698 +    Update README
       
  5699 +
       
  5700 +commit d3372c54ce7117e80d389ba875dc5b6b2213c71e
       
  5701 +Author: Mark H Weaver <mhw@netris.org>
       
  5702 +Date:   Sat Oct 26 08:30:06 2013 -0400
       
  5703 +
       
  5704 +    Fix N32 ABI issue for MIPS.
       
  5705 +
       
  5706 +commit d6716aba8118eb0513885cfe557bedebb7016e8b
       
  5707 +Author: Anthony Green <green@moxielogic.com>
       
  5708 +Date:   Tue Oct 15 15:42:49 2013 -0400
       
  5709 +
       
  5710 +    Update travis-ci build dependencies to include texinfo
       
  5711 +
       
  5712 +commit 16b93a211bcfbe4bd0efdcf94de225a71aa0ee02
       
  5713 +Author: Sandra Loosemore <sandra@codesourcery.com>
       
  5714 +Date:   Tue Oct 15 15:33:59 2013 -0400
       
  5715 +
       
  5716 +    Add nios2 port.
       
  5717 +
       
  5718 +commit 2f5626ce02fce8267ab48ceb6d7d0ed7d672a75e
       
  5719 +Author: Sandra Loosemore <sandra@codesourcery.com>
       
  5720 +Date:   Tue Oct 15 15:32:16 2013 -0400
       
  5721 +
       
  5722 +    Fix testsuite bug
       
  5723 +
       
  5724 +commit f64e4a865557e440774436b4c2b2fd7374290e97
       
  5725 +Author: Marcus Shawcroft <marcus.shawcroft@arm.com>
       
  5726 +Date:   Tue Oct 15 15:20:14 2013 -0400
       
  5727 +
       
  5728 +    Fix many.c testcase for Aarch64
       
  5729 +
       
  5730 +commit 128cd1d2f358f26d9fa75a27cf2b30356f5dd903
       
  5731 +Author: Anthony Green <green@moxielogic.com>
       
  5732 +Date:   Tue Oct 8 06:45:51 2013 -0400
       
  5733 +
       
  5734 +    Fix spelling errors
       
  5735 +
       
  5736 +commit ff06269d707cafbfef2a88afb07a79c9d1480c5f
       
  5737 +Author: Anthony Green <green@moxielogic.com>
       
  5738 +Date:   Tue Oct 8 06:32:18 2013 -0400
       
  5739 +
       
  5740 +    Update README for M88K and VAX
       
  5741 +
       
  5742 +commit d2fcbcdfbea750d1f6a9f493e2e6c4d5ffa71b34
       
  5743 +Author: Anthony Green <green@moxielogic.com>
       
  5744 +Date:   Tue Oct 8 06:27:46 2013 -0400
       
  5745 +
       
  5746 +    Add m88k and VAX support. Update some configury bits.
       
  5747 +
       
  5748 +commit 6aa15900accc0a648cdebf11ec11d11697ebfffd
       
  5749 +Author: Vitaly Budovski <vbudovski@gmail.com>
       
  5750 +Date:   Thu Sep 5 12:05:06 2013 +1000
       
  5751 +
       
  5752 +    Don't use 16 byte aligned stack for WIN32
       
  5753 +    
       
  5754 +    This fixes a crash when accessing __stdcall functions in Python ctypes.
       
  5755 +
       
  5756 +commit 3b44d41156149af8da2a58825fefdfa23274ae7a
       
  5757 +Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
       
  5758 +Date:   Wed Jul 10 15:34:53 2013 +0900
       
  5759 +
       
  5760 +    Fix build failure when using clang for Android
       
  5761 +    
       
  5762 +    clang for Android generates __gnu_linux__ define, but gcc for Android doesn't.  So we should add check it for Android
       
  5763 +
       
  5764 +commit d918d47809c174d62283306b282749f8db93661f
       
  5765 +Author: Mischa Jonker <mjonker@synopsys.com>
       
  5766 +Date:   Mon Jul 8 15:51:36 2013 +0200
       
  5767 +
       
  5768 +    arc: Fix build error
       
  5769 +    
       
  5770 +    One part of the patch for ARC support was missing in the upstreamed
       
  5771 +    version.
       
  5772 +    
       
  5773 +    Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
       
  5774 +
       
  5775 +commit d3d099b40c122550279789200263346f120f6909
       
  5776 +Author: Anthony Green <green@moxielogic.com>
       
  5777 +Date:   Tue Jul 2 16:11:38 2013 -0400
       
  5778 +
       
  5779 +    little-endian ppc64 support
       
  5780 +
       
  5781 +commit 0f8690a84c874ec09a090c8c6adfb93c594acac6
       
  5782 +Author: Anthony Green <green@moxielogic.com>
       
  5783 +Date:   Tue Jul 2 15:54:40 2013 -0400
       
  5784 +
       
  5785 +    Rebuild for ARC additions
       
  5786 +
       
  5787 +commit f88118b345f27c46f5445d6e4832c498ff9a6d85
       
  5788 +Author: Anthony Green <green@moxielogic.com>
       
  5789 +Date:   Tue Jul 2 15:51:27 2013 -0400
       
  5790 +
       
  5791 +    Revert "Merge pull request #36 from abergmeier/emscripten_fix"
       
  5792 +    
       
  5793 +    This reverts commit 6a4d901dde7b3f87984c563505717cde3113d16e, reversing
       
  5794 +    changes made to b50a13b9c07ec09af4b9697e482acdad571e6961.
       
  5795 +
       
  5796 +commit 6a4d901dde7b3f87984c563505717cde3113d16e
       
  5797 +Merge: b50a13b 587002c
       
  5798 +Author: Anthony Green <green@moxielogic.com>
       
  5799 +Date:   Tue Jul 2 12:12:34 2013 -0700
       
  5800 +
       
  5801 +    Merge pull request #36 from abergmeier/emscripten_fix
       
  5802 +    
       
  5803 +    Fixes for building with Emscripten
       
  5804 +
       
  5805 +commit b50a13b9c07ec09af4b9697e482acdad571e6961
       
  5806 +Merge: 767f1f9 b082e15
       
  5807 +Author: Anthony Green <green@moxielogic.com>
       
  5808 +Date:   Tue Jul 2 12:10:26 2013 -0700
       
  5809 +
       
  5810 +    Merge pull request #44 from foss-for-synopsys-dwc-arc-processors/arc_support
       
  5811 +    
       
  5812 +    Add ARC support
       
  5813 +
       
  5814 +commit 767f1f96e5282da44d7340e6815e9820a3f78e39
       
  5815 +Merge: c3c40e0 b8a91d8
       
  5816 +Author: Anthony Green <green@moxielogic.com>
       
  5817 +Date:   Tue Jul 2 12:08:04 2013 -0700
       
  5818 +
       
  5819 +    Merge pull request #43 from JensTimmerman/__m128
       
  5820 +    
       
  5821 +    added include for xmmintrin.h
       
  5822 +
       
  5823 +commit b8a91d81be77d479327fdb6bdd9fdae6d18e6e63
       
  5824 +Author: Jens Timmerman <jens.timmerman@ugent.be>
       
  5825 +Date:   Tue Jul 2 10:57:37 2013 +0200
       
  5826 +
       
  5827 +    added include for xmmintrin.h
       
  5828 +
       
  5829 +commit b082e15091961373c03d10ed0251f619ebb6ed76
       
  5830 +Author: Mischa Jonker <mjonker@synopsys.com>
       
  5831 +Date:   Mon Jun 10 16:19:33 2013 +0200
       
  5832 +
       
  5833 +    Add ARC support
       
  5834 +    
       
  5835 +    This adds support for the ARC architecture to libffi. DesignWare ARC
       
  5836 +    is a family of processors from Synopsys, Inc.
       
  5837 +    
       
  5838 +    This patch has been tested on a little-endian system and passes
       
  5839 +    the testsuite.
       
  5840 +    
       
  5841 +    Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
       
  5842 +
       
  5843 +commit cc9b518687e46b0d1acafdd4bc3f3b281c25a3d9
       
  5844 +Author: Marcin Wojdyr <wojdyr@gmail.com>
       
  5845 +Date:   Tue May 14 15:01:23 2013 +0200
       
  5846 +
       
  5847 +    Update libffi.pc.in
       
  5848 +    
       
  5849 +    use -L${toolexeclibdir} instead of -L${libdir}
       
  5850 +    to be consistent with Makefile.am
       
  5851 +
       
  5852 +commit 587002c092cffe6e7a8d7028f246c241d03b738c
       
  5853 +Author: Andreas Bergmeier <andreas.bergmeier@gmx.net>
       
  5854 +Date:   Fri Apr 19 17:12:24 2013 +0200
       
  5855 +
       
  5856 +    Enable disabling of libtool on platforms where it does not work (e.g. LLVM).
       
  5857 +    Build libraries normally then.
       
  5858 +
       
  5859 +commit c3c40e0290377d7cf948b072eedd8317c4bf215e
       
  5860 +Merge: ede96e4 4750e3c
       
  5861 +Author: Anthony Green <green@moxielogic.com>
       
  5862 +Date:   Sat Mar 30 05:24:14 2013 -0700
       
  5863 +
       
  5864 +    Merge pull request #34 from davidsch/armhf
       
  5865 +    
       
  5866 +    Fix ARM hard-float support for large numbers of VFP arguments
       
  5867 +
       
  5868 +commit 4750e3c662fd9569cb3e2d28f539685fd1ca8caf
       
  5869 +Author: David Schneider <david.schneider@bivab.de>
       
  5870 +Date:   Thu Mar 28 16:56:36 2013 +0100
       
  5871 +
       
  5872 +    update changelog
       
  5873 +
       
  5874 +commit 9708e7cf09f1bf815f4d6485eb1f180fabb35804
       
  5875 +Author: David Schneider <david.schneider@bivab.de>
       
  5876 +Date:   Wed Mar 27 19:31:04 2013 +0100
       
  5877 +
       
  5878 +    folow the ARM hard-float ABI in ffi_prep_incoming_args_VFP
       
  5879 +
       
  5880 +commit b41120981e5e49ca2da10b94b154775f50da5f36
       
  5881 +Author: David Schneider <david.schneider@bivab.de>
       
  5882 +Date:   Wed Mar 27 16:38:35 2013 +0100
       
  5883 +
       
  5884 +    create separated versions of ffi_prep_incoming_args_* for SYSV and VFP ABIs.
       
  5885 +    
       
  5886 +    The different versions will be called depending on the value of cif->abi
       
  5887 +
       
  5888 +commit dd26f1f39c54861c5b91931f0f37a72942c2a072
       
  5889 +Author: David Schneider <david.schneider@bivab.de>
       
  5890 +Date:   Thu Mar 28 15:39:01 2013 +0100
       
  5891 +
       
  5892 +    add a failing test for closures on ARM hardfloat
       
  5893 +
       
  5894 +commit 3c1608613ab3c2184222b98c5482cddedd6b559b
       
  5895 +Author: David Schneider <david.schneider@bivab.de>
       
  5896 +Date:   Tue Mar 26 19:24:47 2013 +0100
       
  5897 +
       
  5898 +    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.
       
  5899 +
       
  5900 +commit 0f2ff2d4c92719be8936179f9ab674f4d1a3fd14
       
  5901 +Author: David Schneider <david.schneider@bivab.de>
       
  5902 +Date:   Tue Mar 26 19:22:02 2013 +0100
       
  5903 +
       
  5904 +    separate ARM ffi_prepare_args in a version implementing the simple SYSV calling convention and one for the hard-float calling convention
       
  5905 +
       
  5906 +commit 3a352b8a8252400a83de22c7c424bf1887b4a2ef
       
  5907 +Author: David Schneider <david.schneider@bivab.de>
       
  5908 +Date:   Tue Mar 26 14:24:04 2013 +0100
       
  5909 +
       
  5910 +    move the hardfloat specific argument copying code to the helper function
       
  5911 +
       
  5912 +commit 5df6b7944a4225b6eb329f3886be64e04e966f29
       
  5913 +Author: David Schneider <david.schneider@bivab.de>
       
  5914 +Date:   Tue Mar 26 14:02:21 2013 +0100
       
  5915 +
       
  5916 +    extract setting of arguments to be passed to a helper function
       
  5917 +
       
  5918 +commit 7d1048c471bb4b1f9d67a9e9f8e95f9a1d2e6d45
       
  5919 +Author: David Schneider <david.schneider@bivab.de>
       
  5920 +Date:   Tue Mar 26 11:33:33 2013 +0100
       
  5921 +
       
  5922 +    extract code to align the argument storage pointer to a helper function
       
  5923 +
       
  5924 +commit b9f013788f0f384c423ad963475aaacb55598135
       
  5925 +Author: David Schneider <david.schneider@bivab.de>
       
  5926 +Date:   Mon Mar 25 13:27:36 2013 +0100
       
  5927 +
       
  5928 +    add a testcase, that on ARM hardfloat needs more than the 8  VFP argument registers to pass arguments to a call
       
  5929 +
       
  5930 +commit 2fbdb0f231cafdb77b025d3cd8afe90cda99b3ba
       
  5931 +Author: David Schneider <david.schneider@bivab.de>
       
  5932 +Date:   Mon Mar 25 13:26:02 2013 +0100
       
  5933 +
       
  5934 +    use the absolute value to check the test result against an epsilon
       
  5935 +
       
  5936 +commit ede96e4eb660bbf3e0fe048135efa8106f48af5d
       
  5937 +Merge: f22ab3c 9e34992
       
  5938 +Author: Anthony Green <green@moxielogic.com>
       
  5939 +Date:   Sun Mar 17 18:38:21 2013 -0400
       
  5940 +
       
  5941 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  5942 +
       
  5943 +commit f22ab3c6877cbdd07f058b68816b0086b1cb0e1e
       
  5944 +Merge: 12b1886 d08124b
       
  5945 +Author: Anthony Green <green@moxielogic.com>
       
  5946 +Date:   Sun Mar 17 18:34:54 2013 -0400
       
  5947 +
       
  5948 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  5949 +
       
  5950 +commit 9e34992a5ea2fda1dba5875bf96dc91a7230f51f
       
  5951 +Merge: 12b1886 d08124b
       
  5952 +Author: Anthony Green <green@moxielogic.com>
       
  5953 +Date:   Sun Mar 17 18:34:54 2013 -0400
       
  5954 +
       
  5955 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  5956 +
       
  5957 +commit 12b1886d7b1f8aa264b1d348bfa47a0e14712df4
       
  5958 +Author: Anthony Green <green@moxielogic.com>
       
  5959 +Date:   Sun Mar 17 18:32:12 2013 -0400
       
  5960 +
       
  5961 +    cygwin fix & updates for 3.0.13
       
  5962 +
       
  5963 +commit d08124bedf2c6d61874fe215404783aeb9f6f1ac
       
  5964 +Author: Anthony Green <green@moxielogic.com>
       
  5965 +Date:   Sun Mar 17 18:32:12 2013 -0400
       
  5966 +
       
  5967 +    cygwin fix & updates for 3.0.13
       
  5968 +
       
  5969 +commit cb32c812d04d1dfa72002cc04924e7e4fef89e02
       
  5970 +Author: Anthony Green <green@moxielogic.com>
       
  5971 +Date:   Sun Mar 17 09:27:55 2013 -0400
       
  5972 +
       
  5973 +    Fix lib install dir
       
  5974 +
       
  5975 +commit efd7866a361a6f636bae8400d26c6811e56ca207
       
  5976 +Author: Anthony Green <green@moxielogic.com>
       
  5977 +Date:   Sat Mar 16 08:35:57 2013 -0400
       
  5978 +
       
  5979 +    2.0.13rc1
       
  5980 +
       
  5981 +commit ff647ad4dff2f07dd153f295a1f70b1d906cd6ca
       
  5982 +Merge: 4acf005 d9dd417
       
  5983 +Author: Anthony Green <green@moxielogic.com>
       
  5984 +Date:   Sat Mar 16 08:20:40 2013 -0400
       
  5985 +
       
  5986 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  5987 +    
       
  5988 +    Conflicts:
       
  5989 +    	ChangeLog
       
  5990 +
       
  5991 +commit 4acf0056f55c757490dae6c29a65b0321327ea8a
       
  5992 +Author: Anthony Green <green@moxielogic.com>
       
  5993 +Date:   Sat Mar 16 08:18:45 2013 -0400
       
  5994 +
       
  5995 +    Build fix for soft-float power targets
       
  5996 +
       
  5997 +commit 675c9839224e4268187f1ec6f512127f9db555d0
       
  5998 +Author: Anthony Green <green@moxielogic.com>
       
  5999 +Date:   Sat Mar 16 08:12:38 2013 -0400
       
  6000 +
       
  6001 +    Documentation fix
       
  6002 +
       
  6003 +commit 8a286f570ccd41db81f74ea7f248da62241d898a
       
  6004 +Author: Anthony Green <green@moxielogic.com>
       
  6005 +Date:   Sat Mar 16 08:01:19 2013 -0400
       
  6006 +
       
  6007 +    Fix for m68000 systems
       
  6008 +
       
  6009 +commit d9dd417b09566af55b7b3000bb53ccaf2e1d6c92
       
  6010 +Author: Anthony Green <green@moxielogic.com>
       
  6011 +Date:   Sat Mar 16 08:01:19 2013 -0400
       
  6012 +
       
  6013 +    Fix for m68000 systems
       
  6014 +
       
  6015 +commit 215763d012a944d95406b394d6013b80d220e870
       
  6016 +Author: Anthony Green <green@moxielogic.com>
       
  6017 +Date:   Sat Mar 16 07:57:35 2013 -0400
       
  6018 +
       
  6019 +    Update configury.
       
  6020 +
       
  6021 +commit 9180d8f39c9b6afe17b78277c2711a5d9948e824
       
  6022 +Merge: 2fb527a 7e1b326
       
  6023 +Author: Anthony Green <green@moxielogic.com>
       
  6024 +Date:   Sat Mar 16 07:46:55 2013 -0400
       
  6025 +
       
  6026 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  6027 +
       
  6028 +commit 2fb527a017a4943e176a489ff103231b86464b59
       
  6029 +Author: Anthony Green <green@moxielogic.com>
       
  6030 +Date:   Sat Mar 16 07:46:38 2013 -0400
       
  6031 +
       
  6032 +    Add Meta processor support
       
  6033 +
       
  6034 +commit 211a9ebf4d1a9801e15e103566aed2b8c42790be
       
  6035 +Merge: f308faf ee18766
       
  6036 +Author: Anthony Green <green@moxielogic.com>
       
  6037 +Date:   Sat Mar 16 04:24:40 2013 -0700
       
  6038 +
       
  6039 +    Merge pull request #32 from alex/patch-1
       
  6040 +    
       
  6041 +    Fix for a crasher due to misaligned stack on x86-32.
       
  6042 +
       
  6043 +commit 7e1b32649efd24814e86172e196f390566f9e970
       
  6044 +Merge: f308faf ee18766
       
  6045 +Author: Anthony Green <green@moxielogic.com>
       
  6046 +Date:   Sat Mar 16 04:24:40 2013 -0700
       
  6047 +
       
  6048 +    Merge pull request #32 from alex/patch-1
       
  6049 +    
       
  6050 +    Fix for a crasher due to misaligned stack on x86-32.
       
  6051 +
       
  6052 +commit ee18766b169811426c14b011fbb46d81e344f926
       
  6053 +Author: Alex Gaynor <alex.gaynor@gmail.com>
       
  6054 +Date:   Thu Mar 14 15:00:33 2013 -0700
       
  6055 +
       
  6056 +    Fix for a crasher due to misaligned stack on x86-32.
       
  6057 +    
       
  6058 +    Full information on reproduction (using Python's ctypes available here: http://bugs.python.org/issue17423)
       
  6059 +
       
  6060 +commit f308faf1eabaf8dc24966ab17fbf94368f46b9c7
       
  6061 +Author: Anthony Green <green@moxielogic.com>
       
  6062 +Date:   Mon Feb 11 14:25:13 2013 -0500
       
  6063 +
       
  6064 +    Add moxie support.  Release 3.0.12.
       
  6065 +
       
  6066 +commit 4ea22e54e3b143fe05c413f6dddd236af6bcbfb2
       
  6067 +Author: Anthony Green <green@moxielogic.com>
       
  6068 +Date:   Sun Feb 10 08:48:38 2013 -0500
       
  6069 +
       
  6070 +    Update README
       
  6071 +
       
  6072 +commit 10e77227b6ae85f46f28590bfb09ca3608554358
       
  6073 +Author: Anthony Green <green@moxielogic.com>
       
  6074 +Date:   Sun Feb 10 08:47:26 2013 -0500
       
  6075 +
       
  6076 +    mend
       
  6077 +
       
  6078 +commit a9521411a53d58f2bf88199242200ceb0d4dae3a
       
  6079 +Author: Anthony Green <green@moxielogic.com>
       
  6080 +Date:   Sat Feb 9 06:54:40 2013 -0500
       
  6081 +
       
  6082 +    sparc v8 and testsuite fixes
       
  6083 +
       
  6084 +commit 70b11b47eea93bf43627588d494d0b3b0d062481
       
  6085 +Author: Anthony Green <green@moxielogic.com>
       
  6086 +Date:   Fri Feb 8 16:12:19 2013 -0500
       
  6087 +
       
  6088 +    Fix small struct passing on ppc
       
  6089 +
       
  6090 +commit 63ba1fa79f7c4ce42de848debe233aab31aecb51
       
  6091 +Author: Anthony Green <green@moxielogic.com>
       
  6092 +Date:   Fri Feb 8 15:18:19 2013 -0500
       
  6093 +
       
  6094 +    Remove xfail for arm*-*-*.
       
  6095 +
       
  6096 +commit 24fbca4c1d57d4ea628c0a8ba643684daf54a37e
       
  6097 +Author: Anthony Green <green@moxielogic.com>
       
  6098 +Date:   Fri Feb 8 14:19:56 2013 -0500
       
  6099 +
       
  6100 +    Fix typo
       
  6101 +
       
  6102 +commit b0fa11cb0a94ce6baca058eab9b10e40475e71d6
       
  6103 +Author: Anthony Green <green@moxielogic.com>
       
  6104 +Date:   Fri Feb 8 14:17:13 2013 -0500
       
  6105 +
       
  6106 +    More man page cleanup
       
  6107 +
       
  6108 +commit 8bd15d139a58a6e46dc90a1cb2d89f59f32f06c7
       
  6109 +Author: Anthony Green <green@moxielogic.com>
       
  6110 +Date:   Fri Feb 8 13:56:37 2013 -0500
       
  6111 +
       
  6112 +    Fix many.c testcase for ppc
       
  6113 +
       
  6114 +commit 7aab825cf198be85490d3cd80e778d415d85ad9b
       
  6115 +Author: Anthony Green <green@moxielogic.com>
       
  6116 +Date:   Fri Feb 8 13:26:21 2013 -0500
       
  6117 +
       
  6118 +    Add missing files to dist
       
  6119 +
       
  6120 +commit cb03ea8f4eb08024e44abe4392edc77b89fbfbad
       
  6121 +Author: Anthony Green <green@moxielogic.com>
       
  6122 +Date:   Fri Feb 8 12:25:18 2013 -0500
       
  6123 +
       
  6124 +    sparc v9 fixes for sun tools
       
  6125 +
       
  6126 +commit 35ee8d44f31dd3d3b88083c837dc351593e13cc2
       
  6127 +Author: Anthony Green <green@moxielogic.com>
       
  6128 +Date:   Fri Feb 8 07:12:41 2013 -0500
       
  6129 +
       
  6130 +    Fix microblaze big-endian struct issue
       
  6131 +
       
  6132 +commit 9db7e1a958fc484ba149efe027008b9a170395fb
       
  6133 +Author: Anthony Green <green@moxielogic.com>
       
  6134 +Date:   Thu Feb 7 21:06:08 2013 -0500
       
  6135 +
       
  6136 +    Fix botched sparc patch. Update version.
       
  6137 +
       
  6138 +commit ce0138e61455f268af326e26908b9680ec2c4bea
       
  6139 +Author: Anthony Green <green@moxielogic.com>
       
  6140 +Date:   Thu Feb 7 18:04:01 2013 -0500
       
  6141 +
       
  6142 +    Update bug report address. rc2.
       
  6143 +
       
  6144 +commit fd07c9e40451e0ec1d0475cd54a83d45ccaea2c0
       
  6145 +Author: Anthony Green <green@moxielogic.com>
       
  6146 +Date:   Thu Feb 7 18:00:36 2013 -0500
       
  6147 +
       
  6148 +    Add cache flushing routine for sun compiler on sparc solaris 2.8
       
  6149 +
       
  6150 +commit ed6ae9501b2bab45daf93b4935eb0c977635b763
       
  6151 +Author: Anthony Green <green@moxielogic.com>
       
  6152 +Date:   Thu Feb 7 16:43:36 2013 -0500
       
  6153 +
       
  6154 +    Add libtool-ldflags. Define toolexeclibdir for non-GCC builds.
       
  6155 +
       
  6156 +commit ffef2e046aaec853be356f0b8770a335185ea9cf
       
  6157 +Author: Anthony Green <green@moxielogic.com>
       
  6158 +Date:   Thu Feb 7 15:47:01 2013 -0500
       
  6159 +
       
  6160 +    x32 and libtool fixes
       
  6161 +
       
  6162 +commit 95eecebb2858dc6f1495a61072ff36d0a8127144
       
  6163 +Author: Anthony Green <green@moxielogic.com>
       
  6164 +Date:   Thu Feb 7 15:32:46 2013 -0500
       
  6165 +
       
  6166 +    Remove a.out cruft from dist
       
  6167 +
       
  6168 +commit 176aa9d2e23d9cd57d6f250692d910b408f9a651
       
  6169 +Author: Anthony Green <green@moxielogic.com>
       
  6170 +Date:   Thu Feb 7 15:29:22 2013 -0500
       
  6171 +
       
  6172 +    Fix GCC usage test and update README
       
  6173 +
       
  6174 +commit f3a4f3fdde89b04d66983a42a25d09161c5d4d54
       
  6175 +Author: Anthony Green <green@moxielogic.com>
       
  6176 +Date:   Thu Feb 7 09:57:20 2013 -0500
       
  6177 +
       
  6178 +    Fixes for AIX xlc compiler.
       
  6179 +
       
  6180 +commit 522f8fef49848927482bc63c94afaea5b84e5ec1
       
  6181 +Author: Anthony Green <green@moxielogic.com>
       
  6182 +Date:   Wed Feb 6 20:31:31 2013 -0500
       
  6183 +
       
  6184 +    Fix man page. Clean out junk.
       
  6185 +
       
  6186 +commit c4dfa259eb4e8e6f4c397868d7fee80aa0bb6a12
       
  6187 +Author: Anthony Green <green@moxielogic.com>
       
  6188 +Date:   Wed Feb 6 17:43:24 2013 -0500
       
  6189 +
       
  6190 +    Bump soversion
       
  6191 +
       
  6192 +commit f62bd63fe6123cadedb8b2b2c72eb549c40fbce9
       
  6193 +Author: Anthony Green <green@moxielogic.com>
       
  6194 +Date:   Wed Feb 6 17:38:32 2013 -0500
       
  6195 +
       
  6196 +    Release candidate 1
       
  6197 +
       
  6198 +commit f7cd61e9e68a4a51147df04d75bfe5b91b9d9286
       
  6199 +Author: Anthony Green <green@moxielogic.com>
       
  6200 +Date:   Wed Feb 6 17:38:04 2013 -0500
       
  6201 +
       
  6202 +    Fix pkgconfig install bits
       
  6203 +
       
  6204 +commit 6a790129427121f7db2d876e7218a3104e6d2741
       
  6205 +Author: Anthony Green <green@moxielogic.com>
       
  6206 +Date:   Wed Feb 6 17:37:15 2013 -0500
       
  6207 +
       
  6208 +    Work around LLVM ABI problem on x86-64
       
  6209 +
       
  6210 +commit 370112938e705128fd5dd4017fc1a1210bd0271a
       
  6211 +Merge: bada2e3 bcc0c28
       
  6212 +Author: Anthony Green <green@moxielogic.com>
       
  6213 +Date:   Sun Jan 27 05:09:04 2013 -0800
       
  6214 +
       
  6215 +    Merge pull request #28 from jralls/master
       
  6216 +    
       
  6217 +    Reorder x86_64 checks
       
  6218 +
       
  6219 +commit bcc0c28001b6d427d5cd8037d2e3c892babc6b4c
       
  6220 +Author: John Ralls <jralls@ceridwen.us>
       
  6221 +Date:   Sat Jan 26 15:21:14 2013 -0800
       
  6222 +
       
  6223 +    Reorder x86_64 tests
       
  6224 +    
       
  6225 +    So that darwin and cygwin/mingw are tested before the generic check --
       
  6226 +    which allows them to actually be set.
       
  6227 +
       
  6228 +commit bada2e326d9a9acf3ae40cfa4f5d7a9ba97b2ea8
       
  6229 +Author: Anthony Green <green@moxielogic.com>
       
  6230 +Date:   Mon Jan 21 08:02:07 2013 -0500
       
  6231 +
       
  6232 +    Update README
       
  6233 +
       
  6234 +commit 655bb8f3690feba8e840a5f1854b1d78ed08f692
       
  6235 +Merge: 1035ffb 840f975
       
  6236 +Author: Anthony Green <green@moxielogic.com>
       
  6237 +Date:   Mon Jan 21 08:01:24 2013 -0500
       
  6238 +
       
  6239 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  6240 +
       
  6241 +commit 1035ffb2f468e1a1c401d58cff7e7abb69838e68
       
  6242 +Merge: aeb8719 4086024
       
  6243 +Author: Anthony Green <green@moxielogic.com>
       
  6244 +Date:   Mon Jan 21 07:55:53 2013 -0500
       
  6245 +
       
  6246 +    Update README
       
  6247 +
       
  6248 +commit 840f975866052fdd91b2c224d56e01ae5900b60d
       
  6249 +Merge: aeb8719 4086024
       
  6250 +Author: Anthony Green <green@moxielogic.com>
       
  6251 +Date:   Mon Jan 21 07:55:53 2013 -0500
       
  6252 +
       
  6253 +    Merge branch 'master' of github.com:/atgreen/libffi
       
  6254 +
       
  6255 +commit aeb8719a34756969970603fca4568530d56708af
       
  6256 +Author: Anthony Green <green@moxielogic.com>
       
  6257 +Date:   Mon Jan 21 07:37:30 2013 -0500
       
  6258 +
       
  6259 +    New microblaze support
       
  6260 +
       
  6261 +commit 40860245a4fd91a1b88adc9171ec993c549e45d5
       
  6262 +Author: Anthony Green <green@moxielogic.com>
       
  6263 +Date:   Mon Jan 21 07:37:30 2013 -0500
       
  6264 +
       
  6265 +    New microblaze support
       
  6266 +
       
  6267 +commit 20cae32b152b43679ae65a85db9a1c6bb8a143dd
       
  6268 +Author: Anthony Green <green@moxielogic.com>
       
  6269 +Date:   Mon Jan 21 07:07:38 2013 -0500
       
  6270 +
       
  6271 +    Xtensa support
       
  6272 +
       
  6273 +commit 9742f91782faef4a15941508a22c408fb7d1d227
       
  6274 +Author: Anthony Green <green@moxielogic.com>
       
  6275 +Date:   Mon Jan 21 07:03:41 2013 -0500
       
  6276 +
       
  6277 +    Mention IBM XL compiler support on AIX.
       
  6278 +
       
  6279 +commit f03eab08248f122ce3b623a18df9e19fae1b6e98
       
  6280 +Author: Anthony Green <green@moxielogic.com>
       
  6281 +Date:   Fri Jan 11 17:14:11 2013 -0500
       
  6282 +
       
  6283 +    Remove obsolete inline test functions
       
  6284 +
       
  6285 +commit 05fbe1faedc7b2580d5f14010d00e9e3cee73951
       
  6286 +Author: Anthony Green <green@moxielogic.com>
       
  6287 +Date:   Fri Jan 11 16:54:40 2013 -0500
       
  6288 +
       
  6289 +    xlc compiler support
       
  6290 +
       
  6291 +commit 0b4986a7889ed1864674192228f1162c1b5770a8
       
  6292 +Author: Anthony Green <green@moxielogic.com>
       
  6293 +Date:   Fri Jan 11 11:19:52 2013 -0500
       
  6294 +
       
  6295 +    [travis] install dejagnu with sudo
       
  6296 +
       
  6297 +commit 3c337eef51ab9a4993fc875bfa26289dd6a08881
       
  6298 +Author: Anthony Green <green@moxielogic.com>
       
  6299 +Date:   Fri Jan 11 11:18:14 2013 -0500
       
  6300 +
       
  6301 +    [travis] install dejagnu
       
  6302 +
       
  6303 +commit 90720962ce1baf9fc35d1bde1738102bcd5bd5ed
       
  6304 +Author: Anthony Green <green@moxielogic.com>
       
  6305 +Date:   Fri Jan 11 10:57:30 2013 -0500
       
  6306 +
       
  6307 +    Add first travis config file
       
  6308 +
       
  6309 +commit bff052d9cd5be41ba9e47c76114054af487d3c30
       
  6310 +Author: Anthony Green <green@moxielogic.com>
       
  6311 +Date:   Fri Jan 11 10:24:32 2013 -0500
       
  6312 +
       
  6313 +    32-bit x86 fix and more
       
  6314 +
       
  6315 +commit cd41aeab6176f839167955c016ecc19f65f75df3
       
  6316 +Author: Anthony Green <green@moxielogic.com>
       
  6317 +Date:   Thu Jan 10 17:25:45 2013 -0500
       
  6318 +
       
  6319 +    Add compiler column to table
       
  6320 +
       
  6321 +commit 8bf987d4df7c4d21435b9211f6cc86abf5904b42
       
  6322 +Author: Anthony Green <green@moxielogic.com>
       
  6323 +Date:   Thu Jan 10 17:24:51 2013 -0500
       
  6324 +
       
  6325 +    Fix for sunpro compiler on Solaris
       
  6326 +
       
  6327 +commit 3ee74fd6dc8ccd32b608bbff73526838fc34f70b
       
  6328 +Author: Anthony Green <green@moxielogic.com>
       
  6329 +Date:   Thu Jan 10 17:15:03 2013 -0500
       
  6330 +
       
  6331 +    Update documentation version.
       
  6332 +
       
  6333 +commit 13e2d7b92557a9511a0414df82bf2df3edc55cba
       
  6334 +Author: Anthony Green <green@moxielogic.com>
       
  6335 +Date:   Thu Jan 10 10:52:02 2013 -0500
       
  6336 +
       
  6337 +    Handle both 32 and 64-bit x86 builds regardless of target triple
       
  6338 +
       
  6339 +commit 5141543000fc86a3d49a907a2313713ee79e504d
       
  6340 +Author: Anthony Green <green@moxielogic.com>
       
  6341 +Date:   Thu Jan 10 07:35:53 2013 -0500
       
  6342 +
       
  6343 +    Don't run EH tests with non-GNU compiler
       
  6344 +
       
  6345 +commit 56ba8d86f47937a0afb81a2b9e77c9d235d9db45
       
  6346 +Author: Anthony Green <green@moxielogic.com>
       
  6347 +Date:   Thu Jan 10 07:25:10 2013 -0500
       
  6348 +
       
  6349 +    Don't use warning checking macro with sun compiler
       
  6350 +
       
  6351 +commit 6a028caec1b2c7904feb4c4f9cb7e1125e1d1b60
       
  6352 +Author: Anthony Green <green@moxielogic.com>
       
  6353 +Date:   Thu Jan 10 01:19:43 2013 -0500
       
  6354 +
       
  6355 +    Don't use GCCisms to define types when
       
  6356 +    +       building with the SUNPRO compiler.
       
  6357 +
       
  6358 +commit 2d9b3939751b3ef9739049509d353ade10b32a8f
       
  6359 +Author: Anthony Green <green@moxielogic.com>
       
  6360 +Date:   Wed Jan 9 21:14:54 2013 -0500
       
  6361 +
       
  6362 +    Fix for closures with sunpro compiler
       
  6363 +
       
  6364 +commit 8308984e479e3274a36e98e8272b5adbb6b774c2
       
  6365 +Author: Anthony Green <green@moxielogic.com>
       
  6366 +Date:   Tue Jan 8 15:14:21 2013 -0500
       
  6367 +
       
  6368 +    Make sure we're running dejagnu tests with the right compiler.
       
  6369 +
       
  6370 +commit f26c7ca67147450db2fe25ea932944e6cf145d5c
       
  6371 +Author: Anthony Green <green@moxielogic.com>
       
  6372 +Date:   Tue Jan 8 14:47:05 2013 -0500
       
  6373 +
       
  6374 +    Make compiler options in dejagnu runs compiler specific
       
  6375 +
       
  6376 +commit 74c776e21907fc2e59257c021f23077f8b7966cb
       
  6377 +Author: Anthony Green <green@moxielogic.com>
       
  6378 +Date:   Tue Jan 8 12:25:54 2013 -0500
       
  6379 +
       
  6380 +    Switch x86 Solaris to X86 from X86_64
       
  6381 +
       
  6382 +commit 8962c8c8d06803e310bac0ffc8e84ea15daeff3f
       
  6383 +Author: Anthony Green <green@moxielogic.com>
       
  6384 +Date:   Tue Jan 8 12:22:24 2013 -0500
       
  6385 +
       
  6386 +    Fix read-only eh_frame test
       
  6387 +
       
  6388 +commit 35ddb69c2b49746d940e919ca226ecc1be94f14a
       
  6389 +Author: Anthony Green <green@moxielogic.com>
       
  6390 +Date:   Tue Jan 8 07:53:37 2013 -0500
       
  6391 +
       
  6392 +    Only emit DWARF unwind info when building with GCC
       
  6393 +
       
  6394 +commit f7879bc3f3a8d0bbfcc38771732c160a58ba9cd8
       
  6395 +Author: Anthony Green <green@moxielogic.com>
       
  6396 +Date:   Tue Jan 8 07:30:28 2013 -0500
       
  6397 +
       
  6398 +    Testsuite fix for Solaris vendor compiler
       
  6399 +
       
  6400 +commit 67cea90fc0897021466fd102671019d30db474cd
       
  6401 +Author: Anthony Green <green@moxielogic.com>
       
  6402 +Date:   Mon Jan 7 06:30:24 2013 -0500
       
  6403 +
       
  6404 +    mend
       
  6405 +
       
  6406 +commit 0de3277b18cf54be3b81d509b9be9b47d9bc1e82
       
  6407 +Author: Thorsten Glaser <tg@mirbsd.de>
       
  6408 +Date:   Mon Dec 3 00:02:31 2012 +0000
       
  6409 +
       
  6410 +    Testsuite fixes (was Re: [PATCH] Fix libffi on m68k-linux-gnu, completely)
       
  6411 +    
       
  6412 +    Dixi quod…
       
  6413 +    
       
  6414 +    >although I believe some 3.0.11 checks to be broken:
       
  6415 +    
       
  6416 +    And indeed, with a few minor changes on top of git master,
       
  6417 +    I still get a full run of PASS plus one XPASS on amd64-linux!
       
  6418 +    
       
  6419 +    With the other patches (from this message’s parent) and
       
  6420 +    these applied, I get a full PASS on m68k-linux as well.
       
  6421 +    
       
  6422 +    So, please git am these three diffs ☺
       
  6423 +    
       
  6424 +    bye,
       
  6425 +    //mirabilos
       
  6426 +    --
       
  6427 +    FWIW, I'm quite impressed with mksh interactively. I thought it was much
       
  6428 +    *much* more bare bones. But it turns out it beats the living hell out of
       
  6429 +    ksh93 in that respect. I'd even consider it for my daily use if I hadn't
       
  6430 +    wasted half my life on my zsh setup. :-) -- Frank Terbeck in #!/bin/mksh
       
  6431 +    From 5cb15a3bad1f0fb360520dd48bfc938c821cdcca Mon Sep 17 00:00:00 2001
       
  6432 +    From: Thorsten Glaser <tg@mirbsd.org>
       
  6433 +    Date: Sun, 2 Dec 2012 23:20:56 +0000
       
  6434 +    Subject: [PATCH 1/2] Fix tests writing to a closure retval via pointer casts
       
  6435 +    
       
  6436 +    As explained in <Pine.BSM.4.64L.1212022014490.23442@herc.mirbsd.org>
       
  6437 +    all other tests that do the same cast to an ffi_arg pointer instead.
       
  6438 +    
       
  6439 +    PASS on amd64-linux (Xen domU) and m68k-linux (ARAnyM)
       
  6440 +    
       
  6441 +    Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
       
  6442 +
       
  6443 +commit 8f4772f383abd71cfa141c8a70ba11c1aa4ebe2c
       
  6444 +Author: Anthony Green <green@moxielogic.com>
       
  6445 +Date:   Mon Jan 7 06:14:53 2013 -0500
       
  6446 +
       
  6447 +    m68k fixes for signed 8 and 16-bit calls.
       
  6448 +
       
  6449 +commit ea7f8440d58afbebb181e295ff564fdf3d6590a0
       
  6450 +Author: Anthony Green <green@moxielogic.com>
       
  6451 +Date:   Fri Jan 4 09:09:32 2013 -0500
       
  6452 +
       
  6453 +    remove gcc-ism
       
  6454 +
       
  6455 +commit f06c0f10377ac04eeba5e632dbe5c62c629df4e6
       
  6456 +Author: Anthony Green <green@moxielogic.com>
       
  6457 +Date:   Wed Jan 2 09:39:17 2013 -0500
       
  6458 +
       
  6459 +    Add missing ChangeLog entry and generated files.
       
  6460 +
       
  6461 +commit 1f8675d4c101d19d67ca0a55ff2ba973349558ad
       
  6462 +Merge: 335f419 f6b58d2
       
  6463 +Author: Anthony Green <green@moxielogic.com>
       
  6464 +Date:   Wed Jan 2 06:34:38 2013 -0800
       
  6465 +
       
  6466 +    Merge pull request #26 from rofl0r/master
       
  6467 +    
       
  6468 +    fix build error on ppc when long double == double
       
  6469 +
       
  6470 +commit 335f419a86090cda9f215d149572f9481c3ad034
       
  6471 +Merge: 53236d5 6d6f711
       
  6472 +Author: Anthony Green <green@moxielogic.com>
       
  6473 +Date:   Wed Jan 2 06:30:03 2013 -0800
       
  6474 +
       
  6475 +    Merge pull request #23 from rurban/master
       
  6476 +    
       
  6477 +    cygwin/mingw shared libs need libtool LDFLAGS = -no-undefined
       
  6478 +
       
  6479 +commit 53236d5061034cc0a7f4647fc1bd05ba1aeb3d2a
       
  6480 +Author: Anthony Green <green@moxielogic.com>
       
  6481 +Date:   Wed Jan 2 09:24:55 2013 -0500
       
  6482 +
       
  6483 +    Regenerate files
       
  6484 +
       
  6485 +commit 72222ca3fbe560e13c8dc89ca441b28b7cc74daf
       
  6486 +Author: Anthony Green <green@moxielogic.com>
       
  6487 +Date:   Wed Jan 2 09:06:38 2013 -0500
       
  6488 +
       
  6489 +    Update texinfo.tex
       
  6490 +
       
  6491 +commit 1e326c95431fc9896422fa36659f3e833852579c
       
  6492 +Author: Anthony Green <green@moxielogic.com>
       
  6493 +Date:   Wed Jan 2 09:05:02 2013 -0500
       
  6494 +
       
  6495 +    Update config.guess and config.sub
       
  6496 +
       
  6497 +commit cb6671f5b8a9596ff968c6b6c304f70adf71b368
       
  6498 +Author: Anthony Green <green@moxielogic.com>
       
  6499 +Date:   Wed Jan 2 08:56:07 2013 -0500
       
  6500 +
       
  6501 +    Missing .gitignore changes for xcode support
       
  6502 +
       
  6503 +commit ebbe77966855395a2a47ed2c09a38f93eb0481cf
       
  6504 +Author: Anthony Green <green@moxielogic.com>
       
  6505 +Date:   Wed Jan 2 08:54:05 2013 -0500
       
  6506 +
       
  6507 +    missed x32 libtool patch.
       
  6508 +
       
  6509 +commit 4394096da0aca0dd422b479a043c18b4f05c5770
       
  6510 +Author: Anthony Green <green@moxielogic.com>
       
  6511 +Date:   Wed Jan 2 08:51:35 2013 -0500
       
  6512 +
       
  6513 +    missed trampoline_table patch. Move to GCC.
       
  6514 +
       
  6515 +commit ed7a59c3ff7c84bd95c374a5aff21599f705e6dc
       
  6516 +Author: Anthony Green <green@moxielogic.com>
       
  6517 +Date:   Wed Jan 2 08:48:01 2013 -0500
       
  6518 +
       
  6519 +    Windows symbol export fix.  Move to GCC.
       
  6520 +
       
  6521 +commit ccee09a4ff843b11c7d8b6819776f57d187305c7
       
  6522 +Author: Anthony Green <green@moxielogic.com>
       
  6523 +Date:   Wed Jan 2 08:41:55 2013 -0500
       
  6524 +
       
  6525 +    +2012-03-21  Peter Rosin  <peda@lysator.liu.se>
       
  6526 +    +
       
  6527 +    +       * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*]
       
  6528 +    +       (set_ld_library_path_env_vars): Add the library search dir to PATH
       
  6529 +    +       (and save PATH for later).
       
  6530 +    +       (restore_ld_library_path_env_vars): Restore PATH.
       
  6531 +
       
  6532 +commit 089dbce7cc0889eb26444d89ae062c73c69f26f0
       
  6533 +Author: Anthony Green <green@moxielogic.com>
       
  6534 +Date:   Wed Jan 2 08:37:35 2013 -0500
       
  6535 +
       
  6536 +    med
       
  6537 +
       
  6538 +commit 980a334c42b4b0eff32e55929ec6727d1326b05d
       
  6539 +Author: Anthony Green <green@moxielogic.com>
       
  6540 +Date:   Wed Jan 2 07:36:42 2013 -0500
       
  6541 +
       
  6542 +    Test GCC update
       
  6543 +
       
  6544 +commit 8bad679ade5000e57cdc9cacde22e8b99840930f
       
  6545 +Author: Anthony Green <green@moxielogic.com>
       
  6546 +Date:   Wed Jan 2 08:28:35 2013 -0500
       
  6547 +
       
  6548 +    New stand-alone patch
       
  6549 +
       
  6550 +commit 981c32ee115e9f0d6546a74592875e138222a9d1
       
  6551 +Author: Anthony Green <green@moxielogic.com>
       
  6552 +Date:   Wed Jan 2 07:34:03 2013 -0500
       
  6553 +
       
  6554 +    Merge with GCC.  Eliminate quilt bits.
       
  6555 +
       
  6556 +commit 61a054929517fb80c437ba71c91f3e20cfff581a
       
  6557 +Author: Anthony Green <green@moxielogic.com>
       
  6558 +Date:   Wed Nov 28 06:07:41 2012 -0500
       
  6559 +
       
  6560 +    Refresh config.guess and config.sub
       
  6561 +
       
  6562 +commit f6b58d2bdc0a24ce94dedce59802f091979df265
       
  6563 +Author: rofl0r <retnyg@gmx.net>
       
  6564 +Date:   Thu Nov 22 16:26:21 2012 +0100
       
  6565 +
       
  6566 +    fix build on ppc when long double == double
       
  6567 +
       
  6568 +commit 69da33a0761aeac73f9e9646269da61c906d6020
       
  6569 +Author: Anthony Green <green@moxielogic.com>
       
  6570 +Date:   Mon Nov 12 15:25:47 2012 -0500
       
  6571 +
       
  6572 +    Pull in config.sub for aarch64 support and more
       
  6573 +
       
  6574 +commit f680b598b7bdde325ac9349e8c35151c228bf2df
       
  6575 +Author: Anthony Green <green@moxielogic.com>
       
  6576 +Date:   Tue Nov 6 16:00:40 2012 -0500
       
  6577 +
       
  6578 +    Add missing aarch64 configury bits
       
  6579 +
       
  6580 +commit dfadfb19853c57c8623c436d0ef2bdafab24b433
       
  6581 +Author: Anthony Green <green@moxielogic.com>
       
  6582 +Date:   Wed Oct 31 06:46:41 2012 -0400
       
  6583 +
       
  6584 +    Rebase for ppc64 fix
       
  6585 +
       
  6586 +commit e944b8c7eb1e2eeb9c0f3b9742b4d7f476860ce1
       
  6587 +Author: Anthony Green <green@moxielogic.com>
       
  6588 +Date:   Tue Oct 30 14:06:09 2012 -0400
       
  6589 +
       
  6590 +    Add PaX work-around
       
  6591 +
       
  6592 +commit 9ccd51be1fdeb99f8b4f42f905166c2abbba8ac0
       
  6593 +Merge: f342996 fa5d747
       
  6594 +Author: Anthony Green <green@moxielogic.com>
       
  6595 +Date:   Tue Oct 30 13:37:37 2012 -0400
       
  6596 +
       
  6597 +    Fix commit conflicts
       
  6598 +
       
  6599 +commit f342996cb50eb23b868afcff5ac0cdbb6b505d63
       
  6600 +Author: Anthony Green <green@moxielogic.com>
       
  6601 +Date:   Tue Oct 30 07:42:27 2012 -0400
       
  6602 +
       
  6603 +    Darwin12 fix
       
  6604 +
       
  6605 +commit 58e8b66f70cef2e3c9b0e5a707b45d634cbbf5d9
       
  6606 +Author: Anthony Green <green@moxielogic.com>
       
  6607 +Date:   Tue Oct 30 07:07:19 2012 -0400
       
  6608 +
       
  6609 +    AArch64 port
       
  6610 +
       
  6611 +commit fa5d747905472571fd472c07d4726017624f66b3
       
  6612 +Author: Anthony Green <green@moxielogic.com>
       
  6613 +Date:   Tue Oct 30 07:07:19 2012 -0400
       
  6614 +
       
  6615 +    AArch64 port
       
  6616 +
       
  6617 +commit 6993a6686f43f2313b18142c1e96189a27db2aa3
       
  6618 +Author: Anthony Green <green@moxielogic.com>
       
  6619 +Date:   Tue Oct 30 06:59:32 2012 -0400
       
  6620 +
       
  6621 +    Fix autoconf macros
       
  6622 +
       
  6623 +commit 70084e70ddb13b29dd05c751b1904de206bbe790
       
  6624 +Author: Anthony Green <green@moxielogic.com>
       
  6625 +Date:   Fri Oct 12 23:55:06 2012 -0400
       
  6626 +
       
  6627 +    Update Tile* port info
       
  6628 +
       
  6629 +commit 9c00a3f6742d61404b31268cc773e7130ff43331
       
  6630 +Author: Anthony Green <green@moxielogic.com>
       
  6631 +Date:   Fri Oct 12 16:46:06 2012 -0400
       
  6632 +
       
  6633 +    TILE-Gx/TILEPro support
       
  6634 +
       
  6635 +commit 048d2f41c3a6664b4b64bf21e804686662da4160
       
  6636 +Author: Anthony Green <green@moxielogic.com>
       
  6637 +Date:   Thu Oct 11 10:55:25 2012 -0400
       
  6638 +
       
  6639 +    Rebase
       
  6640 +
       
  6641 +commit 6d6f71108064f5069edd7bf771059d3b82640135
       
  6642 +Author: Reini Urban <rurban@cpanel.net>
       
  6643 +Date:   Sat Jul 7 12:42:00 2012 -0500
       
  6644 +
       
  6645 +    cygwin/mingw shared libs need libtool LDFLAGS = -no-undefined
       
  6646 +    
       
  6647 +    otherwise only static libs are created.
       
  6648 +
       
  6649 +commit d330f19292da8f39a78a9e2b0ba08df8094e3bc5
       
  6650 +Author: Nicolas Lelong <rotoglup>
       
  6651 +Date:   Sat May 5 09:37:02 2012 -0400
       
  6652 +
       
  6653 +    iOS build fixes.
       
  6654 +
       
  6655 +commit 09b23cfc1d6d15361eee18818851fd3cacb26559
       
  6656 +Author: Anthony Green <green@moxielogic.com>
       
  6657 +Date:   Fri Apr 27 08:29:48 2012 -0400
       
  6658 +
       
  6659 +    Update README with Blackfin/uClinux support
       
  6660 +
       
  6661 +commit 213ed15c70e72d666154c08e2b41dae3f61f20d3
       
  6662 +Author: Anthony Green <green@moxielogic.com>
       
  6663 +Date:   Fri Apr 27 01:34:15 2012 -0400
       
  6664 +
       
  6665 +    Add blackfin supprt from Alexandre Keunecke.
       
  6666 +
       
  6667 +commit ff3d76fd427382ce7d2b2ed54acdd0bce470ca4f
       
  6668 +Author: Anthony Green <green@moxielogic.com>
       
  6669 +Date:   Wed Apr 11 23:16:48 2012 -0400
       
  6670 +
       
  6671 +    3.0.11
       
  6672 +
       
  6673 +commit 7e0a412c4fd9cbe77b467a9bf86f56aea62632c3
       
  6674 +Author: Anthony Green <green@moxielogic.com>
       
  6675 +Date:   Wed Apr 11 22:47:44 2012 -0400
       
  6676 +
       
  6677 +    Update files to ship
       
  6678 +
       
  6679 +commit 39e6a5860416f7bad992149817e1da1ba7c460d4
       
  6680 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  6681 +Date:   Wed Apr 11 22:39:46 2012 -0400
       
  6682 +
       
  6683 +    More mac/ios build improvements
       
  6684 +
       
  6685 +commit 853cc722a16f8d1254573ef3bb73c7b8f3d8a110
       
  6686 +Author: Anthony Green <green@moxielogic.com>
       
  6687 +Date:   Tue Apr 10 06:33:33 2012 -0400
       
  6688 +
       
  6689 +    Fix typo for darwin targets
       
  6690 +
       
  6691 +commit 3f5023068cda07a3dd6dacbaa875a5b5fc96d4bb
       
  6692 +Author: Anthony Green <green@moxielogic.com>
       
  6693 +Date:   Fri Apr 6 20:34:51 2012 -0400
       
  6694 +
       
  6695 +    mend
       
  6696 +
       
  6697 +commit ebb8e8945681ce0af7a5c47a980287e8ece84b84
       
  6698 +Author: Mike Lewis <mikelikespie@gmail.com>
       
  6699 +Date:   Fri Apr 6 20:02:08 2012 -0400
       
  6700 +
       
  6701 +    Build iOS library with xcode
       
  6702 +
       
  6703 +commit a098b44f4c592c2192fcdef4fad6108eb3f4301c
       
  6704 +Author: Anthony Green <green@moxielogic.com>
       
  6705 +Date:   Fri Apr 6 17:04:35 2012 -0400
       
  6706 +
       
  6707 +    Reapply missing testsuite changes for arm
       
  6708 +
       
  6709 +commit 10d1e51393f08c14045db85843208f44f9f1e9ba
       
  6710 +Author: Anthony Green <green@moxielogic.com>
       
  6711 +Date:   Fri Apr 6 11:57:14 2012 -0400
       
  6712 +
       
  6713 +    Update to rc4.  Upgrade autoconf version.
       
  6714 +
       
  6715 +commit 9bcc884276dc0a807b2605e510b11b1740dd9aa2
       
  6716 +Author: Anthony Green <green@moxielogic.com>
       
  6717 +Date:   Fri Apr 6 11:53:07 2012 -0400
       
  6718 +
       
  6719 +    Fix Linux/x32 reference in README
       
  6720 +
       
  6721 +commit a044a56b1cd2a0924f5ec0d6b5a5089d14fcd1a1
       
  6722 +Author: Anthony Green <green@moxielogic.com>
       
  6723 +Date:   Fri Apr 6 10:39:10 2012 -0400
       
  6724 +
       
  6725 +    Linux/x32 libtool fix
       
  6726 +
       
  6727 +commit 59bb61a36661b972e8443531d3b7bc736e131a4b
       
  6728 +Author: Anthony Green <green@moxielogic.com>
       
  6729 +Date:   Fri Apr 6 08:26:14 2012 -0400
       
  6730 +
       
  6731 +    Update libtool version, README, tests dists
       
  6732 +
       
  6733 +commit f2981454cbe25cf9411b710f46c5f5552003a123
       
  6734 +Author: Anthony Green <green@moxielogic.com>
       
  6735 +Date:   Thu Apr 5 15:45:19 2012 -0400
       
  6736 +
       
  6737 +    Revert debug code changes
       
  6738 +
       
  6739 +commit 39dccddb606f6fdb8dcb177d416e884041da6e30
       
  6740 +Author: Zachary Waldowski <zwaldowski@gmail.com>
       
  6741 +Date:   Thu Apr 5 12:32:41 2012 -0400
       
  6742 +
       
  6743 +    Fix building with Clang for Darwin (OS X 10.6+ and iOS
       
  6744 +     4.0+)
       
  6745 +
       
  6746 +commit 3afaa9a34a81a305227ae8cf4f12b9d0484d055e
       
  6747 +Author: Peter Rosin <peda@lysator.liu.se>
       
  6748 +Date:   Tue Apr 3 07:40:31 2012 -0400
       
  6749 +
       
  6750 +    Fix return_uc.c test case on windows.
       
  6751 +
       
  6752 +commit 65f40c35a2873d8328359ec4512bd0736dbe32c7
       
  6753 +Author: Anthony Green <green@moxielogic.com>
       
  6754 +Date:   Tue Apr 3 07:35:59 2012 -0400
       
  6755 +
       
  6756 +    Repair ppc build regression.
       
  6757 +
       
  6758 +commit 0a1ab12a8d15caa894116a82249551f23ef65612
       
  6759 +Author: Peter Rosin <peda@lysator.liu.se>
       
  6760 +Date:   Fri Mar 30 08:14:08 2012 -0400
       
  6761 +
       
  6762 +    Various MSVC-related changes.
       
  6763 +
       
  6764 +commit e1539266e6c6dde3c99832323586f33f977d1dc0
       
  6765 +Author: Anthony Green <green@moxielogic.com>
       
  6766 +Date:   Fri Mar 30 00:40:18 2012 -0400
       
  6767 +
       
  6768 +    ARM VFP fix for old toolchains
       
  6769 +
       
  6770 +commit 7c5e60b5f47d725036a72162f136272bc407e3a1
       
  6771 +Author: Anthony Green <green@moxielogic.com>
       
  6772 +Date:   Thu Mar 29 08:48:22 2012 -0400
       
  6773 +
       
  6774 +    Rebase on fixed GCC sources
       
  6775 +
       
  6776 +commit e72ed5eeaa9cfb0fdc86f6b3422734177b659f96
       
  6777 +Author: Anthony Green <green@moxielogic.com>
       
  6778 +Date:   Wed Mar 21 09:52:28 2012 -0400
       
  6779 +
       
  6780 +    Fix vararg float test
       
  6781 +
       
  6782 +commit bd78c9c3311244dd5f877c915b0dff91621dd253
       
  6783 +Author: Anthony Green <green@moxielogic.com>
       
  6784 +Date:   Wed Mar 21 08:09:30 2012 -0400
       
  6785 +
       
  6786 +    More cygwin fixes
       
  6787 +
       
  6788 +commit 84d3253f86dad6b4f261231935675d35fd964b05
       
  6789 +Author: Anthony Green <green@moxielogic.com>
       
  6790 +Date:   Mon Mar 19 23:07:35 2012 -0400
       
  6791 +
       
  6792 +    Rebase post GCC merge
       
  6793 +
       
  6794 +commit 964c5b93f80dcaacf73056b7d15a4d2b4b7a217c
       
  6795 +Author: Anthony Green <green@moxielogic.com>
       
  6796 +Date:   Sat Mar 3 14:46:20 2012 -0500
       
  6797 +
       
  6798 +    abi check fixes and Linux/x32 support
       
  6799 +
       
  6800 +commit 6c194233a5f6f1d274669afc5924a9e1f69d4876
       
  6801 +Author: Anthony Green <green@moxielogic.com>
       
  6802 +Date:   Sat Mar 3 14:17:54 2012 -0500
       
  6803 +
       
  6804 +    Add -no-undefined for both 32- and 64-bit x86
       
  6805 +    windows-like hosts.
       
  6806 +
       
  6807 +commit 8360bf1cd0aba8db5582266da70467de7e89a57a
       
  6808 +Author: Anthony Green <green@moxielogic.com>
       
  6809 +Date:   Thu Feb 23 07:01:13 2012 -0500
       
  6810 +
       
  6811 +    Ensure that users don't include ffitarget.h directly
       
  6812 +
       
  6813 +commit d578b89619cf3d2baff027b203619dc307fc12e3
       
  6814 +Author: Anthony Green <green@moxielogic.com>
       
  6815 +Date:   Wed Feb 15 00:18:18 2012 -0500
       
  6816 +
       
  6817 +    Fix ABI check regression
       
  6818 +
       
  6819 +commit dee20f8e45c486f5018f31e09bb362992aa498c3
       
  6820 +Author: Anthony Green <green@moxielogic.com>
       
  6821 +Date:   Fri Feb 10 13:06:46 2012 -0500
       
  6822 +
       
  6823 +    Rebased from gcc
       
  6824 +
       
  6825 +commit 4130e1972d001143e5e9f3c6b65f2a6f9524169e
       
  6826 +Author: Anthony Green <green@moxielogic.com>
       
  6827 +Date:   Fri Feb 3 13:18:27 2012 -0600
       
  6828 +
       
  6829 +    Refresh autoconf-archive m4 scripts
       
  6830 +
       
  6831 +commit 1ff9c604bb214b5a305064af1049577ef783730a
       
  6832 +Author: Anthony Green <green@moxielogic.com>
       
  6833 +Date:   Wed Feb 1 16:34:30 2012 -0600
       
  6834 +
       
  6835 +    Rebase from GCC
       
  6836 +
       
  6837 +commit 211060eb8f714af0e935430efa6bb45e8e3ffc5d
       
  6838 +Author: Anthony Green <green@moxielogic.com>
       
  6839 +Date:   Mon Jan 23 14:24:01 2012 -0500
       
  6840 +
       
  6841 +    Alpha fix
       
  6842 +
       
  6843 +commit 78d9c638ba0de6edfbc603fd65d19c6562663248
       
  6844 +Author: Anthony Green <green@moxielogic.com>
       
  6845 +Date:   Mon Jan 23 14:17:24 2012 -0500
       
  6846 +
       
  6847 +    mend
       
  6848 +
       
  6849 +commit afaf3381604bd81803d8a5f3bf4d462299f1aac3
       
  6850 +Author: Anthony Green <green@moxielogic.com>
       
  6851 +Date:   Mon Jan 23 14:17:13 2012 -0500
       
  6852 +
       
  6853 +    mend
       
  6854 +
       
  6855 +commit 9e9c4aeb77de5608d602109f22100c1c0c79faad
       
  6856 +Author: Anthony Green <green@moxielogic.com>
       
  6857 +Date:   Mon Jan 23 14:11:23 2012 -0500
       
  6858 +
       
  6859 +    Add Amiga support
       
  6860 +
       
  6861 +commit 8efc0b1f4027d5a3cbf205e55d422d94e60f3226
       
  6862 +Author: Anthony Green <green@moxielogic.com>
       
  6863 +Date:   Mon Jan 23 13:47:38 2012 -0500
       
  6864 +
       
  6865 +    Unlikely fixes
       
  6866 +
       
  6867 +commit 1df51398ae183dc208ba4599ee867278b04d13d3
       
  6868 +Author: Anthony Green <green@moxielogic.com>
       
  6869 +Date:   Mon Jan 23 13:43:59 2012 -0500
       
  6870 +
       
  6871 +    mend
       
  6872 +
       
  6873 +commit cd2277cc796b96b149cd284ae85326529fe7fb9c
       
  6874 +Author: Anthony Green <green@moxielogic.com>
       
  6875 +Date:   Mon Jan 23 13:43:38 2012 -0500
       
  6876 +
       
  6877 +    mend
       
  6878 +
       
  6879 +commit 164e6fe04b189746c8bd5810c6e3e919770bb9d4
       
  6880 +Author: Anthony Green <green@moxielogic.com>
       
  6881 +Date:   Mon Jan 23 12:41:06 2012 -0500
       
  6882 +
       
  6883 +    m68k fixes
       
  6884 +
       
  6885 +commit c365ee7577bef00cb3c2c0b5224147aea04138d8
       
  6886 +Author: Anthony Green <green@moxielogic.com>
       
  6887 +Date:   Mon Jan 23 11:13:18 2012 -0500
       
  6888 +
       
  6889 +    Refresh
       
  6890 +
       
  6891 +commit f22c38bbd93bcc0c04bf26c3e414556b3177c385
       
  6892 +Author: Anthony Green <green@moxielogic.com>
       
  6893 +Date:   Fri Nov 18 15:13:41 2011 -0500
       
  6894 +
       
  6895 +    Update variadic patch
       
  6896 +
       
  6897 +commit 03e9ee321a3c208f88d2432587ce40b2bb2430ba
       
  6898 +Author: Anthony Green <green@moxielogic.com>
       
  6899 +Date:   Fri Nov 18 15:13:00 2011 -0500
       
  6900 +
       
  6901 +    Fix cls_double_va.c and update docs
       
  6902 +
       
  6903 +commit 95f31151ec792809cfb80d385350f9f56d95aa25
       
  6904 +Author: Anthony Green <green@moxielogic.com>
       
  6905 +Date:   Sat Nov 12 23:46:05 2011 -0500
       
  6906 +
       
  6907 +    Rerun automake
       
  6908 +
       
  6909 +commit 198ed1ef85cf18342627f8d44bc3f12c9975a49d
       
  6910 +Author: Anthony Green <green@moxielogic.com>
       
  6911 +Date:   Sat Nov 12 23:45:20 2011 -0500
       
  6912 +
       
  6913 +    Update version number
       
  6914 +
       
  6915 +commit 4f17e1f142e805b13959ba2594ee735eae439f4e
       
  6916 +Author: Anthony Green <green@moxielogic.com>
       
  6917 +Date:   Sat Nov 12 17:22:24 2011 -0500
       
  6918 +
       
  6919 +    Fix last patch
       
  6920 +
       
  6921 +commit ff9454da44859716a5bd4eaa344499288c79694f
       
  6922 +Author: Anthony Green <green@moxielogic.com>
       
  6923 +Date:   Sat Nov 12 17:18:51 2011 -0500
       
  6924 +
       
  6925 +    Add David Gilbert's variadic function call support
       
  6926 +
       
  6927 +commit ea14ae85e8f54ff046b7fb8a9cfe349475272044
       
  6928 +Author: Anthony Green <green@moxielogic.com>
       
  6929 +Date:   Sat Nov 12 16:36:59 2011 -0500
       
  6930 +
       
  6931 +    clean up
       
  6932 +
       
  6933 +commit 52891f8a93f9b8de801cca4cf05639422dc9773e
       
  6934 +Author: Anthony Green <green@moxielogic.com>
       
  6935 +Date:   Sat Nov 12 16:35:55 2011 -0500
       
  6936 +
       
  6937 +    Add powerpc soft float support
       
  6938 +
       
  6939 +commit c8f1bde8e2566c5a87474b4d08aa934d6d28ee75
       
  6940 +Author: Anthony Green <green@moxielogic.com>
       
  6941 +Date:   Sat Nov 12 16:21:02 2011 -0500
       
  6942 +
       
  6943 +    Remove junk file
       
  6944 +
       
  6945 +commit 6a6e7f862f3cc677e19131587caa619e7f9c7ffd
       
  6946 +Author: Anthony Green <green@moxielogic.com>
       
  6947 +Date:   Sat Nov 12 16:20:42 2011 -0500
       
  6948 +
       
  6949 +    Fix kfreebsd
       
  6950 +
       
  6951 +commit d52fbed05ccbdee9ed8b9c911cbb4f85b0ff0f2a
       
  6952 +Author: Anthony Green <green@moxielogic.com>
       
  6953 +Date:   Sat Nov 12 16:13:41 2011 -0500
       
  6954 +
       
  6955 +    Add missing ChangeLog entry
       
  6956 +
       
  6957 +commit 322052ce65c4fdac85bedc24726fd0e0094ba521
       
  6958 +Author: Anthony Green <green@moxielogic.com>
       
  6959 +Date:   Sat Nov 12 16:11:49 2011 -0500
       
  6960 +
       
  6961 +    Fix arm wince alignment issue
       
  6962 +
       
  6963 +commit af18df2bc2f52df81e7b5c619bd86db8489dc873
       
  6964 +Author: Anthony Green <green@moxielogic.com>
       
  6965 +Date:   Sat Nov 12 15:52:08 2011 -0500
       
  6966 +
       
  6967 +    Remove use of ppc string instructions
       
  6968 +
       
  6969 +commit 236c9391321f83ad40daf03f40c35c9ebc1da6b3
       
  6970 +Author: Anthony Green <green@moxielogic.com>
       
  6971 +Date:   Sat Nov 12 07:37:40 2011 -0500
       
  6972 +
       
  6973 +    Fix darwin11 build problem
       
  6974 +
       
  6975 +commit c411f140f305ebb00d33c92b7cb2742bcd241b6a
       
  6976 +Author: Anthony Green <green@moxielogic.com>
       
  6977 +Date:   Sat Nov 12 07:32:36 2011 -0500
       
  6978 +
       
  6979 +    Fix ax_enable_builddir macro on BSD systems
       
  6980 +
       
  6981 +commit 3d56106b07735abef6ae9f032e94f560a0ed2f30
       
  6982 +Author: Anthony Green <green@moxielogic.com>
       
  6983 +Date:   Sat Nov 12 07:20:24 2011 -0500
       
  6984 +
       
  6985 +    Rebase
       
  6986 +
       
  6987 +commit 8c01954c50bf8ef2e00a3db166060a1b8f83a20d
       
  6988 +Author: Anthony Green <green@moxielogic.com>
       
  6989 +Date:   Tue Sep 6 14:26:32 2011 -0400
       
  6990 +
       
  6991 +    Build assembly files with debug info
       
  6992 +
       
  6993 +commit fed646a2078969f4ce89c29107f1e72e03f4a977
       
  6994 +Author: Anthony Green <green@moxielogic.com>
       
  6995 +Date:   Tue Sep 6 09:50:20 2011 -0400
       
  6996 +
       
  6997 +    Regenerate configury with missing m4 macros
       
  6998 +
       
  6999 +commit d76441cf71216f8f1e62e7ec852a7f4e21371ec8
       
  7000 +Author: Anthony Green <green@moxielogic.com>
       
  7001 +Date:   Wed Aug 24 10:14:23 2011 -0400
       
  7002 +
       
  7003 +    Update list of supported OpenBSD systems
       
  7004 +
       
  7005 +commit ee6696fdf4768ba6dd037fb6dd99435afa13816e
       
  7006 +Author: Anthony Green <green@moxielogic.com>
       
  7007 +Date:   Tue Aug 23 12:30:29 2011 -0400
       
  7008 +
       
  7009 +    3.0.11-rc1. soname bump.
       
  7010 +
       
  7011 +commit c6265c36a91eab8175d0e72db84d8225418f2379
       
  7012 +Author: Anthony Green <green@moxielogic.com>
       
  7013 +Date:   Tue Aug 23 10:31:33 2011 -0400
       
  7014 +
       
  7015 +    Version 3.0.10
       
  7016 +
       
  7017 +commit cc5e41bf32d18a14dbdd653d52eacdbdc934c392
       
  7018 +Author: Anthony Green <green@moxielogic.com>
       
  7019 +Date:   Mon Aug 22 16:34:24 2011 -0400
       
  7020 +
       
  7021 +    Fix use of autoconf macros
       
  7022 +
       
  7023 +commit 049d8386ff52399e69a530b55b9feedc8a2589d2
       
  7024 +Author: Anthony Green <green@moxielogic.com>
       
  7025 +Date:   Mon Aug 22 14:50:10 2011 -0400
       
  7026 +
       
  7027 +    Many new patches
       
  7028 +
       
  7029 +commit 3b7efa4e74f0dcebf70b447391987aedd3473306
       
  7030 +Author: Anthony Green <green@moxielogic.com>
       
  7031 +Date:   Mon Aug 15 13:25:13 2011 -0400
       
  7032 +
       
  7033 +    Revert remove-debug-code patch temporarily (for ARM Fedora release)
       
  7034 +
       
  7035 +commit d992ac54a2a9e7e064ffebcb91e05e7cb86185c7
       
  7036 +Author: Anthony Green <green@gmachine.(none)>
       
  7037 +Date:   Fri Jul 29 17:32:53 2011 -0400
       
  7038 +
       
  7039 +    Refresh from GCC
       
  7040 +
       
  7041 +commit 2d3fb36420e09304220ee6c0652bae5eccdb965d
       
  7042 +Author: Anthony Green <green@moxielogic.com>
       
  7043 +Date:   Wed Mar 30 16:54:42 2011 -0400
       
  7044 +
       
  7045 +    Fix darwin EH
       
  7046 +
       
  7047 +commit 30ff28e1d8cd9ed5319f1fbe9c7cccacc8161fb3
       
  7048 +Author: Anthony Green <green@moxielogic.com>
       
  7049 +Date:   Mon Feb 28 15:36:23 2011 -0500
       
  7050 +
       
  7051 +    Fix permissions
       
  7052 +
       
  7053 +commit 09f8f310f4f53a24289682d3d28f4399d7bafc3b
       
  7054 +Author: Anthony Green <green@moxielogic.com>
       
  7055 +Date:   Mon Feb 28 15:36:07 2011 -0500
       
  7056 +
       
  7057 +    More AIX fixes. rc9.
       
  7058 +
       
  7059 +commit 53d7b165642c220aa5166ba350b490802f359b54
       
  7060 +Merge: 18dd85d 3000dc2
       
  7061 +Author: Anthony Green <green@moxielogic.com>
       
  7062 +Date:   Mon Feb 28 15:23:31 2011 -0500
       
  7063 +
       
  7064 +    Merge branch 'master' of https://github.com/landonf/libffi-ios
       
  7065 +
       
  7066 +commit 18dd85d6cb9f3f3eea2a3b70eb4e150045905c55
       
  7067 +Author: Anthony Green <green@moxielogic.com>
       
  7068 +Date:   Fri Feb 25 16:23:04 2011 -0500
       
  7069 +
       
  7070 +    rc8. fix last patch.
       
  7071 +
       
  7072 +commit 74ee6ea8b42e60d44a3ae8938b1e42a38c1e66b4
       
  7073 +Author: Anthony Green <green@moxielogic.com>
       
  7074 +Date:   Fri Feb 25 15:52:14 2011 -0500
       
  7075 +
       
  7076 +    rc7.  More AIX fixes.
       
  7077 +
       
  7078 +commit 2541679dbd3db0014890f42192dbf8008ab923fa
       
  7079 +Author: Anthony Green <green@moxielogic.com>
       
  7080 +Date:   Fri Feb 25 15:09:13 2011 -0500
       
  7081 +
       
  7082 +    Fix ppc32 bug
       
  7083 +
       
  7084 +commit cbb062cc35c518004f1ab45c847f8ec4f66069ad
       
  7085 +Author: Anthony Green <green@moxielogic.com>
       
  7086 +Date:   Thu Feb 17 20:39:21 2011 -0500
       
  7087 +
       
  7088 +    Another non-GCC configury fix
       
  7089 +
       
  7090 +commit 8cf8878425e9971866fa6b27a3e4914729ad3960
       
  7091 +Author: Anthony Green <green@moxielogic.com>
       
  7092 +Date:   Tue Feb 15 15:19:49 2011 -0500
       
  7093 +
       
  7094 +    Fix ax_cc_maxopt.m4
       
  7095 +
       
  7096 +commit 24b72070c0937f9000744c77a636f07e04786b6a
       
  7097 +Author: Anthony Green <green@moxielogic.com>
       
  7098 +Date:   Mon Feb 14 15:30:57 2011 -0500
       
  7099 +
       
  7100 +    Fix warning and msvcc patches
       
  7101 +
       
  7102 +commit d72c49e556a8c516e97f6722d1be2f1209c21207
       
  7103 +Author: Anthony Green <green@moxielogic.com>
       
  7104 +Date:   Sun Feb 13 11:41:05 2011 -0500
       
  7105 +
       
  7106 +    Add missing msvcc.sh
       
  7107 +
       
  7108 +commit 3000dc237f6017a7445d8404097a4f46b73fdd29
       
  7109 +Merge: 55e4a5a 1fbf9dc
       
  7110 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7111 +Date:   Sun Feb 13 08:55:53 2011 -0500
       
  7112 +
       
  7113 +    Merge remote branch 'upstream/master'
       
  7114 +
       
  7115 +commit 1fbf9dc44feea564e84ad7406d17c5d5906ce0e0
       
  7116 +Author: Anthony Green <green@moxielogic.com>
       
  7117 +Date:   Sun Feb 13 08:06:39 2011 -0500
       
  7118 +
       
  7119 +    Fix bad_abi test. rc5.
       
  7120 +
       
  7121 +commit 90af15ef5c1614b76370c4d13954586fabf9e8e3
       
  7122 +Author: Anthony Green <green@moxielogic.com>
       
  7123 +Date:   Sat Feb 12 12:29:36 2011 -0500
       
  7124 +
       
  7125 +    iOS fixes
       
  7126 +
       
  7127 +commit 55e4a5aa1568558a04aa40f16fc022e459af53e3
       
  7128 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7129 +Date:   Sat Feb 12 12:13:46 2011 -0500
       
  7130 +
       
  7131 +    Add support for building a full armv6/armv7/i386 universal iOS library
       
  7132 +
       
  7133 +commit a0c80f279b8733d001cb5e5c5a3289ecb7a6e56a
       
  7134 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7135 +Date:   Sat Feb 12 11:43:49 2011 -0500
       
  7136 +
       
  7137 +    Update my e-mail address.
       
  7138 +
       
  7139 +commit 8195e0e11df7a53fa474caa9375f73ca1136ed66
       
  7140 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7141 +Date:   Sat Feb 12 11:27:00 2011 -0500
       
  7142 +
       
  7143 +    Fix symbol prefixes on Darwin.
       
  7144 +
       
  7145 +commit 56b3f8cef0f28cefaa0f40fe0cf7c524adef131d
       
  7146 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7147 +Date:   Sat Feb 12 11:14:54 2011 -0500
       
  7148 +
       
  7149 +    Modify the ffi_closure structures to hold table/table entry pointers instead of a code buffer.
       
  7150 +    
       
  7151 +    This re-integrates commit da2773e02ab26cc11a7f.
       
  7152 +
       
  7153 +commit 28a00f61ff3f64c4eb2269ce2aea3d493274469e
       
  7154 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7155 +Date:   Sat Feb 12 11:01:48 2011 -0500
       
  7156 +
       
  7157 +    Apple assembler support; fixed most gas/ELF-isms.
       
  7158 +
       
  7159 +commit 7f2ea33a80bfced5e48ed7292f3b8f057d54ff8f
       
  7160 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7161 +Date:   Sat Feb 12 10:39:18 2011 -0500
       
  7162 +
       
  7163 +    Replace RETLDM macro.
       
  7164 +    
       
  7165 +    The macro is incompatible with Apple's assembler; switch to
       
  7166 +    a simple inline version.
       
  7167 +
       
  7168 +commit 92ff23e77fa586455b427b71f49e1d9502470e6e
       
  7169 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7170 +Date:   Sat Feb 12 10:24:49 2011 -0500
       
  7171 +
       
  7172 +    Switch to the current iOS 4.2 SDK.
       
  7173 +
       
  7174 +commit 58fb8ca2dfb89ad70284bb9678d3d4dbb658c8a7
       
  7175 +Merge: cc3fbd9 71c792f
       
  7176 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7177 +Date:   Sat Feb 12 10:23:19 2011 -0500
       
  7178 +
       
  7179 +    Merge remote branch 'upstream/master'
       
  7180 +
       
  7181 +commit cc3fbd975ce9366d4c40a6ff6c108f664867bd7c
       
  7182 +Merge: e449a43 f6ab3ed
       
  7183 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7184 +Date:   Sat Feb 12 10:21:02 2011 -0500
       
  7185 +
       
  7186 +    Merge branch 'master' of github.com:landonf/libffi-ios
       
  7187 +
       
  7188 +commit e449a43bbe12f8119399928db1ae26adc71dde14
       
  7189 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7190 +Date:   Sat Feb 12 10:20:42 2011 -0500
       
  7191 +
       
  7192 +    Allow specification of the minimum supported iOS version.
       
  7193 +
       
  7194 +commit 71c792f51bcf3e2f334e5ea1fb1a8b667cb3aedb
       
  7195 +Author: Anthony Green <green@moxielogic.com>
       
  7196 +Date:   Sat Feb 12 09:33:11 2011 -0500
       
  7197 +
       
  7198 +    rc4
       
  7199 +
       
  7200 +commit 7c7c9f327299331022f6000603a35f2310dfe308
       
  7201 +Author: Anthony Green <green@moxielogic.com>
       
  7202 +Date:   Sat Feb 12 09:29:29 2011 -0500
       
  7203 +
       
  7204 +    ungccify parts of the build
       
  7205 +
       
  7206 +commit ed62e48b95a0fa60b685f647cb73c9e190eec35c
       
  7207 +Author: Anthony Green <green@moxielogic.com>
       
  7208 +Date:   Fri Feb 11 12:23:58 2011 -0500
       
  7209 +
       
  7210 +    Fix permissions
       
  7211 +
       
  7212 +commit 17d9e9e68ddb1b915a0b9751713033861b598575
       
  7213 +Author: Anthony Green <green@moxielogic.com>
       
  7214 +Date:   Fri Feb 11 12:23:20 2011 -0500
       
  7215 +
       
  7216 +    Use newer autotools.  Only build debug.c when --enable-debug.
       
  7217 +
       
  7218 +commit 6972a4ffda75761eaab7dfbe0fb1516b255e8e0c
       
  7219 +Author: Anthony Green <green@moxielogic.com>
       
  7220 +Date:   Fri Feb 11 07:32:51 2011 -0500
       
  7221 +
       
  7222 +    Fix xlc build on AIX
       
  7223 +
       
  7224 +commit 1833aa0fb9831eb0725b63e35886c0f6d35df480
       
  7225 +Author: Anthony Green <green@moxielogic.com>
       
  7226 +Date:   Fri Feb 11 07:11:04 2011 -0500
       
  7227 +
       
  7228 +    sparc ABI test fix.
       
  7229 +
       
  7230 +commit f1fb139b4e283fffdcf205a903943d5e9d2bb2a2
       
  7231 +Author: Anthony Green <green@moxielogic.com>
       
  7232 +Date:   Wed Feb 9 18:30:02 2011 -0500
       
  7233 +
       
  7234 +    Fix tests
       
  7235 +
       
  7236 +commit 5cb470331d181c84d5d621e88868327a324a5898
       
  7237 +Author: Anthony Green <green@moxielogic.com>
       
  7238 +Date:   Wed Feb 9 15:23:06 2011 -0500
       
  7239 +
       
  7240 +    Fix permissions
       
  7241 +
       
  7242 +commit 269deef6dbbb426695919d3398357fada3bb288c
       
  7243 +Author: Anthony Green <green@moxielogic.com>
       
  7244 +Date:   Wed Feb 9 15:22:23 2011 -0500
       
  7245 +
       
  7246 +    rc3
       
  7247 +
       
  7248 +commit 42695e72504f647444b8e8e9b90bd24f1e3220e1
       
  7249 +Author: Anthony Green <green@moxielogic.com>
       
  7250 +Date:   Wed Feb 9 15:12:35 2011 -0500
       
  7251 +
       
  7252 +    Fix IRIX support
       
  7253 +
       
  7254 +commit a6e56b97f62a3feeb3301c24a2e4cae55e546021
       
  7255 +Author: Anthony Green <green@moxielogic.com>
       
  7256 +Date:   Wed Feb 9 15:00:42 2011 -0500
       
  7257 +
       
  7258 +    Add powerpc64-*-darwin* support
       
  7259 +
       
  7260 +commit 747d6c32d4abb07c10c3a1f93579c3929aaa2487
       
  7261 +Author: Anthony Green <green@moxielogic.com>
       
  7262 +Date:   Wed Feb 9 14:56:23 2011 -0500
       
  7263 +
       
  7264 +    Add Interix support
       
  7265 +
       
  7266 +commit eab6e41cde382aa07de6c011d514a14c0d62eb47
       
  7267 +Author: Anthony Green <green@moxielogic.com>
       
  7268 +Date:   Wed Feb 9 10:15:02 2011 -0500
       
  7269 +
       
  7270 +    Remove README.markdown form libffi-ios
       
  7271 +
       
  7272 +commit 69dbe845f4ee3e6ce8999f17a1e4f2179ef7da89
       
  7273 +Author: Anthony Green <green@moxielogic.com>
       
  7274 +Date:   Wed Feb 9 07:38:43 2011 -0500
       
  7275 +
       
  7276 +    Fix xfails
       
  7277 +
       
  7278 +commit f498318c07b95137fe259d86bdbe15347588b84a
       
  7279 +Author: Anthony Green <green@moxielogic.com>
       
  7280 +Date:   Wed Feb 9 06:26:46 2011 -0500
       
  7281 +
       
  7282 +    Update README for iOS again
       
  7283 +
       
  7284 +commit 630b9c0ac43c7edcbfd892e23c09fb26724f4ac0
       
  7285 +Author: Anthony Green <green@moxielogic.com>
       
  7286 +Date:   Wed Feb 9 06:24:23 2011 -0500
       
  7287 +
       
  7288 +    Update to rc2
       
  7289 +
       
  7290 +commit 0cad4386fa4c9ea5f8ca88b16247db4e5c8fea90
       
  7291 +Author: Anthony Green <green@moxielogic.com>
       
  7292 +Date:   Wed Feb 9 06:11:46 2011 -0500
       
  7293 +
       
  7294 +    Add ChangeLog entry.  Fix copyright headers.
       
  7295 +
       
  7296 +commit 09cb76f2645bd2c151846e9249d8ea707ba01e8c
       
  7297 +Author: Anthony Green <green@moxielogic.com>
       
  7298 +Date:   Tue Feb 8 20:39:51 2011 -0500
       
  7299 +
       
  7300 +    Add missing change
       
  7301 +
       
  7302 +commit 2e3a48ccdd54340983c46a29a0b41985e3e789ac
       
  7303 +Author: Anthony Green <green@moxielogic.com>
       
  7304 +Date:   Tue Feb 8 20:37:26 2011 -0500
       
  7305 +
       
  7306 +    Fix make dist
       
  7307 +
       
  7308 +commit 5e4814d9928e236a2a4afe84d6e1d4fdaa473206
       
  7309 +Author: Anthony Green <green@moxielogic.com>
       
  7310 +Date:   Tue Feb 8 19:46:28 2011 -0500
       
  7311 +
       
  7312 +    fix permissions
       
  7313 +
       
  7314 +commit 5c0cc6f1536aa1738795a97303810a823c7fa2cb
       
  7315 +Author: Anthony Green <green@moxielogic.com>
       
  7316 +Date:   Tue Feb 8 19:45:59 2011 -0500
       
  7317 +
       
  7318 +    3.0.10rc1
       
  7319 +
       
  7320 +commit 857fe3de46d2286afa2fe772920ecf4aefa1688f
       
  7321 +Author: Anthony Green <green@moxielogic.com>
       
  7322 +Date:   Tue Feb 8 19:39:20 2011 -0500
       
  7323 +
       
  7324 +    Clean ups
       
  7325 +
       
  7326 +commit e2214f8adb5577c247452e2cc9f4cbe304d7ca9f
       
  7327 +Author: Anthony Green <green@moxielogic.com>
       
  7328 +Date:   Tue Feb 8 19:22:56 2011 -0500
       
  7329 +
       
  7330 +    Update README
       
  7331 +
       
  7332 +commit 1106229a5721a659da5c231ec0e8211119615394
       
  7333 +Merge: bc9d0be f6ab3ed
       
  7334 +Author: Anthony Green <green@moxielogic.com>
       
  7335 +Date:   Tue Feb 8 19:20:09 2011 -0500
       
  7336 +
       
  7337 +    Add iOS support
       
  7338 +
       
  7339 +commit bc9d0be2958ce475757f34dd2c878948aa77a39f
       
  7340 +Author: Anthony Green <green@moxielogic.com>
       
  7341 +Date:   Tue Feb 8 17:04:26 2011 -0500
       
  7342 +
       
  7343 +    3.0.10rc0 changes
       
  7344 +
       
  7345 +commit 3b836249feae6d08d3e6887486e4b9961ddafa09
       
  7346 +Author: Anthony Green <green@moxielogic.com>
       
  7347 +Date:   Tue Feb 8 14:28:59 2011 -0500
       
  7348 +
       
  7349 +    Rebase from GCC
       
  7350 +
       
  7351 +commit a26e3940619faeba6de54824c9540c90b1aab513
       
  7352 +Author: Anthony Green <green@moxielogic.com>
       
  7353 +Date:   Tue Feb 8 13:56:12 2011 -0500
       
  7354 +
       
  7355 +    copyright updates patch
       
  7356 +
       
  7357 +commit b8099539f00e224107594101e9760b6dc081a056
       
  7358 +Author: Anthony Green <green@moxielogic.com>
       
  7359 +Date:   Tue Feb 8 13:50:43 2011 -0500
       
  7360 +
       
  7361 +    Fix msvcc.sh botch
       
  7362 +
       
  7363 +commit dc411e8f99113a34656bfd2d3ae51259972488cc
       
  7364 +Author: Anthony Green <green@moxielogic.com>
       
  7365 +Date:   Tue Feb 8 10:49:29 2011 -0500
       
  7366 +
       
  7367 +    Fix HP-UX build
       
  7368 +
       
  7369 +commit 404585d1348e30ac58203bbd876d9131e5aed874
       
  7370 +Author: Anthony Green <green@moxielogic.com>
       
  7371 +Date:   Tue Feb 8 10:44:36 2011 -0500
       
  7372 +
       
  7373 +    Fix sparc v8 aggregate type returns for sun's compiler
       
  7374 +
       
  7375 +commit 19ce713188e193e4522740d24c20170411883d2d
       
  7376 +Author: Anthony Green <green@moxielogic.com>
       
  7377 +Date:   Tue Feb 8 10:34:23 2011 -0500
       
  7378 +
       
  7379 +    grammar fix
       
  7380 +
       
  7381 +commit 89284fe55f1a8ad3bddbea796ee00d0e3ba411ce
       
  7382 +Author: Anthony Green <green@moxielogic.com>
       
  7383 +Date:   Tue Feb 8 10:19:19 2011 -0500
       
  7384 +
       
  7385 +    Fix AIX build with IBM XLC
       
  7386 +
       
  7387 +commit ba022c338af97cb18d9f8ed5a607fd483a61c09c
       
  7388 +Author: Anthony Green <green@moxielogic.com>
       
  7389 +Date:   Tue Feb 8 10:12:48 2011 -0500
       
  7390 +
       
  7391 +    fix win64-underscore patch
       
  7392 +
       
  7393 +commit 097e5f3924ee92a3ba6cd72f787da8a3eb14fea3
       
  7394 +Author: Anthony Green <green@moxielogic.com>
       
  7395 +Date:   Tue Feb 8 10:11:00 2011 -0500
       
  7396 +
       
  7397 +    x86 pcrel test part 2
       
  7398 +
       
  7399 +commit ed2c518d960b91d444be74e5a55779a9c4602f3b
       
  7400 +Author: Anthony Green <green@moxielogic.com>
       
  7401 +Date:   Tue Feb 8 10:10:07 2011 -0500
       
  7402 +
       
  7403 +    x86 pcrel test
       
  7404 +
       
  7405 +commit 0e5843995f46900ef212531281e08b224464f413
       
  7406 +Author: Anthony Green <green@moxielogic.com>
       
  7407 +Date:   Tue Feb 8 07:52:40 2011 -0500
       
  7408 +
       
  7409 +    Refresh from GCC
       
  7410 +
       
  7411 +commit 5b9cd52784339a42e417174a55e310e214d435f9
       
  7412 +Author: Anthony Green <green@moxielogic.com>
       
  7413 +Date:   Mon Nov 22 15:19:57 2010 -0500
       
  7414 +
       
  7415 +    win64-underscore patch
       
  7416 +
       
  7417 +commit 2db72615b50eb5c0f29725c02c740a2f0d7fc7d9
       
  7418 +Author: Anthony Green <green@moxielogic.com>
       
  7419 +Date:   Sun Nov 21 10:50:56 2010 -0500
       
  7420 +
       
  7421 +    Rebase
       
  7422 +
       
  7423 +commit f6ab3edc23dc8fc7c47a31c896044150c23f04b5
       
  7424 +Author: Landon Fuller <landonf@plausible.coop>
       
  7425 +Date:   Wed Oct 27 19:34:51 2010 -0400
       
  7426 +
       
  7427 +    Include the license header in the generated output.
       
  7428 +
       
  7429 +commit cef619462887fa0f360e3ee702d1e04f112b5b38
       
  7430 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7431 +Date:   Wed Oct 27 13:59:30 2010 -0400
       
  7432 +
       
  7433 +    Add missing copyright/license header.
       
  7434 +
       
  7435 +commit 53f387b203413c9aa6e31f49dbb70d37d816330b
       
  7436 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7437 +Date:   Sun Sep 19 19:57:17 2010 -0700
       
  7438 +
       
  7439 +    Minor README fix.
       
  7440 +
       
  7441 +commit 4fbcb5b5fbce11f4b168060e00639db33c85b75b
       
  7442 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7443 +Date:   Sun Sep 19 19:50:37 2010 -0700
       
  7444 +
       
  7445 +    Minor README fix.
       
  7446 +
       
  7447 +commit 8e7652ef6acab5db7a29f786686a54f05cdbdc7d
       
  7448 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7449 +Date:   Sun Sep 19 19:49:39 2010 -0700
       
  7450 +
       
  7451 +    Add a libffi-ios-specific github README.
       
  7452 +
       
  7453 +commit 83038cf24aa1a92b62b91ffee1dcc25d79243484
       
  7454 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7455 +Date:   Sun Sep 19 14:36:45 2010 -0700
       
  7456 +
       
  7457 +    Implement FFI_EXEC_TRAMPOLINE_TABLE allocator for iOS/ARM.
       
  7458 +    
       
  7459 +    This provides working closure support on iOS/ARM devices where
       
  7460 +    PROT_WRITE|PROT_EXEC is not permitted. The code passes basic
       
  7461 +    smoke tests, but requires further review.
       
  7462 +
       
  7463 +commit b00ff3e98fdde622cef617030e14d5356dff988f
       
  7464 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7465 +Date:   Sun Sep 19 14:22:26 2010 -0700
       
  7466 +
       
  7467 +    Rename the generated symbol
       
  7468 +
       
  7469 +commit da2773e02ab26cc11a7fe87e985599f35cdf0649
       
  7470 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7471 +Date:   Sun Sep 19 14:21:37 2010 -0700
       
  7472 +
       
  7473 +    Modify the ffi_closure structures to hold table/table entry pointers instead of a code buffer.
       
  7474 +
       
  7475 +commit 01d71b7bed41844f80cb9feef20dcc5ece5ba2d0
       
  7476 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7477 +Date:   Sun Sep 19 14:21:14 2010 -0700
       
  7478 +
       
  7479 +    Regenerated the autoconf script
       
  7480 +
       
  7481 +commit 19afda0069c42e51c81dca7b10a5cf884b4cdce0
       
  7482 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7483 +Date:   Sun Sep 19 14:20:52 2010 -0700
       
  7484 +
       
  7485 +    Enable AC_SUBST for FFI_EXEC_TRAMPOLINE_TABLE
       
  7486 +
       
  7487 +commit 9e1196444e78aef20028c18891f44ebe39a815fd
       
  7488 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7489 +Date:   Sun Sep 19 10:43:06 2010 -0700
       
  7490 +
       
  7491 +    Add a hard-coded FFI_EXEC_TRAMPOLINE_TABLE arm implementation.
       
  7492 +    
       
  7493 +    This implements support for re-mapping a shared table of executable
       
  7494 +    trampolines directly in front of a writable configuration page, working
       
  7495 +    around PROT_WRITE restrictions for sandboxed applications on Apple's
       
  7496 +    iOS.
       
  7497 +    
       
  7498 +    This implementation is for testing purposes; a proper allocator is still
       
  7499 +    necessary, and ARM-specific code needs to be moved out of
       
  7500 +    src/closures.c.
       
  7501 +
       
  7502 +commit f38364b399184e682fc3e785084bd497827bc5af
       
  7503 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7504 +Date:   Sun Sep 19 10:42:36 2010 -0700
       
  7505 +
       
  7506 +    Fix symbol prefix for ffi_closure_SYSV_inner on Darwin.
       
  7507 +
       
  7508 +commit 36849e7716b77aa25e4175d1f4be1b93dbf47aac
       
  7509 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7510 +Date:   Sun Sep 19 09:35:04 2010 -0700
       
  7511 +
       
  7512 +    Whitespace/comment fixes.
       
  7513 +
       
  7514 +commit b764162526854686e579a48b6ac5981f4eb886a3
       
  7515 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7516 +Date:   Sun Sep 19 09:04:34 2010 -0700
       
  7517 +
       
  7518 +    Fix the script name (build-iphone.sh -> build-ios.sh)
       
  7519 +
       
  7520 +commit a3d9aa85013341451ea97766485b7a11852d32b2
       
  7521 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7522 +Date:   Sun Sep 19 09:03:52 2010 -0700
       
  7523 +
       
  7524 +    Update the autogenerated autoconf/automake files.
       
  7525 +
       
  7526 +commit c71480eaf839f26bbdfcd8965f65ac4d8defddc0
       
  7527 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7528 +Date:   Sun Sep 19 09:02:05 2010 -0700
       
  7529 +
       
  7530 +    Update automake/autoconf to conditionally build src/arm/trampoline.S if FFI_EXEC_TRAMPOLINE_TABLE is enabled.
       
  7531 +
       
  7532 +commit 9af9291b73bc5e27ecd949bec8157f20426d65b8
       
  7533 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7534 +Date:   Sun Sep 19 08:52:33 2010 -0700
       
  7535 +
       
  7536 +    Add the trampoline table generated by gentramp.sh
       
  7537 +
       
  7538 +commit 68ce0c383ece84f69945d1c8c3fed03f7f9cb5d6
       
  7539 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7540 +Date:   Sun Sep 19 08:38:19 2010 -0700
       
  7541 +
       
  7542 +    Add a shell script that generates the ARM trampoline page.
       
  7543 +    
       
  7544 +    This generates a page of 340 trampolines, aligned within one page. The
       
  7545 +    trampolines use pc-relative addressing to reference config data
       
  7546 +    (context, jump address) from a page placed directly prior to the
       
  7547 +    trampoline page. This can be used on systems -- such as iOS -- that do not
       
  7548 +    support writable, executable memory by remapping the executable page
       
  7549 +    containing the trampolines directly above a newly allocated writable
       
  7550 +    config page.
       
  7551 +
       
  7552 +commit 75af086be8830a8eafe9b1ebda199d788bcb0c62
       
  7553 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7554 +Date:   Sat Sep 18 18:12:19 2010 -0700
       
  7555 +
       
  7556 +    Update autoconf files
       
  7557 +
       
  7558 +commit 1ac92cca9b02ef8d6a769f0de1adccd5c9630355
       
  7559 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7560 +Date:   Sat Sep 18 18:08:14 2010 -0700
       
  7561 +
       
  7562 +    Add autoconf check for W^X platforms that require a trampoline table.
       
  7563 +    
       
  7564 +    This adds the FFI_EXEC_TRAMPOLINE_TABLE. The flag is enabled for
       
  7565 +    arm-apple-darwin, where PROT_EXEC on writable (or formerly writable) pages is
       
  7566 +    not permitted for sandboxed binaries.
       
  7567 +
       
  7568 +commit be72fbab29b7190c702d8e1ac3d149855e95879d
       
  7569 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7570 +Date:   Sat Sep 18 18:02:25 2010 -0700
       
  7571 +
       
  7572 +    Use the correct host triple for arm/darwin
       
  7573 +
       
  7574 +commit 70150bdf4509269965c72f2032bf74f285767afe
       
  7575 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7576 +Date:   Sat Sep 18 16:38:03 2010 -0700
       
  7577 +
       
  7578 +    Add missing UNWIND entry; disables .pad on non-EABI targets.
       
  7579 +
       
  7580 +commit 6b452bafaec498df975ba8ac4c99de174e5f74f7
       
  7581 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7582 +Date:   Sat Sep 18 16:21:32 2010 -0700
       
  7583 +
       
  7584 +    Apple assembler support; fixed most gas/ELF-isms.
       
  7585 +
       
  7586 +commit 8ddac835b6f8b54ede764d0ea977dee4c82e2d67
       
  7587 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7588 +Date:   Sat Sep 18 15:38:06 2010 -0700
       
  7589 +
       
  7590 +    Fix placement of the __APPLE__ macro.
       
  7591 +
       
  7592 +commit 69043d02936bb0579ac59b4ee1ed8dec38c38db7
       
  7593 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7594 +Date:   Sat Sep 18 15:32:08 2010 -0700
       
  7595 +
       
  7596 +    Work-around libffi's FP ABI detection.
       
  7597 +    
       
  7598 +    On iOS, we must use the AAPCS floating point return value calling
       
  7599 +    conventions. libffi's ARM implementation will only use these conventions
       
  7600 +    if __SOFTFP__ is defined, which is not the case when GCC's
       
  7601 +    -mfloat-abi defaults to 'softfp' instead of 'soft'. To work around this
       
  7602 +    we manually define __SOFTFP__ for Apple platforms in the ARM-specific
       
  7603 +    sysv.S.
       
  7604 +    
       
  7605 +    See also:
       
  7606 +      http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Introduction/Introduction.html
       
  7607 +      http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf
       
  7608 +
       
  7609 +commit a82e6c354ea805114642a6e440abd0832cb1d23f
       
  7610 +Author: Landon Fuller <landonf@bikemonkey.org>
       
  7611 +Date:   Sat Sep 18 14:44:24 2010 -0700
       
  7612 +
       
  7613 +    Add a stub iOS build script to drive autoconf
       
  7614 +
       
  7615 +commit 84e8de6e9fc19388f6f1102c013b7d0d52940ecc
       
  7616 +Author: Anthony Green <green@moxielogic.com>
       
  7617 +Date:   Fri Aug 6 01:35:12 2010 -0400
       
  7618 +
       
  7619 +    Restore execute permissions
       
  7620 +
       
  7621 +commit 3aeecc9eb1a6feba6549849cdd335c926415a4fc
       
  7622 +Author: Anthony Green <green@moxielogic.com>
       
  7623 +Date:   Thu Aug 5 15:19:00 2010 -0400
       
  7624 +
       
  7625 +    Fix win64-struct-args patch
       
  7626 +
       
  7627 +commit 00d0b59cd13f89ab8b44bd894eb7f0a131fcb472
       
  7628 +Author: Anthony Green <green@moxielogic.com>
       
  7629 +Date:   Thu Aug 5 14:56:53 2010 -0400
       
  7630 +
       
  7631 +    Fix debug build for windows
       
  7632 +
       
  7633 +commit bda487e87064f27965155459a62dc52a744778d0
       
  7634 +Author: Anthony Green <green@moxielogic.com>
       
  7635 +Date:   Thu Aug 5 09:02:41 2010 -0400
       
  7636 +
       
  7637 +    Don't use -safeseh with ml64
       
  7638 +
       
  7639 +commit c1d28ba8d5029795af313ffeb81c97efc6d4c847
       
  7640 +Author: Anthony Green <green@moxielogic.com>
       
  7641 +Date:   Thu Aug 5 08:48:16 2010 -0400
       
  7642 +
       
  7643 +    stdcall-x86-closure-fix
       
  7644 +
       
  7645 +commit 5feacad4a56c85b3f23a267a30b2cf424cd59548
       
  7646 +Author: Anthony Green <green@moxielogic.com>
       
  7647 +Date:   Thu Aug 5 08:30:04 2010 -0400
       
  7648 +
       
  7649 +    define generic symbols carefully
       
  7650 +
       
  7651 +commit 10ea848900bc3018ac213cef52b44cacbe5cbebc
       
  7652 +Author: Anthony Green <green@moxielogic.com>
       
  7653 +Date:   Thu Aug 5 08:24:27 2010 -0400
       
  7654 +
       
  7655 +    don't copy win64 struct args
       
  7656 +
       
  7657 +commit d14178be4c49c3ada44a9fe9efe11d444372ddab
       
  7658 +Author: Anthony Green <green@moxielogic.com>
       
  7659 +Date:   Fri Jul 23 09:14:00 2010 -0400
       
  7660 +
       
  7661 +    FFI_LAST_ABI fix
       
  7662 +
       
  7663 +commit 3f5b1375ab1e2b8e3d593e21b27097a4a50f9b83
       
  7664 +Author: Anthony Green <green@moxielogic.com>
       
  7665 +Date:   Mon Jul 12 14:39:18 2010 -0400
       
  7666 +
       
  7667 +    rebase
       
  7668 +
       
  7669 +commit eaf444eabc4c78703c0f98ac0197b1619c1b1bef
       
  7670 +Author: Anthony Green <green@moxielogic.com>
       
  7671 +Date:   Sat Jul 10 08:59:09 2010 -0400
       
  7672 +
       
  7673 +    Fix selinux test
       
  7674 +
       
  7675 +commit 630974152247f100ece4d44f10c3721bb4599fbf
       
  7676 +Author: Anthony Green <green@gmachine.(none)>
       
  7677 +Date:   Wed May 5 20:14:56 2010 -0400
       
  7678 +
       
  7679 +    Micharl Kohler's spelling fixes
       
  7680 +
       
  7681 +commit 9dc9a293f3d4589fcaf02dd4288c8cebaefa508e
       
  7682 +Author: Anthony Green <green@gmachine.(none)>
       
  7683 +Date:   Tue Apr 13 10:33:52 2010 -0400
       
  7684 +
       
  7685 +    Rebase to latest GCC sources
       
  7686 +
       
  7687 +commit f2c2a4fce9b3eca9f39b4f3545118bc256da4a73
       
  7688 +Author: Anthony Green <green@gmachine.(none)>
       
  7689 +Date:   Tue Apr 13 10:19:28 2010 -0400
       
  7690 +
       
  7691 +    Remove warnings and add OS/2 support
       
  7692 +
       
  7693 +commit c0b69e57d529e33d18b658cc5572a21e3663247c
       
  7694 +Author: Anthony Green <green@gmachine.(none)>
       
  7695 +Date:   Tue Mar 30 08:30:22 2010 -0400
       
  7696 +
       
  7697 +    Dan Witte's windows build fixes.
       
  7698 +
       
  7699 +commit 59a259f4d348f593b45f452309f4d020a28051c4
       
  7700 +Author: Anthony Green <green@gmachine.(none)>
       
  7701 +Date:   Mon Mar 15 05:57:51 2010 -0400
       
  7702 +
       
  7703 +    Remove junk file
       
  7704 +
       
  7705 +commit 3de1eb36d37a66829e606421939874d0d60d816d
       
  7706 +Author: Anthony Green <green@gmachine.(none)>
       
  7707 +Date:   Mon Mar 15 05:57:24 2010 -0400
       
  7708 +
       
  7709 +    fix-comments patch
       
  7710 +
       
  7711 +commit c3813b6d7f8a777700f4c5862190c0db148d4de8
       
  7712 +Author: Anthony Green <green@gmachine.(none)>
       
  7713 +Date:   Tue Jan 26 16:48:56 2010 -0500
       
  7714 +
       
  7715 +    Rebuild Makefiles with automake 1.11.1 for CVE-2009-4029.
       
  7716 +
       
  7717 +commit 8d27f68baa365bf883b6053c5f6bc819646d5434
       
  7718 +Author: Anthony Green <green@gmachine.(none)>
       
  7719 +Date:   Fri Jan 15 11:35:37 2010 -0500
       
  7720 +
       
  7721 +    Mention recent changes in README
       
  7722 +
       
  7723 +commit ff3cd68b8cf2d9a28cad7aa9beff46236eacec8c
       
  7724 +Author: Anthony Green <green@gmachine.(none)>
       
  7725 +Date:   Fri Jan 15 11:27:24 2010 -0500
       
  7726 +
       
  7727 +    Add msvc.sh wrapper
       
  7728 +
       
  7729 +commit cadeba6cb53414a1253582f1719c286665de7b6c
       
  7730 +Author: Anthony Green <green@gmachine.(none)>
       
  7731 +Date:   Fri Jan 15 10:46:51 2010 -0500
       
  7732 +
       
  7733 +    Microsoft Visual C port
       
  7734 +
       
  7735 +commit 0739e7dc00db766eb64f502ec4137b817638c9a1
       
  7736 +Author: Anthony Green <green@gmachine.(none)>
       
  7737 +Date:   Fri Jan 15 09:48:33 2010 -0500
       
  7738 +
       
  7739 +    Add x86 Sun Studio compiler support
       
  7740 +
       
  7741 +commit edfdfd2e85b8d01d2455934f1d7f4d7eb2f3cf1c
       
  7742 +Author: Anthony Green <green@gmachine.(none)>
       
  7743 +Date:   Wed Jan 13 02:56:19 2010 -0500
       
  7744 +
       
  7745 +    Add closure example doc
       
  7746 +
       
  7747 +commit 7b7a42f221cf171e8d09df34cac6dc1fd8458cc3
       
  7748 +Author: Anthony Green <green@gmachine.(none)>
       
  7749 +Date:   Tue Jan 12 09:14:14 2010 -0500
       
  7750 +
       
  7751 +    Rebase from GCC
       
  7752 +
       
  7753 +commit 4b18d1f73dc7733137869e4ab5725cb90c1c8fde
       
  7754 +Author: Anthony Green <green@gmachine.(none)>
       
  7755 +Date:   Fri Jan 1 10:24:27 2010 -0500
       
  7756 +
       
  7757 +    Add x86-64 MingW to README
       
  7758 +
       
  7759 +commit c3042afaf3f84abbbe9c91bf9bc9896b0d9eb003
       
  7760 +Author: Anthony Green <green@gmachine.(none)>
       
  7761 +Date:   Fri Jan 1 08:08:02 2010 -0500
       
  7762 +
       
  7763 +    Reset quilt patches post 3.0.9 merge with GCC
       
  7764 +
       
  7765 +commit b0304e9679bdfec6ac45a57b5c96542697249418
       
  7766 +Author: Anthony Green <green@gmachine.(none)>
       
  7767 +Date:   Thu Dec 31 11:32:40 2009 -0500
       
  7768 +
       
  7769 +    Update version
       
  7770 +
       
  7771 +commit 2e7e03d014d9c9bf40e97ce75cba089ad052fa6b
       
  7772 +Author: Anthony Green <green@gmachine.(none)>
       
  7773 +Date:   Thu Dec 31 07:43:22 2009 -0500
       
  7774 +
       
  7775 +    Final updates before 3.0.9
       
  7776 +
       
  7777 +commit aea706c52825c8eee677ffa7fdbdd3aed1725492
       
  7778 +Author: Anthony Green <green@gmachine.(none)>
       
  7779 +Date:   Tue Dec 29 10:09:31 2009 -0500
       
  7780 +
       
  7781 +    really 3.0.9rc12
       
  7782 +
       
  7783 +commit 0cfe60e9d13f132b88995cfee41f2156344f6fa2
       
  7784 +Author: Anthony Green <green@gmachine.(none)>
       
  7785 +Date:   Tue Dec 29 10:06:04 2009 -0500
       
  7786 +
       
  7787 +    3.0.9rc12
       
  7788 +
       
  7789 +commit 14e2e92e8645804b6940b3e96c98e9f7f384a6b2
       
  7790 +Author: Anthony Green <green@gmachine.(none)>
       
  7791 +Date:   Sun Dec 27 21:03:33 2009 -0500
       
  7792 +
       
  7793 +    3.0.9rc11
       
  7794 +
       
  7795 +commit 884402787bf8eaf7ec207085037cf8ace2f660ec
       
  7796 +Author: Anthony Green <green@gmachine.(none)>
       
  7797 +Date:   Sat Dec 26 12:57:23 2009 -0500
       
  7798 +
       
  7799 +    HPUX support and avr32 test fixes.
       
  7800 +
       
  7801 +commit 01c78756aff22efb1f122f8e93e068d7bf2185c7
       
  7802 +Author: Anthony Green <green@gmachine.(none)>
       
  7803 +Date:   Sat Dec 26 10:05:18 2009 -0500
       
  7804 +
       
  7805 +    3.0.9rc9
       
  7806 +
       
  7807 +commit 70868464651320268d79c6894db5a50fdc11032a
       
  7808 +Author: Anthony Green <green@gmachine.(none)>
       
  7809 +Date:   Sat Dec 26 09:58:03 2009 -0500
       
  7810 +
       
  7811 +    Remove xfails for mips and arm
       
  7812 +
       
  7813 +commit 838d4ad920ec85cf5ca3b511221d67f6d9a99024
       
  7814 +Author: Anthony Green <green@gmachine.(none)>
       
  7815 +Date:   Sat Dec 26 09:57:27 2009 -0500
       
  7816 +
       
  7817 +    Remove a bunch of xfails.
       
  7818 +
       
  7819 +commit 7e37eaaf772f48906e69618c773b0a36c3927de9
       
  7820 +Author: Anthony Green <green@gmachine.(none)>
       
  7821 +Date:   Sat Dec 26 07:46:50 2009 -0500
       
  7822 +
       
  7823 +    Fix huge_struct for solaris
       
  7824 +
       
  7825 +commit 07cc7a37194bc34064ebed7f2724333a798411c8
       
  7826 +Author: Anthony Green <green@gmachine.(none)>
       
  7827 +Date:   Sat Dec 26 07:23:04 2009 -0500
       
  7828 +
       
  7829 +    3.0.9rc8
       
  7830 +
       
  7831 +commit 2b9be16ffabc81326128bc1bbdddff8ddc5d13d3
       
  7832 +Author: Anthony Green <green@gmachine.(none)>
       
  7833 +Date:   Sat Dec 26 07:04:45 2009 -0500
       
  7834 +
       
  7835 +    3.0.9rc8
       
  7836 +
       
  7837 +commit 9458d88f676e9a21ab8993a54e16754b11687419
       
  7838 +Author: Anthony Green <green@gmachine.(none)>
       
  7839 +Date:   Sat Dec 26 07:02:27 2009 -0500
       
  7840 +
       
  7841 +    Rebase from GCC
       
  7842 +
       
  7843 +commit 6a3412417593f068a04dc6163f4269cb295ad5ca
       
  7844 +Author: Anthony Green <green@gmachine.(none)>
       
  7845 +Date:   Sat Dec 26 06:51:33 2009 -0500
       
  7846 +
       
  7847 +    Add Andreas Schwab's powerpc fix
       
  7848 +
       
  7849 +commit 39c8792ece1043f41f4c395a2ce71f4cf0ff4674
       
  7850 +Author: Anthony Green <green@gmachine.(none)>
       
  7851 +Date:   Fri Dec 25 21:52:28 2009 -0500
       
  7852 +
       
  7853 +    3.0.9rc7
       
  7854 +
       
  7855 +commit 1d04af52e3e24db69f742064694c22f8df5cc70e
       
  7856 +Author: Anthony Green <green@gmachine.(none)>
       
  7857 +Date:   Fri Dec 25 09:50:36 2009 -0500
       
  7858 +
       
  7859 +    Updated some mips XFAILs
       
  7860 +
       
  7861 +commit 26e9509c9b7929bc4fcf697071699051a652b1fd
       
  7862 +Author: Anthony Green <green@gmachine.(none)>
       
  7863 +Date:   Fri Dec 25 02:19:23 2009 -0500
       
  7864 +
       
  7865 +    Clean up ChangeLog.libffi for older patches.
       
  7866 +
       
  7867 +commit 9c157d3215e4393777f83eb6fa801df6528f40d7
       
  7868 +Author: Anthony Green <green@gmachine.(none)>
       
  7869 +Date:   Fri Dec 25 02:15:40 2009 -0500
       
  7870 +
       
  7871 +    Clean up undefine_AC_ARG_VAR_PRECIOUS patch.
       
  7872 +
       
  7873 +commit d22de05b0bfc480766bc1240615ce2830eee71b8
       
  7874 +Author: Anthony Green <green@gmachine.(none)>
       
  7875 +Date:   Fri Dec 25 02:04:23 2009 -0500
       
  7876 +
       
  7877 +    Fix patches
       
  7878 +
       
  7879 +commit 1fe3dc7c20dc4dbd8fed0d19c8618027d44ed971
       
  7880 +Author: Anthony Green <green@gmachine.(none)>
       
  7881 +Date:   Fri Dec 25 01:39:00 2009 -0500
       
  7882 +
       
  7883 +    Add windows support patch.
       
  7884 +
       
  7885 +commit f7c0bc613a88f7dbc2d18b345c10fa438833c170
       
  7886 +Author: Anthony Green <green@gmachine.(none)>
       
  7887 +Date:   Fri Dec 25 01:22:11 2009 -0500
       
  7888 +
       
  7889 +    3.0.9rc6
       
  7890 +
       
  7891 +commit c7fa2da8260258c11ab1dc7ac06fb611a2c1b50f
       
  7892 +Author: Anthony Green <green@gmachine.(none)>
       
  7893 +Date:   Thu Dec 24 07:22:44 2009 -0500
       
  7894 +
       
  7895 +    3.0.9rc6
       
  7896 +
       
  7897 +commit da11bece0fde66fc0268db3a01207dda857e25d2
       
  7898 +Author: Anthony Green <green@gmachine.(none)>
       
  7899 +Date:   Thu Dec 24 05:34:46 2009 -0500
       
  7900 +
       
  7901 +    Release 3.0.9rc5
       
  7902 +
       
  7903 +commit e3399b11edeab546b066bfc18574f3edb905d0dc
       
  7904 +Author: Anthony Green <green@gmachine.(none)>
       
  7905 +Date:   Thu Dec 24 01:09:32 2009 -0500
       
  7906 +
       
  7907 +    Update README
       
  7908 +
       
  7909 +commit 115ab36fceee69740a01ce49bc27e1908cc237b1
       
  7910 +Author: Anthony Green <green@gmachine.(none)>
       
  7911 +Date:   Thu Dec 24 00:22:00 2009 -0500
       
  7912 +
       
  7913 +    Update missing changes for 3.0.9r4.
       
  7914 +
       
  7915 +commit f8c7a245bf5a80bd7e730ec03fcad17c8dcfcb07
       
  7916 +Author: Anthony Green <green@gmachine.(none)>
       
  7917 +Date:   Wed Dec 23 23:46:22 2009 -0500
       
  7918 +
       
  7919 +    Switch to quilt. Rebase to latest GCC.
       
  7920 +
       
  7921 +commit ce806772f02387b9a74f6496a263a368bccd5d59
       
  7922 +Merge: cd98813 dcc1f6b
       
  7923 +Author: Anthony Green <green@moxielogic.com>
       
  7924 +Date:   Mon Oct 5 00:41:35 2009 -0400
       
  7925 +
       
  7926 +    Merge branch 'master' of git@github.com:atgreen/libffi
       
  7927 +
       
  7928 +commit dcc1f6b4f1ffd2713bf68b791a13f85d455c8b1b
       
  7929 +Author: Anthony Green <green@moxielogic.com>
       
  7930 +Date:   Mon Oct 5 00:29:33 2009 -0400
       
  7931 +
       
  7932 +    More clean up.
       
  7933 +
       
  7934 +commit 2829f5941a223b9d851d8ab6318318e6197d7e01
       
  7935 +Author: Anthony Green <green@moxielogic.com>
       
  7936 +Date:   Mon Oct 5 00:28:03 2009 -0400
       
  7937 +
       
  7938 +    Clean up
       
  7939 +
       
  7940 +commit cd98813de517ea64041637e3e78d27a001d6d3b4
       
  7941 +Author: Anthony Green <green@moxielogic.com>
       
  7942 +Date:   Mon Oct 5 00:25:29 2009 -0400
       
  7943 +
       
  7944 +    From Jens Rehsack.  Fix for 64-bit AIX.
       
  7945 +
       
  7946 +commit e4a91de766acc47f6c50f13cc11719a65e23ecba
       
  7947 +Author: Anthony Green <green@moxielogic.com>
       
  7948 +Date:   Mon Oct 5 00:16:17 2009 -0400
       
  7949 +
       
  7950 +    From Abdulaziz Ghuloum.  Adds special case for Snow Leopard.
       
  7951 +
       
  7952 +commit 3425a763bcdaadb8b430226f427ec833afdcc96a
       
  7953 +Author: Anthony Green <green@moxielogic.com>
       
  7954 +Date:   Sun Oct 4 23:57:29 2009 -0400
       
  7955 +
       
  7956 +    Fix detection of free/openbsd.  From Alexis Ballier.
       
  7957 +
       
  7958 +commit 2340e7a777902de61499d47823ad8d5e0eeb6203
       
  7959 +Author: Anthony Green <green@moxielogic.com>
       
  7960 +Date:   Sun Oct 4 23:53:17 2009 -0400
       
  7961 +
       
  7962 +    AVR support
       
  7963 +
       
  7964 +commit 5cbe2058c128e848446ae79fe15ee54260a90559
       
  7965 +Author: Anthony Green <green@moxielogic.com>
       
  7966 +Date:   Sun Oct 4 23:53:11 2009 -0400
       
  7967 +
       
  7968 +    Initial stand-alone patch.
       
  7969 +
       
  7970 +commit c6dddbd02bad9654ed58cdb0feb360934d105dec
       
  7971 +Author: Anthony Green <green@moxielogic.com>
       
  7972 +Date:   Sun Oct 4 08:11:33 2009 -0400
       
  7973 +
       
  7974 +    Initial commit
       
  7975 +
       
  7976 +commit 5ffc0c37486fb1538bccc0ca7acc807d4f1af932
       
  7977 +Author: Anthony Green <green@moxielogic.com>
       
  7978 +Date:   Sun Oct 4 07:58:22 2009 -0400
       
  7979 +
       
  7980 +    Update version to 3.0.9rc1.  Add more useful things to .gitignore.
       
  7981 +
       
  7982 +commit bd29f83ee9f6fa6b65adee9d3f57834f364d9887
       
  7983 +Author: Anthony Green <green@moxielogic.com>
       
  7984 +Date:   Tue Sep 29 12:07:26 2009 -0400
       
  7985 +
       
  7986 +    Add .gitignore
       
  7987 +
       
  7988 +commit 9474f853f83e3f0167c1b306177321bfcc93e56d
       
  7989 +Author: Anthony Green <green@moxielogic.com>
       
  7990 +Date:   Tue Sep 29 11:13:02 2009 -0400
       
  7991 +
       
  7992 +    Remove old CVSROOT files.
       
  7993 +
       
  7994 +commit 0c25275ec24bfe2c2c25a000465f0950ef9dd51b
       
  7995 +Author: twall <twall>
       
  7996 +Date:   Wed Aug 19 12:57:34 2009 +0000
       
  7997 +
       
  7998 +    Apply Dave Korn's cygwin/GCC changes
       
  7999 +
       
  8000 +commit 39228c27ed3f677a95b46380a8d31602b5777e1a
       
  8001 +Author: aph <aph>
       
  8002 +Date:   Tue Jun 16 18:00:47 2009 +0000
       
  8003 +
       
  8004 +    2009-06-16  Wim Lewis  <wiml@hhhh.org>
       
  8005 +    
       
  8006 +    	* src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are
       
  8007 +    	supposed to be callee-saved.
       
  8008 +    	* src/powerpc/sysv.S (small_struct_return_value): Fix overrun of
       
  8009 +    	return buffer for odd-size structs.
       
  8010 +
       
  8011 +commit 5e93cc704d127c2c8ae7f5d2cef621145d43e777
       
  8012 +Author: aph <aph>
       
  8013 +Date:   Tue Jun 16 17:41:47 2009 +0000
       
  8014 +
       
  8015 +    2009-06-16  Andreas Tobler  <a.tobler@schweiz.org>
       
  8016 +    
       
  8017 +    	PR libffi/40444
       
  8018 +    	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Add
       
  8019 +    	allow_stack_execute for Darwin.
       
  8020 +
       
  8021 +commit b509af8959dc371b92392c623522ea6f4946a71d
       
  8022 +Author: aph <aph>
       
  8023 +Date:   Tue Jun 16 16:17:52 2009 +0000
       
  8024 +
       
  8025 +    2009-06-16  Andrew Haley  <aph@redhat.com>
       
  8026 +    
       
  8027 +    	* configure.ac (TARGETDIR): Add missing blank lines.
       
  8028 +    	* configure: Regenerate.
       
  8029 +
       
  8030 +commit d57e96dc56ee76fbbb9b59d73aeaa92354db5ecb
       
  8031 +Author: aph <aph>
       
  8032 +Date:   Tue Jun 16 09:59:02 2009 +0000
       
  8033 +
       
  8034 +    2009-06-16  Andrew Haley  <aph@redhat.com>
       
  8035 +    
       
  8036 +            * testsuite/libffi.call/cls_align_sint64.c,
       
  8037 +            testsuite/libffi.call/cls_align_uint64.c,
       
  8038 +            testsuite/libffi.call/cls_longdouble_va.c,
       
  8039 +            testsuite/libffi.call/cls_ulonglong.c,
       
  8040 +            testsuite/libffi.call/return_ll1.c,
       
  8041 +            testsuite/libffi.call/stret_medium2.c: Fix printf format
       
  8042 +            specifiers.
       
  8043 +            * testsuite/libffi.call/huge_struct.c: Ad x86 XFAILs.
       
  8044 +            * testsuite/libffi.call/float2.c: Fix dg-excess-errors.
       
  8045 +            * testsuite/libffi.call/ffitest.h,
       
  8046 +            testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define.
       
  8047 +
       
  8048 +commit b01d6d1982c9e020507029bfd5a58a8c60d111fa
       
  8049 +Author: aph <aph>
       
  8050 +Date:   Tue Jun 16 09:44:54 2009 +0000
       
  8051 +
       
  8052 +    2009-06-16  Andrew Haley  <aph@redhat.com>
       
  8053 +    
       
  8054 +    	* testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
       
  8055 +    	* testsuite/libffi.call/err_bad_abi.c: Likewise.
       
  8056 +
       
  8057 +commit 35b6ded138591900a88055a8a8ac1fadc29a76d6
       
  8058 +Author: aph <aph>
       
  8059 +Date:   Fri Jun 12 15:29:20 2009 +0000
       
  8060 +
       
  8061 +    2009-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  8062 +    
       
  8063 +            * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*.
       
  8064 +            * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*.
       
  8065 +            * testsuite/libffi.call/err_bad_typedef.c: Likewise.
       
  8066 +
       
  8067 +commit acc46605f2d95d67d69398e7644610f10a157ce3
       
  8068 +Author: aph <aph>
       
  8069 +Date:   Fri Jun 12 14:21:28 2009 +0000
       
  8070 +
       
  8071 +    2009-06-12  Andrew Haley  <aph@redhat.com>
       
  8072 +    
       
  8073 +            * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c,
       
  8074 +            testsuite/libffi.call/cls_align_uint64.c,
       
  8075 +            testsuite/libffi.call/cls_ulonglong.c,
       
  8076 +            testsuite/libffi.call/return_ll1.c,
       
  8077 +            testsuite/libffi.call/stret_medium2.c: Fix printf format
       
  8078 +            specifiers.
       
  8079 +            testsuite/libffi.special/unwindtest.cc: include stdint.h.
       
  8080 +
       
  8081 +commit 16d1996ed0797bd7c11aca2b0fe7e7748751aaf6
       
  8082 +Author: twall <twall>
       
  8083 +Date:   Thu Jun 11 14:27:42 2009 +0000
       
  8084 +
       
  8085 +    update changelog
       
  8086 +
       
  8087 +commit 92a515c33efe91be3cb0258f01c63aff208489c7
       
  8088 +Author: twall <twall>
       
  8089 +Date:   Thu Jun 11 14:27:28 2009 +0000
       
  8090 +
       
  8091 +    use ffi_closure_alloc instead of stack-based closure
       
  8092 +
       
  8093 +commit e4363160ba9e50167f9ca0a7399d537a1d2cd0ce
       
  8094 +Author: twall <twall>
       
  8095 +Date:   Thu Jun 11 14:26:23 2009 +0000
       
  8096 +
       
  8097 +    remove unused extern
       
  8098 +
       
  8099 +commit 1dc2781d2ba38f5f000ff70069d617fb21e1d2af
       
  8100 +Author: twall <twall>
       
  8101 +Date:   Thu Jun 11 11:36:16 2009 +0000
       
  8102 +
       
  8103 +    remove not-yet-applied changelog entries
       
  8104 +
       
  8105 +commit bb27735fe689dac97ec0dc847ed8d3d519620109
       
  8106 +Author: twall <twall>
       
  8107 +Date:   Wed Jun 10 10:42:36 2009 +0000
       
  8108 +
       
  8109 +    add win64 support
       
  8110 +
       
  8111 +commit b2a54c100c74854a409820817d54617fdda39eb8
       
  8112 +Author: aph <aph>
       
  8113 +Date:   Mon Jun 8 16:50:49 2009 +0000
       
  8114 +
       
  8115 +    2009-06-08  Andrew Haley  <aph@redhat.com>
       
  8116 +    
       
  8117 +    	* testsuite/libffi.call/err_bad_abi.c: Add xfails.
       
  8118 +    	* testsuite/libffi.call/cls_longdouble_va.c: Add xfails.
       
  8119 +    	* testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*.
       
  8120 +    	* testsuite/libffi.call/err_bad_typedef.c: Add xfails.
       
  8121 +    
       
  8122 +    	* testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args.
       
  8123 +    	* testsuite/libffi.call/stret_medium.c: Likewise.
       
  8124 +    	* testsuite/libffi.call/stret_large2.c: Likewise.
       
  8125 +    	* testsuite/libffi.call/stret_large.c:  Likewise.
       
  8126 +
       
  8127 +commit 25723e7141f73d3736d7244b980c89d97db852b6
       
  8128 +Author: aph <aph>
       
  8129 +Date:   Fri Jun 5 13:03:40 2009 +0000
       
  8130 +
       
  8131 +    2009-06-05  Andrew Haley  <aph@redhat.com>
       
  8132 +    
       
  8133 +            * src/x86/win32.S (_ffi_closure_STDCALL): Import from gcc.
       
  8134 +
       
  8135 +commit 70758199c7cd41f411987360ccb302b497a56dc9
       
  8136 +Author: aph <aph>
       
  8137 +Date:   Thu Jun 4 16:29:58 2009 +0000
       
  8138 +
       
  8139 +     2009-06-04  Andrew Haley  <aph@redhat.com>
       
  8140 +    
       
  8141 +            * src/powerpc/ffitarget.h: Fix misapplied merge from gcc.
       
  8142 +
       
  8143 +commit e8bb12563f9aa23ddf36fa6a5b92b16b5c3e1a7f
       
  8144 +Author: aph <aph>
       
  8145 +Date:   Thu Jun 4 14:59:18 2009 +0000
       
  8146 +
       
  8147 +    2009-06-04  Andrew Haley  <aph@redhat.com>
       
  8148 +    
       
  8149 +    	* src/mips/o32.S,
       
  8150 +    	src/mips/n32.S: Fix licence formatting.
       
  8151 +
       
  8152 +commit d66a8e32c3671479e3ce0f6819673e5932ba6b7f
       
  8153 +Author: aph <aph>
       
  8154 +Date:   Thu Jun 4 14:43:40 2009 +0000
       
  8155 +
       
  8156 +    2009-06-04  Andrew Haley  <aph@redhat.com>
       
  8157 +    
       
  8158 +    	* src/x86/darwin.S: Fix licence formatting.
       
  8159 +    	src/x86/win32.S: Likewise.
       
  8160 +    	src/sh64/sysv.S: Likewise.
       
  8161 +    	src/sh/sysv.S: Likewise.
       
  8162 +
       
  8163 +commit 7c3b7fd6b5db746b5b09a718f3044f811372f941
       
  8164 +Author: aph <aph>
       
  8165 +Date:   Thu Jun 4 14:39:20 2009 +0000
       
  8166 +
       
  8167 +    2009-06-04  Andrew Haley  <aph@redhat.com>
       
  8168 +    
       
  8169 +    	* src/sh64/ffi.c: Remove lint directives.  Was missing from merge
       
  8170 +    	of Andreas Tobler's patch from 2006-04-22.
       
  8171 +
       
  8172 +commit 1a2f93a8b362db13638afd9fcb3f2650180bfa17
       
  8173 +Author: aph <aph>
       
  8174 +Date:   Thu Jun 4 10:45:51 2009 +0000
       
  8175 +
       
  8176 +    2009-06-04  Andrew Haley  <aph@redhat.com>
       
  8177 +    
       
  8178 +            * src/sh/ffi.c: Apply missing hunk from Alexandre Oliva's patch of
       
  8179 +            2007-03-07.
       
  8180 +
       
  8181 +commit 944c95cf7aaaaf7c5fa368cda4673dd38f45020e
       
  8182 +Author: aph <aph>
       
  8183 +Date:   Wed Jun 3 17:42:56 2009 +0000
       
  8184 +
       
  8185 +    2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
       
  8186 +    
       
  8187 +           * src/x86/win32.S (_ffi_closure_STDCALL):  New function.
       
  8188 +           (.eh_frame):  Add FDE for it.
       
  8189 +    
       
  8190 +    2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
       
  8191 +    
       
  8192 +           * configure.ac:  Also check if assembler supports pc-relative
       
  8193 +           relocs on X86_WIN32 targets.
       
  8194 +           * configure:  Regenerate.
       
  8195 +           * src/x86/win32.S (ffi_prep_args):  Declare extern, not global.
       
  8196 +           (_ffi_call_SYSV):  Add missing function type symbol .def and
       
  8197 +           add EH markup labels.
       
  8198 +           (_ffi_call_STDCALL):  Likewise.
       
  8199 +           (_ffi_closure_SYSV):  Likewise.
       
  8200 +           (_ffi_closure_raw_SYSV):  Likewise.
       
  8201 +           (.eh_frame):  Add hand-crafted EH data.
       
  8202 +    
       
  8203 +    2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
       
  8204 +    
       
  8205 +           * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for
       
  8206 +           signed/unsigned int8/16 return values.
       
  8207 +           * src/sparc/v8.S (ffi_call_v8): Likewise.
       
  8208 +           (ffi_closure_v8): Likewise.
       
  8209 +    
       
  8210 +    2008-03-26  Kaz Kojima  <kkojima@gcc.gnu.org>
       
  8211 +    
       
  8212 +           * src/sh/sysv.S: Add .note.GNU-stack on Linux.
       
  8213 +           * src/sh64/sysv.S: Likewise.
       
  8214 +    
       
  8215 +    2008-03-26  Daniel Jacobowitz  <dan@debian.org>
       
  8216 +    
       
  8217 +           * src/arm/sysv.S: Fix ARM comment marker.
       
  8218 +
       
  8219 +commit 00fa972430bb1535a4b34bf029ebcad500027b0c
       
  8220 +Author: twall <twall>
       
  8221 +Date:   Sat Dec 27 16:59:05 2008 +0000
       
  8222 +
       
  8223 +    properly glob-match
       
  8224 +
       
  8225 +commit f5179e6794ac35af26fe86e468b8508a7a570c55
       
  8226 +Author: twall <twall>
       
  8227 +Date:   Fri Dec 26 19:06:28 2008 +0000
       
  8228 +
       
  8229 +    Mark XFAIL on longdouble tests for x86_64/mingw
       
  8230 +
       
  8231 +commit 80e2b5a749208c8a18f994ec5bee84594d051cc8
       
  8232 +Author: twall <twall>
       
  8233 +Date:   Mon Dec 22 15:21:15 2008 +0000
       
  8234 +
       
  8235 +    clean up tests for win64 use
       
  8236 +
       
  8237 +commit 7063d9996f742576095c7b0eb5016c0f9a670aec
       
  8238 +Author: green <green>
       
  8239 +Date:   Fri Dec 19 16:13:46 2008 +0000
       
  8240 +
       
  8241 +    Version 3.0.8 with x86-solaris support
       
  8242 +
       
  8243 +commit bdfeb13f0df0a63b19d62597517237b54d92228b
       
  8244 +Author: green <green>
       
  8245 +Date:   Fri Dec 19 15:47:44 2008 +0000
       
  8246 +
       
  8247 +    Bump to 3.0.7
       
  8248 +
       
  8249 +commit 69205de17d6ac4c11d4ba92d6a5b40a0c5f246b2
       
  8250 +Author: green <green>
       
  8251 +Date:   Thu Jul 24 18:03:48 2008 +0000
       
  8252 +
       
  8253 +    Many test fixes (failures due to excessive compiler warnings).
       
  8254 +
       
  8255 +commit 260d513fea00b3613fe957a44a157fe72c4ca29e
       
  8256 +Author: green <green>
       
  8257 +Date:   Thu Jul 17 13:13:52 2008 +0000
       
  8258 +
       
  8259 +    Version 3.0.6.  sh/sh64 fixes.
       
  8260 +
       
  8261 +commit 3704031875feabb74e3655ed03cff4c2b3c76ac6
       
  8262 +Author: green <green>
       
  8263 +Date:   Thu Apr 3 18:57:57 2008 +0000
       
  8264 +
       
  8265 +    Rev 3.0.5.
       
  8266 +
       
  8267 +commit 8406f5f48f7f58a1c982a93a95d521cf82b3241f
       
  8268 +Author: green <green>
       
  8269 +Date:   Thu Apr 3 18:57:34 2008 +0000
       
  8270 +
       
  8271 +    3.0.5
       
  8272 +
       
  8273 +commit 23a9e73212b62f9684cedb0ce70e92c59cfdaffa
       
  8274 +Author: green <green>
       
  8275 +Date:   Wed Mar 5 00:07:02 2008 +0000
       
  8276 +
       
  8277 +    2008-03-04  Anthony Green  <green@redhat.com>
       
  8278 +                Blake Chaffin
       
  8279 +                hos@tamanegi.org
       
  8280 +    
       
  8281 +            * testsuite/libffi.call/cls_align_longdouble_split2.c
       
  8282 +              testsuite/libffi.call/cls_align_longdouble_split.c
       
  8283 +              testsuite/libffi.call/cls_dbls_struct.c
       
  8284 +              testsuite/libffi.call/cls_double_va.c
       
  8285 +              testsuite/libffi.call/cls_longdouble.c
       
  8286 +              testsuite/libffi.call/cls_longdouble_va.c
       
  8287 +              testsuite/libffi.call/cls_pointer.c
       
  8288 +              testsuite/libffi.call/cls_pointer_stack.c
       
  8289 +              testsuite/libffi.call/err_bad_abi.c
       
  8290 +              testsuite/libffi.call/err_bad_typedef.c
       
  8291 +              testsuite/libffi.call/huge_struct.c
       
  8292 +              testsuite/libffi.call/stret_large2.c
       
  8293 +              testsuite/libffi.call/stret_large.c
       
  8294 +              testsuite/libffi.call/stret_medium2.c
       
  8295 +              testsuite/libffi.call/stret_medium.c: New tests from Apple.
       
  8296 +
       
  8297 +commit 429e37d3ad653e52e75bf725c883ab79e859f89a
       
  8298 +Author: green <green>
       
  8299 +Date:   Thu Feb 28 04:50:19 2008 +0000
       
  8300 +
       
  8301 +    clicky
       
  8302 +
       
  8303 +commit 51e79c428348c033314f54bcb30f7e388c59e347
       
  8304 +Author: green <green>
       
  8305 +Date:   Thu Feb 28 04:47:35 2008 +0000
       
  8306 +
       
  8307 +    getclicky
       
  8308 +
       
  8309 +commit affcab04e280efeace45a72c4dc6152c0e4f1b7f
       
  8310 +Author: green <green>
       
  8311 +Date:   Tue Feb 26 19:01:53 2008 +0000
       
  8312 +
       
  8313 +    2008-02-26  Jakub Jelinek  <jakub@redhat.com>
       
  8314 +                Anthony Green  <green@redhat.com>
       
  8315 +    
       
  8316 +            * src/alpha/osf.S: Add .note.GNU-stack on Linux.
       
  8317 +            * src/s390/sysv.S: Likewise.
       
  8318 +            * src/powerpc/linux64.S: Likewise.
       
  8319 +            * src/powerpc/linux64_closure.S: Likewise.
       
  8320 +            * src/powerpc/ppc_closure.S: Likewise.
       
  8321 +            * src/powerpc/sysv.S: Likewise.
       
  8322 +            * src/x86/unix64.S: Likewise.
       
  8323 +            * src/x86/sysv.S: Likewise.
       
  8324 +            * src/sparc/v8.S: Likewise.
       
  8325 +            * src/sparc/v9.S: Likewise.
       
  8326 +            * src/m68k/sysv.S: Likewise.
       
  8327 +            * src/ia64/unix.S: Likewise.
       
  8328 +            * src/arm/sysv.S: Likewise.
       
  8329 +
       
  8330 +commit 59689d5522c159a3ac967adb6b891cf5f22c890f
       
  8331 +Author: green <green>
       
  8332 +Date:   Tue Feb 26 17:40:51 2008 +0000
       
  8333 +
       
  8334 +    2008-02-26  Anthony Green  <green@redhat.com>
       
  8335 +                Thomas Heller  <theller@ctypes.org>
       
  8336 +    
       
  8337 +            * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
       
  8338 +            comment.
       
  8339 +
       
  8340 +commit b13c84cf4668828ff8429ba4a2f94cd1eb574ae0
       
  8341 +Author: green <green>
       
  8342 +Date:   Tue Feb 26 17:38:15 2008 +0000
       
  8343 +
       
  8344 +    2008-02-26  Anthony Green  <green@redhat.org>
       
  8345 +                Thomas Heller <theller@ctypes.org>
       
  8346 +    
       
  8347 +            * include/ffi.h.in: Change void (*)() to void (*)(void).
       
  8348 +
       
  8349 +commit 265289f679ffd24a88ae1aa2cef0e4aa14703cd8
       
  8350 +Author: green <green>
       
  8351 +Date:   Tue Feb 26 17:34:36 2008 +0000
       
  8352 +
       
  8353 +    2008-02-26  Anthony Green  <green@spindazzle.org>
       
  8354 +    
       
  8355 +            * src/alpha/ffi.c: Change void (*)() to void (*)(void).
       
  8356 +            src/alpha/osf.S, src/arm/ffi.c, src/frv/ffi.c, src/ia64/ffi.c,
       
  8357 +            src/ia64/unix.S, src/java_raw_api.c, src/m32r/ffi.c,
       
  8358 +            src/mips/ffi.c, src/pa/ffi.c, src/pa/hpux32.S, src/pa/linux.S,
       
  8359 +            src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/raw_api.c,
       
  8360 +            src/s390/ffi.c, src/sh/ffi.c, src/sh64/ffi.c, src/sparc/ffi.c,
       
  8361 +            src/x86/ffi.c, src/x86/unix64.S, src/x86/darwin64.S,>         src/x86/ffi64.c: Ditto.
       
  8362 +
       
  8363 +commit fb5036cd6d0f909918e90f7d2d9fd80d46682d5d
       
  8364 +Author: green <green>
       
  8365 +Date:   Sun Feb 24 17:25:25 2008 +0000
       
  8366 +
       
  8367 +    fix date
       
  8368 +
       
  8369 +commit 40bec108e7d0181e6c9928aa7a33187bcc0f3d6f
       
  8370 +Author: green <green>
       
  8371 +Date:   Sun Feb 24 17:25:02 2008 +0000
       
  8372 +
       
  8373 +    New release
       
  8374 +
       
  8375 +commit b922048fa82ea109a4af269ee47bbc2a586bbac2
       
  8376 +Author: green <green>
       
  8377 +Date:   Sun Feb 24 17:24:00 2008 +0000
       
  8378 +
       
  8379 +    2008-02-24  Anthony Green  <green@spindazzle.org>
       
  8380 +    
       
  8381 +            * configure.ac: Accept openbsd*, not just openbsd.
       
  8382 +            Bump version to 3.0.4.
       
  8383 +            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  8384 +            * libtool-version: Increment revision.
       
  8385 +            * README: Update for new release.
       
  8386 +
       
  8387 +commit affca4b92d06e5554784c7e9b233029ef83f7d8a
       
  8388 +Author: green <green>
       
  8389 +Date:   Fri Feb 22 21:53:29 2008 +0000
       
  8390 +
       
  8391 +    sync readme with web page.
       
  8392 +
       
  8393 +commit 3e53d8752ea74859b4c64fbbf935e62a937c4d78
       
  8394 +Author: green <green>
       
  8395 +Date:   Fri Feb 22 21:52:38 2008 +0000
       
  8396 +
       
  8397 +    New release
       
  8398 +
       
  8399 +commit 4d92f6c8e78fe084be65f3e8b58b859901ba796d
       
  8400 +Author: green <green>
       
  8401 +Date:   Fri Feb 22 21:49:46 2008 +0000
       
  8402 +
       
  8403 +    2008-02-22  Anthony Green  <green@redhat.com>
       
  8404 +    
       
  8405 +            * configure.ac: Bump version to 3.0.3.
       
  8406 +            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  8407 +            * libtool-version: Increment revision.
       
  8408 +            * README: Update for new release.  Clean up test docs.
       
  8409 +
       
  8410 +commit 0e185fa11a01f816824ba2687ed3715ab6219bef
       
  8411 +Author: green <green>
       
  8412 +Date:   Fri Feb 22 21:43:18 2008 +0000
       
  8413 +
       
  8414 +    Update configure script.
       
  8415 +
       
  8416 +commit f73986bd211cfbbaa593d1309504d0dc68626191
       
  8417 +Author: green <green>
       
  8418 +Date:   Fri Feb 22 21:40:53 2008 +0000
       
  8419 +
       
  8420 +    2008-02-22  Bjoern Koenig  <bkoenig@alpha-tierchen.de>
       
  8421 +                Andreas Tobler  <a.tobler@schweiz.org>
       
  8422 +    
       
  8423 +            * configure.ac: Add amd64-*-freebsd* target.
       
  8424 +            * configure: Regenerate.
       
  8425 +
       
  8426 +commit 0208f68fe5de30c33e7f70ebc281635917013f5a
       
  8427 +Author: green <green>
       
  8428 +Date:   Fri Feb 22 21:15:44 2008 +0000
       
  8429 +
       
  8430 +    2008-02-22  Thomas Heller <theller@ctypes.org>
       
  8431 +    
       
  8432 +            * configure.ac: Add x86 OpenBSD support.
       
  8433 +            * configure: Rebuilt.
       
  8434 +
       
  8435 +commit 01adb0e638a86cf0d5e668ed8e08be9b0cd2505f
       
  8436 +Author: green <green>
       
  8437 +Date:   Thu Feb 21 16:17:26 2008 +0000
       
  8438 +
       
  8439 +    Fix README.
       
  8440 +
       
  8441 +commit 1edd4563225981a14f7d4fb9919b1ed88e38082f
       
  8442 +Author: green <green>
       
  8443 +Date:   Thu Feb 21 13:39:01 2008 +0000
       
  8444 +
       
  8445 +    3.0.2
       
  8446 +
       
  8447 +commit c9b542800864e2204db6e83f3843a17813ba6165
       
  8448 +Author: green <green>
       
  8449 +Date:   Thu Feb 21 13:36:43 2008 +0000
       
  8450 +
       
  8451 +    add missing file
       
  8452 +
       
  8453 +commit d5fa5633d5c8d3c212a2267cfa38fba4091baa2c
       
  8454 +Author: green <green>
       
  8455 +Date:   Thu Feb 21 13:36:19 2008 +0000
       
  8456 +
       
  8457 +    2008-02-21  Anthony Green  <green@redhat.com>
       
  8458 +    
       
  8459 +            * configure.ac: Bump version to 3.0.2.
       
  8460 +            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  8461 +            * libtool-version: Increment revision.
       
  8462 +            * README: Update for new release.
       
  8463 +    
       
  8464 +    2008-02-21  Björn König <bkoenig@alpha-tierchen.de>
       
  8465 +    
       
  8466 +            * src/x86/freebsd.S: New file.
       
  8467 +            * configure.ac: Add x86 FreeBSD support.
       
  8468 +            * Makefile.am: Ditto.
       
  8469 +
       
  8470 +commit ac35bfc6fcadd8880c1efce36724820f9074b318
       
  8471 +Author: green <green>
       
  8472 +Date:   Sat Feb 16 01:03:56 2008 +0000
       
  8473 +
       
  8474 +    Updated
       
  8475 +
       
  8476 +commit f7942975fee7b0162647dd79e2652615b737e98e
       
  8477 +Author: green <green>
       
  8478 +Date:   Sat Feb 16 01:02:00 2008 +0000
       
  8479 +
       
  8480 +    2008-02-15  Anthony Green  <green@redhat.com>
       
  8481 +    
       
  8482 +            * configure.ac: Bump version to 3.0.1.
       
  8483 +            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  8484 +            * libtool-version: Increment revision.
       
  8485 +            * README: Update for new release.
       
  8486 +    
       
  8487 +    2008-02-15  David Daney  <ddaney@avtrex.com>
       
  8488 +    
       
  8489 +            * src/mips/ffi.c: Remove extra '>' from include directive.
       
  8490 +            (ffi_prep_closure_loc): Use clear_location instead of tramp.
       
  8491 +
       
  8492 +commit 59aa6bb1bfc86a610ac1a8b123443efd75854dd1
       
  8493 +Author: green <green>
       
  8494 +Date:   Fri Feb 15 20:52:26 2008 +0000
       
  8495 +
       
  8496 +    Add more platforms.
       
  8497 +
       
  8498 +commit 45a45ab99074448be0ae1a8d2ade50d28b60f8de
       
  8499 +Author: green <green>
       
  8500 +Date:   Fri Feb 15 19:16:36 2008 +0000
       
  8501 +
       
  8502 +    3.0 notes
       
  8503 +
       
  8504 +commit 4db74cbea888c9f1251b85baf00d99b83d3b994d
       
  8505 +Author: green <green>
       
  8506 +Date:   Fri Feb 15 19:10:26 2008 +0000
       
  8507 +
       
  8508 +    Update
       
  8509 +
       
  8510 +commit c3e1101ffabf44d8a2ee46e03ba9ab582050a825
       
  8511 +Author: green <green>
       
  8512 +Date:   Fri Feb 15 18:43:40 2008 +0000
       
  8513 +
       
  8514 +    2008-02-15  Anthony Green  <green@redhat.com>
       
  8515 +    
       
  8516 +            * configure.ac: Bump version to 3.0.0,
       
  8517 +            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  8518 +    
       
  8519 +    2008-02-15  David Daney  <ddaney@avtrex.com>
       
  8520 +    
       
  8521 +            * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
       
  8522 +            Define (conditionally), and use it to include cachectl.h.
       
  8523 +            (ffi_prep_closure_loc): Fix cache flushing.
       
  8524 +            * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
       
  8525 +
       
  8526 +commit 7e0cc12e9233ad285db41ce8dbdda61ed2a7fb06
       
  8527 +Author: green <green>
       
  8528 +Date:   Fri Feb 15 15:51:03 2008 +0000
       
  8529 +
       
  8530 +    New release
       
  8531 +
       
  8532 +commit 2d7dc885ec40d53866f29984d595511942c8b686
       
  8533 +Author: green <green>
       
  8534 +Date:   Fri Feb 15 15:30:26 2008 +0000
       
  8535 +
       
  8536 +            * man/ffi_call.3, man/ffi_prep_cif.3, man/ffi.3:
       
  8537 +            Update dates and remove all references to ffi_prep_closure.
       
  8538 +            * configure.ac: Bump version to 2.99.9.
       
  8539 +            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  8540 +
       
  8541 +commit a0525f03eeaaed33b1eac80e0c016455cee3615d
       
  8542 +Author: green <green>
       
  8543 +Date:   Fri Feb 15 15:14:30 2008 +0000
       
  8544 +
       
  8545 +    New release.
       
  8546 +
       
  8547 +commit 2b30dfb3146ee26ad956d00ee05eb835ca1a95b4
       
  8548 +Author: green <green>
       
  8549 +Date:   Fri Feb 15 15:12:43 2008 +0000
       
  8550 +
       
  8551 +            * man/ffi_prep_closure.3: Delete.
       
  8552 +            * man/Makefile.am (EXTRA_DIST): Remove ffi_prep_closure.3.
       
  8553 +            (man_MANS): Ditto.
       
  8554 +            * man/Makefile.in: Rebuilt.
       
  8555 +            * configure.ac: Bump version to 2.99.8.
       
  8556 +            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  8557 +
       
  8558 +commit bf41e64840ebcb6cc31a6f028253c1fde82705d8
       
  8559 +Author: green <green>
       
  8560 +Date:   Fri Feb 15 01:56:50 2008 +0000
       
  8561 +
       
  8562 +    Update.
       
  8563 +
       
  8564 +commit 4d39ddee677bbb61d621893b91e11eac5e7c4af7
       
  8565 +Author: green <green>
       
  8566 +Date:   Fri Feb 15 01:24:06 2008 +0000
       
  8567 +
       
  8568 +    * configure.ac: Bump version to 2.99.7.
       
  8569 +            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  8570 +            * include/ffi.h.in LICENSE src/debug.c src/closures.c
       
  8571 +              src/ffitest.c src/s390/sysv.S src/s390/ffitarget.h
       
  8572 +              src/types.c src/m68k/ffitarget.h src/raw_api.c src/frv/ffi.c
       
  8573 +              src/frv/ffitarget.h src/sh/ffi.c src/sh/sysv.S
       
  8574 +              src/sh/ffitarget.h src/powerpc/ffitarget.h src/pa/ffi.c
       
  8575 +              src/pa/ffitarget.h src/pa/linux.S src/java_raw_api.c
       
  8576 +              src/cris/ffitarget.h src/x86/ffi.c src/x86/sysv.S
       
  8577 +              src/x86/unix64.S src/x86/win32.S src/x86/ffitarget.h
       
  8578 +              src/x86/ffi64.c src/x86/darwin.S src/ia64/ffi.c
       
  8579 +              src/ia64/ffitarget.h src/ia64/ia64_flags.h src/ia64/unix.S
       
  8580 +              src/sparc/ffi.c src/sparc/v9.S src/sparc/ffitarget.h
       
  8581 +              src/sparc/v8.S src/alpha/ffi.c src/alpha/ffitarget.h
       
  8582 +              src/alpha/osf.S src/sh64/ffi.c src/sh64/sysv.S
       
  8583 +              src/sh64/ffitarget.h src/mips/ffi.c src/mips/ffitarget.h
       
  8584 +              src/mips/n32.S src/mips/o32.S src/arm/ffi.c src/arm/sysv.S
       
  8585 +              src/arm/ffitarget.h src/prep_cif.c: Update license text.
       
  8586 +
       
  8587 +commit d58b032b41a12bd3d72148da6822ab59dd698ff9
       
  8588 +Author: green <green>
       
  8589 +Date:   Fri Feb 15 00:59:25 2008 +0000
       
  8590 +
       
  8591 +    New release
       
  8592 +
       
  8593 +commit 91e5478df6d5ac63efbb10f025807b4606afab56
       
  8594 +Author: green <green>
       
  8595 +Date:   Fri Feb 15 00:50:30 2008 +0000
       
  8596 +
       
  8597 +    Update supported platforms.  Bump version.
       
  8598 +
       
  8599 +commit bd0768f877c8f7fd0d36af2191b203d4d057b1ce
       
  8600 +Author: green <green>
       
  8601 +Date:   Fri Feb 15 00:45:33 2008 +0000
       
  8602 +
       
  8603 +    * configure.ac: Bump version to 2.99.5.
       
  8604 +            * configure: Rebuilt.
       
  8605 +            * Makefile.am (EXTRA_DIST): Add darwin64.S
       
  8606 +            * Makefile.in: Rebuilt.
       
  8607 +            * testsuite/lib/libffi-dg.exp: Remove libstdc++ bits from GCC tree.
       
  8608 +            * LICENSE: Update WARRANTY.
       
  8609 +
       
  8610 +commit 49d345f767bd2cfee951bceaab6a1a07986cf293
       
  8611 +Author: green <green>
       
  8612 +Date:   Thu Feb 14 23:43:27 2008 +0000
       
  8613 +
       
  8614 +    update license reference
       
  8615 +
       
  8616 +commit 12ac48fc79b515db7c9accd9fcaa87b0dcefccdb
       
  8617 +Author: green <green>
       
  8618 +Date:   Thu Feb 14 23:42:08 2008 +0000
       
  8619 +
       
  8620 +    Update WARRANTY
       
  8621 +
       
  8622 +commit 6b91c41da87e78552f2990dfc504a0a3349f340b
       
  8623 +Author: green <green>
       
  8624 +Date:   Thu Feb 14 23:38:27 2008 +0000
       
  8625 +
       
  8626 +    fix tarball reference
       
  8627 +
       
  8628 +commit 2b59579e3533334bee4788e076b4e520c2ab518c
       
  8629 +Author: green <green>
       
  8630 +Date:   Thu Feb 14 23:35:58 2008 +0000
       
  8631 +
       
  8632 +    First update in 5 years!
       
  8633 +
       
  8634 +commit 6cbdf3f3a3777a93382a2d508ddef1c353ff0955
       
  8635 +Author: green <green>
       
  8636 +Date:   Thu Feb 14 22:44:06 2008 +0000
       
  8637 +
       
  8638 +    Fix .pc file bug and bump version
       
  8639 +
       
  8640 +commit 1d1dc81104b209df3cfef0840735c59efae2f655
       
  8641 +Author: green <green>
       
  8642 +Date:   Thu Feb 14 22:03:37 2008 +0000
       
  8643 +
       
  8644 +    Add man files and info file. Update README.  Tag as 2.99.3.
       
  8645 +
       
  8646 +commit f045a2367f793fa8b01534cf2e25bcc46afc8fa1
       
  8647 +Author: tromey <tromey>
       
  8648 +Date:   Thu Feb 14 20:46:57 2008 +0000
       
  8649 +
       
  8650 +    Move entry from ChangeLog to ChangeLog.libffi
       
  8651 +
       
  8652 +commit 6257f07d1a9efd27fa83639cfba281f5d3188731
       
  8653 +Author: tromey <tromey>
       
  8654 +Date:   Thu Feb 14 20:33:17 2008 +0000
       
  8655 +
       
  8656 +    	* aclocal.m4, Makefile.in, configure, fficonfig.h.in: Rebuilt.
       
  8657 +    	* mdate-sh, texinfo.tex: New files.
       
  8658 +    	* Makefile.am (info_TEXINFOS): New variable.
       
  8659 +    	* doc/libffi.texi: New file.
       
  8660 +    	* doc/version.texi: Likewise.
       
  8661 +
       
  8662 +commit 4232af563c5509c3760a33e3684a2b958be755e1
       
  8663 +Author: green <green>
       
  8664 +Date:   Thu Feb 14 16:19:21 2008 +0000
       
  8665 +
       
  8666 +            * Makefile.am (AM_CFLAGS): Don't compile with -D.
       
  8667 +            (lib_LTLIBRARIES): Define.
       
  8668 +            (toolexeclib_LIBRARIES): Undefine.
       
  8669 +            * Makefile.in: Rebuilt.
       
  8670 +            * configure.ac: Reset version to 2.99.1.
       
  8671 +            * configure.in: Rebuilt.
       
  8672 +
       
  8673 +commit 961543615c31f092b578a4b4cda914db64f9d0fa
       
  8674 +Author: green <green>
       
  8675 +Date:   Thu Feb 14 15:57:40 2008 +0000
       
  8676 +
       
  8677 +    Fix typo.
       
  8678 +
       
  8679 +commit aeb0abab87222f637fbf352d4effd3b76b52ed26
       
  8680 +Author: green <green>
       
  8681 +Date:   Thu Feb 14 15:54:27 2008 +0000
       
  8682 +
       
  8683 +          * libffi.pc.in: Usse @PACKAGE_NAME@ and @PACKAGE_VERSION@.
       
  8684 +            * configure.ac: Reset version to 2.99.1.
       
  8685 +            * configure.in: Rebuilt.
       
  8686 +            * Makefile.am (EXTRA_DIST): Add ChangeLog.libffi.
       
  8687 +            * Makefile.in: Rebuilt.
       
  8688 +            * LICENSE: Update copyright notice.
       
  8689 +
       
  8690 +commit 77fe243556433eae119d8bd7469bfccdd5bd8a1a
       
  8691 +Author: green <green>
       
  8692 +Date:   Thu Feb 14 15:37:00 2008 +0000
       
  8693 +
       
  8694 +    Fix make dist again
       
  8695 +
       
  8696 +commit d4970cf4529459bf0f0e43c602cac396786c6802
       
  8697 +Author: green <green>
       
  8698 +Date:   Thu Feb 14 15:18:56 2008 +0000
       
  8699 +
       
  8700 +    Fix make dist
       
  8701 +
       
  8702 +commit f0b1462f2d3024922ad71421bd5c4311fcb16da5
       
  8703 +Author: green <green>
       
  8704 +Date:   Thu Feb 14 15:01:41 2008 +0000
       
  8705 +
       
  8706 +    Use pkgconfig.  Increment libtool CURRENT version.
       
  8707 +
       
  8708 +commit 27e52f33baa069012a5adb2a3807f9ca1f2165ab
       
  8709 +Author: green <green>
       
  8710 +Date:   Sun Feb 3 13:59:48 2008 +0000
       
  8711 +
       
  8712 +    Fix header installs when using DESTDIR.
       
  8713 +
       
  8714 +commit fadab28eb6e33fb6dcdd7b9323e147142216d548
       
  8715 +Author: twall <twall>
       
  8716 +Date:   Sun Feb 3 12:32:22 2008 +0000
       
  8717 +
       
  8718 +    update changelog
       
  8719 +
       
  8720 +commit b5e44c8dfa92c87b99762c303cf5574a16db8f27
       
  8721 +Author: twall <twall>
       
  8722 +Date:   Sun Feb 3 01:12:32 2008 +0000
       
  8723 +
       
  8724 +    offset from code base address, not data base address
       
  8725 +
       
  8726 +commit f359848d1a995c0e44566d815f218729dc996e22
       
  8727 +Author: green <green>
       
  8728 +Date:   Fri Feb 1 21:29:43 2008 +0000
       
  8729 +
       
  8730 +    Fix header installs.
       
  8731 +
       
  8732 +commit c30df49e157c7bfc8e19e3f8a72b9464fe225e54
       
  8733 +Author: green <green>
       
  8734 +Date:   Fri Feb 1 21:13:55 2008 +0000
       
  8735 +
       
  8736 +    Revert my broken changes to twall's patch.
       
  8737 +
       
  8738 +commit 675561bb9aa0732c76698df10dd3007b5d0ec759
       
  8739 +Author: green <green>
       
  8740 +Date:   Thu Jan 31 13:44:25 2008 +0000
       
  8741 +
       
  8742 +    Fix make dist .
       
  8743 +
       
  8744 +commit abc0bbf3813dc43e23d4c23e6fe794dbf287639b
       
  8745 +Author: green <green>
       
  8746 +Date:   Thu Jan 31 11:58:57 2008 +0000
       
  8747 +
       
  8748 +    Add Tim Wall's x86 windows patch.
       
  8749 +
       
  8750 +commit e332366d15a31198735b593ec8f7fc0558d783b8
       
  8751 +Author: green <green>
       
  8752 +Date:   Wed Jan 30 13:21:02 2008 +0000
       
  8753 +
       
  8754 +    Add HJ's -fomit-frame-pointer struct return fix
       
  8755 +
       
  8756 +commit d4204240392af5b7750a08671b08e9c22dff5e93
       
  8757 +Author: green <green>
       
  8758 +Date:   Wed Jan 30 12:42:34 2008 +0000
       
  8759 +
       
  8760 +    Clean up for new automake.
       
  8761 +
       
  8762 +commit f4932dd020df574637c9fb3fc1bb18e5a8f304cc
       
  8763 +Author: green <green>
       
  8764 +Date:   Wed Jan 30 12:40:25 2008 +0000
       
  8765 +
       
  8766 +    Fixes to run testsuite
       
  8767 +
       
  8768 +commit 085520ddc8db6a916bfc416b871fcb2d00074d40
       
  8769 +Author: green <green>
       
  8770 +Date:   Tue Jan 29 15:16:43 2008 +0000
       
  8771 +
       
  8772 +    New files from gcc tree.
       
  8773 +
       
  8774 +commit 77175b3f7234e4875a4ef554ed1fe9fdc4133794
       
  8775 +Author: green <green>
       
  8776 +Date:   Tue Jan 29 15:15:20 2008 +0000
       
  8777 +
       
  8778 +    Latest gcc svn sources
       
  8779 +
       
  8780 +commit 2544e45a0b2b634053df02da3a2ed9680eeed2a1
       
  8781 +Author: green <green>
       
  8782 +Date:   Tue Jan 29 14:28:13 2008 +0000
       
  8783 +
       
  8784 +    Install ffitarget.h in $prefix/include.
       
  8785 +
       
  8786 +commit 6002211b1cc4daeb587d054b4f83968bda2c981e
       
  8787 +Author: green <green>
       
  8788 +Date:   Tue Jan 29 12:30:10 2008 +0000
       
  8789 +
       
  8790 +    Add new files.
       
  8791 +
       
  8792 +commit ccabd2b16be883cd03e5f0cd88ccfdd6ca39239d
       
  8793 +Author: green <green>
       
  8794 +Date:   Tue Jan 29 12:28:15 2008 +0000
       
  8795 +
       
  8796 +    Merge from gcc
       
  8797 +
       
  8798 +commit e680ecfbfca1da8d1823e48bc89b8375e66e128b
       
  8799 +Author: tromey <tromey>
       
  8800 +Date:   Sun Dec 24 23:12:15 2006 +0000
       
  8801 +
       
  8802 +    Pulled in libffi from gcc trunk.
       
  8803 +    Fixed build and install for standalone use.
       
  8804 +
       
  8805 +commit e7ba08965942ce872fdbc69f70f9848cc3d0bad6
       
  8806 +Author: root <root>
       
  8807 +Date:   Sun Jun 4 23:22:24 2006 +0000
       
  8808 +
       
  8809 +    sourcware.org
       
  8810 +
       
  8811 +commit 0cd4aa24e21aaa964dfbdebc25ec5c8188049375
       
  8812 +Author: root <root>
       
  8813 +Date:   Sun May 30 01:51:57 2004 +0000
       
  8814 +
       
  8815 +    Add LockDir
       
  8816 +
       
  8817 +commit 5826120fbd940d26cca76ed2522187505581e1ed
       
  8818 +Author: green <green>
       
  8819 +Date:   Tue Nov 4 06:09:08 2003 +0000
       
  8820 +
       
  8821 +    Add link to Gianni's web site.
       
  8822 +
       
  8823 +commit 220aa4b27db42d7ffaac5056000d5179f00d5ea3
       
  8824 +Author: jsm <jsm>
       
  8825 +Date:   Tue Jan 21 08:07:42 2003 +0000
       
  8826 +
       
  8827 +    Newer, better, increased from before!  (list of acceptable anon usernames)
       
  8828 +
       
  8829 +commit 1c3adc892cc1403dc4d3d7003a2385899836612e
       
  8830 +Author: green <green>
       
  8831 +Date:   Fri Dec 6 01:28:03 2002 +0000
       
  8832 +
       
  8833 +    Fixed Cygnus references.
       
  8834 +
       
  8835 +commit 4af66bb62fab9a8e318af3bf01e5486596a0c8d4
       
  8836 +Author: green <green>
       
  8837 +Date:   Sun Oct 21 19:18:42 2001 +0000
       
  8838 +
       
  8839 +    Testsuite fixes.
       
  8840 +
       
  8841 +commit 5435965f9015ce40584c98d3816c3d05e7de1d21
       
  8842 +Author: green <green>
       
  8843 +Date:   Mon Apr 23 00:32:03 2001 +0000
       
  8844 +
       
  8845 +            * include/ffi_common.h: Delete, after moving contents to...
       
  8846 +            * include/ffi_private.h: Subsume contents of ffi_common.h.
       
  8847 +            * include/Makefile.am (noinst_HEADERS): Remove ffi_common.h.
       
  8848 +            * include/Makefile.in: Rebuilt.
       
  8849 +            * arm/ffi.c, m68k/ffi.c, mips/ffi.c, powerpc/ffi.c, s390/ffi.c,
       
  8850 +            ia64/ffi.c: Include ffi_private.h, not ffi_common.h.
       
  8851 +            * alpha/ffi.c, sparc/ffi.c, x86/ffi.c: Don't include ffi_common.h.
       
  8852 +            * types.c, raw_api.c, java_raw_api.c, prep_cif.c: Don't include
       
  8853 +            ffi_common.h.
       
  8854 +            * debug.c: Include ffi_private.h instead of ffi_common.h.
       
  8855 +    
       
  8856 +            * mips/ffi.c (calc_n32_struct_flags): Make static.
       
  8857 +            (FIX_ARGP): Remove call to debugging routine ffi_stop_here.
       
  8858 +    
       
  8859 +            * mips/n32.S: Include ffi_private.h.
       
  8860 +            * mips/o32.S: Include ffi_private.h.
       
  8861 +
       
  8862 +commit 6fdb7de0fe3b7385e1fd78812ae69d9b3069d994
       
  8863 +Author: green <green>
       
  8864 +Date:   Sun Apr 22 19:38:34 2001 +0000
       
  8865 +
       
  8866 +            * README: Update some comments.
       
  8867 +    
       
  8868 +            * Makefile.am (SUBDIRS): Add include so ffi.h gets installed.
       
  8869 +            * Makefile.in: Rebuilt.
       
  8870 +    
       
  8871 +            * include/ffi.h: Change ALPHA to __alpha__ and SPARC to __sparc__.
       
  8872 +            * types.c: Ditto.
       
  8873 +            * prep_cif.c (ffi_prep_cif): Ditto.
       
  8874 +    
       
  8875 +            * alpha/ffi.c, alpha/osf.S, sparc/ffi.c, sparc/v8.S, sparc/v9.S:
       
  8876 +            Include ffi_private.h.
       
  8877 +    
       
  8878 +            * include/ffi_private.h (FFI_TYPE_LAST): Define.
       
  8879 +
       
  8880 +commit bc7144b01b9707ef35f1a2e3e6996e005e82953a
       
  8881 +Author: green <green>
       
  8882 +Date:   Sun Apr 22 18:28:36 2001 +0000
       
  8883 +
       
  8884 +    Moved files from old home
       
  8885 +
       
  8886 +commit e57279831e20368c1aa1d2b35462b8629be73959
       
  8887 +Author: green <green>
       
  8888 +Date:   Sun Apr 22 18:23:47 2001 +0000
       
  8889 +
       
  8890 +    These are dead.
       
  8891 +
       
  8892 +commit 7247436b5fe71767b29dc02b4da0fe18b08082e6
       
  8893 +Author: green <green>
       
  8894 +Date:   Sun Apr 22 18:22:43 2001 +0000
       
  8895 +
       
  8896 +    All these files live somewhere else now.
       
  8897 +
       
  8898 +commit a8b0d40ff908e275028f676870c31d0d70274a98
       
  8899 +Author: green <green>
       
  8900 +Date:   Sun Apr 22 18:17:14 2001 +0000
       
  8901 +
       
  8902 +    Many changes.  Not quite there yet.
       
  8903 +
       
  8904 +commit f893d2273355710a290a26faebf5f12c3a34d0e3
       
  8905 +Author: green <green>
       
  8906 +Date:   Sun Apr 22 18:13:22 2001 +0000
       
  8907 +
       
  8908 +    Moved m68k files
       
  8909 +
       
  8910 +commit 688ddfeced89cbb9d37b53005e1f7f2b9c78a8d7
       
  8911 +Author: green <green>
       
  8912 +Date:   Sun Apr 22 18:12:33 2001 +0000
       
  8913 +
       
  8914 +    New, target indepentent, header
       
  8915 +
       
  8916 +commit f9e40776d488d5ecf43b3ae21444a1a2f6eca528
       
  8917 +Author: green <green>
       
  8918 +Date:   Sun Apr 22 18:11:57 2001 +0000
       
  8919 +
       
  8920 +    Many changes.
       
  8921 +
       
  8922 +commit 8c1d2eb47f6bc314c431b75c85c107e8e43c4a76
       
  8923 +Author: green <green>
       
  8924 +Date:   Sun Apr 22 18:10:47 2001 +0000
       
  8925 +
       
  8926 +    Many changes
       
  8927 +
       
  8928 +commit 1359dfc6582680a158b3caa3efb7a368da4aa12d
       
  8929 +Author: green <green>
       
  8930 +Date:   Sun Apr 22 18:10:20 2001 +0000
       
  8931 +
       
  8932 +    Moved ia64 files
       
  8933 +
       
  8934 +commit 6e2de5eee316a4579869aff50c7c5f6f478582d8
       
  8935 +Author: green <green>
       
  8936 +Date:   Sun Apr 22 18:08:11 2001 +0000
       
  8937 +
       
  8938 +    Moved arm files
       
  8939 +
       
  8940 +commit 8807355af34cba8ffe87aee51152dfccec2771fa
       
  8941 +Author: green <green>
       
  8942 +Date:   Mon Apr 9 00:58:38 2001 +0000
       
  8943 +
       
  8944 +    Many many updates.  Merge from gcc and then some.
       
  8945 +
       
  8946 +commit f7e9f91adec4ff1c2e7a13b3de81d2c5a3f55e7e
       
  8947 +Author: green <green>
       
  8948 +Date:   Mon Apr 17 03:32:37 2000 +0000
       
  8949 +
       
  8950 +    Mnay fixes.
       
  8951 +
       
  8952 +commit c4860de618f4956283f5c8230a2544e403dfe390
       
  8953 +Author: green <green>
       
  8954 +Date:   Mon Apr 17 03:18:46 2000 +0000
       
  8955 +
       
  8956 +    Merge from libgcj.  Merged patches from net.  See ChangeLog for details.
       
  8957 +
       
  8958 +commit c578b58314990c3853429297c38ba14015fec5fa
       
  8959 +Author: jsm <jsm>
       
  8960 +Date:   Sat Oct 9 20:18:16 1999 +0000
       
  8961 +
       
  8962 +    1999-10-09  Jason Molenda  (jsm@bugshack.cygnus.com)
       
  8963 +    
       
  8964 +    	* CVSROOT/auto_checkout, CVSROOT/commit_prep, CVSROOT/log_accum:
       
  8965 +    	Deleted; generic versions now used for all repositories.
       
  8966 +    
       
  8967 +    	* CVSROOT/commitinfo, CVSROOT/loginfo:  Change pathnames to
       
  8968 +    	generic versions.
       
  8969 +    
       
  8970 +            * CVSROOT/checkoutlist:  Don't try to check out the removed
       
  8971 +            files any longer.
       
  8972 +
       
  8973 +commit acdb20051207fed7652dd9f122f65de5458c474c
       
  8974 +Author: jsm <jsm>
       
  8975 +Date:   Sat Oct 9 20:18:15 1999 +0000
       
  8976 +
       
  8977 +    1999-10-09  Jason Molenda  (jsm@bugshack.cygnus.com)
       
  8978 +    
       
  8979 +    	* CVSROOT/auto_checkout, CVSROOT/commit_prep, CVSROOT/log_accum:
       
  8980 +    	Deleted; generic versions now used for all repositories.
       
  8981 +    
       
  8982 +    	* CVSROOT/commitinfo, CVSROOT/loginfo:  Change pathnames to
       
  8983 +    	generic versions.
       
  8984 +    
       
  8985 +            * CVSROOT/checkoutlist:  Don't try to check out the removed
       
  8986 +            files any longer.
       
  8987 +
       
  8988 +commit e75be655ceedf7ab24c4e99d75eec9efeb979bc7
       
  8989 +Author: green <green>
       
  8990 +Date:   Sun Aug 8 13:16:41 1999 +0000
       
  8991 +
       
  8992 +    New configury
       
  8993 +
       
  8994 +commit d6669a0dd5b266005325bbf6d5a8ff34574d809e
       
  8995 +Author: green <green>
       
  8996 +Date:   Sun Aug 8 13:05:12 1999 +0000
       
  8997 +
       
  8998 +    	* include/ffi.h.in: Try to work around messy header problem
       
  8999 +    	with PACKAGE and VERSION.
       
  9000 +    
       
  9001 +    	* configure: Rebuilt.
       
  9002 +    	* configure.in: Change version to 2.00-beta.
       
  9003 +    
       
  9004 +            * fficonfig.h.in: Rebuilt.
       
  9005 +    	* acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define.
       
  9006 +    
       
  9007 +    	* src/x86/ffi.c (ffi_raw_call): Rename.
       
  9008 +
       
  9009 +commit 4819d52b007934a40d6d29a75ee30e857c4a93ae
       
  9010 +Author: green <green>
       
  9011 +Date:   Wed Aug 4 18:02:34 1999 +0000
       
  9012 +
       
  9013 +    New file for Kresten's closure work
       
  9014 +
       
  9015 +commit 2dbf801eb427cbf5021a9e1e512b5fc523524700
       
  9016 +Author: green <green>
       
  9017 +Date:   Wed Aug 4 18:00:05 1999 +0000
       
  9018 +
       
  9019 +    Kresten's closure work. Initial checkin.
       
  9020 +
       
  9021 +commit d170961701b0f2bf7e824d7caba2ebe10002ed84
       
  9022 +Author: green <green>
       
  9023 +Date:   Thu Jul 8 14:36:52 1999 +0000
       
  9024 +
       
  9025 +    	* configure.in: Add x86 and powerpc BeOS configurations.
       
  9026 +    	From Makoto Kato <m_kato@ga2.so-net.ne.jp>.
       
  9027 +
       
  9028 +commit c7747d976924ec6f2229cbcfbbdb98d364e10de9
       
  9029 +Author: jsm <jsm>
       
  9030 +Date:   Wed May 12 23:32:16 1999 +0000
       
  9031 +
       
  9032 +    1999-05-12  Jason Molenda  (jsm@bugshack.cygnus.com)
       
  9033 +            * index.html: Add links to libffi* mail list archives.
       
  9034 +
       
  9035 +commit dd2aa9a8de22e26df3bbc85d068358641f6202f7
       
  9036 +Author: green <green>
       
  9037 +Date:   Thu May 6 05:34:36 1999 +0000
       
  9038 +
       
  9039 +    	* configure.in: Add warning about this being beta code.
       
  9040 +    	Remove src/Makefile.am from the picture.
       
  9041 +    	* configure: Rebuilt.
       
  9042 +    	* Makefile.am: Move logic from src/Makefile.am.  Add changes
       
  9043 +    	to support libffi as a target library.
       
  9044 +    	* Makefile.in: Rebuilt.
       
  9045 +    	* aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh:
       
  9046 +    	Upgraded to new autoconf, automake, libtool.
       
  9047 +    	* README: Tweaks.
       
  9048 +    	* LICENSE: Update copyright date.
       
  9049 +    	* src/Makefile.am, src/Makefile.in: Removed.
       
  9050 +
       
  9051 +commit 4e9452abed58a3058ccdb446f96a29d50dda1f34
       
  9052 +Author: green <green>
       
  9053 +Date:   Wed May 5 22:06:13 1999 +0000
       
  9054 +
       
  9055 +    Updated to new automake, libtool, autoconf - nothing works :-)
       
  9056 +
       
  9057 +commit 6d3b2bddaf4967fba8b8656c01bfc77ec0f2800c
       
  9058 +Author: jsm <jsm>
       
  9059 +Date:   Mon Apr 26 15:55:28 1999 +0000
       
  9060 +
       
  9061 +    1999-04-26  Jason Molenda  (jsm@bugshack.cygnus.com)
       
  9062 +            * index.html: Missed a reference to libffi-discuss@cygnus.com.  Fixed.
       
  9063 +
       
  9064 +commit ebc6a9c28af831d3d187af8ff17319f0f309bd98
       
  9065 +Author: jsm <jsm>
       
  9066 +Date:   Mon Apr 26 15:53:29 1999 +0000
       
  9067 +
       
  9068 +    1999-04-26  Jason Molenda  (jsm@bugshack.cygnus.com)
       
  9069 +            * index.html: Change links to ftp directory to point to sourceware
       
  9070 +            directory.
       
  9071 +            Change mailing list subscription forms to point to sourceware lists.
       
  9072 +
       
  9073 +commit 78ffc52a8b257061348c576ccb6fbbf8b48b0fff
       
  9074 +Author: jsm <jsm>
       
  9075 +Date:   Sun Apr 18 01:33:21 1999 +0000
       
  9076 +
       
  9077 +    Standard sourceware setup.
       
  9078 +
       
  9079 +commit b4d77e827d7ebef7e57ebcd71e71c15c62f1e0a8
       
  9080 +Author: jsm <jsm>
       
  9081 +Date:   Mon Nov 30 11:11:25 1998 +0000
       
  9082 +
       
  9083 +    Small typeo.  (I wouldn't bother except that it made the sentence hard
       
  9084 +    for me to parse on a casual read.)
       
  9085 +
       
  9086 +commit bfb73f08fdc987e37070c5fb0b196fbd28872888
       
  9087 +Author: jsm <jsm>
       
  9088 +Date:   Mon Nov 30 10:44:55 1998 +0000
       
  9089 +
       
  9090 +    A few cleanups.  Most notably, point to the correct subscribe cgi-bin
       
  9091 +    script.
       
  9092 +
       
  9093 +commit af8b7f037ccee3b7939ee226a1a2bbc2f057b35c
       
  9094 +Author: green <green>
       
  9095 +Date:   Mon Nov 30 06:20:05 1998 +0000
       
  9096 +
       
  9097 +    	* index.html: Reformatted and updated to reflect hosting on
       
  9098 +    	sourceware.cygnus.com (new mailing lists, etc).
       
  9099 +
       
  9100 +commit 334f0b060942aff8d26badaf7dde7830450dc5da
       
  9101 +Author: green <green>
       
  9102 +Date:   Sun Nov 29 16:56:12 1998 +0000
       
  9103 +
       
  9104 +    initial snapshot of documentation
       
  9105 +
       
  9106 +commit 3ab5cb4a1dcc7ecd7e773c97582b0099976c4753
       
  9107 +Author: green <green>
       
  9108 +Date:   Sun Nov 29 16:56:10 1998 +0000
       
  9109 +
       
  9110 +    Initial revision
       
  9111 +
       
  9112 +commit d2a9eb5a8b7cbc8b769809cad59c82b975c178e2
       
  9113 +Merge: d3782ec bc75c54
       
  9114 +Author: green <green>
       
  9115 +Date:   Sun Nov 29 16:48:16 1998 +0000
       
  9116 +
       
  9117 +    This commit was generated by cvs2svn to compensate for changes in r7, which
       
  9118 +    included commits to RCS files with non-trunk default branches.
       
  9119 +
       
  9120 +commit bc75c54bd311658005b065f1bf201b204c81cbca
       
  9121 +Author: green <green>
       
  9122 +Date:   Sun Nov 29 16:48:16 1998 +0000
       
  9123 +
       
  9124 +    Import of v1 code.
       
  9125 +
       
  9126 +commit d3782ec8160c644421dcea17b605fec6e328f14e
       
  9127 +Author: jsm <jsm>
       
  9128 +Date:   Fri Nov 20 20:18:00 1998 +0000
       
  9129 +
       
  9130 +    Send commit messages to mailing lists.
       
  9131 +
       
  9132 +commit 8d8d3843c484c2bb70d8375b2b799f75eb03f709
       
  9133 +Author: jsm <jsm>
       
  9134 +Date:   Thu Oct 1 22:08:36 1998 +0000
       
  9135 +
       
  9136 +    initial checkin
       
  9137 +
       
  9138 +commit 49634f3bf221cc1939abafc788f7e4e31293fe73
       
  9139 +Author: jsm <jsm>
       
  9140 +Date:   Thu Oct 1 22:08:35 1998 +0000
       
  9141 +
       
  9142 +    Add standard setup.
       
  9143 +
       
  9144 +commit c64a84c7693f8cd400fb94bba3c9bcfd9ad1fc36
       
  9145 +Author: jsm <jsm>
       
  9146 +Date:   Thu Oct 1 22:08:34 1998 +0000
       
  9147 +
       
  9148 +    Add readers and standard modules file.
       
  9149 +
       
  9150 +commit 9813273b07fd082da573b3b6bfb8d23809b59eea
       
  9151 +Author: jsm <jsm>
       
  9152 +Date:   Thu Oct 1 22:08:33 1998 +0000
       
  9153 +
       
  9154 +    initial checkin
       
  9155 diff --git a/js/src/ctypes/libffi/ChangeLog.libffi b/js/src/ctypes/libffi/ChangeLog.libffi
       
  9156 --- a/js/src/ctypes/libffi/ChangeLog.libffi
       
  9157 +++ b/js/src/ctypes/libffi/ChangeLog.libffi
       
  9158 @@ -1,40 +1,11 @@
       
  9159 -2010-01-15  Anthony Green  <green@redhat.com>
       
  9160 +2011-02-08  Andreas Tobler  <andreast@fgznet.ch>
       
  9161  
       
  9162 -	* README: Add notes on building with Microsoft Visual C++.
       
  9163 -
       
  9164 -2010-01-15  Daniel Witte  <dwitte@mozilla.com>
       
  9165 -
       
  9166 -	* msvcc.sh: New file.
       
  9167 -
       
  9168 -	* src/x86/win32.S: Port assembly routines to MSVC and #ifdef.
       
  9169 -	* src/x86/ffi.c: Tweak function declaration and remove excess
       
  9170 -	parens.
       
  9171 -	* include/ffi.h.in: Add __declspec(align(8)) to typedef struct
       
  9172 -	ffi_closure.
       
  9173 -
       
  9174 -	* src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new
       
  9175 -	function ffi_call_win32 on X86_WIN32.
       
  9176 -	* src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32.
       
  9177 -	(ffi_call_STDCALL): Remove.
       
  9178 -
       
  9179 -	* src/prep_cif.c (ffi_prep_cif): Move stack space allocation code
       
  9180 -	to ffi_prep_cif_machdep for x86.
       
  9181 -	* src/x86/ffi.c (ffi_prep_cif_machdep): To here.
       
  9182 -
       
  9183 -2010-01-15  Oliver Kiddle  <okiddle@yahoo.co.uk>
       
  9184 -
       
  9185 -	* src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for
       
  9186 -	Sun Studio compiler compatibility. 
       
  9187 -
       
  9188 -2010-01-12  Conrad Irwin <conrad.irwin@gmail.com>
       
  9189 -
       
  9190 -	* doc/libffi.texi: Add closure example.
       
  9191 -	* doc/libffi.info: Rebuilt.
       
  9192 +	* testsuite/lib/libffi.exp: Tweak for stand-alone mode.
       
  9193  
       
  9194  2009-12-25  Samuli Suominen  <ssuominen@gentoo.org>
       
  9195  
       
  9196  	* configure.ac: Undefine _AC_ARG_VAR_PRECIOUS for autoconf 2.64.
       
  9197  	* configure: Rebuilt.
       
  9198  	* fficonfig.h.in: Rebuilt.
       
  9199  
       
  9200  2009-06-16  Andrew Haley  <aph@redhat.com>
       
  9201 @@ -598,16 +569,16 @@ 2008-01-30  H.J. Lu <hongjiu.lu@intel.co
       
  9202  	* testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
       
  9203  	tests.
       
  9204  
       
  9205  2008-01-30  Anthony Green  <green@redhat.com>
       
  9206  
       
  9207  	* Makefile.am, include/Makefile.am: Move headers to
       
  9208  	libffi_la_SOURCES for new automake.
       
  9209  	* Makefile.in, include/Makefile.in: Rebuilt.
       
  9210 -	
       
  9211 -	* testsuite/lib/wrapper.exp: Copied from gcc tree to allow for 
       
  9212 +
       
  9213 +	* testsuite/lib/wrapper.exp: Copied from gcc tree to allow for
       
  9214  	execution outside of gcc tree.
       
  9215  	* testsuite/lib/target-libpath.exp: Ditto.
       
  9216  
       
  9217  	* testsuite/lib/libffi-dg.exp: Many changes to allow for execution
       
  9218  	outside of gcc tree.
       
  9219  
       
  9220 diff --git a/js/src/ctypes/libffi/ChangeLog.libffi-3.1 b/js/src/ctypes/libffi/ChangeLog.libffi-3.1
       
  9221 new file mode 100644
       
  9222 --- /dev/null
       
  9223 +++ b/js/src/ctypes/libffi/ChangeLog.libffi-3.1
       
  9224 @@ -0,0 +1,6000 @@
       
  9225 +2014-03-16  Josh Triplett  <josh@joshtriplett.org>
       
  9226 +
       
  9227 +	* ChangeLog: Archive to ChangeLog.libffi-3.1 and delete.  Future
       
  9228 +	changelogs will come from git, with autogenerated snapshots shipped in
       
  9229 +	distributed tarballs.
       
  9230 +
       
  9231 +2014-03-16  Josh Triplett  <josh@joshtriplett.org>
       
  9232 +
       
  9233 +	Add support for stdcall, thiscall, and fastcall on non-Windows
       
  9234 +	x86-32.
       
  9235 +
       
  9236 +	Linux supports the stdcall calling convention, either via
       
  9237 +	functions explicitly declared with the stdcall attribute, or via
       
  9238 +	code compiled with -mrtd which effectively makes stdcall the
       
  9239 +	default.
       
  9240 +
       
  9241 +	This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on
       
  9242 +	non-Windows x86-32 platforms, as non-default calling conventions.
       
  9243 +
       
  9244 +	* Makefile.am: Compile in src/x86/win32.S on non-Windows x86-32.
       
  9245 +	* src/x86/ffitarget.h: Add FFI_STDCALL, FFI_THISCALL, and
       
  9246 +	FFI_FASTCALL on non-Windows x86-32.  Increase trampoline size to
       
  9247 +	accomodate these calling conventions, and unify some ifdeffery.
       
  9248 +	* src/x86/ffi.c: Add support for FFI_STDCALL, FFI_THISCALL, and
       
  9249 +	FFI_FASTCALL on non-Windows x86-32 platforms; update ifdeffery.
       
  9250 +	* src/x86/win32.S: Support compiling on non-Windows x86-32
       
  9251 +	platforms.  On those platforms, avoid redefining the SYSV symbols
       
  9252 +	already provided by src/x86/sysv.S.
       
  9253 +	* testsuite/libffi.call/closure_stdcall.c: Run on non-Windows.
       
  9254 +	#define __stdcall if needed.
       
  9255 +	* testsuite/libffi.call/closure_thiscall.c: Run on non-Windows.
       
  9256 +	#define __fastcall if needed.
       
  9257 +	* testsuite/libffi.call/fastthis1_win32.c: Run on non-Windows.
       
  9258 +	* testsuite/libffi.call/fastthis2_win32.c: Ditto.
       
  9259 +	* testsuite/libffi.call/fastthis3_win32.c: Ditto.
       
  9260 +	* testsuite/libffi.call/many2_win32.c: Ditto.
       
  9261 +	* testsuite/libffi.call/many_win32.c: Ditto.
       
  9262 +	* testsuite/libffi.call/strlen2_win32.c: Ditto.
       
  9263 +	* testsuite/libffi.call/strlen_win32.c: Ditto.
       
  9264 +	* testsuite/libffi.call/struct1_win32.c: Ditto.
       
  9265 +	* testsuite/libffi.call/struct2_win32.c: Ditto.
       
  9266 +
       
  9267 +2014-03-16  Josh Triplett  <josh@joshtriplett.org>
       
  9268 +
       
  9269 +	* prep_cif.c: Remove unnecessary ifdef for X86_WIN32.
       
  9270 +	ffi_prep_cif_core had a special case for X86_WIN32, checking for
       
  9271 +	FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI
       
  9272 +	range before returning FFI_BAD_ABI.  However, on X86_WIN32,
       
  9273 +	FFI_THISCALL already falls in that range, making the special case
       
  9274 +	unnecessary.  Remove it.
       
  9275 +
       
  9276 +2014-03-16  Josh Triplett  <josh@joshtriplett.org>
       
  9277 +
       
  9278 +	* testsuite/libffi.call/closure_stdcall.c,
       
  9279 +	testsuite/libffi.call/closure_thiscall.c: Remove fragile stack
       
  9280 +	pointer checks.  These files included inline assembly to save the
       
  9281 +	stack pointer before and after the call, and compare the values.
       
  9282 +	However, compilers can and do leave the stack in different states
       
  9283 +	for these two pieces of inline assembly, such as by saving a
       
  9284 +	temporary value on the stack across the call; observed with gcc
       
  9285 +	-Os, and verified as spurious through careful inspection of
       
  9286 +	disassembly.
       
  9287 +
       
  9288 +2014-03-16  Josh Triplett  <josh@joshtriplett.org>
       
  9289 +
       
  9290 +	* testsuite/libffi.call/many.c: Avoid spurious failure due to
       
  9291 +	excess floating-point precision.
       
  9292 +	* testsuite/libffi.call/many_win32.c: Ditto.
       
  9293 +
       
  9294 +2014-03-16  Josh Triplett <josh@joshtriplett.org>
       
  9295 +
       
  9296 +	* libtool-ldflags: Re-add.
       
  9297 +
       
  9298 +2014-03-16  Josh Triplett <josh@joshtriplett.org>
       
  9299 +
       
  9300 +	* Makefile.in, aclocal.m4, compile, config.guess, config.sub,
       
  9301 +	configure, depcomp, include/Makefile.in, install-sh,
       
  9302 +	libtool-ldflags, ltmain.sh, m4/libtool.m4, m4/ltoptions.m4,
       
  9303 +	m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4,
       
  9304 +	man/Makefile.in, mdate-sh, missing, testsuite/Makefile.in: Delete
       
  9305 +	autogenerated files from version control.
       
  9306 +	* .gitignore: Add autogenerated files.
       
  9307 +	* autogen.sh: New script to generate the autogenerated files.
       
  9308 +	* README: Document requirement to run autogen.sh when building
       
  9309 +	directly from version control.
       
  9310 +	* .travis.yml: Run autogen.sh
       
  9311 +
       
  9312 +2014-03-14  Anthony Green <green@moxielogic.com>
       
  9313 +
       
  9314 +	* configure, Makefile.in: Rebuilt.
       
  9315 +
       
  9316 +2014-03-10  Mike Hommey <mh+mozilla@glandium.org>
       
  9317 +
       
  9318 +	* configure.ac: Allow building for mipsel with Android NDK r8.
       
  9319 +	* Makefile.am (AM_MAKEFLAGS): Replace double quotes with single
       
  9320 +	quotes.
       
  9321 +
       
  9322 +2014-03-10  Landry Breuil <landry@openbsd.org>
       
  9323 +
       
  9324 +	* configure.ac: Ensure the linker supports @unwind sections in libffi.
       
  9325 +
       
  9326 +2014-03-01  Anthony Green  <green@moxielogic.com>
       
  9327 +
       
  9328 +	* Makefile.am (EXTRA_DIST): Replace old scripts with
       
  9329 +	generate-darwin-source-and-headers.py.
       
  9330 +	* Makefile.in: Rebuilt.
       
  9331 +
       
  9332 +2014-02-28  Anthony Green  <green@moxielogic.com>
       
  9333 +
       
  9334 +	* Makefile.am (AM_CFLAGS): Reintroduce missing -DFFI_DEBUG for
       
  9335 +	--enable-debug builds.
       
  9336 +	* Makefile.in: Rebuilt.
       
  9337 +
       
  9338 +2014-02-28  Makoto Kato  <m_kato@ga2.so-net.ne.jp>
       
  9339 +
       
  9340 +	* src/closures.c: Fix build failure when using clang for Android.
       
  9341 +
       
  9342 +2014-02-28  Marcin Wojdyr  <wojdyr@gmail.com>
       
  9343 +
       
  9344 +	* libffi.pc.in (toolexeclibdir): use -L${toolexeclibdir} instead
       
  9345 +	of -L${libdir}.
       
  9346 +
       
  9347 +2014-02-28  Paulo Pizarro  <paulo.pizarro@gmail.com>
       
  9348 +
       
  9349 +	* src/bfin/sysv.S: Calling functions in shared libraries requires
       
  9350 +	considering the GOT.
       
  9351 +
       
  9352 +2014-02-28  Josh Triplett  <josh@joshtriplett.org>
       
  9353 +
       
  9354 +	* src/x86/ffi64.c (classify_argument): Handle case where
       
  9355 +	FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE.
       
  9356 +
       
  9357 +2014-02-28  Anthony Green  <green@moxielogic.com>
       
  9358 +
       
  9359 +	* ltmain.sh: Generate with libtool-2.4.2.418.
       
  9360 +	* m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4: Ditto.
       
  9361 +	* configure: Rebuilt.
       
  9362 +
       
  9363 +2014-02-28  Dominik Vogt  <vogt@linux.vnet.ibm.com>
       
  9364 +
       
  9365 +	* configure.ac (AC_ARG_ENABLE struct): Fix typo in help
       
  9366 +	message.
       
  9367 +	(AC_ARG_ENABLE raw_api): Ditto.
       
  9368 +	* configure, fficonfig.h.in: Rebuilt.
       
  9369 +
       
  9370 +2014-02-28  Will Newton  <will.newton@linaro.org>
       
  9371 +
       
  9372 +	* src/arm/sysv.S: Initialize IP register with FP.
       
  9373 +
       
  9374 +2014-02-28  Yufeng Zhang  <yufeng.zhang@arm.com>
       
  9375 +
       
  9376 +	* src/aarch64/sysv.S (ffi_closure_SYSV): Use x29 as the
       
  9377 +	main CFA reg; update cfi_rel_offset.
       
  9378 +
       
  9379 +2014-02-15  Marcus Comstedt  <marcus@mc.pp.se>
       
  9380 +
       
  9381 +	* src/powerpc/ffi_linux64.c, src/powerpc/linux64_closure.S: Remove
       
  9382 +	assumption on contents of r11 in closure.
       
  9383 +
       
  9384 +2014-02-09  Heiher  <r@hev.cc>
       
  9385 +
       
  9386 +	* src/mips/n32.S: Fix call floating point va function.
       
  9387 +
       
  9388 +2014-01-21  Zachary Waldowski  <zach@waldowski.me>
       
  9389 +
       
  9390 +	* src/aarch64/ffi.c: Fix missing semicolons on assertions under
       
  9391 +	debug mode.
       
  9392 +
       
  9393 +2013-12-30  Zachary Waldowski  <zach@waldowski.me>
       
  9394 +
       
  9395 +	* .gitignore: Exclude darwin_* generated source and build_* trees.
       
  9396 +	* src/aarch64/ffi.c, src/arm/ffi.c, src/x86/ffi.c: Inhibit Clang
       
  9397 +	previous prototype warnings.
       
  9398 +	* src/arm/ffi.c: Prevent NULL dereference, fix short type warning
       
  9399 +	* src/dlmalloc.c: Fix warnings from set_segment_flags return type,
       
  9400 +	and the native use of size_t for malloc on platforms
       
  9401 +	* src/arm/sysv.S: Use unified syntax. Clang clean-ups for
       
  9402 +	ARM_FUNC_START.
       
  9403 +	* generate-osx-source-and-headers.py: Remove.
       
  9404 +	* build-ios.sh: Remove.
       
  9405 +	* libffi.xcodeproj/project.pbxproj: Rebuild targets. Include
       
  9406 +	x86_64+aarch64 pieces in library.  Export headers properly.
       
  9407 +	* src/x86/ffi64.c: More Clang warning clean-ups.
       
  9408 +	* src/closures.c (open_temp_exec_file_dir): Use size_t.
       
  9409 +	* src/prep_cif.c (ffi_prep_cif_core): Cast ALIGN result.
       
  9410 +	* src/aarch64/sysv.S: Use CNAME for global symbols.  Only use
       
  9411 +	.size for ELF targets.
       
  9412 +	* src/aarch64/ffi.c: Clean up for double == long double.  Clean up
       
  9413 +	from Clang warnings.  Use Clang cache invalidation builtin.  Use
       
  9414 +	size_t in place of unsigned in many places.  Accommodate for
       
  9415 +	differences in Apple AArch64 ABI.
       
  9416 +
       
  9417 +2013-12-02  Daniel Rodríguez Troitiño  <drodrigueztroitino@yahoo.es>
       
  9418 +
       
  9419 +	* generate-darwin-source-and-headers.py: Clean up, modernize,
       
  9420 +	merged version of previous scripts.
       
  9421 +
       
  9422 +2013-11-21  Anthony Green  <green@moxielogic.com>
       
  9423 +
       
  9424 +	* configure, Makefile.in, include/Makefile.in, include/ffi.h.in,
       
  9425 +	man/Makefile.in, testsuite/Makefile.in, fficonfig.h.in: Rebuilt.
       
  9426 +
       
  9427 +2013-11-21  Alan Modra  <amodra@gmail.com>
       
  9428 +
       
  9429 +	* Makefile.am (EXTRA_DIST): Add new src/powerpc files.
       
  9430 +	(nodist_libffi_la_SOURCES <POWERPC, POWERPC_FREEBSD>): Likewise.
       
  9431 +	* configure.ac (HAVE_LONG_DOUBLE_VARIANT): Define for powerpc.
       
  9432 +	* include/ffi.h.in (ffi_prep_types): Declare.
       
  9433 +	* src/prep_cif.c (ffi_prep_cif_core): Call ffi_prep_types.
       
  9434 +	* src/types.c (FFI_NONCONST_TYPEDEF): Define and use for
       
  9435 +	HAVE_LONG_DOUBLE_VARIANT.
       
  9436 +	* src/powerpc/ffi_powerpc.h: New file.
       
  9437 +	* src/powerpc/ffi.c: Split into..
       
  9438 +	* src/powerpc/ffi_sysv.c: ..new file, and..
       
  9439 +	* src/powerpc/ffi_linux64.c: ..new file, rewriting parts.
       
  9440 +	* src/powerpc/ffitarget.h (enum ffi_abi): Rewrite powerpc ABI
       
  9441 +	selection as bits controlling features.
       
  9442 +	* src/powerpc/linux64.S: For consistency, use POWERPC64 rather
       
  9443 +	than __powerpc64__.
       
  9444 +	* src/powerpc/linux64_closure.S: Likewise.
       
  9445 +	* src/powerpc/ppc_closure.S: Likewise.  Move .note.FNU-stack
       
  9446 +	inside guard.
       
  9447 +	* src/powerpc/sysv.S: Likewise.
       
  9448 +	* configure: Regenerate.
       
  9449 +	* fficonfig.h.in: Regenerate.
       
  9450 +	* Makefile.in: Regenerate.
       
  9451 +
       
  9452 +2013-11-20  Alan Modra  <amodra@gmail.com>
       
  9453 +
       
  9454 +	* src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use
       
  9455 +	NUM_FPR_ARG_REGISTERS64 and NUM_GPR_ARG_REGISTERS64 not their
       
  9456 +	32-bit versions for 64-bit code.
       
  9457 +	* src/powerpc/linux64_closure.S: Don't use the return value area
       
  9458 +	as a parameter save area on ELFv2.
       
  9459 +
       
  9460 +2013-11-18  Iain Sandoe  <iain@codesourcery.com>
       
  9461 +
       
  9462 +	* src/powerpc/darwin.S (EH): Correct use of pcrel FDE encoding.
       
  9463 +	* src/powerpc/darwin_closure.S (EH): Likewise. Modernise picbase
       
  9464 +	labels.
       
  9465 +
       
  9466 +2013-11-18  Anthony Green  <green@moxielogic.com>
       
  9467 +
       
  9468 +	* src/arm/ffi.c (ffi_call): Hoist declaration of temp to top of
       
  9469 +	function.
       
  9470 +	* src/arm/ffi.c (ffi_closure_inner): Moderize function declaration
       
  9471 +	to appease compiler.
       
  9472 +	Thanks for Gregory P. Smith <greg@krypto.org>.
       
  9473 +
       
  9474 +2013-11-18  Anthony Green  <green@moxielogic.com>
       
  9475 +
       
  9476 +	* README (tested): Mention PowerPC ELFv2.
       
  9477 +
       
  9478 +2013-11-16  Alan Modra  <amodra@gmail.com>
       
  9479 +
       
  9480 +	* src/powerpc/ppc_closure.S: Move errant #endif to where it belongs.
       
  9481 +	Don't bl .Luint128.
       
  9482 +
       
  9483 +2013-11-16  Alan Modra  <amodra@gmail.com>
       
  9484 +
       
  9485 +	* src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use #if _CALL_ELF
       
  9486 +	test to select parameter save sizing for ELFv2 vs. ELFv1.
       
  9487 +	* src/powerpc/ffitarget.h (FFI_V2_TYPE_FLOAT_HOMOG,
       
  9488 +	FFI_V2_TYPE_DOUBLE_HOMOG, FFI_V2_TYPE_SMALL_STRUCT): Define.
       
  9489 +	(FFI_TRAMPOLINE_SIZE): Define variant for ELFv2.
       
  9490 +	* src/powerpc/ffi.c (FLAG_ARG_NEEDS_PSAVE): Define.
       
  9491 +	(discover_homogeneous_aggregate): New function.
       
  9492 +	(ffi_prep_args64): Adjust start of param save area for ELFv2.
       
  9493 +	Handle homogenous floating point struct parms.
       
  9494 +	(ffi_prep_cif_machdep_core): Adjust space calculation for ELFv2.
       
  9495 +	Handle ELFv2 return values.  Set FLAG_ARG_NEEDS_PSAVE.  Handle
       
  9496 +	homogenous floating point structs.
       
  9497 +	(ffi_call): Increase size of smst_buffer for ELFv2.  Handle ELFv2.
       
  9498 +	(flush_icache): Compile for ELFv2.
       
  9499 +	(ffi_prep_closure_loc): Set up ELFv2 trampoline.
       
  9500 +	(ffi_closure_helper_LINUX64): Don't return all structs directly
       
  9501 +	to caller.  Handle homogenous floating point structs.  Handle
       
  9502 +	ELFv2 struct return values.
       
  9503 +	* src/powerpc/linux64.S (ffi_call_LINUX64): Set up r2 for
       
  9504 +	ELFv2.  Adjust toc save location.  Call function pointer using
       
  9505 +	r12.  Handle FLAG_RETURNS_SMST.  Don't predict branches.
       
  9506 +	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Set up r2
       
  9507 +	for ELFv2.  Define ELFv2 versions of STACKFRAME, PARMSAVE, and
       
  9508 +	RETVAL.  Handle possibly missing parameter save area.  Handle
       
  9509 +	ELFv2 return values.
       
  9510 +	(.note.GNU-stack): Move inside outer #ifdef.
       
  9511 +
       
  9512 +2013-11-16  Alan Modra  <amodra@gmail.com>
       
  9513 +
       
  9514 +	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Revert 2013-02-08
       
  9515 +	change.  Do not consume an int arg when returning a small struct
       
  9516 +	for FFI_SYSV ABI.
       
  9517 +	(ffi_call): Only use bounce buffer when FLAG_RETURNS_SMST.
       
  9518 +	Properly copy bounce buffer to destination.
       
  9519 +	* src/powerpc/sysv.S: Revert 2013-02-08 change.
       
  9520 +	* src/powerpc/ppc_closure.S: Remove stray '+'.
       
  9521 +
       
  9522 +2013-11-16  Alan Modra  <amodra@gmail.com>
       
  9523 +
       
  9524 +	* src/powerpc/ffi.c (ffi_prep_args64): Align struct parameters
       
  9525 +	according to __STRUCT_PARM_ALIGN__.
       
  9526 +	(ffi_prep_cif_machdep_core): Likewise.
       
  9527 +	(ffi_closure_helper_LINUX64): Likewise.
       
  9528 +
       
  9529 +2013-11-16  Alan Modra  <amodra@gmail.com>
       
  9530 +
       
  9531 +	* src/powerpc/linux64.S (ffi_call_LINUX64): Tweak restore of r28.
       
  9532 +	(.note.GNU-stack): Move inside outer #ifdef.
       
  9533 +	* src/powerpc/linux64_closure.S (STACKFRAME, PARMSAVE,
       
  9534 +	RETVAL): Define and use throughout.
       
  9535 +	(ffi_closure_LINUX64): Save fprs before buying stack.
       
  9536 +	(.note.GNU-stack): Move inside outer #ifdef.
       
  9537 +
       
  9538 +2013-11-16  Alan Modra  <amodra@gmail.com>
       
  9539 +
       
  9540 +	* src/powerpc/ffitarget.h (FFI_TARGET_SPECIFIC_VARIADIC): Define.
       
  9541 +	(FFI_EXTRA_CIF_FIELDS): Define.
       
  9542 +	* src/powerpc/ffi.c (ffi_prep_args64): Save fprs as per the
       
  9543 +	ABI, not to both fpr and param save area.
       
  9544 +	(ffi_prep_cif_machdep_core): Renamed from ffi_prep_cif_machdep.
       
  9545 +	Keep initial flags.  Formatting.  Remove dead FFI_LINUX_SOFT_FLOAT
       
  9546 +	code.
       
  9547 +	(ffi_prep_cif_machdep, ffi_prep_cif_machdep_var): New functions.
       
  9548 +	(ffi_closure_helper_LINUX64): Pass floating point as per ABI,
       
  9549 +	not to both fpr and parameter save areas.
       
  9550 +
       
  9551 +	* libffi/testsuite/libffi.call/cls_double_va.c (main): Correct
       
  9552 +	function cast and don't call ffi_prep_cif.
       
  9553 +	* libffi/testsuite/libffi.call/cls_longdouble_va.c (main): Likewise.
       
  9554 +
       
  9555 +2013-11-15  Andrew Haley  <aph@redhat.com>
       
  9556 +
       
  9557 +	* doc/libffi.texi (Closure Example): Fix the sample code.
       
  9558 +	* doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  9559 +
       
  9560 +2013-11-15  Andrew Haley  <aph@redhat.com>
       
  9561 +
       
  9562 +	* testsuite/libffi.call/va_struct1.c (main): Fix broken test.
       
  9563 +	* testsuite/libffi.call/cls_uint_va.c (cls_ret_T_fn): Likewise
       
  9564 +	* testsuite/libffi.call/cls_struct_va1.c (test_fn): Likewise.
       
  9565 +	* testsuite/libffi.call/va_1.c (main): Likewise.
       
  9566 +
       
  9567 +2013-11-14  David Schneider  <david.schneider@bivab.de>
       
  9568 +
       
  9569 +	* src/arm/ffi.c: Fix register allocation for mixed float and
       
  9570 +	doubles.
       
  9571 +	* testsuite/libffi.call/cls_many_mixed_float_double.c: Testcase
       
  9572 +	for many mixed float and double arguments.
       
  9573 +
       
  9574 +2013-11-13  Alan Modra  <amodra@gmail.com>
       
  9575 +
       
  9576 +	* doc/libffi.texi (Simple Example): Correct example code.
       
  9577 +	* doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt.
       
  9578 +
       
  9579 +2013-11-13  Anthony Green  <green@moxielogic.com>
       
  9580 +
       
  9581 +	* include/ffi_common.h: Respect HAVE_ALLOCA_H for GNU compiler
       
  9582 +	based build. (Thanks to tmr111116 on github)
       
  9583 +
       
  9584 +2013-11-09  Anthony Green  <green@moxielogic.com>
       
  9585 +
       
  9586 +	* m4/libtool.m4: Refresh.
       
  9587 +	* configure, Makefile.in: Rebuilt.
       
  9588 +	* README: Add more notes about next release.
       
  9589 +
       
  9590 +2013-11-09  Shigeharu TAKENO  <shige@iee.niit.ac.jp>
       
  9591 +
       
  9592 +	* m4/ax_gcc_archflag.m4 (ax_gcc_arch): Don't recognize
       
  9593 +	UltraSPARC-IIi as ultrasparc3.
       
  9594 +
       
  9595 +2013-11-06  Mark Kettenis  <kettenis@gnu.org>
       
  9596 +
       
  9597 +	* src/x86/freebsd.S (ffi_call_SYSV): Align the stack pointer to
       
  9598 +        16-bytes.
       
  9599 +
       
  9600 +2013-11-06  Konstantin Belousov <kib@freebsd.org>
       
  9601 +
       
  9602 +	* src/x86/freebsd.S (ffi_closure_raw_SYSV): Mark the assembler
       
  9603 +	source as not requiring executable stack.
       
  9604 +
       
  9605 +2013-11-02  Anthony Green  <green@moxielogic.com>
       
  9606 +
       
  9607 +	* doc/libffi.texi (The Basics): Clarify return value buffer size
       
  9608 +	requirements.  Also, NULL result buffer pointers are no longer
       
  9609 +	supported.
       
  9610 +	* doc/libffi.info: Rebuilt.
       
  9611 +
       
  9612 +2013-11-02  Mischa Jonker  <mjonker@synopsys.com>
       
  9613 +
       
  9614 +	* Makefile.am (nodist_libffi_la_SOURCES): Fix build error.
       
  9615 +	* Makefile.in: Rebuilt.
       
  9616 +
       
  9617 +2013-11-02  David Schneider  <david.schneider@bivab.de>
       
  9618 +
       
  9619 +	* src/arm/ffi.c: more robust argument handling for closures on arm hardfloat
       
  9620 +	* testsuite/libffi.call/many_mixed.c: New file.
       
  9621 +	* testsuite/libffi.call/cls_many_mixed_args.c: More tests.
       
  9622 +
       
  9623 +2013-11-02  Vitaly Budovski
       
  9624 +
       
  9625 +	* src/x86/ffi.c (ffi_prep_cif_machdep): Don't align stack for win32.
       
  9626 +
       
  9627 +2013-10-23  Mark H Weaver  <mhw@netris.org>
       
  9628 +
       
  9629 +	* src/mips/ffi.c: Fix handling of uint32_t arguments on the
       
  9630 +	MIPS N32 ABI.
       
  9631 +
       
  9632 +2013-10-13  Sandra Loosemore  <sandra@codesourcery.com>
       
  9633 +
       
  9634 +	* README: Add Nios II to table of supported platforms.
       
  9635 +	* Makefile.am (EXTRA_DIST): Add nios2 files.
       
  9636 +	(nodist_libffi_la_SOURCES): Likewise.
       
  9637 +	* Makefile.in: Regenerated.
       
  9638 +	* configure.ac (nios2*-linux*): New host.
       
  9639 +	(NIOS2): Add AM_CONDITIONAL.
       
  9640 +	* configure: Regenerated.
       
  9641 +	* src/nios2/ffi.c: New.
       
  9642 +	* src/nios2/ffitarget.h: New.
       
  9643 +	* src/nios2/sysv.S: New.
       
  9644 +	* src/prep_cif.c (initialize_aggregate): Handle extra structure
       
  9645 +	alignment via FFI_AGGREGATE_ALIGNMENT.
       
  9646 +	(ffi_prep_cif_core): Conditionalize structure return for NIOS2.
       
  9647 +
       
  9648 +2013-10-10  Sandra Loosemore  <sandra@codesourcery.com>
       
  9649 +
       
  9650 +	* testsuite/libffi.call/cls_many_mixed_args.c (cls_ret_double_fn):
       
  9651 +	Fix uninitialized variable.
       
  9652 +
       
  9653 +2013-10-11  Marcus Shawcroft  <marcus.shawcroft@arm.com>
       
  9654 +
       
  9655 +	* testsuite/libffi.call/many.c (many): Replace * with +.
       
  9656 +
       
  9657 +2013-10-08  Ondřej Bílka  <neleai@seznam.cz>
       
  9658 +
       
  9659 +	* src/aarch64/ffi.c, src/aarch64/sysv.S, src/arm/ffi.c,
       
  9660 +	src/arm/gentramp.sh, src/bfin/sysv.S, src/closures.c,
       
  9661 +	src/dlmalloc.c, src/ia64/ffi.c, src/microblaze/ffi.c,
       
  9662 +	src/microblaze/sysv.S, src/powerpc/darwin_closure.S,
       
  9663 +	src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/sh/ffi.c,
       
  9664 +	src/tile/tile.S, testsuite/libffi.call/nested_struct11.c: Fix
       
  9665 +	spelling errors.
       
  9666 +
       
  9667 +2013-10-08  Anthony Green  <green@moxielogic.com>
       
  9668 +
       
  9669 +	* aclocal.m4, compile, config.guess, config.sub, depcomp,
       
  9670 +	install-sh, mdate-sh, missing, texinfo.tex: Update from upstream.
       
  9671 +	* configure.ac: Update version to 3.0.14-rc0.
       
  9672 +	* Makefile.in, configure, Makefile.in, include/Makefile.in,
       
  9673 +	man/Makefile.in, testsuite/Makefile.in: Rebuilt.
       
  9674 +	* README: Mention M88K and VAX.
       
  9675 +
       
  9676 +2013-07-15  Miod Vallat  <miod@openbsd.org>
       
  9677 +
       
  9678 +	* Makefile.am,
       
  9679 +	configure.ac,
       
  9680 +	src/m88k/ffi.c,
       
  9681 +	src/m88k/ffitarget.h,
       
  9682 +	src/m88k/obsd.S,
       
  9683 +	src/vax/elfbsd.S,
       
  9684 +	src/vax/ffi.c,
       
  9685 +	src/vax/ffitarget.h: Add m88k and vax support.
       
  9686 +
       
  9687 +2013-06-24 Alan Modra  <amodra@gmail.com>
       
  9688 +
       
  9689 +	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Move var declaration
       
  9690 +	before statements.
       
  9691 +	(ffi_prep_args64): Support little-endian.
       
  9692 +	(ffi_closure_helper_SYSV, ffi_closure_helper_LINUX64): Likewise.
       
  9693 +	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Likewise.
       
  9694 +	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Likewise.
       
  9695 +
       
  9696 +2013-06-12  Mischa Jonker  <mjonker@synopsys.com>
       
  9697 +
       
  9698 +	 * configure.ac: Add support for ARC.
       
  9699 +	 * Makefile.am: Likewise.
       
  9700 +	 * README: Add ARC details.
       
  9701 +	 * src/arc/arcompact.S: New.
       
  9702 +	 * src/arc/ffi.c: Likewise.
       
  9703 +	 * src/arc/ffitarget.h: Likewise.
       
  9704 +
       
  9705 +2013-03-28  David Schneider  <david.schneider@bivab.de>
       
  9706 +
       
  9707 +	 * src/arm/ffi.c: Fix support for ARM hard-float calling convention.
       
  9708 +	 * src/arm/sysv.S: call different methods for SYSV and VFP ABIs.
       
  9709 +	 * testsuite/libffi.call/cls_many_mixed_args.c: testcase for a closure with
       
  9710 +	 mixed arguments, many doubles.
       
  9711 +	 * testsuite/libffi.call/many_double.c: testcase for calling a function using
       
  9712 +	 more than 8 doubles.
       
  9713 +	 * testcase/libffi.call/many.c: use absolute value to check result against an
       
  9714 +	 epsilon
       
  9715 +
       
  9716 +2013-03-17  Anthony Green  <green@moxielogic.com>
       
  9717 +
       
  9718 +	* README: Update for 3.0.13.
       
  9719 +	* configure.ac: Ditto.
       
  9720 +	* configure: Rebuilt.
       
  9721 +	* doc/*: Update version.
       
  9722 +
       
  9723 +2013-03-17  Dave Korn  <dave.korn.cygwin@gmail.com>
       
  9724 +
       
  9725 +	* src/closures.c (is_emutramp_enabled
       
  9726 +	[!FFI_MMAP_EXEC_EMUTRAMP_PAX]): Move default definition outside
       
  9727 +	enclosing #if scope.
       
  9728 +
       
  9729 +2013-03-17  Anthony Green  <green@moxielogic.com>
       
  9730 +
       
  9731 +	* configure.ac: Only modify toolexecdir in certain cases.
       
  9732 +	* configure: Rebuilt.
       
  9733 +
       
  9734 +2013-03-16  Gilles Talis  <gilles.talis@gmail.com>
       
  9735 +
       
  9736 +	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Don't use
       
  9737 +	fparg_count,etc on __NO_FPRS__ targets.
       
  9738 +
       
  9739 +2013-03-16  Alan Hourihane  <alanh@fairlite.co.uk>
       
  9740 +
       
  9741 +	* src/m68k/sysv.S (epilogue): Don't use extb instruction on
       
  9742 +	m680000 machines.
       
  9743 +
       
  9744 +2013-03-16  Alex Gaynor <alex.gaynor@gmail.com>
       
  9745 +
       
  9746 +	* src/x86/ffi.c (ffi_prep_cif_machdep): Always align stack.
       
  9747 +
       
  9748 +2013-03-13  Markos Chandras <markos.chandras@imgtec.com>
       
  9749 +
       
  9750 +	* configure.ac: Add support for Imagination Technologies Meta.
       
  9751 +	* Makefile.am: Likewise.
       
  9752 +	* README: Add Imagination Technologies Meta details.
       
  9753 +	* src/metag/ffi.c: New.
       
  9754 +	* src/metag/ffitarget.h: Likewise.
       
  9755 +	* src/metag/sysv.S: Likewise.
       
  9756 +
       
  9757 +2013-02-24  Andreas Schwab  <schwab@linux-m68k.org>
       
  9758 +
       
  9759 +	* doc/libffi.texi (Structures): Fix missing category argument of
       
  9760 +	@deftp.
       
  9761 +
       
  9762 +2013-02-11  Anthony Green <green@moxielogic.com>
       
  9763 +
       
  9764 +	* configure.ac: Update release number to 3.0.12.
       
  9765 +	* configure: Rebuilt.
       
  9766 +	* README: Update release info.
       
  9767 +
       
  9768 +2013-02-10  Anthony Green <green@moxielogic.com>
       
  9769 +
       
  9770 +	* README: Add Moxie.
       
  9771 +	* src/moxie/ffi.c: Created.
       
  9772 +	* src/moxie/eabi.S: Created.
       
  9773 +	* src/moxie/ffitarget.h: Created.
       
  9774 +	* Makefile.am (nodist_libffi_la_SOURCES): Add Moxie.
       
  9775 +	* Makefile.in: Rebuilt.
       
  9776 +	* configure.ac: Add Moxie.
       
  9777 +	* configure: Rebuilt.
       
  9778 +	* testsuite/libffi.call/huge_struct.c: Disable format string
       
  9779 +	warnings for moxie*-*-elf tests.
       
  9780 +
       
  9781 +2013-02-10  Anthony Green <green@moxielogic.com>
       
  9782 +
       
  9783 +	* Makefile.am (LTLDFLAGS): Fix reference.
       
  9784 +	* Makefile.in: Rebuilt.
       
  9785 +
       
  9786 +2013-02-10  Anthony Green <green@moxielogic.com>
       
  9787 +
       
  9788 +	* README: Update supported platforms.  Update test results link.
       
  9789 +
       
  9790 +2013-02-09  Anthony Green <green@moxielogic.com>
       
  9791 +
       
  9792 +	* testsuite/libffi.call/negint.c: Remove forced -O2.
       
  9793 +	* testsuite/libffi.call/many2.c (foo): Remove GCCism.
       
  9794 +	* testsuite/libffi.call/ffitest.h: Add default PRIuPTR definition.
       
  9795 +
       
  9796 +	* src/sparc/v8.S (ffi_closure_v8): Import ancient ulonglong
       
  9797 +	closure return type fix developed by Martin v. Löwis for cpython
       
  9798 +	fork.
       
  9799 +
       
  9800 +2013-02-08  Andreas Tobler  <andreast@fgznet.ch>
       
  9801 +
       
  9802 +	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix small struct
       
  9803 +	support.
       
  9804 +	* src/powerpc/sysv.S: Ditto.
       
  9805 +
       
  9806 +2013-02-08  Anthony Green <green@moxielogic.com>
       
  9807 +
       
  9808 +	* testsuite/libffi.call/cls_longdouble.c: Remove xfail for
       
  9809 +	arm*-*-*.
       
  9810 +
       
  9811 +2013-02-08  Anthony Green <green@moxielogic.com>
       
  9812 +
       
  9813 +	* src/sparc/ffi.c (ffi_prep_closure_loc): Fix cache flushing for GCC.
       
  9814 +
       
  9815 +2013-02-08  Matthias Klose  <doko@ubuntu.com>
       
  9816 +
       
  9817 +	* man/ffi_prep_cif.3: Clean up for debian linter.
       
  9818 +
       
  9819 +2013-02-08  Peter Bergner  <bergner@vnet.ibm.com>
       
  9820 +
       
  9821 +	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Account for FP args pushed
       
  9822 +	on the stack.
       
  9823 +
       
  9824 +2013-02-08  Anthony Green <green@moxielogic.com>
       
  9825 +
       
  9826 +	* Makefile.am (EXTRA_DIST): Add missing files.
       
  9827 +	* testsuite/Makefile.am (EXTRA_DIST): Ditto.
       
  9828 +	* Makefile.in: Rebuilt.
       
  9829 +
       
  9830 +2013-02-08  Anthony Green <green@moxielogic.com>
       
  9831 +
       
  9832 +	* configure.ac: Move sparc asm config checks to within functions
       
  9833 +	for compatibility with sun tools.
       
  9834 +	* configure: Rebuilt.
       
  9835 +	* src/sparc/ffi.c (ffi_prep_closure_loc): Flush cache on v9
       
  9836 +	systems.
       
  9837 +	* src/sparc/v8.S (ffi_flush_icache): Implement a sparc v9 cache
       
  9838 +	flusher.
       
  9839 +
       
  9840 +2013-02-08  Nathan Rossi <nathan.rossi@xilinx.com>
       
  9841 +
       
  9842 +	* src/microblaze/ffi.c (ffi_closure_call_SYSV): Fix handling of
       
  9843 +	small big-endian structures.
       
  9844 +	(ffi_prep_args): Ditto.
       
  9845 +
       
  9846 +2013-02-07  Anthony Green <green@moxielogic.com>
       
  9847 +
       
  9848 +	* src/sparc/v8.S (ffi_call_v8): Fix typo from last patch
       
  9849 +	(effectively hiding ffi_call_v8).
       
  9850 +
       
  9851 +2013-02-07  Anthony Green <green@moxielogic.com>
       
  9852 +
       
  9853 +	* configure.ac: Update bug reporting address.
       
  9854 +	* configure.in: Rebuild.
       
  9855 +
       
  9856 +	* src/sparc/v8.S (ffi_flush_icache): Out-of-line cache flusher for
       
  9857 +	Sun compiler.
       
  9858 +	* src/sparc/ffi.c (ffi_call): Remove warning.
       
  9859 +	Call ffi_flush_icache for non-GCC builds.
       
  9860 +	(ffi_prep_closure_loc): Use ffi_flush_icache.
       
  9861 +
       
  9862 +	* Makefile.am (EXTRA_DIST): Add libtool-ldflags.
       
  9863 +	* Makefile.in: Rebuilt.
       
  9864 +	* libtool-ldflags: New file.
       
  9865 +
       
  9866 +2013-02-07  Daniel Schepler <dschepler@gmail.com>
       
  9867 +
       
  9868 +	* configure.ac: Correctly identify x32 systems as 64-bit.
       
  9869 +	* m4/libtool.m4: Remove libtool expr error.
       
  9870 +	* aclocal.m4, configure: Rebuilt.
       
  9871 +
       
  9872 +2013-02-07  Anthony Green <green@moxielogic.com>
       
  9873 +
       
  9874 +	* configure.ac: Fix GCC usage test.
       
  9875 +	* configure: Rebuilt.
       
  9876 +	* README: Mention LLVM/GCC x86_64 issue.
       
  9877 +	* testsuite/Makefile.in: Rebuilt.
       
  9878 +
       
  9879 +2013-02-07  Anthony Green <green@moxielogic.com>
       
  9880 +
       
  9881 +	* testsuite/libffi.call/cls_double_va.c (main): Replace // style
       
  9882 +	comments with /* */ for xlc compiler.
       
  9883 +	* testsuite/libffi.call/stret_large.c (main): Ditto.
       
  9884 +	* testsuite/libffi.call/stret_large2.c (main): Ditto.
       
  9885 +	* testsuite/libffi.call/nested_struct1.c (main): Ditto.
       
  9886 +	* testsuite/libffi.call/huge_struct.c (main): Ditto.
       
  9887 +	* testsuite/libffi.call/float_va.c (main): Ditto.
       
  9888 +	* testsuite/libffi.call/cls_struct_va1.c (main): Ditto.
       
  9889 +	* testsuite/libffi.call/cls_pointer_stack.c (main): Ditto.
       
  9890 +	* testsuite/libffi.call/cls_pointer.c (main): Ditto.
       
  9891 +	* testsuite/libffi.call/cls_longdouble_va.c (main): Ditto.
       
  9892 +
       
  9893 +2013-02-06  Anthony Green <green@moxielogic.com>
       
  9894 +
       
  9895 +	* man/ffi_prep_cif.3: Clean up for debian lintian checker.
       
  9896 +
       
  9897 +2013-02-06  Anthony Green <green@moxielogic.com>
       
  9898 +
       
  9899 +	* Makefile.am (pkgconfigdir): Add missing pkgconfig install bits.
       
  9900 +	* Makefile.in: Rebuild.
       
  9901 +
       
  9902 +2013-02-02  Mark H Weaver <mhw@netris.org>
       
  9903 +
       
  9904 +	* src/x86/ffi64.c (ffi_call): Sign-extend integer arguments passed
       
  9905 +	via general purpose registers.
       
  9906 +
       
  9907 +2013-01-21  Nathan Rossi <nathan.rossi@xilinx.com>
       
  9908 +
       
  9909 +	* README: Add MicroBlaze details.
       
  9910 +	* Makefile.am: Add MicroBlaze support.
       
  9911 +	* configure.ac: Likewise.
       
  9912 +	* src/microblaze/ffi.c: New.
       
  9913 +	* src/microblaze/ffitarget.h: Likewise.
       
  9914 +	* src/microblaze/sysv.S: Likewise.
       
  9915 +
       
  9916 +2013-01-21  Nathan Rossi <nathan.rossi@xilinx.com>
       
  9917 +	* testsuite/libffi.call/return_uc.c: Fixed issue.
       
  9918 +
       
  9919 +2013-01-21  Chris Zankel   <chris@zankel.net>
       
  9920 +
       
  9921 +	* README: Add Xtensa support.
       
  9922 +	* Makefile.am: Likewise.
       
  9923 +	* configure.ac: Likewise.
       
  9924 +	* Makefile.in Regenerate.
       
  9925 +	* configure: Likewise.
       
  9926 +	* src/prep_cif.c: Handle Xtensa.
       
  9927 +	* src/xtensa: New directory.
       
  9928 +	* src/xtensa/ffi.c: New file.
       
  9929 +	* src/xtensa/ffitarget.h: Ditto.
       
  9930 +	* src/xtensa/sysv.S: Ditto.
       
  9931 +
       
  9932 +2013-01-11  Anthony Green  <green@moxielogic.com>
       
  9933 +
       
  9934 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Replace // style
       
  9935 +	comments with /* */ for xlc compiler.
       
  9936 +	* src/powerpc/aix.S (ffi_call_AIX): Ditto.
       
  9937 +	* testsuite/libffi.call/ffitest.h (allocate_mmap): Delete
       
  9938 +	deprecated inline function.
       
  9939 +	* testsuite/libffi.special/ffitestcxx.h: Ditto.
       
  9940 +	* README: Add update for AIX support.
       
  9941 +
       
  9942 +2013-01-11  Anthony Green  <green@moxielogic.com>
       
  9943 +
       
  9944 +	* configure.ac: Robustify pc relative reloc check.
       
  9945 +	* m4/ax_cc_maxopt.m4: Don't -malign-double.  This is an ABI
       
  9946 +	changing option for 32-bit x86.
       
  9947 +	* aclocal.m4, configure: Rebuilt.
       
  9948 +	* README: Update supported target list.
       
  9949 +
       
  9950 +2013-01-10  Anthony Green  <green@moxielogic.com>
       
  9951 +
       
  9952 +	* README (tested): Add Compiler column to table.
       
  9953 +
       
  9954 +2013-01-10  Anthony Green  <green@moxielogic.com>
       
  9955 +
       
  9956 +	* src/x86/ffi64.c (struct register_args): Make sse array and array
       
  9957 +	of unions for sunpro compiler compatibility.
       
  9958 +
       
  9959 +2013-01-10  Anthony Green  <green@moxielogic.com>
       
  9960 +
       
  9961 +	* configure.ac: Test target platform size_t size.  Handle both 32
       
  9962 +	and 64-bit builds for x86_64-* and i?86-* targets (allowing for
       
  9963 +	CFLAG option to change default settings).
       
  9964 +	* configure, aclocal.m4: Rebuilt.
       
  9965 +
       
  9966 +2013-01-10  Anthony Green  <green@moxielogic.com>
       
  9967 +
       
  9968 +	* testsuite/libffi.special/special.exp: Only run exception
       
  9969 +	handling tests when using GNU compiler.
       
  9970 +
       
  9971 +	* m4/ax_compiler_vendor.m4: New file.
       
  9972 +	* configure.ac: Test for compiler vendor and don't use
       
  9973 +	AX_CFLAGS_WARN_ALL with the sun compiler.
       
  9974 +	* aclocal.m4, configure: Rebuilt.
       
  9975 +
       
  9976 +2013-01-10  Anthony Green  <green@moxielogic.com>
       
  9977 +
       
  9978 +	* include/ffi_common.h: Don't use GCCisms to define types when
       
  9979 +	building with the SUNPRO compiler.
       
  9980 +
       
  9981 +2013-01-10  Anthony Green  <green@moxielogic.com>
       
  9982 +
       
  9983 +	* configure.ac: Put local.exp in the right place.
       
  9984 +	* configure: Rebuilt.
       
  9985 +
       
  9986 +	* src/x86/ffi.c: Update comment about regparm function attributes.
       
  9987 +	* src/x86/sysv.S (ffi_closure_SYSV): The SUNPRO compiler requires
       
  9988 +	that all function arguments be passed on the stack (no regparm
       
  9989 +	support).
       
  9990 +
       
  9991 +2013-01-08  Anthony Green  <green@moxielogic.com>
       
  9992 +
       
  9993 +	* configure.ac: Generate local.exp.  This sets CC_FOR_TARGET
       
  9994 +	when we are using the vendor compiler.
       
  9995 +	* testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): Point to
       
  9996 +	../local.exp.
       
  9997 +	* configure, testsuite/Makefile.in: Rebuilt.
       
  9998 +
       
  9999 +	* testsuite/libffi.call/call.exp: Run tests with different
       
 10000 +	options, depending on whether or not we are using gcc or the
       
 10001 +	vendor compiler.
       
 10002 +	* testsuite/lib/libffi.exp (libffi-init): Set using_gcc based on
       
 10003 +	whether or not we are building/testing with gcc.
       
 10004 +
       
 10005 +2013-01-08  Anthony Green  <green@moxielogic.com>
       
 10006 +
       
 10007 +	* configure.ac: Switch x86 solaris target to X86 by default.
       
 10008 +	* configure: Rebuilt.
       
 10009 +
       
 10010 +2013-01-08  Anthony Green  <green@moxielogic.com>
       
 10011 +
       
 10012 +	* configure.ac: Fix test for read-only eh_frame.
       
 10013 +	* configure: Rebuilt.
       
 10014 +
       
 10015 +2013-01-08  Anthony Green  <green@moxielogic.com>
       
 10016 +
       
 10017 +	* src/x86/sysv.S, src/x86/unix64.S: Only emit DWARF unwind info
       
 10018 +	when building with the GNU toolchain.
       
 10019 +	* testsuite/libffi.call/ffitest.h (CHECK): Fix for Solaris vendor
       
 10020 +	compiler.
       
 10021 +
       
 10022 +2013-01-07  Thorsten Glaser <tg@mirbsd.org>
       
 10023 +
       
 10024 +	* testsuite/libffi.call/cls_uchar_va.c,
       
 10025 +	testsuite/libffi.call/cls_ushort_va.c,
       
 10026 +	testsuite/libffi.call/va_1.c: Testsuite fixes.
       
 10027 +
       
 10028 +2013-01-07  Thorsten Glaser <tg@mirbsd.org>
       
 10029 +
       
 10030 +	* src/m68k/ffi.c (CIF_FLAGS_SINT8, CIF_FLAGS_SINT16): Define.
       
 10031 +	(ffi_prep_cif_machdep): Fix 8-bit and 16-bit signed calls.
       
 10032 +	* src/m68k/sysv.S (ffi_call_SYSV, ffi_closure_SYSV): Ditto.
       
 10033 +
       
 10034 +2013-01-04  Anthony Green  <green@moxielogic.com>
       
 10035 +
       
 10036 +	* Makefile.am (AM_CFLAGS): Don't automatically add -fexceptions
       
 10037 +	and -Wall.  This is set in the configure script after testing for
       
 10038 +	GCC.
       
 10039 +	* Makefile.in: Rebuilt.
       
 10040 +
       
 10041 +2013-01-02  rofl0r <https://github.com/rofl0r>
       
 10042 +
       
 10043 +	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix build error on ppc
       
 10044 +	when long double == double.
       
 10045 +
       
 10046 +2013-01-02  Reini Urban  <rurban@x-ray.at>
       
 10047 +
       
 10048 +	* Makefile.am (libffi_la_LDFLAGS): Add -no-undefined to LDFLAGS
       
 10049 +	(required for shared libs on cygwin/mingw).
       
 10050 +	* Makefile.in: Rebuilt.
       
 10051 +
       
 10052 +2012-10-31  Alan Modra  <amodra@gmail.co>
       
 10053 +
       
 10054 +	* src/powerpc/linux64_closure.S: Add new ABI support.
       
 10055 +	* src/powerpc/linux64.S: Likewise.
       
 10056 +
       
 10057 +2012-10-30  Magnus Granberg  <zorry@gentoo.org>
       
 10058 +	    Pavel Labushev  <pavel.labushev@runbox.ru>
       
 10059 +
       
 10060 +	* configure.ac: New options pax_emutramp
       
 10061 +	* configure, fficonfig.h.in: Regenerated
       
 10062 +	* src/closures.c: New function emutramp_enabled_check() and
       
 10063 +	checks.
       
 10064 +
       
 10065 +2012-10-30  Frederick Cheung  <frederick.cheung@gmail.com>
       
 10066 +
       
 10067 +	* configure.ac: Enable FFI_MAP_EXEC_WRIT for Darwin 12 (mountain
       
 10068 +	lion) and future version.
       
 10069 +	* configure: Rebuild.
       
 10070 +
       
 10071 +2012-10-30  James Greenhalgh  <james.greenhalgh at arm.com>
       
 10072 +            Marcus Shawcroft  <marcus.shawcroft at arm.com>
       
 10073 +
       
 10074 +        * README: Add details of aarch64 port.
       
 10075 +        * src/aarch64/ffi.c: New.
       
 10076 +        * src/aarch64/ffitarget.h: Likewise.
       
 10077 +        * src/aarch64/sysv.S: Likewise.
       
 10078 +	* Makefile.am: Support aarch64.
       
 10079 +	* configure.ac: Support aarch64.
       
 10080 +	* Makefile.in, configure: Rebuilt.
       
 10081 +
       
 10082 +2012-10-30  James Greenhalgh  <james.greenhalgh at arm.com>
       
 10083 +            Marcus Shawcroft  <marcus.shawcroft at arm.com>
       
 10084 +
       
 10085 +        * testsuite/lib/libffi.exp: Add support for aarch64.
       
 10086 +        * testsuite/libffi.call/cls_struct_va1.c: New.
       
 10087 +        * testsuite/libffi.call/cls_uchar_va.c: Likewise.
       
 10088 +        * testsuite/libffi.call/cls_uint_va.c: Likewise.
       
 10089 +        * testsuite/libffi.call/cls_ulong_va.c: Likewise.
       
 10090 +        * testsuite/libffi.call/cls_ushort_va.c: Likewise.
       
 10091 +        * testsuite/libffi.call/nested_struct11.c: Likewise.
       
 10092 +        * testsuite/libffi.call/uninitialized.c: Likewise.
       
 10093 +        * testsuite/libffi.call/va_1.c: Likewise.
       
 10094 +        * testsuite/libffi.call/va_struct1.c: Likewise.
       
 10095 +        * testsuite/libffi.call/va_struct2.c: Likewise.
       
 10096 +        * testsuite/libffi.call/va_struct3.c: Likewise.
       
 10097 +
       
 10098 +2012-10-12  Walter Lee  <walt@tilera.com>
       
 10099 +
       
 10100 +        * Makefile.am: Add TILE-Gx/TILEPro support.
       
 10101 +        * configure.ac: Likewise.
       
 10102 +        * Makefile.in: Regenerate.
       
 10103 +        * configure: Likewise.
       
 10104 +        * src/prep_cif.c (ffi_prep_cif_core): Handle TILE-Gx/TILEPro.
       
 10105 +        * src/tile: New directory.
       
 10106 +        * src/tile/ffi.c: New file.
       
 10107 +        * src/tile/ffitarget.h: Ditto.
       
 10108 +        * src/tile/tile.S: Ditto.
       
 10109 +
       
 10110 +2012-10-12  Matthias Klose  <doko@ubuntu.com>
       
 10111 +
       
 10112 +	* generate-osx-source-and-headers.py: Normalize whitespace.
       
 10113 +
       
 10114 +2012-09-14  David Edelsohn  <dje.gcc@gmail.com>
       
 10115 +
       
 10116 +	* configure: Regenerated.
       
 10117 +
       
 10118 +2012-08-26  Andrew Pinski  <apinski@cavium.com>
       
 10119 +
       
 10120 +	PR libffi/53014
       
 10121 +	* src/mips/ffi.c (ffi_prep_closure_loc): Allow n32 with soft-float and n64 with
       
 10122 +	soft-float.
       
 10123 +
       
 10124 +2012-08-08  Uros Bizjak  <ubizjak@gmail.com>
       
 10125 +
       
 10126 +	* src/s390/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
       
 10127 +	just return FFI_BAD_ABI when things are wrong.
       
 10128 +
       
 10129 +2012-07-18  H.J. Lu  <hongjiu.lu@intel.com>
       
 10130 +
       
 10131 +	PR libffi/53982
       
 10132 +	PR libffi/53973
       
 10133 +	* src/x86/ffitarget.h: Check __ILP32__ instead of __LP64__ for x32.
       
 10134 +	(FFI_SIZEOF_JAVA_RAW): Defined to 4 for x32.
       
 10135 +
       
 10136 +2012-05-16  H.J. Lu  <hongjiu.lu@intel.com>
       
 10137 +
       
 10138 +	* configure: Regenerated.
       
 10139 +
       
 10140 +2012-05-05  Nicolas Lelong
       
 10141 +
       
 10142 +	* libffi.xcodeproj/project.pbxproj: Fixes.
       
 10143 +	* README: Update for iOS builds.
       
 10144 +
       
 10145 +2012-04-23  Alexandre Keunecke I. de Mendonca <alexandre.keunecke@gmail.com>
       
 10146 +
       
 10147 +	* configure.ac: Add Blackfin/sysv support
       
 10148 +	* Makefile.am: Add Blackfin/sysv support
       
 10149 +	* src/bfin/ffi.c:  Add Blackfin/sysv support
       
 10150 +	* src/bfin/ffitarget.h: Add Blackfin/sysv support
       
 10151 +
       
 10152 +2012-04-11  Anthony Green  <green@moxielogic.com>
       
 10153 +
       
 10154 +	* Makefile.am (EXTRA_DIST): Add new script.
       
 10155 +	* Makefile.in: Rebuilt.
       
 10156 +
       
 10157 +2012-04-11  Zachary Waldowski  <zwaldowski@gmail.com>
       
 10158 +
       
 10159 +	* generate-ios-source-and-headers.py,
       
 10160 +	libffi.xcodeproj/project.pbxproj: Support a Mac static library via
       
 10161 +	Xcode. Set iOS compatibility to 4.0.  Move iOS trampoline
       
 10162 +	generation into an Xcode "run script" phase.  Include both as
       
 10163 +	Xcode build scripts. Don't always regenerate config files.
       
 10164 +
       
 10165 +2012-04-10  Anthony Green  <green@moxielogic.com>
       
 10166 +
       
 10167 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Add missing semicolon.
       
 10168 +
       
 10169 +2012-04-06  Anthony Green  <green@moxielogic.com>
       
 10170 +
       
 10171 +	* Makefile.am (EXTRA_DIST): Add new iOS/xcode files.
       
 10172 +	* Makefile.in: Rebuilt.
       
 10173 +
       
 10174 +2012-04-06  Mike Lewis  <mikelikespie@gmail.com>
       
 10175 +
       
 10176 +	* generate-ios-source-and-headers.py: New file.
       
 10177 +	* libffi.xcodeproj/project.pbxproj: New file.
       
 10178 +	* README: Update instructions on building iOS binary.
       
 10179 +	* build-ios.sh: Delete.
       
 10180 +
       
 10181 +2012-04-06  Anthony Green  <green@moxielogic.com>
       
 10182 +
       
 10183 +	* src/x86/ffi64.c (UINT128): Define differently for Intel and GNU
       
 10184 +	compilers, then use it.
       
 10185 +
       
 10186 +2012-04-06  H.J. Lu  <hongjiu.lu@intel.com>
       
 10187 +
       
 10188 +	* m4/libtool.m4 (_LT_ENABLE_LOCK): Support x32.
       
 10189 +
       
 10190 +2012-04-06  Anthony Green  <green@moxielogic.com>
       
 10191 +
       
 10192 +	* testsuite/Makefile.am (EXTRA_DIST): Add missing test cases.
       
 10193 +	* testsuite/Makefile.in: Rebuilt.
       
 10194 +
       
 10195 +2012-04-05  Zachary Waldowski  <zwaldowski@gmail.com>
       
 10196 +
       
 10197 +	* include/ffi.h.in: Add missing trampoline table fields.
       
 10198 +	* src/arm/sysv.S: Fix ENTRY definition, and wrap symbol references
       
 10199 +	in CNAME.
       
 10200 +	* src/x86/ffi.c: Wrap Windows specific code in ifdefs.
       
 10201 +
       
 10202 +2012-04-02  Peter Bergner  <bergner@vnet.ibm.com>
       
 10203 +
       
 10204 +	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Declare double_tmp.
       
 10205 +	Silence casting pointer to integer of different size warning.
       
 10206 +	Delete goto to previously deleted label.
       
 10207 +	(ffi_call): Silence possibly undefined warning.
       
 10208 +	(ffi_closure_helper_SYSV): Declare variable type.
       
 10209 +
       
 10210 +2012-04-02  Peter Rosin  <peda@lysator.liu.se>
       
 10211 +
       
 10212 +	* src/x86/win32.S (ffi_call_win32): Sign/zero extend the return
       
 10213 +	value in the Intel version as is already done for the AT&T version.
       
 10214 +	(ffi_closure_SYSV): Likewise.
       
 10215 +	(ffi_closure_raw_SYSV): Likewise.
       
 10216 +	(ffi_closure_STDCALL): Likewise.
       
 10217 +
       
 10218 +2012-03-29  Peter Rosin  <peda@lysator.liu.se>
       
 10219 +
       
 10220 +	* src/x86/win32.S (ffi_closure_raw_THISCALL): Unify the frame
       
 10221 +	generation, fix the ENDP label and remove the surplus third arg
       
 10222 +	from the 'lea' insn.
       
 10223 +
       
 10224 +2012-03-29  Peter Rosin  <peda@lysator.liu.se>
       
 10225 +
       
 10226 +	* src/x86/win32.S (ffi_closure_raw_SYSV): Make the 'stubraw' label
       
 10227 +	visible outside the PROC, so that ffi_closure_raw_THISCALL can see
       
 10228 +	it.  Also instruct the assembler to add a frame to the function.
       
 10229 +
       
 10230 +2012-03-23  Peter Rosin  <peda@lysator.liu.se>
       
 10231 +
       
 10232 +	* Makefile.am (AM_CPPFLAGS): Add -DFFI_BUILDING.
       
 10233 +	* Makefile.in: Rebuilt.
       
 10234 +	* include/ffi.h.in [MSVC]: Add __declspec(dllimport) decorations
       
 10235 +	to all data exports, when compiling libffi clients using MSVC.
       
 10236 +
       
 10237 +2012-03-29  Peter Rosin  <peda@lysator.liu.se>
       
 10238 +
       
 10239 +	* src/x86/ffitarget.h (ffi_abi): Add new ABI FFI_MS_CDECL and
       
 10240 +	make it the default for MSVC.
       
 10241 +	(FFI_TYPE_MS_STRUCT): New structure return convention.
       
 10242 +	* src/x86/ffi.c (ffi_prep_cif_machdep): Tweak the structure
       
 10243 +	return convention for FFI_MS_CDECL to be FFI_TYPE_MS_STRUCT
       
 10244 +	instead of an ordinary FFI_TYPE_STRUCT.
       
 10245 +	(ffi_prep_args): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT.
       
 10246 +	(ffi_call): Likewise.
       
 10247 +	(ffi_prep_incoming_args_SYSV): Likewise.
       
 10248 +	(ffi_raw_call): Likewise.
       
 10249 +	(ffi_prep_closure_loc): Treat FFI_MS_CDECL as FFI_SYSV.
       
 10250 +	* src/x86/win32.S (ffi_closure_SYSV): For FFI_TYPE_MS_STRUCT,
       
 10251 +	return a pointer to the result structure in eax and don't pop
       
 10252 +	that pointer from the stack, the caller takes care of it.
       
 10253 +	(ffi_call_win32): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT.
       
 10254 +	(ffi_closure_raw_SYSV): Likewise.
       
 10255 +
       
 10256 +2012-03-22  Peter Rosin  <peda@lysator.liu.se>
       
 10257 +
       
 10258 +	* testsuite/libffi.call/closure_stdcall.c [MSVC]: Add inline
       
 10259 +	assembly version with Intel syntax.
       
 10260 +	* testsuite/libffi.call/closure_thiscall.c [MSVC]: Likewise.
       
 10261 +
       
 10262 +2012-03-23  Peter Rosin  <peda@lysator.liu.se>
       
 10263 +
       
 10264 +	* testsuite/libffi.call/ffitest.h: Provide abstration of
       
 10265 +	__attribute__((fastcall)) in the form of a __FASTCALL__
       
 10266 +	define.  Define it to __fastcall for MSVC.
       
 10267 +	* testsuite/libffi.call/fastthis1_win32.c: Use the above.
       
 10268 +	* testsuite/libffi.call/fastthis2_win32.c: Likewise.
       
 10269 +	* testsuite/libffi.call/fastthis3_win32.c: Likewise.
       
 10270 +	* testsuite/libffi.call/strlen2_win32.c: Likewise.
       
 10271 +	* testsuite/libffi.call/struct1_win32.c: Likewise.
       
 10272 +	* testsuite/libffi.call/struct2_win32.c: Likewise.
       
 10273 +
       
 10274 +2012-03-22  Peter Rosin  <peda@lysator.liu.se>
       
 10275 +
       
 10276 +	* src/x86/win32.S [MSVC] (ffi_closure_THISCALL): Remove the manual
       
 10277 +	frame on function entry, MASM adds one automatically.
       
 10278 +
       
 10279 +2012-03-22  Peter Rosin  <peda@lysator.liu.se>
       
 10280 +
       
 10281 +	* testsuite/libffi.call/ffitest.h [MSVC]: Add kludge for missing
       
 10282 +	bits in the MSVC headers.
       
 10283 +
       
 10284 +2012-03-22  Peter Rosin  <peda@lysator.liu.se>
       
 10285 +
       
 10286 +	* testsuite/libffi.call/cls_12byte.c: Adjust to the C89 style
       
 10287 +	with no declarations after statements.
       
 10288 +	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
 10289 +	* testsuite/libffi.call/cls_18byte.c: Likewise.
       
 10290 +	* testsuite/libffi.call/cls_19byte.c: Likewise.
       
 10291 +	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
 10292 +	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
 10293 +	* testsuite/libffi.call/cls_20byte1.c: Likewise.
       
 10294 +	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
 10295 +	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
 10296 +	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
 10297 +	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
 10298 +	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
 10299 +	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
 10300 +	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
 10301 +	* testsuite/libffi.call/cls_5_1_byte.c: Likewise.
       
 10302 +	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
 10303 +	* testsuite/libffi.call/cls_64byte.c: Likewise.
       
 10304 +	* testsuite/libffi.call/cls_6_1_byte.c: Likewise.
       
 10305 +	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
 10306 +	* testsuite/libffi.call/cls_7_1_byte.c: Likewise.
       
 10307 +	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
 10308 +	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
 10309 +	* testsuite/libffi.call/cls_9byte1.c: Likewise.
       
 10310 +	* testsuite/libffi.call/cls_9byte2.c: Likewise.
       
 10311 +	* testsuite/libffi.call/cls_align_double.c: Likewise.
       
 10312 +	* testsuite/libffi.call/cls_align_float.c: Likewise.
       
 10313 +	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
       
 10314 +	* testsuite/libffi.call/cls_align_longdouble_split.c: Likewise.
       
 10315 +	* testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise.
       
 10316 +	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
       
 10317 +	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
       
 10318 +	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
       
 10319 +	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
       
 10320 +	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
       
 10321 +	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
       
 10322 +	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
       
 10323 +	* testsuite/libffi.call/cls_dbls_struct.c: Likewise.
       
 10324 +	* testsuite/libffi.call/cls_pointer_stack.c: Likewise.
       
 10325 +	* testsuite/libffi.call/err_bad_typedef.c: Likewise.
       
 10326 +	* testsuite/libffi.call/huge_struct.c: Likewise.
       
 10327 +	* testsuite/libffi.call/nested_struct.c: Likewise.
       
 10328 +	* testsuite/libffi.call/nested_struct1.c: Likewise.
       
 10329 +	* testsuite/libffi.call/nested_struct10.c: Likewise.
       
 10330 +	* testsuite/libffi.call/nested_struct2.c: Likewise.
       
 10331 +	* testsuite/libffi.call/nested_struct3.c: Likewise.
       
 10332 +	* testsuite/libffi.call/nested_struct4.c: Likewise.
       
 10333 +	* testsuite/libffi.call/nested_struct5.c: Likewise.
       
 10334 +	* testsuite/libffi.call/nested_struct6.c: Likewise.
       
 10335 +	* testsuite/libffi.call/nested_struct7.c: Likewise.
       
 10336 +	* testsuite/libffi.call/nested_struct8.c: Likewise.
       
 10337 +	* testsuite/libffi.call/nested_struct9.c: Likewise.
       
 10338 +	* testsuite/libffi.call/stret_large.c: Likewise.
       
 10339 +	* testsuite/libffi.call/stret_large2.c: Likewise.
       
 10340 +	* testsuite/libffi.call/stret_medium.c: Likewise.
       
 10341 +	* testsuite/libffi.call/stret_medium2.c: Likewise.
       
 10342 +	* testsuite/libffi.call/struct1.c: Likewise.
       
 10343 +	* testsuite/libffi.call/struct1_win32.c: Likewise.
       
 10344 +	* testsuite/libffi.call/struct2.c: Likewise.
       
 10345 +	* testsuite/libffi.call/struct2_win32.c: Likewise.
       
 10346 +	* testsuite/libffi.call/struct3.c: Likewise.
       
 10347 +	* testsuite/libffi.call/struct4.c: Likewise.
       
 10348 +	* testsuite/libffi.call/struct5.c: Likewise.
       
 10349 +	* testsuite/libffi.call/struct6.c: Likewise.
       
 10350 +	* testsuite/libffi.call/struct7.c: Likewise.
       
 10351 +	* testsuite/libffi.call/struct8.c: Likewise.
       
 10352 +	* testsuite/libffi.call/struct9.c: Likewise.
       
 10353 +	* testsuite/libffi.call/testclosure.c: Likewise.
       
 10354 +
       
 10355 +2012-03-21  Peter Rosin	 <peda@lysator.liu.se>
       
 10356 +
       
 10357 +	* testsuite/libffi.call/float_va.c (float_va_fn): Use %f when
       
 10358 +	printing doubles (%lf is for long doubles).
       
 10359 +	(main): Likewise.
       
 10360 +
       
 10361 +2012-03-21  Peter Rosin  <peda@lysator.liu.se>
       
 10362 +
       
 10363 +	* testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*]
       
 10364 +	(set_ld_library_path_env_vars): Add the library search dir to PATH
       
 10365 +	(and save PATH for later).
       
 10366 +	(restore_ld_library_path_env_vars): Restore PATH.
       
 10367 +
       
 10368 +2012-03-21  Peter Rosin  <peda@lysator.liu.se>
       
 10369 +
       
 10370 +	* testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*]
       
 10371 +	(set_ld_library_path_env_vars): Add the library search dir to PATH
       
 10372 +	(and save PATH for later).
       
 10373 +	(restore_ld_library_path_env_vars): Restore PATH.
       
 10374 +
       
 10375 +2012-03-20  Peter Rosin  <peda@lysator.liu.se>
       
 10376 +
       
 10377 +	* testsuite/libffi.call/strlen2_win32.c (main): Remove bug.
       
 10378 +	* src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label
       
 10379 +	visible outside the PROC, so that ffi_closure_THISCALL can see it.
       
 10380 +
       
 10381 +2012-03-20  Peter Rosin  <peda@lysator.liu.se>
       
 10382 +
       
 10383 +	* testsuite/libffi.call/strlen2_win32.c (main): Remove bug.
       
 10384 +	* src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label
       
 10385 +	visible outside the PROC, so that ffi_closure_THISCALL can see it.
       
 10386 +
       
 10387 +2012-03-19  Alan Hourihane  <alanh@fairlite.co.uk>
       
 10388 +
       
 10389 +	* src/m68k/ffi.c: Add MINT support.
       
 10390 +	* src/m68k/sysv.S: Ditto.
       
 10391 +
       
 10392 +2012-03-06  Chung-Lin Tang  <cltang@codesourcery.com>
       
 10393 +
       
 10394 +	* src/arm/ffi.c (ffi_call): Add __ARM_EABI__ guard around call to
       
 10395 +	ffi_call_VFP().
       
 10396 +	(ffi_prep_closure_loc): Add __ARM_EABI__ guard around use of
       
 10397 +	ffi_closure_VFP.
       
 10398 +	* src/arm/sysv.S: Add __ARM_EABI__ guard around VFP code.
       
 10399 +
       
 10400 +2012-03-19  chennam  <csit@axway.com>
       
 10401 +
       
 10402 +	* src/powerpc/ffi_darwin.c (ffi_prep_closure_loc): Fix AIX closure
       
 10403 +	support.
       
 10404 +
       
 10405 +2012-03-13  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 10406 +
       
 10407 +	* src/sh/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
       
 10408 +	just return FFI_BAD_ABI when things are wrong.
       
 10409 +	* src/sh64/ffi.c (ffi_prep_closure_loc): Ditto.
       
 10410 +
       
 10411 +2012-03-09  David Edelsohn  <dje.gcc@gmail.com>
       
 10412 +
       
 10413 +	* src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64
       
 10414 +	change to return value of ffi_closure_helper_DARWIN and load type
       
 10415 +	from return type.
       
 10416 +
       
 10417 +2012-03-03  H.J. Lu  <hongjiu.lu@intel.com>
       
 10418 +
       
 10419 +	* src/x86/ffi64.c (ffi_call): Cast the return value to unsigned
       
 10420 +	long.
       
 10421 +	(ffi_prep_closure_loc): Cast to 64bit address in trampoline.
       
 10422 +	(ffi_closure_unix64_inner): Cast return pointer to unsigned long
       
 10423 +	first.
       
 10424 +
       
 10425 +	* src/x86/ffitarget.h (FFI_SIZEOF_ARG): Defined to 8 for x32.
       
 10426 +	(ffi_arg): Set to unsigned long long for x32.
       
 10427 +	(ffi_sarg): Set to long long for x32.
       
 10428 +
       
 10429 +2012-03-03  H.J. Lu  <hongjiu.lu@intel.com>
       
 10430 +
       
 10431 +	* src/prep_cif.c (ffi_prep_cif_core): Properly check bad ABI.
       
 10432 +
       
 10433 +2012-03-03  Andoni Morales Alastruey  <ylatuya@gmail.com>
       
 10434 +
       
 10435 +	* configure.ac: Add -no-undefined for both 32- and 64-bit x86
       
 10436 +	windows-like hosts.
       
 10437 +	* configure: Rebuilt.
       
 10438 +
       
 10439 +2012-02-27  Mikael Pettersson  <mikpe@it.uu.se>
       
 10440 +
       
 10441 +	PR libffi/52223
       
 10442 +	* Makefile.am (FLAGS_TO_PASS): Define.
       
 10443 +	* Makefile.in: Regenerate.
       
 10444 +
       
 10445 +2012-02-23  Anthony Green  <green@moxielogic.com>
       
 10446 +
       
 10447 +	* src/*/ffitarget.h: Ensure that users never include ffitarget.h
       
 10448 +	directly.
       
 10449 +
       
 10450 +2012-02-23  Kai Tietz  <ktietz@redhat.com>
       
 10451 +
       
 10452 +	PR libffi/52221
       
 10453 +	* src/x86/ffi.c (ffi_closure_raw_THISCALL): New
       
 10454 +	prototype.
       
 10455 +	(ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for
       
 10456 +	thiscall-convention.
       
 10457 +	(ffi_raw_call): Use ffi_prep_args_raw.
       
 10458 +	* src/x86/win32.S (ffi_closure_raw_THISCALL): Add
       
 10459 +	implementation for stub.
       
 10460 +
       
 10461 +2012-02-10  Kai Tietz  <ktietz@redhat.com>
       
 10462 +
       
 10463 +	* configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64
       
 10464 +	windows target.
       
 10465 +	* configure: Regenerated.
       
 10466 +
       
 10467 +2012-02-08  Kai Tietz  <ktietz@redhat.com>
       
 10468 +
       
 10469 +	* src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32
       
 10470 +	also FFI_THISCALL.
       
 10471 +	* src/x86/ffi.c (ffi_closure_THISCALL): Add prototype.
       
 10472 +	(FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code.
       
 10473 +	(ffi_prep_closure_loc): Add FFI_THISCALL support.
       
 10474 +	* src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size.
       
 10475 +	* src/x86/win32.S (ffi_closure_THISCALL): New closure code
       
 10476 +	for thiscall-calling convention.
       
 10477 +	* testsuite/libffi.call/closure_thiscall.c: New test.
       
 10478 +
       
 10479 +2012-01-28  Kai Tietz  <ktietz@redhat.com>
       
 10480 +
       
 10481 +	* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
       
 10482 +	argument to prototype for specify calling-convention.
       
 10483 +	(ffi_call): Add support for stdcall/thiscall convention.
       
 10484 +	(ffi_prep_args): Likewise.
       
 10485 +	(ffi_raw_call): Likewise.
       
 10486 +	* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
       
 10487 +	FFI_FASTCALL.
       
 10488 +	* src/x86/win32.S (_ffi_call_win32): Add support for
       
 10489 +	fastcall/thiscall calling-convention calls.
       
 10490 +	* testsuite/libffi.call/fastthis1_win32.c: New test.
       
 10491 +	* testsuite/libffi.call/fastthis2_win32.c: New test.
       
 10492 +	* testsuite/libffi.call/fastthis3_win32.c: New test.
       
 10493 +	* testsuite/libffi.call/strlen2_win32.c: New test.
       
 10494 +	* testsuite/libffi.call/many2_win32.c: New test.
       
 10495 +	* testsuite/libffi.call/struct1_win32.c: New test.
       
 10496 +	* testsuite/libffi.call/struct2_win32.c: New test.
       
 10497 +
       
 10498 +2012-01-23  Uros Bizjak  <ubizjak@gmail.com>
       
 10499 +
       
 10500 +	* src/alpha/ffi.c (ffi_prep_closure_loc): Check for bad ABI.
       
 10501 +
       
 10502 +2012-01-23  Anthony Green  <green@moxielogic.com>
       
 10503 +	    Chris Young  <cdyoung@ntlworld.com>
       
 10504 +
       
 10505 +	* configure.ac: Add Amiga support.
       
 10506 +	* configure: Rebuilt.
       
 10507 +
       
 10508 +2012-01-23  Dmitry Nadezhin  <dmitry.nadezhin@gmail.com>
       
 10509 +
       
 10510 +	* include/ffi_common.h (LIKELY, UNLIKELY): Fix definitions.
       
 10511 +
       
 10512 +2012-01-23  Andreas Schwab  <schwab@linux-m68k.org>
       
 10513 +
       
 10514 +	* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
       
 10515 +	mc68000.  Test for __HAVE_68881__ in addition to __MC68881__.
       
 10516 +
       
 10517 +2012-01-19  Jakub Jelinek  <jakub@redhat.com>
       
 10518 +
       
 10519 +	PR rtl-optimization/48496
       
 10520 +	* src/ia64/ffi.c (ffi_call): Fix up aliasing violations.
       
 10521 +
       
 10522 +2012-01-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10523 +
       
 10524 +	* configure.ac (i?86-*-*): Set TARGET to X86_64.
       
 10525 +	* configure: Regenerate.
       
 10526 +
       
 10527 +2011-12-07  Andrew Pinski  <apinski@cavium.com>
       
 10528 +
       
 10529 +	PR libffi/50051
       
 10530 +	* src/mips/n32.S: Add ".set mips4".
       
 10531 +
       
 10532 +2011-11-21  Andreas Tobler  <andreast@fgznet.ch>
       
 10533 +
       
 10534 +	* configure: Regenerate.
       
 10535 +
       
 10536 +2011-11-12  David Gilbert <david.gilbert@linaro.org>
       
 10537 +
       
 10538 +	* doc/libffi.texi, include/ffi.h.in, include/ffi_common.h,
       
 10539 +	man/Makefile.am, man/ffi.3, man/ffi_prep_cif.3,
       
 10540 +	man/ffi_prep_cif_var.3, src/arm/ffi.c, src/arm/ffitarget.h,
       
 10541 +	src/cris/ffi.c, src/prep_cif.c,
       
 10542 +	testsuite/libffi.call/cls_double_va.c,
       
 10543 +	testsuite/libffi.call/cls_longdouble_va.c,
       
 10544 +	testsuite/libffi.call/float_va.c: Many changes to support variadic
       
 10545 +	function calls.
       
 10546 +
       
 10547 +2011-11-12  Kyle Moffett <Kyle.D.Moffett@boeing.com>
       
 10548 +
       
 10549 +	* src/powerpc/ffi.c, src/powerpc/ffitarget.h,
       
 10550 +	src/powerpc/ppc_closure.S, src/powerpc/sysv.S: Many changes for
       
 10551 +	softfloat powerpc variants.
       
 10552 +
       
 10553 +2011-11-12  Petr Salinger <Petr.Salinger@seznam.cz>
       
 10554 +
       
 10555 +	* configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Fix kfreebsd support.
       
 10556 +	* configure: Rebuilt.
       
 10557 +
       
 10558 +2011-11-12  Timothy Wall  <twall@users.sf.net>
       
 10559 +
       
 10560 +	* src/arm/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): Max
       
 10561 +	alignment of 4 for wince on ARM.
       
 10562 +
       
 10563 +2011-11-12  Kyle Moffett <Kyle.D.Moffett@boeing.com>
       
 10564 +	    Anthony Green <green@moxielogic.com>
       
 10565 +
       
 10566 +	* src/ppc/sysv.S, src/ppc/ffi.c: Remove use of ppc string
       
 10567 +	instructions (not available on some cores, like the PPC440).
       
 10568 +
       
 10569 +2011-11-12  Kimura Wataru  <kimuraw@i.nifty.jp>
       
 10570 +
       
 10571 +	* m4/ax_enable_builddir: Change from string comparison to numeric
       
 10572 +	comparison for wc output.
       
 10573 +	* configure.ac: Enable FFI_MMAP_EXEC_WRIT for darwin11 aka Mac OS
       
 10574 +	X 10.7.
       
 10575 +	* configure: Rebuilt.
       
 10576 +
       
 10577 +2011-11-12  Anthony Green  <green@moxielogic.com>
       
 10578 +
       
 10579 +	* Makefile.am (AM_CCASFLAGS): Add -g option to build assembly
       
 10580 +	files with debug info.
       
 10581 +	* Makefile.in: Rebuilt.
       
 10582 +
       
 10583 +2011-11-12  Jasper Lievisse Adriaanse <jasper@openbsd.org>
       
 10584 +
       
 10585 +	* README: Update list of supported OpenBSD systems.
       
 10586 +
       
 10587 +2011-11-12  Anthony Green  <green@moxielogic.com>
       
 10588 +
       
 10589 +	* libtool-version: Update.
       
 10590 +	* Makefile.am (nodist_libffi_la_SOURCES): Add src/debug.c if
       
 10591 +	FFI_DEBUG.
       
 10592 +	(libffi_la_SOURCES): Remove src/debug.c
       
 10593 +	(EXTRA_DIST): Add src/debug.c
       
 10594 +	* Makefile.in: Rebuilt.
       
 10595 +	* README: Update for 3.0.11.
       
 10596 +
       
 10597 +2011-11-10  Richard Henderson  <rth@redhat.com>
       
 10598 +
       
 10599 +	* configure.ac (GCC_AS_CFI_PSEUDO_OP): Use it instead of inline check.
       
 10600 +	* configure, aclocal.m4: Rebuild.
       
 10601 +
       
 10602 +2011-09-04  Iain Sandoe  <iains@gcc.gnu.org>
       
 10603 +
       
 10604 +	PR libffi/49594
       
 10605 +	* src/powerpc/darwin_closure.S (stubs): Make the stub binding
       
 10606 +	helper reference track the architecture pointer size.
       
 10607 +
       
 10608 +2011-08-25  Andrew Haley  <aph@redhat.com>
       
 10609 +
       
 10610 +	* src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Remove hard-coded assembly
       
 10611 +	instructions.
       
 10612 +	* src/arm/sysv.S (ffi_arm_trampoline): Put them here instead.
       
 10613 +
       
 10614 +2011-07-11  Andrew Haley  <aph@redhat.com>
       
 10615 +
       
 10616 +        * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Clear icache.
       
 10617 +
       
 10618 +2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10619 +
       
 10620 +	* testsuite/libffi.call/cls_double_va.c: Move PR number to comment.
       
 10621 +	* testsuite/libffi.call/cls_longdouble_va.c: Likewise.
       
 10622 +
       
 10623 +2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10624 +
       
 10625 +	PR libffi/46660
       
 10626 +	* testsuite/libffi.call/cls_double_va.c: xfail dg-output on
       
 10627 +	mips-sgi-irix6*.
       
 10628 +	* testsuite/libffi.call/cls_longdouble_va.c: Likewise.
       
 10629 +
       
 10630 +2011-06-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10631 +
       
 10632 +	* testsuite/libffi.call/huge_struct.c (test_large_fn): Use PRIu8,
       
 10633 +	PRId8 instead of %hhu, %hhd.
       
 10634 +	* testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRId8,
       
 10635 +	PRIu8): Define.
       
 10636 +	[__sgi__] (PRId8, PRIu8): Define.
       
 10637 +
       
 10638 +2011-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10639 +
       
 10640 +	* src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE):
       
 10641 +	Define.
       
 10642 +	Use them to handle ELF vs. ECOFF differences.
       
 10643 +	[__osf__] (_GLOBAL__F_ffi_call_osf): Define.
       
 10644 +
       
 10645 +2011-03-30  Timothy Wall  <twall@users.sf.net>
       
 10646 +
       
 10647 +	* src/powerpc/darwin.S: Fix unknown FDE encoding.
       
 10648 +	* src/powerpc/darwin_closure.S: ditto.
       
 10649 +
       
 10650 +2011-02-25  Anthony Green  <green@moxielogic.com>
       
 10651 +
       
 10652 +	* src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more
       
 10653 +	32-bit ABIs.
       
 10654 +
       
 10655 +2011-02-15  Anthony Green  <green@moxielogic.com>
       
 10656 +
       
 10657 +	* m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math.
       
 10658 +	* configure: Rebuilt.
       
 10659 +
       
 10660 +2011-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 10661 +
       
 10662 +	* configure: Regenerate.
       
 10663 +
       
 10664 +2011-02-13  Anthony Green  <green@moxielogic.com>
       
 10665 +
       
 10666 +	* include/ffi_common.h (UNLIKELY, LIKELY): Define.
       
 10667 +	* src/x86/ffi64.c (UNLIKELY, LIKELY): Remove definition.
       
 10668 +	* src/prep_cif.c (UNLIKELY, LIKELY): Remove definition.
       
 10669 +
       
 10670 +	* src/prep_cif.c (initialize_aggregate): Convert assertion into
       
 10671 +	FFI_BAD_TYPEDEF return.  Initialize arg size and alignment to 0.
       
 10672 +
       
 10673 +	* src/pa/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
       
 10674 +	just return FFI_BAD_ABI when things are wrong.
       
 10675 +	* src/arm/ffi.c (ffi_prep_closure_loc): Ditto.
       
 10676 +	* src/powerpc/ffi.c (ffi_prep_closure_loc): Ditto.
       
 10677 +	* src/mips/ffi.c (ffi_prep_closure_loc): Ditto.
       
 10678 +	* src/ia64/ffi.c (ffi_prep_closure_loc): Ditto.
       
 10679 +	* src/avr32/ffi.c (ffi_prep_closure_loc): Ditto.
       
 10680 +
       
 10681 +2011-02-11  Anthony Green  <green@moxielogic.com>
       
 10682 +
       
 10683 +	* src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
       
 10684 +	just return FFI_BAD_ABI when things are wrong.
       
 10685 +
       
 10686 +2012-02-11  Eric Botcazou  <ebotcazou@adacore.com>
       
 10687 +
       
 10688 +	* src/sparc/v9.S (STACKFRAME): Bump to 176.
       
 10689 +
       
 10690 +2011-02-09  Stuart Shelton  <srcshelton@gmail.com>
       
 10691 +
       
 10692 +	http://bugs.gentoo.org/show_bug.cgi?id=286911
       
 10693 +	* src/mips/ffitarget.h: Clean up error messages.
       
 10694 +	* src/java_raw_api.c (ffi_java_translate_args): Cast raw arg to
       
 10695 +	ffi_raw*.
       
 10696 +	* include/ffi.h.in: Add pragma for SGI compiler.
       
 10697 +
       
 10698 +2011-02-09  Anthony Green  <green@moxielogic.com>
       
 10699 +
       
 10700 +	* configure.ac: Add powerpc64-*-darwin* support.
       
 10701 +
       
 10702 +2011-02-09  Anthony Green <green@moxielogic.com>
       
 10703 +
       
 10704 +	* README: Mention Interix.
       
 10705 +
       
 10706 +2011-02-09  Jonathan Callen  <abcd@gentoo.org>
       
 10707 +
       
 10708 +	* configure.ac: Add Interix to win32/cygwin/mingw case.
       
 10709 +	* configure: Ditto.
       
 10710 +	* src/closures.c: Treat Interix like Cygwin, instead of as a
       
 10711 +	generic win32.
       
 10712 +
       
 10713 +2011-02-09  Anthony Green <green@moxielogic.com>
       
 10714 +
       
 10715 +	* testsuite/libffi.call/err_bad_typedef.c: Remove xfail.
       
 10716 +	* testsuite/libffi.call/err_bad_abi.c: Remove xfail.
       
 10717 +	* src/x86/ffi64.c (UNLIKELY, LIKELY): Define.
       
 10718 +	(ffi_prep_closure_loc): Check for bad ABI.
       
 10719 +	* src/prep_cif.c (UNLIKELY, LIKELY): Define.
       
 10720 +	(initialize_aggregate): Check for bad types.
       
 10721 +
       
 10722 +2011-02-09  Landon Fuller <landonf@plausible.coop>
       
 10723 +
       
 10724 +	* Makefile.am (EXTRA_DIST): Add build-ios.sh, src/arm/gentramp.sh,
       
 10725 +	src/arm/trampoline.S.
       
 10726 +	(nodist_libffi_la_SOURCES): Add src/arc/trampoline.S.
       
 10727 +	* configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Define.
       
 10728 +	* src/arm/ffi.c (ffi_trampoline_table)
       
 10729 +	(ffi_closure_trampoline_table_page, ffi_trampoline_table_entry)
       
 10730 +	(FFI_TRAMPOLINE_CODELOC_CONFIG, FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET)
       
 10731 +	(FFI_TRAMPOLINE_COUNT, ffi_trampoline_lock, ffi_trampoline_tables)
       
 10732 +	(ffi_trampoline_table_alloc, ffi_closure_alloc, ffi_closure_free):
       
 10733 +	Define for FFI_EXEC_TRAMPOLINE_TABLE case (iOS).
       
 10734 +	(ffi_prep_closure_loc): Handl FFI_EXEC_TRAMPOLINE_TABLE case
       
 10735 +	separately.
       
 10736 +	* src/arm/sysv.S: Handle Apple iOS host.
       
 10737 +	* src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case.
       
 10738 +	* build-ios.sh: New file.
       
 10739 +	* fficonfig.h.in, configure, Makefile.in: Rebuilt.
       
 10740 +	* README: Mention ARM iOS.
       
 10741 +
       
 10742 +2011-02-08  Oren Held  <orenhe@il.ibm.com>
       
 10743 +
       
 10744 +	* src/dlmalloc.c (_STRUCT_MALLINFO): Define in order to avoid
       
 10745 +	redefinition of mallinfo on HP-UX.
       
 10746 +
       
 10747 +2011-02-08  Ginn Chen  <ginn.chen@oracle.com>
       
 10748 +
       
 10749 +	* src/sparc/ffi.c (ffi_call): Make compatible with Solaris Studio
       
 10750 +	aggregate return ABI.  Flush cache.
       
 10751 +	(ffi_prep_closure_loc): Flush cache.
       
 10752 +
       
 10753 +2011-02-11  Anthony Green  <green@moxielogic.com>
       
 10754 +
       
 10755 +	From Tom Honermann <tom.honermann@oracle.com>:
       
 10756 +	* src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on
       
 10757 +	AIX.  Declare .ffi_prep_args.  Insert nops after branch
       
 10758 +	instructions so that the AIX linker can insert TOC reload
       
 10759 +	instructions.
       
 10760 +	* src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
       
 10761 +
       
 10762 +2011-02-08  Ed  <ed@kdtc.net>
       
 10763 +
       
 10764 +	* src/powerpc/asm.h: Fix grammar nit in comment.
       
 10765 +
       
 10766 +2011-02-08  Uli Link  <ul.mcamafia@linkitup.de>
       
 10767 +
       
 10768 +	* include/ffi.h.in (FFI_64_BIT_MAX): Define and use.
       
 10769 +
       
 10770 +2011-02-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10771 +
       
 10772 +	PR libffi/46661
       
 10773 +	* testsuite/libffi.call/cls_pointer.c (main): Cast void * to
       
 10774 +	uintptr_t first.
       
 10775 +	* testsuite/libffi.call/cls_pointer_stack.c (main): Likewise.
       
 10776 +
       
 10777 +2011-02-08  Rafael Avila de Espindola  <respindola@mozilla.com>
       
 10778 +
       
 10779 +	* configure.ac: Fix x86 test for pc related relocs.
       
 10780 +	* configure: Rebuilt.
       
 10781 +
       
 10782 +2011-02-07  Joel Sherrill <joel.sherrill@oarcorp.com>
       
 10783 +
       
 10784 +	* libffi/src/m68k/ffi.c: Add RTEMS support for cache flushing.
       
 10785 +	Handle case when CPU variant does not have long double support.
       
 10786 +	* libffi/src/m68k/sysv.S: Add support for mc68000, Coldfire,
       
 10787 +	and cores with soft floating point.
       
 10788 +
       
 10789 +2011-02-07  Joel Sherrill <joel.sherrill@oarcorp.com>
       
 10790 +
       
 10791 +	* configure.ac: Add mips*-*-rtems* support.
       
 10792 +	* configure: Regenerate.
       
 10793 +	* src/mips/ffitarget.h: Ensure needed constants are available
       
 10794 +	for targets which do not have sgidefs.h.
       
 10795 +
       
 10796 +2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
       
 10797 +
       
 10798 +	PR target/40125
       
 10799 +	* configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs.
       
 10800 +	* configure: Regenerate.
       
 10801 +
       
 10802 +2010-12-18  Iain Sandoe  <iains@gcc.gnu.org>
       
 10803 +
       
 10804 +	PR libffi/29152
       
 10805 +	PR libffi/42378
       
 10806 +	* src/powerpc/darwin_closure.S: Provide Darwin64 implementation,
       
 10807 +	update comments.
       
 10808 +	* src/powerpc/ffitarget.h (POWERPC_DARWIN64): New,
       
 10809 +	(FFI_TRAMPOLINE_SIZE): Update for Darwin64.
       
 10810 +	* src/powerpc/darwin.S: Provide Darwin64 implementation,
       
 10811 +	update comments.
       
 10812 +	* src/powerpc/ffi_darwin.c: Likewise.
       
 10813 +
       
 10814 +2010-12-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10815 +
       
 10816 +	* configure.ac (libffi_cv_as_ascii_pseudo_op): Use double
       
 10817 +	backslashes.
       
 10818 +	(libffi_cv_as_string_pseudo_op): Likewise.
       
 10819 +	* configure: Regenerate.
       
 10820 +
       
 10821 +2010-12-03  Chung-Lin Tang  <cltang@codesourcery.com>
       
 10822 +
       
 10823 +	* src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive.
       
 10824 +	(ffi_closure_VFP): Same.
       
 10825 +	(ffi_call_VFP): Move down to before ffi_closure_VFP. Add '.fpu vfp'
       
 10826 +	directive.
       
 10827 +
       
 10828 +2010-12-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10829 +
       
 10830 +	* testsuite/libffi.call/ffitest.h [__sgi] (PRId64, PRIu64): Define.
       
 10831 +	(PRIuPTR): Define.
       
 10832 +
       
 10833 +2010-11-29  Richard Henderson  <rth@redhat.com>
       
 10834 +	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10835 +
       
 10836 +	* src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define.
       
 10837 +	(.eh_frame): Use FDE_ENCODING.
       
 10838 +	(.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE.
       
 10839 +
       
 10840 +2010-11-22  Jacek Caban <jacek@codeweavers.com>
       
 10841 +
       
 10842 +	* configure.ac: Check for symbol underscores on mingw-w64.
       
 10843 +	* configure: Rebuilt.
       
 10844 +	* src/x86/win64.S: Correctly access extern symbols in respect to
       
 10845 +	underscores.
       
 10846 +
       
 10847 +2010-11-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10848 +
       
 10849 +	* testsuite/lib/libffi-dg.exp: Rename ...
       
 10850 +	* testsuite/lib/libffi.exp: ... to this.
       
 10851 +	* libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp.
       
 10852 +	* libffi/testsuite/libffi.special/special.exp: Likewise.
       
 10853 +
       
 10854 +2010-10-28  Chung-Lin Tang  <cltang@codesourcery.com>
       
 10855 +
       
 10856 +	* src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling
       
 10857 +	code, new parameter, and return value. Update comments.
       
 10858 +	(ffi_prep_cif_machdep): Add case for VFP struct return values. Add
       
 10859 +	call to layout_vfp_args().
       
 10860 +	(ffi_call_SYSV): Update declaration.
       
 10861 +	(ffi_call_VFP): New declaration.
       
 10862 +	(ffi_call): Add VFP struct return conditions. Call ffi_call_VFP()
       
 10863 +	when ABI is FFI_VFP.
       
 10864 +	(ffi_closure_VFP): New declaration.
       
 10865 +	(ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to
       
 10866 +	ffi_prep_incoming_args_SYSV().
       
 10867 +	(ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument
       
 10868 +	case handling.
       
 10869 +	(ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline
       
 10870 +	construction under VFP hard-float.
       
 10871 +	(rec_vfp_type_p): New function.
       
 10872 +	(vfp_type_p): Same.
       
 10873 +	(place_vfp_arg): Same.
       
 10874 +	(layout_vfp_args): Same.
       
 10875 +	* src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI
       
 10876 +	based on __ARM_PCS_VFP.
       
 10877 +	(FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific
       
 10878 +	fields.
       
 10879 +	(FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code.
       
 10880 +	(FFI_TYPE_STRUCT_VFP_DOUBLE): Same.
       
 10881 +	* src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to
       
 10882 +	direct call. Move function pointer load upwards.
       
 10883 +	(ffi_call_VFP): New function.
       
 10884 +	(ffi_closure_VFP): Same.
       
 10885 +
       
 10886 +	* testsuite/lib/libffi-dg.exp (check-flags): New function.
       
 10887 +	(dg-skip-if): New function.
       
 10888 +	* testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-*
       
 10889 +	and compiler options include -mfloat-abi=hard.
       
 10890 +	* testsuite/libffi.call/cls_longdouble_va.c: Same.
       
 10891 +
       
 10892 +2010-10-01  Jakub Jelinek  <jakub@redhat.com>
       
 10893 +
       
 10894 +	PR libffi/45677
       
 10895 +	* src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is
       
 10896 +	a multiple of 8.
       
 10897 +	* testsuite/libffi.call/many2.c: New test.
       
 10898 +
       
 10899 +2010-08-20  Mark Wielaard  <mjw@redhat.com>
       
 10900 +
       
 10901 +	* src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r
       
 10902 +	returns NULL.
       
 10903 +
       
 10904 +2010-08-09  Andreas Tobler  <andreast@fgznet.ch>
       
 10905 +
       
 10906 +	* configure.ac: Add target powerpc64-*-freebsd*.
       
 10907 +	* configure: Regenerate.
       
 10908 +	* testsuite/libffi.call/cls_align_longdouble_split.c: Pass
       
 10909 +	-mlong-double-128 only to linux targets.
       
 10910 +	* testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise.
       
 10911 +	* testsuite/libffi.call/cls_longdouble.c: Likewise.
       
 10912 +	* testsuite/libffi.call/huge_struct.c: Likewise.
       
 10913 +
       
 10914 +2010-08-05  Dan Witte  <dwitte@mozilla.com>
       
 10915 +
       
 10916 +        * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the
       
 10917 +        debug CRT when --enable-debug is given.
       
 10918 +        * configure.ac: Define it.
       
 10919 +        * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately.
       
 10920 +
       
 10921 +2010-08-04  Dan Witte  <dwitte@mozilla.com>
       
 10922 +
       
 10923 +	* src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64
       
 10924 +	platforms.
       
 10925 +	* src/x86/ffi.c: Remove redundant ifdef checks.
       
 10926 +	* src/prep_cif.c: Push stack space computation into src/x86/ffi.c
       
 10927 +	for X86_ANY so return value space doesn't get added twice.
       
 10928 +
       
 10929 +2010-08-03  Neil Rashbrooke <neil@parkwaycc.co.uk>
       
 10930 +
       
 10931 +	* msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy.
       
 10932 +
       
 10933 +2010-07-22  Dan Witte  <dwitte@mozilla.com>
       
 10934 +
       
 10935 +	* src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI.
       
 10936 +	* src/prep_cif.c: Fix ABI assertion.
       
 10937 +        * src/cris/ffi.c: Ditto.
       
 10938 +
       
 10939 +2010-07-10  Evan Phoenix  <evan@fallingsnow.net>
       
 10940 +
       
 10941 +	* src/closures.c (selinux_enabled_check): Fix strncmp usage bug.
       
 10942 +
       
 10943 +2010-07-07  Dan Horák <dan@danny.cz>
       
 10944 +
       
 10945 +	* include/ffi.h.in: Protect #define with #ifndef.
       
 10946 +	* src/powerpc/ffitarget.h: Ditto.
       
 10947 +	* src/s390/ffitarget.h: Ditto.
       
 10948 +	* src/sparc/ffitarget.h: Ditto.
       
 10949 +
       
 10950 +2010-07-07   Neil Roberts <neil@linux.intel.com>
       
 10951 +
       
 10952 +	* src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to
       
 10953 +	16-bytes.
       
 10954 +
       
 10955 +2010-07-02  Jakub Jelinek  <jakub@redhat.com>
       
 10956 +
       
 10957 +	* Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes.
       
 10958 +	* Makefile.in: Regenerated.
       
 10959 +
       
 10960 +2010-05-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 10961 +
       
 10962 +	* configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as
       
 10963 +	output, too.
       
 10964 +	(libffi_cv_as_ascii_pseudo_op): Check for .ascii.
       
 10965 +	(libffi_cv_as_string_pseudo_op): Check for .string.
       
 10966 +	* configure: Regenerate.
       
 10967 +	* fficonfig.h.in: Regenerate.
       
 10968 +	* src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.
       
 10969 +
       
 10970 +2010-05-11  Dan Witte  <dwitte@mozilla.com>
       
 10971 +
       
 10972 +	* doc/libffi.tex: Document previous change.
       
 10973 +
       
 10974 +2010-05-11  Makoto Kato <m_kato@ga2.so-net.ne.jp>
       
 10975 +
       
 10976 +	* src/x86/ffi.c (ffi_call): Don't copy structs passed by value.
       
 10977 +
       
 10978 +2010-05-05  Michael Kohler <michaelkohler@live.com>
       
 10979 +
       
 10980 +	* src/dlmalloc.c (dlfree): Fix spelling.
       
 10981 +	* src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto.
       
 10982 +	* configure.ac: Ditto.
       
 10983 +	* configure: Rebuilt.
       
 10984 +
       
 10985 +2010-04-13  Dan Witte  <dwitte@mozilla.com>
       
 10986 +
       
 10987 +	* msvcc.sh: Build with -W3 instead of -Wall.
       
 10988 +	* src/powerpc/ffi_darwin.c: Remove build warnings.
       
 10989 +	* src/x86/ffi.c: Ditto.
       
 10990 +	* src/x86/ffitarget.h: Ditto.
       
 10991 +
       
 10992 +2010-04-12  Dan Witte  <dwitte@mozilla.com>
       
 10993 +	    Walter Meinl <wuno@lsvw.de>
       
 10994 +
       
 10995 +	* configure.ac: Add OS/2 support.
       
 10996 +	* configure: Rebuilt.
       
 10997 +	* src/closures.c: Ditto.
       
 10998 +	* src/dlmalloc.c: Ditto.
       
 10999 +	* src/x86/win32.S: Ditto.
       
 11000 +
       
 11001 +2010-04-07  Jakub Jelinek  <jakub@redhat.com>
       
 11002 +
       
 11003 +	* testsuite/libffi.call/err_bad_abi.c: Remove unused args variable.
       
 11004 +
       
 11005 +2010-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 11006 +
       
 11007 +	* Makefile.in: Regenerate.
       
 11008 +	* aclocal.m4: Regenerate.
       
 11009 +	* include/Makefile.in: Regenerate.
       
 11010 +	* man/Makefile.in: Regenerate.
       
 11011 +	* testsuite/Makefile.in: Regenerate.
       
 11012 +
       
 11013 +2010-03-30  Dan Witte  <dwitte@mozilla.com>
       
 11014 +
       
 11015 +	* msvcc.sh: Disable build warnings.
       
 11016 +	* README (tested): Clarify windows build procedure.
       
 11017 +
       
 11018 +2010-03-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 11019 +
       
 11020 +	* configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
       
 11021 +	* configure: Regenerate.
       
 11022 +	* fficonfig.h.in: Regenerate.
       
 11023 +	* libffi/src/x86/unix64.S (.eh_frame)
       
 11024 +	[HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.
       
 11025 +
       
 11026 +2010-03-14  Matthias Klose  <doko@ubuntu.com>
       
 11027 +
       
 11028 +	* src/x86/ffi64.c: Fix typo in comment.
       
 11029 +	* src/x86/ffi.c: Use /* ... */ comment style.
       
 11030 +
       
 11031 +2010-02-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 11032 +
       
 11033 +	* doc/libffi.texi (The Closure API): Fix typo.
       
 11034 +	* doc/libffi.info: Remove.
       
 11035 +
       
 11036 +2010-02-15  Matthias Klose  <doko@ubuntu.com>
       
 11037 +
       
 11038 +	* src/arm/sysv.S (__ARM_ARCH__): Define for processor
       
 11039 +	__ARM_ARCH_7EM__.
       
 11040 +
       
 11041 +2010-01-15  Anthony Green  <green@redhat.com>
       
 11042 +
       
 11043 +	* README: Add notes on building with Microsoft Visual C++.
       
 11044 +
       
 11045 +2010-01-15  Daniel Witte  <dwitte@mozilla.com>
       
 11046 +
       
 11047 +	* msvcc.sh: New file.
       
 11048 +
       
 11049 +	* src/x86/win32.S: Port assembly routines to MSVC and #ifdef.
       
 11050 +	* src/x86/ffi.c: Tweak function declaration and remove excess
       
 11051 +	parens.
       
 11052 +	* include/ffi.h.in: Add __declspec(align(8)) to typedef struct
       
 11053 +	ffi_closure.
       
 11054 +
       
 11055 +	* src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new
       
 11056 +	function ffi_call_win32 on X86_WIN32.
       
 11057 +	* src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32.
       
 11058 +	(ffi_call_STDCALL): Remove.
       
 11059 +
       
 11060 +	* src/prep_cif.c (ffi_prep_cif): Move stack space allocation code
       
 11061 +	to ffi_prep_cif_machdep for x86.
       
 11062 +	* src/x86/ffi.c (ffi_prep_cif_machdep): To here.
       
 11063 +
       
 11064 +2010-01-15  Oliver Kiddle  <okiddle@yahoo.co.uk>
       
 11065 +
       
 11066 +	* src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for
       
 11067 +	Sun Studio compiler compatibility.
       
 11068 +
       
 11069 +2010-01-12  Conrad Irwin <conrad.irwin@gmail.com>
       
 11070 +
       
 11071 +	* doc/libffi.texi: Add closure example.
       
 11072 +
       
 11073 +2010-01-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 11074 +
       
 11075 +	PR libffi/40701
       
 11076 +	* testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL,
       
 11077 +	PRIuLL, PRId64, PRIu64, PRIuPTR): Define.
       
 11078 +	* testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on
       
 11079 +	alpha*-dec-osf*.
       
 11080 +	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
       
 11081 +	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
 11082 +	* testsuite/libffi.call/return_ll1.c: Likewise.
       
 11083 +	* testsuite/libffi.call/stret_medium2.c: Likewise.
       
 11084 +	* testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast
       
 11085 +	MAP_FAILED to char *.
       
 11086 +
       
 11087 +2010-01-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 11088 +
       
 11089 +	* src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__.
       
 11090 +
       
 11091 +2009-12-31  Anthony Green  <green@redhat.com>
       
 11092 +
       
 11093 +	* README: Update for libffi 3.0.9.
       
 11094 +
       
 11095 +2009-12-27  Matthias Klose  <doko@ubuntu.com>
       
 11096 +
       
 11097 +	* configure.ac (HAVE_LONG_DOUBLE): Define for mips when
       
 11098 +	appropriate.
       
 11099 +	* configure: Rebuilt.
       
 11100 +
       
 11101 +2009-12-26  Anthony Green  <green@redhat.com>
       
 11102 +
       
 11103 +	* testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for
       
 11104 +	avr32*-*-*.
       
 11105 +	* testsuite/libffi.call/cls_double_va.c: Ditto.
       
 11106 +
       
 11107 +2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
       
 11108 +
       
 11109 +	* testsuite/libffi.call/ffitest.h: Conditionally include stdint.h
       
 11110 +	and inttypes.h.
       
 11111 +	* testsuite/libffi.special/unwindtest.cc: Ditto.
       
 11112 +
       
 11113 +2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
       
 11114 +
       
 11115 +	* configure.ac: Add amd64-*-openbsd*.
       
 11116 +	* configure: Rebuilt.
       
 11117 +	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Link
       
 11118 +	openbsd programs with -lpthread.
       
 11119 +
       
 11120 +2009-12-26  Anthony Green  <green@redhat.com>
       
 11121 +
       
 11122 +	* testsuite/libffi.call/cls_double_va.c,
       
 11123 +	testsuite/libffi.call/cls_longdouble.c,
       
 11124 +	testsuite/libffi.call/cls_longdouble_va.c,
       
 11125 +	testsuite/libffi.call/cls_pointer.c,
       
 11126 +	testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for
       
 11127 +	mips*-*-* and arm*-*-*.
       
 11128 +	* testsuite/libffi.call/cls_align_longdouble_split.c,
       
 11129 +	testsuite/libffi.call/cls_align_longdouble_split2.c,
       
 11130 +	testsuite/libffi.call/stret_medium2.c,
       
 11131 +	testsuite/libffi.call/stret_medium.c,
       
 11132 +	testsuite/libffi.call/stret_large.c,
       
 11133 +	testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*.
       
 11134 +
       
 11135 +2009-12-31  Kay Tietz  <ktietz70@googlemail.com>
       
 11136 +
       
 11137 +	* testsuite/libffi.call/ffitest.h,
       
 11138 +	testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix
       
 11139 +	definitions.
       
 11140 +
       
 11141 +2009-12-31  Carlo Bramini  <carlo.bramix@libero.it>
       
 11142 +
       
 11143 +	* configure.ac (AM_LTLDFLAGS): Define for windows hosts.
       
 11144 +	* Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS.
       
 11145 +	* configure: Rebuilt.
       
 11146 +	* Makefile.in: Rebuilt.
       
 11147 +
       
 11148 +2009-12-31  Anthony Green  <green@redhat.com>
       
 11149 +	    Blake Chaffin.
       
 11150 +
       
 11151 +	* testsuite/libffi.call/huge_struct.c: New test case from Blake
       
 11152 +	Chaffin @ Apple.
       
 11153 +
       
 11154 +2009-12-28  David Edelsohn  <edelsohn@gnu.org>
       
 11155 +
       
 11156 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to
       
 11157 +	local variables.
       
 11158 +	(aix_adjust_aggregate_sizes): New function.
       
 11159 +	(ffi_prep_cif_machdep): Call it.
       
 11160 +
       
 11161 +2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
       
 11162 +
       
 11163 +	* configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
       
 11164 +	* configure: Regenerate.
       
 11165 +	* fficonfig.h.in: Likewise.
       
 11166 +	* src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
       
 11167 +	Solaris/x86.
       
 11168 +
       
 11169 +2009-12-26  Andreas Schwab  <schwab@linux-m68k.org>
       
 11170 +
       
 11171 +	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
       
 11172 +	when a float arguments is passed in memory.
       
 11173 +	(ffi_closure_helper_SYSV): Mark general registers as used up when
       
 11174 +	a 64bit or soft-float long double argument is passed in memory.
       
 11175 +
       
 11176 +2009-12-25  Matthias Klose  <doko@ubuntu.com>
       
 11177 +
       
 11178 +	* man/ffi_call.3: Fix #include in examples.
       
 11179 +	* doc/libffi.texi: Add dircategory.
       
 11180 +
       
 11181 +2009-12-25  Frank Everdij <f.p.x.everdij@tudelft.nl>
       
 11182 +
       
 11183 +	* include/ffi.h.in: Placed '__GNUC__' ifdef around
       
 11184 +	'__attribute__((aligned(8)))' in ffi_closure, fixes compile for
       
 11185 +	IRIX MIPSPro c99.
       
 11186 +	* include/ffi_common.h: Added '__sgi' define to non
       
 11187 +	'__attribute__((__mode__()))' integer typedefs.
       
 11188 +	* src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32,
       
 11189 +	ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check.
       
 11190 +	(ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added
       
 11191 +	FFI_LONGDOUBLE support and alignment(N32 only).
       
 11192 +	* src/mips/ffitarget.h: Corrected '#include <sgidefs.h>' for IRIX and
       
 11193 +	fixed non '__attribute__((__mode__()))' integer typedefs.
       
 11194 +	* src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame'
       
 11195 +	since they are Linux/GNU Assembler specific.
       
 11196 +
       
 11197 +2009-12-25  Bradley Smith  <brad@brad-smith.co.uk>
       
 11198 +
       
 11199 +	* configure.ac, Makefile.am, src/avr32/ffi.c,
       
 11200 +	src/avr32/ffitarget.h,
       
 11201 +	src/avr32/sysv.S: Add AVR32 port.
       
 11202 +	* configure, Makefile.in: Rebuilt.
       
 11203 +
       
 11204 +2009-12-21  Andreas Tobler  <a.tobler@schweiz.org>
       
 11205 +
       
 11206 +	* configure.ac: Make i?86 build on FreeBSD and OpenBSD.
       
 11207 +	* configure: Regenerate.
       
 11208 +
       
 11209 +2009-12-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
 11210 +
       
 11211 +	* testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX.
       
 11212 +
       
 11213 +2009-12-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
 11214 +
       
 11215 +	* src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
       
 11216 +	type on HP-UX.
       
 11217 +
       
 11218 +2012-02-13  Kai Tietz  <ktietz@redhat.com>
       
 11219 +
       
 11220 +	PR libffi/52221
       
 11221 +	* src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall
       
 11222 +	support for X86_WIN32.
       
 11223 +	(FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement.
       
 11224 +
       
 11225 +2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
       
 11226 +
       
 11227 +	* src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long
       
 11228 +	double' arguments.
       
 11229 +
       
 11230 +2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
       
 11231 +
       
 11232 +	* testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10.
       
 11233 +
       
 11234 +2009-12-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
       
 11235 +
       
 11236 +	PR libffi/40700
       
 11237 +	* src/closures.c [X86_64 && __sun__ && __svr4__]
       
 11238 +	(FFI_MMAP_EXEC_WRIT): Define.
       
 11239 +
       
 11240 +2009-12-08  David Daney  <ddaney@caviumnetworks.com>
       
 11241 +
       
 11242 +	* testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-*
       
 11243 +	* testsuite/libffi.call/cls_align_longdouble_split2.c: Same.
       
 11244 +	* testsuite/libffi.call/stret_large.c: Same.
       
 11245 +	* testsuite/libffi.call/cls_align_longdouble_split.c: Same.
       
 11246 +	* testsuite/libffi.call/stret_large2.c: Same.
       
 11247 +	* testsuite/libffi.call/stret_medium2.c: Same.
       
 11248 +
       
 11249 +2009-12-07  David Edelsohn  <edelsohn@gnu.org>
       
 11250 +
       
 11251 +	* src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump
       
 11252 +	typo.
       
 11253 +
       
 11254 +2009-12-05  David Edelsohn  <edelsohn@gnu.org>
       
 11255 +
       
 11256 +	* src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64
       
 11257 +	code.
       
 11258 +	* src/powerpc/aix_closure.S: Same.
       
 11259 +
       
 11260 +2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 11261 +
       
 11262 +	* Makefile.in: Regenerate.
       
 11263 +	* configure: Regenerate.
       
 11264 +	* include/Makefile.in: Regenerate.
       
 11265 +	* man/Makefile.in: Regenerate.
       
 11266 +	* testsuite/Makefile.in: Regenerate.
       
 11267 +
       
 11268 +2009-12-04  David Edelsohn  <edelsohn@gnu.org>
       
 11269 +
       
 11270 +	* src/powerpc/aix_closure.S: Reorganize 64-bit code to match
       
 11271 +	linux64_closure.S.
       
 11272 +
       
 11273 +2009-12-04  Uros Bizjak  <ubizjak@gmail.com>
       
 11274 +
       
 11275 +	PR libffi/41908
       
 11276 +	* src/x86/ffi64.c (classify_argument): Update from
       
 11277 +	gcc/config/i386/i386.c.
       
 11278 +	(ffi_closure_unix64_inner): Do not use the address of two consecutive
       
 11279 +	SSE registers directly.
       
 11280 +	* testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail
       
 11281 +	for x86_64 linux targets.
       
 11282 +
       
 11283 +2009-12-04  David Edelsohn  <edelsohn@gnu.org>
       
 11284 +
       
 11285 +	* src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment
       
 11286 +	pfr for long double split between fpr13 and stack.
       
 11287 +
       
 11288 +2009-12-03  David Edelsohn  <edelsohn@gnu.org>
       
 11289 +
       
 11290 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and
       
 11291 +	fparg_count twice for long double.
       
 11292 +
       
 11293 +2009-12-03  David Edelsohn  <edelsohn@gnu.org>
       
 11294 +
       
 11295 +	PR libffi/42243
       
 11296 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses.
       
 11297 +
       
 11298 +2009-12-03  Uros Bizjak  <ubizjak@gmail.com>
       
 11299 +
       
 11300 +	* testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string.
       
 11301 +	Remove xfails for x86 linux targets.
       
 11302 +
       
 11303 +2009-12-02  David Edelsohn  <edelsohn@gnu.org>
       
 11304 +
       
 11305 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64
       
 11306 +	case.
       
 11307 +
       
 11308 +2009-12-01  David Edelsohn  <edelsohn@gnu.org>
       
 11309 +
       
 11310 +	* src/powerpc/aix.S (ffi_call_AIX): Convert to more standard
       
 11311 +	register usage.  Call ffi_prep_args directly.  Add long double
       
 11312 +	return value support.
       
 11313 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment
       
 11314 +	applies to FFI_TYPE_DOUBLE.  Correct fpr_base increment typo.
       
 11315 +	Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases.
       
 11316 +	(ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit
       
 11317 +	mode.
       
 11318 +	(ffi_closure_helper_DARWIN): Remove nf and ng counters.  Move temp
       
 11319 +	into case.
       
 11320 +	* src/powerpc/aix_closure.S: Maintain 16 byte stack alignment.
       
 11321 +	Allocate result area between params and FPRs.
       
 11322 +
       
 11323 +2009-11-30  David Edelsohn  <edelsohn@gnu.org>
       
 11324 +
       
 11325 +	PR target/35484
       
 11326 +	* src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and
       
 11327 +	AIX64.
       
 11328 +	* src/powerpc/aix.S: Implement AIX64 version.
       
 11329 +	* src/powerpc/aix_closure.S: Implement AIX64 version.
       
 11330 +	(ffi_closure_ASM): Use extsb, lha and displament addresses.
       
 11331 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64
       
 11332 +	support.
       
 11333 +	(ffi_prep_cif_machdep): Same.
       
 11334 +	(ffi_call): Same.
       
 11335 +	(ffi_closure_helper_DARWIN): Same.
       
 11336 +
       
 11337 +2009-11-02  Andreas Tobler  <a.tobler@schweiz.org>
       
 11338 +
       
 11339 +	PR libffi/41908
       
 11340 +	* testsuite/libffi.call/testclosure.c: New test.
       
 11341 +
       
 11342 +2009-09-28  Kai Tietz  <kai.tietz@onevision.com>
       
 11343 +
       
 11344 +	* src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu
       
 11345 +	assembly version use of ___chkstk.
       
 11346 +
       
 11347 +2009-09-23  Matthias Klose  <doko@ubuntu.com>
       
 11348 +
       
 11349 +	PR libffi/40242, PR libffi/41443
       
 11350 +	* src/arm/sysv.S (__ARM_ARCH__): Define for processors
       
 11351 +	__ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__,
       
 11352 +	__ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__.
       
 11353 +	Change the conditionals to __SOFTFP__ || __ARM_EABI__
       
 11354 +	for -mfloat-abi=softfp to work.
       
 11355 +
       
 11356 +2009-09-17  Loren J. Rittle  <ljrittle@acm.org>
       
 11357 +
       
 11358 +	PR testsuite/32843 (strikes again)
       
 11359 +	* src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to
       
 11360 +	enable proper extension on char and short.
       
 11361 +
       
 11362 +2009-09-15  David Daney  <ddaney@caviumnetworks.com>
       
 11363 +
       
 11364 +	* src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special
       
 11365 +	handling for FFI_TYPE_POINTER.
       
 11366 +	* src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT,
       
 11367 +	FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT,
       
 11368 +	FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT,
       
 11369 +	FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines.
       
 11370 +	(FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations.
       
 11371 +	(enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float.
       
 11372 +	* src/mips/n32.S (ffi_call_N32): Add handling for soft-float
       
 11373 +	structure and pointer returns.
       
 11374 +	(ffi_closure_N32): Add handling for pointer returns.
       
 11375 +	* src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags,
       
 11376 +	calc_n32_return_struct_flags): Handle soft-float.
       
 11377 +	(ffi_prep_cif_machdep):  Handle soft-float, fix pointer handling.
       
 11378 +	(ffi_call_N32): Declare proper argument types.
       
 11379 +	(ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle
       
 11380 +	soft-float.
       
 11381 +
       
 11382 +2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 11383 +
       
 11384 +	* configure.ac (AC_PREREQ): Bump to 2.64.
       
 11385 +
       
 11386 +2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 11387 +
       
 11388 +	* Makefile.am (install-html, install-pdf): Remove.
       
 11389 +	* Makefile.in: Regenerate.
       
 11390 +
       
 11391 +	* Makefile.in: Regenerate.
       
 11392 +	* aclocal.m4: Regenerate.
       
 11393 +	* configure: Regenerate.
       
 11394 +	* fficonfig.h.in: Regenerate.
       
 11395 +	* include/Makefile.in: Regenerate.
       
 11396 +	* man/Makefile.in: Regenerate.
       
 11397 +	* testsuite/Makefile.in: Regenerate.
       
 11398 +
       
 11399 +2011-08-22  Jasper Lievisse Adriaanse <jasper@openbsd.org>
       
 11400 +
       
 11401 +	* configure.ac: Add OpenBSD/hppa and OpenBSD/powerpc support.
       
 11402 +	* configure: Rebuilt.
       
 11403 +
       
 11404 +2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 11405 +
       
 11406 +	* configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force.
       
 11407 +
       
 11408 +2009-07-24  Dave Korn  <dave.korn.cygwin@gmail.com>
       
 11409 +
       
 11410 +	PR libffi/40807
       
 11411 +	* src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending
       
 11412 +	return types for X86_WIN32.
       
 11413 +	* src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types.
       
 11414 +	(_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV,
       
 11415 +	_ffi_closure_STDCALL): Likewise.
       
 11416 +
       
 11417 +	* src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin.
       
 11418 +	(dlmmap, dlmunmap): Also use these functions on Cygwin.
       
 11419 +
       
 11420 +2009-07-11  Richard Sandiford  <rdsandiford@googlemail.com>
       
 11421 +
       
 11422 +	PR testsuite/40699
       
 11423 +	PR testsuite/40707
       
 11424 +	PR testsuite/40709
       
 11425 +	* testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and
       
 11426 +	2009-06-30 commits.
       
 11427 +
       
 11428 +2009-07-01  Richard Sandiford  <r.sandiford@uk.ibm.com>
       
 11429 +
       
 11430 +	* testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path
       
 11431 +	to "" before adding paths.  (This reinstates an assignment that
       
 11432 +	was removed by my 2009-06-30 commit, but changes the initial
       
 11433 +	value from "." to "".)
       
 11434 +
       
 11435 +2009-07-01  H.J. Lu  <hongjiu.lu@intel.com>
       
 11436 +
       
 11437 +	PR testsuite/40601
       
 11438 +	* testsuite/lib/libffi-dg.exp (libffi-init): Properly set
       
 11439 +	gccdir.  Adjust ld_library_path for gcc only if gccdir isn't
       
 11440 +	empty.
       
 11441 +
       
 11442 +2009-06-30  Richard Sandiford  <r.sandiford@uk.ibm.com>
       
 11443 +
       
 11444 +	* testsuite/lib/libffi-dg.exp (libffi-init): Don't add "."
       
 11445 +	to ld_library_path.  Use add_path.  Add just find_libgcc_s
       
 11446 +	to ld_library_path, not every libgcc multilib directory.
       
 11447 +
       
 11448 +2009-06-16  Wim Lewis  <wiml@hhhh.org>
       
 11449 +
       
 11450 +	* src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are
       
 11451 +	supposed to be callee-saved.
       
 11452 +	* src/powerpc/sysv.S (small_struct_return_value): Fix overrun of
       
 11453 +	return buffer for odd-size structs.
       
 11454 +
       
 11455 +2009-06-16  Andreas Tobler  <a.tobler@schweiz.org>
       
 11456 +
       
 11457 +	PR libffi/40444
       
 11458 +	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Add
       
 11459 +	allow_stack_execute for Darwin.
       
 11460 +
       
 11461 +2009-06-16  Andrew Haley  <aph@redhat.com>
       
 11462 +
       
 11463 +	* configure.ac (TARGETDIR): Add missing blank lines.
       
 11464 +	* configure: Regenerate.
       
 11465 +
       
 11466 +2009-06-16  Andrew Haley  <aph@redhat.com>
       
 11467 +
       
 11468 +	* testsuite/libffi.call/cls_align_sint64.c,
       
 11469 +	testsuite/libffi.call/cls_align_uint64.c,
       
 11470 +	testsuite/libffi.call/cls_longdouble_va.c,
       
 11471 +	testsuite/libffi.call/cls_ulonglong.c,
       
 11472 +	testsuite/libffi.call/return_ll1.c,
       
 11473 +	testsuite/libffi.call/stret_medium2.c: Fix printf format
       
 11474 +	specifiers.
       
 11475 +	* testsuite/libffi.call/ffitest.h,
       
 11476 +	testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define.
       
 11477 +
       
 11478 +2009-06-15  Andrew Haley  <aph@redhat.com>
       
 11479 +
       
 11480 +	* testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
       
 11481 +	* testsuite/libffi.call/err_bad_abi.c: Likewise.
       
 11482 +
       
 11483 +2009-06-12  Andrew Haley  <aph@redhat.com>
       
 11484 +
       
 11485 +	* Makefile.am: Remove info_TEXINFOS.
       
 11486 +
       
 11487 +2009-06-12  Andrew Haley  <aph@redhat.com>
       
 11488 +
       
 11489 +	* ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c,
       
 11490 +	testsuite/libffi.call/cls_align_uint64.c,
       
 11491 +	testsuite/libffi.call/cls_ulonglong.c,
       
 11492 +	testsuite/libffi.call/return_ll1.c,
       
 11493 +	testsuite/libffi.call/stret_medium2.c: Fix printf format
       
 11494 +	specifiers.
       
 11495 +	testsuite/libffi.special/unwindtest.cc: include stdint.h.
       
 11496 +
       
 11497 +2009-06-11  Timothy Wall  <twall@users.sf.net>
       
 11498 +
       
 11499 +	* Makefile.am,
       
 11500 +	configure.ac,
       
 11501 +	include/ffi.h.in,
       
 11502 +	include/ffi_common.h,
       
 11503 +	src/closures.c,
       
 11504 +	src/dlmalloc.c,
       
 11505 +	src/x86/ffi.c,
       
 11506 +	src/x86/ffitarget.h,
       
 11507 +	src/x86/win64.S (new),
       
 11508 +	README: Added win64 support (mingw or MSVC)
       
 11509 +	* Makefile.in,
       
 11510 +	include/Makefile.in,
       
 11511 +	man/Makefile.in,
       
 11512 +	testsuite/Makefile.in,
       
 11513 +	configure,
       
 11514 +	aclocal.m4: Regenerated
       
 11515 +	* ltcf-c.sh: properly escape cygwin/w32 path
       
 11516 +	* man/ffi_call.3: Clarify size requirements for return value.
       
 11517 +	* src/x86/ffi64.c: Fix filename in comment.
       
 11518 +	* src/x86/win32.S: Remove unused extern.
       
 11519 +
       
 11520 +	* testsuite/libffi.call/closure_fn0.c,
       
 11521 +	testsuite/libffi.call/closure_fn1.c,
       
 11522 +	testsuite/libffi.call/closure_fn2.c,
       
 11523 +	testsuite/libffi.call/closure_fn3.c,
       
 11524 +	testsuite/libffi.call/closure_fn4.c,
       
 11525 +	testsuite/libffi.call/closure_fn5.c,
       
 11526 +	testsuite/libffi.call/closure_fn6.c,
       
 11527 +	testsuite/libffi.call/closure_stdcall.c,
       
 11528 +	testsuite/libffi.call/cls_12byte.c,
       
 11529 +	testsuite/libffi.call/cls_16byte.c,
       
 11530 +	testsuite/libffi.call/cls_18byte.c,
       
 11531 +	testsuite/libffi.call/cls_19byte.c,
       
 11532 +	testsuite/libffi.call/cls_1_1byte.c,
       
 11533 +	testsuite/libffi.call/cls_20byte.c,
       
 11534 +	testsuite/libffi.call/cls_20byte1.c,
       
 11535 +	testsuite/libffi.call/cls_24byte.c,
       
 11536 +	testsuite/libffi.call/cls_2byte.c,
       
 11537 +	testsuite/libffi.call/cls_3_1byte.c,
       
 11538 +	testsuite/libffi.call/cls_3byte1.c,
       
 11539 + 	testsuite/libffi.call/cls_3byte2.c,
       
 11540 + 	testsuite/libffi.call/cls_4_1byte.c,
       
 11541 + 	testsuite/libffi.call/cls_4byte.c,
       
 11542 + 	testsuite/libffi.call/cls_5_1_byte.c,
       
 11543 + 	testsuite/libffi.call/cls_5byte.c,
       
 11544 + 	testsuite/libffi.call/cls_64byte.c,
       
 11545 + 	testsuite/libffi.call/cls_6_1_byte.c,
       
 11546 + 	testsuite/libffi.call/cls_6byte.c,
       
 11547 + 	testsuite/libffi.call/cls_7_1_byte.c,
       
 11548 + 	testsuite/libffi.call/cls_7byte.c,
       
 11549 + 	testsuite/libffi.call/cls_8byte.c,
       
 11550 + 	testsuite/libffi.call/cls_9byte1.c,
       
 11551 + 	testsuite/libffi.call/cls_9byte2.c,
       
 11552 + 	testsuite/libffi.call/cls_align_double.c,
       
 11553 + 	testsuite/libffi.call/cls_align_float.c,
       
 11554 + 	testsuite/libffi.call/cls_align_longdouble.c,
       
 11555 + 	testsuite/libffi.call/cls_align_longdouble_split.c,
       
 11556 + 	testsuite/libffi.call/cls_align_longdouble_split2.c,
       
 11557 + 	testsuite/libffi.call/cls_align_pointer.c,
       
 11558 + 	testsuite/libffi.call/cls_align_sint16.c,
       
 11559 + 	testsuite/libffi.call/cls_align_sint32.c,
       
 11560 + 	testsuite/libffi.call/cls_align_sint64.c,
       
 11561 + 	testsuite/libffi.call/cls_align_uint16.c,
       
 11562 + 	testsuite/libffi.call/cls_align_uint32.c,
       
 11563 + 	testsuite/libffi.call/cls_align_uint64.c,
       
 11564 + 	testsuite/libffi.call/cls_dbls_struct.c,
       
 11565 + 	testsuite/libffi.call/cls_double.c,
       
 11566 + 	testsuite/libffi.call/cls_double_va.c,
       
 11567 + 	testsuite/libffi.call/cls_float.c,
       
 11568 + 	testsuite/libffi.call/cls_longdouble.c,
       
 11569 + 	testsuite/libffi.call/cls_longdouble_va.c,
       
 11570 + 	testsuite/libffi.call/cls_multi_schar.c,
       
 11571 + 	testsuite/libffi.call/cls_multi_sshort.c,
       
 11572 + 	testsuite/libffi.call/cls_multi_sshortchar.c,
       
 11573 + 	testsuite/libffi.call/cls_multi_uchar.c,
       
 11574 + 	testsuite/libffi.call/cls_multi_ushort.c,
       
 11575 + 	testsuite/libffi.call/cls_multi_ushortchar.c,
       
 11576 + 	testsuite/libffi.call/cls_pointer.c,
       
 11577 + 	testsuite/libffi.call/cls_pointer_stack.c,
       
 11578 + 	testsuite/libffi.call/cls_schar.c,
       
 11579 + 	testsuite/libffi.call/cls_sint.c,
       
 11580 + 	testsuite/libffi.call/cls_sshort.c,
       
 11581 + 	testsuite/libffi.call/cls_uchar.c,
       
 11582 + 	testsuite/libffi.call/cls_uint.c,
       
 11583 + 	testsuite/libffi.call/cls_ulonglong.c,
       
 11584 + 	testsuite/libffi.call/cls_ushort.c,
       
 11585 + 	testsuite/libffi.call/err_bad_abi.c,
       
 11586 + 	testsuite/libffi.call/err_bad_typedef.c,
       
 11587 + 	testsuite/libffi.call/float2.c,
       
 11588 + 	testsuite/libffi.call/huge_struct.c,
       
 11589 + 	testsuite/libffi.call/nested_struct.c,
       
 11590 + 	testsuite/libffi.call/nested_struct1.c,
       
 11591 + 	testsuite/libffi.call/nested_struct10.c,
       
 11592 + 	testsuite/libffi.call/nested_struct2.c,
       
 11593 + 	testsuite/libffi.call/nested_struct3.c,
       
 11594 + 	testsuite/libffi.call/nested_struct4.c,
       
 11595 + 	testsuite/libffi.call/nested_struct5.c,
       
 11596 + 	testsuite/libffi.call/nested_struct6.c,
       
 11597 + 	testsuite/libffi.call/nested_struct7.c,
       
 11598 + 	testsuite/libffi.call/nested_struct8.c,
       
 11599 + 	testsuite/libffi.call/nested_struct9.c,
       
 11600 + 	testsuite/libffi.call/problem1.c,
       
 11601 + 	testsuite/libffi.call/return_ldl.c,
       
 11602 + 	testsuite/libffi.call/return_ll1.c,
       
 11603 + 	testsuite/libffi.call/stret_large.c,
       
 11604 + 	testsuite/libffi.call/stret_large2.c,
       
 11605 + 	testsuite/libffi.call/stret_medium.c,
       
 11606 + 	testsuite/libffi.call/stret_medium2.c,
       
 11607 +	testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead
       
 11608 +	of checking for MMAP.  Use intptr_t instead of long casts.
       
 11609 +
       
 11610 +2009-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 11611 +
       
 11612 +	* testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*.
       
 11613 +	* testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*.
       
 11614 +	* testsuite/libffi.call/err_bad_typedef.c: Likewise.
       
 11615 +
       
 11616 +2009-06-09  Andrew Haley  <aph@redhat.com>
       
 11617 +
       
 11618 +	* src/x86/freebsd.S: Add missing file.
       
 11619 +
       
 11620 +2009-06-08  Andrew Haley  <aph@redhat.com>
       
 11621 +
       
 11622 +	Import from libffi 3.0.8:
       
 11623 +
       
 11624 +	* doc/libffi.texi: New file.
       
 11625 +	* doc/libffi.info: Likewise.
       
 11626 +	* doc/stamp-vti: Likewise.
       
 11627 +	* man/Makefile.am: New file.
       
 11628 +	* man/ffi_call.3: New file.
       
 11629 +
       
 11630 +	* Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S,
       
 11631 +	src/dlmalloc.c.
       
 11632 +	(nodist_libffi_la_SOURCES): Add X86_FREEBSD.
       
 11633 +
       
 11634 +	* configure.ac: Bump version to 3.0.8.
       
 11635 +	parisc*-*-linux*: Add.
       
 11636 +	i386-*-freebsd* | i386-*-openbsd*: Add.
       
 11637 +	powerpc-*-beos*: Add.
       
 11638 +	AM_CONDITIONAL X86_FREEBSD: Add.
       
 11639 +	AC_CONFIG_FILES: Add man/Makefile.
       
 11640 +
       
 11641 +	* include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void).
       
 11642 +
       
 11643 +2009-06-08  Andrew Haley  <aph@redhat.com>
       
 11644 +
       
 11645 +	* README: Import from libffi 3.0.8.
       
 11646 +
       
 11647 +2009-06-08  Andrew Haley  <aph@redhat.com>
       
 11648 +
       
 11649 +	* testsuite/libffi.call/err_bad_abi.c: Add xfails.
       
 11650 +	* testsuite/libffi.call/cls_longdouble_va.c: Add xfails.
       
 11651 +	* testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*.
       
 11652 +	* testsuite/libffi.call/err_bad_typedef.c: Add xfails.
       
 11653 +
       
 11654 +	* testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args.
       
 11655 +	* testsuite/libffi.call/stret_medium.c: Likewise.
       
 11656 +	* testsuite/libffi.call/stret_large2.c: Likewise.
       
 11657 +	* testsuite/libffi.call/stret_large.c:  Likewise.
       
 11658 +
       
 11659 +2008-12-26  Timothy Wall  <twall@users.sf.net>
       
 11660 +
       
 11661 +	* testsuite/libffi.call/cls_longdouble.c,
       
 11662 +	testsuite/libffi.call/cls_longdouble_va.c,
       
 11663 +	testsuite/libffi.call/cls_align_longdouble.c,
       
 11664 +	testsuite/libffi.call/cls_align_longdouble_split.c,
       
 11665 +	testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected
       
 11666 +	failures on x86_64 cygwin/mingw.
       
 11667 +
       
 11668 +2008-12-22  Timothy Wall  <twall@users.sf.net>
       
 11669 +
       
 11670 +	* testsuite/libffi.call/closure_fn0.c,
       
 11671 +	testsuite/libffi.call/closure_fn1.c,
       
 11672 +	testsuite/libffi.call/closure_fn2.c,
       
 11673 +	testsuite/libffi.call/closure_fn3.c,
       
 11674 +	testsuite/libffi.call/closure_fn4.c,
       
 11675 +	testsuite/libffi.call/closure_fn5.c,
       
 11676 +	testsuite/libffi.call/closure_fn6.c,
       
 11677 +	testsuite/libffi.call/closure_loc_fn0.c,
       
 11678 +	testsuite/libffi.call/closure_stdcall.c,
       
 11679 +	testsuite/libffi.call/cls_align_pointer.c,
       
 11680 +	testsuite/libffi.call/cls_pointer.c,
       
 11681 +	testsuite/libffi.call/cls_pointer_stack.c: use portable cast from
       
 11682 +	pointer to integer (intptr_t).
       
 11683 +	* testsuite/libffi.call/cls_longdouble.c: disable for win64.
       
 11684 +
       
 11685 +2008-07-24  Anthony Green  <green@redhat.com>
       
 11686 +
       
 11687 +	* testsuite/libffi.call/cls_dbls_struct.c,
       
 11688 +	testsuite/libffi.call/cls_double_va.c,
       
 11689 +	testsuite/libffi.call/cls_longdouble.c,
       
 11690 +	testsuite/libffi.call/cls_longdouble_va.c,
       
 11691 +	testsuite/libffi.call/cls_pointer.c,
       
 11692 +	testsuite/libffi.call/cls_pointer_stack.c,
       
 11693 +	testsuite/libffi.call/err_bad_abi.c: Clean up failures from
       
 11694 +	compiler warnings.
       
 11695 +
       
 11696 +2008-03-04  Anthony Green  <green@redhat.com>
       
 11697 +	    Blake Chaffin
       
 11698 +	    hos@tamanegi.org
       
 11699 +
       
 11700 +	* testsuite/libffi.call/cls_align_longdouble_split2.c
       
 11701 +	  testsuite/libffi.call/cls_align_longdouble_split.c
       
 11702 +	  testsuite/libffi.call/cls_dbls_struct.c
       
 11703 +	  testsuite/libffi.call/cls_double_va.c
       
 11704 +	  testsuite/libffi.call/cls_longdouble.c
       
 11705 +	  testsuite/libffi.call/cls_longdouble_va.c
       
 11706 +	  testsuite/libffi.call/cls_pointer.c
       
 11707 +	  testsuite/libffi.call/cls_pointer_stack.c
       
 11708 +	  testsuite/libffi.call/err_bad_abi.c
       
 11709 +	  testsuite/libffi.call/err_bad_typedef.c
       
 11710 +	  testsuite/libffi.call/stret_large2.c
       
 11711 +	  testsuite/libffi.call/stret_large.c
       
 11712 +	  testsuite/libffi.call/stret_medium2.c
       
 11713 +	  testsuite/libffi.call/stret_medium.c: New tests from Apple.
       
 11714 +
       
 11715 +2009-06-05  Andrew Haley  <aph@redhat.com>
       
 11716 +
       
 11717 +	* src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from
       
 11718 +	libffi.
       
 11719 +
       
 11720 +2009-06-04  Andrew Haley  <aph@redhat.com>
       
 11721 +
       
 11722 +	* src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out
       
 11723 +	stdcall changes.
       
 11724 +
       
 11725 +2008-02-26  Anthony Green  <green@redhat.com>
       
 11726 +	    Thomas Heller  <theller@ctypes.org>
       
 11727 +
       
 11728 +	* src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
       
 11729 +	comment.
       
 11730 +
       
 11731 +2008-02-03  Timothy Wall  <twall@users.sf.net>
       
 11732 +
       
 11733 +	* src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return
       
 11734 +	  offset based on code pointer, not data pointer.
       
 11735 +
       
 11736 +2008-01-31  Timothy Wall <twall@users.sf.net>
       
 11737 +
       
 11738 +	* testsuite/libffi.call/closure_stdcall.c: Add test for stdcall
       
 11739 +	closures.
       
 11740 +	* src/x86/ffitarget.h: Increase size of trampoline for stdcall
       
 11741 +	closures.
       
 11742 +	* src/x86/win32.S: Add assembly for stdcall closure.
       
 11743 +	* src/x86/ffi.c: Initialize stdcall closure trampoline.
       
 11744 +
       
 11745 +2009-06-04  Andrew Haley  <aph@redhat.com>
       
 11746 +
       
 11747 +	* include/ffi.h.in: Change void (*)() to void (*)(void).
       
 11748 +	* src/x86/ffi.c: Likewise.
       
 11749 +
       
 11750 +2009-06-04  Andrew Haley  <aph@redhat.com>
       
 11751 +
       
 11752 +	* src/powerpc/ppc_closure.S: Insert licence header.
       
 11753 +	* src/powerpc/linux64_closure.S: Likewise.
       
 11754 +	* src/m68k/sysv.S: Likewise.
       
 11755 +
       
 11756 +	* src/sh64/ffi.c: Change void (*)() to void (*)(void).
       
 11757 +	* src/powerpc/ffi.c: Likewise.
       
 11758 +	* src/powerpc/ffi_darwin.c: Likewise.
       
 11759 +	* src/m32r/ffi.c: Likewise.
       
 11760 +	* src/sh64/ffi.c: Likewise.
       
 11761 +	* src/x86/ffi64.c: Likewise.
       
 11762 +	* src/alpha/ffi.c: Likewise.
       
 11763 +	* src/alpha/osf.S: Likewise.
       
 11764 +	* src/frv/ffi.c: Likewise.
       
 11765 +	* src/s390/ffi.c: Likewise.
       
 11766 +	* src/pa/ffi.c: Likewise.
       
 11767 +	* src/pa/hpux32.S: Likewise.
       
 11768 +	* src/ia64/unix.S: Likewise.
       
 11769 +	* src/ia64/ffi.c: Likewise.
       
 11770 +	* src/sparc/ffi.c: Likewise.
       
 11771 +	* src/mips/ffi.c: Likewise.
       
 11772 +	* src/sh/ffi.c: Likewise.
       
 11773 +
       
 11774 +2008-02-15  David Daney  <ddaney@avtrex.com>
       
 11775 +
       
 11776 +	* src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
       
 11777 +	Define (conditionally), and use it to include cachectl.h.
       
 11778 +	(ffi_prep_closure_loc): Fix cache flushing.
       
 11779 +	* src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
       
 11780 +
       
 11781 +2009-06-04  Andrew Haley  <aph@redhat.com>
       
 11782 +
       
 11783 +	include/ffi.h.in,
       
 11784 +	src/arm/ffitarget.h,
       
 11785 +	src/arm/ffi.c,
       
 11786 +	src/arm/sysv.S,
       
 11787 +	src/powerpc/ffitarget.h,
       
 11788 +	src/closures.c,
       
 11789 +	src/sh64/ffitarget.h,
       
 11790 +	src/sh64/ffi.c,
       
 11791 +	src/sh64/sysv.S,
       
 11792 +	src/types.c,
       
 11793 +	src/x86/ffi64.c,
       
 11794 +	src/x86/ffitarget.h,
       
 11795 +	src/x86/win32.S,
       
 11796 +	src/x86/darwin.S,
       
 11797 +	src/x86/ffi.c,
       
 11798 +	src/x86/sysv.S,
       
 11799 +	src/x86/unix64.S,
       
 11800 +	src/alpha/ffitarget.h,
       
 11801 +	src/alpha/ffi.c,
       
 11802 +	src/alpha/osf.S,
       
 11803 +	src/m68k/ffitarget.h,
       
 11804 +	src/frv/ffitarget.h,
       
 11805 +	src/frv/ffi.c,
       
 11806 +	src/s390/ffitarget.h,
       
 11807 +	src/s390/sysv.S,
       
 11808 +	src/cris/ffitarget.h,
       
 11809 +	src/pa/linux.S,
       
 11810 +	src/pa/ffitarget.h,
       
 11811 +	src/pa/ffi.c,
       
 11812 +	src/raw_api.c,
       
 11813 +	src/ia64/ffitarget.h,
       
 11814 +	src/ia64/unix.S,
       
 11815 +	src/ia64/ffi.c,
       
 11816 +	src/ia64/ia64_flags.h,
       
 11817 +	src/java_raw_api.c,
       
 11818 +	src/debug.c,
       
 11819 +	src/sparc/v9.S,
       
 11820 +	src/sparc/ffitarget.h,
       
 11821 +	src/sparc/ffi.c,
       
 11822 +	src/sparc/v8.S,
       
 11823 +	src/mips/ffitarget.h,
       
 11824 +	src/mips/n32.S,
       
 11825 +	src/mips/o32.S,
       
 11826 +	src/mips/ffi.c,
       
 11827 +	src/prep_cif.c,
       
 11828 +	src/sh/ffitarget.h,
       
 11829 +	src/sh/ffi.c,
       
 11830 +	src/sh/sysv.S: Update license text.
       
 11831 +
       
 11832 +2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
       
 11833 +
       
 11834 +	* src/x86/win32.S (_ffi_closure_STDCALL):  New function.
       
 11835 +	(.eh_frame):  Add FDE for it.
       
 11836 +
       
 11837 +2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
       
 11838 +
       
 11839 +	* configure.ac:  Also check if assembler supports pc-relative
       
 11840 +	relocs on X86_WIN32 targets.
       
 11841 +	* configure:  Regenerate.
       
 11842 +	* src/x86/win32.S (ffi_prep_args):  Declare extern, not global.
       
 11843 +	(_ffi_call_SYSV):  Add missing function type symbol .def and
       
 11844 +	add EH markup labels.
       
 11845 +	(_ffi_call_STDCALL):  Likewise.
       
 11846 +	(_ffi_closure_SYSV):  Likewise.
       
 11847 +	(_ffi_closure_raw_SYSV):  Likewise.
       
 11848 +	(.eh_frame):  Add hand-crafted EH data.
       
 11849 +
       
 11850 +2009-04-09  Jakub Jelinek  <jakub@redhat.com>
       
 11851 +
       
 11852 +	* testsuite/lib/libffi-dg.exp: Change copyright header to refer to
       
 11853 +	version 3 of the GNU General Public License and to point readers
       
 11854 +	at the COPYING3 file and the FSF's license web page.
       
 11855 +	* testsuite/libffi.call/call.exp: Likewise.
       
 11856 +	* testsuite/libffi.special/special.exp: Likewise.
       
 11857 +
       
 11858 +2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 11859 +
       
 11860 +	* configure: Regenerate.
       
 11861 +
       
 11862 +2008-12-18  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 11863 +
       
 11864 +	PR libffi/26048
       
 11865 +	* configure.ac (HAVE_AS_X86_PCREL): New test.
       
 11866 +	* configure: Regenerate.
       
 11867 +	* fficonfig.h.in: Regenerate.
       
 11868 +	* src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate
       
 11869 +	RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET,
       
 11870 +	RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler.
       
 11871 +	(.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
       
 11872 +	* src/x86/unix64.S (.Lstore_table): Move to .text section.
       
 11873 +	(.Lload_table): Likewise.
       
 11874 +	(.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
       
 11875 +
       
 11876 +2008-12-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 11877 +
       
 11878 +	* configure: Regenerate.
       
 11879 +
       
 11880 +2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
       
 11881 +
       
 11882 +	* src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for
       
 11883 +	signed/unsigned int8/16 return values.
       
 11884 +	* src/sparc/v8.S (ffi_call_v8): Likewise.
       
 11885 +	(ffi_closure_v8): Likewise.
       
 11886 +
       
 11887 +2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
       
 11888 +	    Steve Ellcey  <sje@cup.hp.com>
       
 11889 +
       
 11890 +	* configure: Regenerate for new libtool.
       
 11891 +	* Makefile.in: Ditto.
       
 11892 +	* include/Makefile.in: Ditto.
       
 11893 +	* aclocal.m4: Ditto.
       
 11894 +
       
 11895 +2008-08-25  Andreas Tobler  <a.tobler@schweiz.org>
       
 11896 +
       
 11897 +	* src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and
       
 11898 +	FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum.
       
 11899 +	Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT.
       
 11900 +	Adjust copyright notice.
       
 11901 +	* src/powerpc/ffi.c: Add two new flags to indicate if we have one
       
 11902 +	register or two register to use for FFI_SYSV structs.
       
 11903 +	(ffi_prep_cif_machdep): Pass the right register flag introduced above.
       
 11904 +	(ffi_closure_helper_SYSV): Fix the return type for
       
 11905 +	FFI_SYSV_TYPE_SMALL_STRUCT. Comment.
       
 11906 +	Adjust copyright notice.
       
 11907 +
       
 11908 +2008-07-16  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 11909 +
       
 11910 +	* src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned
       
 11911 +	int.
       
 11912 +
       
 11913 +2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 11914 +
       
 11915 +	* configure: Regenerate.
       
 11916 +	* include/Makefile.in: Regenerate.
       
 11917 +	* testsuite/Makefile.in: Regenerate.
       
 11918 +
       
 11919 +2008-06-07  Joseph Myers  <joseph@codesourcery.com>
       
 11920 +
       
 11921 +	* configure.ac (parisc*-*-linux*, powerpc-*-sysv*,
       
 11922 +	powerpc-*-beos*): Remove.
       
 11923 +	* configure: Regenerate.
       
 11924 +
       
 11925 +2008-05-09  Julian Brown  <julian@codesourcery.com>
       
 11926 +
       
 11927 +	* Makefile.am (LTLDFLAGS): New.
       
 11928 +	(libffi_la_LDFLAGS): Use above.
       
 11929 +	* Makefile.in: Regenerate.
       
 11930 +
       
 11931 +2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
       
 11932 +
       
 11933 +	PR bootstrap/35457
       
 11934 +	* aclocal.m4: Regenerate.
       
 11935 +	* configure: Regenerate.
       
 11936 +
       
 11937 +2008-03-26  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 11938 +
       
 11939 +	* src/sh/sysv.S: Add .note.GNU-stack on Linux.
       
 11940 +	* src/sh64/sysv.S: Likewise.
       
 11941 +
       
 11942 +2008-03-26  Daniel Jacobowitz  <dan@debian.org>
       
 11943 +
       
 11944 +	* src/arm/sysv.S: Fix ARM comment marker.
       
 11945 +
       
 11946 +2008-03-26  Jakub Jelinek  <jakub@redhat.com>
       
 11947 +
       
 11948 +	* src/alpha/osf.S: Add .note.GNU-stack on Linux.
       
 11949 +	* src/s390/sysv.S: Likewise.
       
 11950 +	* src/powerpc/ppc_closure.S: Likewise.
       
 11951 +	* src/powerpc/sysv.S: Likewise.
       
 11952 +	* src/x86/unix64.S: Likewise.
       
 11953 +	* src/x86/sysv.S: Likewise.
       
 11954 +	* src/sparc/v8.S: Likewise.
       
 11955 +	* src/sparc/v9.S: Likewise.
       
 11956 +	* src/m68k/sysv.S: Likewise.
       
 11957 +	* src/arm/sysv.S: Likewise.
       
 11958 +
       
 11959 +2008-03-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
       
 11960 +
       
 11961 +	* aclocal.m4: Regenerate.
       
 11962 +	* configure: Likewise.
       
 11963 +	* Makefile.in: Likewise.
       
 11964 +	* include/Makefile.in: Likewise.
       
 11965 +	* testsuite/Makefile.in: Likewise.
       
 11966 +
       
 11967 +2008-02-12  Bjoern Koenig  <bkoenig@alpha-tierchen.de>
       
 11968 +	    Andreas Tobler  <a.tobler@schweiz.org>
       
 11969 +
       
 11970 +	* configure.ac: Add amd64-*-freebsd* target.
       
 11971 +	* configure: Regenerate.
       
 11972 +
       
 11973 +2008-01-30  H.J. Lu  <hongjiu.lu@intel.com>
       
 11974 +
       
 11975 +	PR libffi/34612
       
 11976 +	* src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when
       
 11977 +	returning struct.
       
 11978 +
       
 11979 +	* testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
       
 11980 +	tests.
       
 11981 +
       
 11982 +2008-01-24  David Edelsohn  <edelsohn@gnu.org>
       
 11983 +
       
 11984 +	* configure: Regenerate.
       
 11985 +
       
 11986 +2008-01-06  Andreas Tobler  <a.tobler@schweiz.org>
       
 11987 +
       
 11988 +	* src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko.
       
 11989 +
       
 11990 +2008-01-05  Andreas Tobler  <a.tobler@schweiz.org>
       
 11991 +
       
 11992 +	PR testsuite/32843
       
 11993 +	* src/x86/ffi.c (ffi_prep_cif_machdep): Add code for
       
 11994 +	signed/unsigned int8/16 for X86_DARWIN.
       
 11995 +	Updated copyright info.
       
 11996 +	Handle one and two byte structs with special cif->flags.
       
 11997 +	* src/x86/ffitarget.h: Add special types for one and two byte structs.
       
 11998 +	Updated copyright info.
       
 11999 +	* src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like
       
 12000 +	sysv.S
       
 12001 +	Remove code to pop args from the stack after call.
       
 12002 +	Special-case signed/unsigned for int8/16, one and two byte structs.
       
 12003 +	(ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
       
 12004 +	FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
       
 12005 +	FFI_TYPE_SINT32.
       
 12006 +	Updated copyright info.
       
 12007 +
       
 12008 +2007-12-08  David Daney  <ddaney@avtrex.com>
       
 12009 +
       
 12010 +	* src/mips/n32.S (ffi_call_N32):  Replace dadd with ADDU, dsub with
       
 12011 +	SUBU, add with ADDU and use smaller code sequences.
       
 12012 +
       
 12013 +2007-12-07  David Daney  <ddaney@avtrex.com>
       
 12014 +
       
 12015 +	* src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return
       
 12016 +	type.
       
 12017 +
       
 12018 +2007-12-06  David Daney  <ddaney@avtrex.com>
       
 12019 +
       
 12020 +	* include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not	already
       
 12021 +	defined.
       
 12022 +	(ffi_java_raw): New typedef.
       
 12023 +	(ffi_java_raw_call, ffi_java_ptrarray_to_raw,
       
 12024 +	ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to
       
 12025 +	ffi_java_raw.
       
 12026 +	(ffi_java_raw_closure) : Same.
       
 12027 +	(ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change
       
 12028 +	parameter types.
       
 12029 +	* src/java_raw_api.c (ffi_java_raw_size):  Replace FFI_SIZEOF_ARG with
       
 12030 +	FFI_SIZEOF_JAVA_RAW.
       
 12031 +	(ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw.
       
 12032 +	Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use
       
 12033 +	sizeof(ffi_java_raw) for alignment calculations.
       
 12034 +	(ffi_java_ptrarray_to_raw): Same.
       
 12035 +	(ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER
       
 12036 +	if FFI_SIZEOF_JAVA_RAW == 4.
       
 12037 +	(ffi_java_raw_to_rvalue): Same.
       
 12038 +	(ffi_java_raw_call): Change type of raw to ffi_java_raw.
       
 12039 +	(ffi_java_translate_args): Same.
       
 12040 +	(ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change
       
 12041 +	parameter types.
       
 12042 +	* src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI.
       
 12043 +
       
 12044 +2007-12-06  David Daney  <ddaney@avtrex.com>
       
 12045 +
       
 12046 +	* src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on
       
 12047 +	pointer values.
       
 12048 +
       
 12049 +2007-12-01  Andreas Tobler  <a.tobler@schweiz.org>
       
 12050 +
       
 12051 +	PR libffi/31937
       
 12052 +	* src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT.
       
 12053 +	Add local FFI_TYPE_UINT128 to handle soft-float long-double-128.
       
 12054 +	* src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and
       
 12055 +	set the NUM_FPR_ARG_REGISTERS according to.
       
 12056 +	Add support for potential soft-float support under hard-float
       
 12057 +	architecture.
       
 12058 +	(ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of
       
 12059 +	FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according
       
 12060 +	to the FFI_LINUX_SOFT_FLOAT ABI.
       
 12061 +	(ffi_prep_cif_machdep): Likewise.
       
 12062 +	(ffi_closure_helper_SYSV): Likewise.
       
 12063 +	* src/powerpc/ppc_closure.S: Make sure not to store float/double
       
 12064 +	on archs where __NO_FPRS__ is true.
       
 12065 +	Add FFI_TYPE_UINT128 support.
       
 12066 +	* src/powerpc/sysv.S: Add support for soft-float long-double-128.
       
 12067 +	Adjust copyright notice.
       
 12068 +
       
 12069 +2007-11-25  Andreas Tobler  <a.tobler@schweiz.org>
       
 12070 +
       
 12071 +	* src/closures.c: Move defintion of MAYBE_UNUSED from here to ...
       
 12072 +	* include/ffi_common.h: ... here.
       
 12073 +	Update copyright.
       
 12074 +
       
 12075 +2007-11-17  Andreas Tobler  <a.tobler@schweiz.org>
       
 12076 +
       
 12077 +	* src/powerpc/sysv.S: Load correct cr to compare if we have long double.
       
 12078 +	* src/powerpc/linux64.S: Likewise.
       
 12079 +	* src/powerpc/ffi.c: Add a comment to show which part goes into cr6.
       
 12080 +	* testsuite/libffi.call/return_ldl.c: New test.
       
 12081 +
       
 12082 +2007-09-04    <aph@redhat.com>
       
 12083 +
       
 12084 +	* src/arm/sysv.S (UNWIND): New.
       
 12085 +	(Whole file): Conditionally compile unwinder directives.
       
 12086 +	* src/arm/sysv.S: Add unwinder directives.
       
 12087 +
       
 12088 +	* src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes.
       
 12089 +	Only treat r0 as a struct address if we're actually returning a
       
 12090 +	struct by address.
       
 12091 +	Only copy the bytes that are actually within a struct.
       
 12092 +	(ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes
       
 12093 +	is returned in r0, not passed by address.
       
 12094 +	(ffi_call): Allocate a word-sized temporary for the case where
       
 12095 +	a composite is returned in r0.
       
 12096 +	(ffi_prep_incoming_args_SYSV): Align as necessary.
       
 12097 +
       
 12098 +2007-08-05  Steven Newbury  <s_j_newbury@yahoo.co.uk>
       
 12099 +
       
 12100 +	* src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of
       
 12101 +	directly using the sys_cacheflush syscall.
       
 12102 +
       
 12103 +2007-07-27  Andrew Haley  <aph@redhat.com>
       
 12104 +
       
 12105 +	* src/arm/sysv.S (ffi_closure_SYSV): Add soft-float.
       
 12106 +
       
 12107 +2007-09-03  Maciej W. Rozycki  <macro@linux-mips.org>
       
 12108 +
       
 12109 +	* Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS.
       
 12110 +	* configure.ac: Likewise.
       
 12111 +	* Makefile.in: Regenerate.
       
 12112 +	* include/Makefile.in: Likewise.
       
 12113 +	* testsuite/Makefile.in: Likewise.
       
 12114 +	* configure: Likewise.
       
 12115 +
       
 12116 +2007-08-24  David Daney  <ddaney@avtrex.com>
       
 12117 +
       
 12118 +	* testsuite/libffi.call/return_sl.c: New test.
       
 12119 +
       
 12120 +2007-08-10  David Daney  <ddaney@avtrex.com>
       
 12121 +
       
 12122 +	* testsuite/libffi.call/cls_multi_ushort.c,
       
 12123 +	testsuite/libffi.call/cls_align_uint16.c,
       
 12124 +	testsuite/libffi.call/nested_struct1.c,
       
 12125 +	testsuite/libffi.call/nested_struct3.c,
       
 12126 +	testsuite/libffi.call/cls_7_1_byte.c,
       
 12127 +	testsuite/libffi.call/nested_struct5.c,
       
 12128 +	testsuite/libffi.call/cls_double.c,
       
 12129 +	testsuite/libffi.call/nested_struct7.c,
       
 12130 +	testsuite/libffi.call/cls_sint.c,
       
 12131 +	testsuite/libffi.call/nested_struct9.c,
       
 12132 +	testsuite/libffi.call/cls_20byte1.c,
       
 12133 +	testsuite/libffi.call/cls_multi_sshortchar.c,
       
 12134 +	testsuite/libffi.call/cls_align_sint64.c,
       
 12135 +	testsuite/libffi.call/cls_3byte2.c,
       
 12136 +	testsuite/libffi.call/cls_multi_schar.c,
       
 12137 +	testsuite/libffi.call/cls_multi_uchar.c,
       
 12138 +	testsuite/libffi.call/cls_19byte.c,
       
 12139 +	testsuite/libffi.call/cls_9byte1.c,
       
 12140 +	testsuite/libffi.call/cls_align_float.c,
       
 12141 +	testsuite/libffi.call/closure_fn1.c,
       
 12142 +	testsuite/libffi.call/problem1.c,
       
 12143 +	testsuite/libffi.call/closure_fn3.c,
       
 12144 +	testsuite/libffi.call/cls_sshort.c,
       
 12145 +	testsuite/libffi.call/closure_fn5.c,
       
 12146 +	testsuite/libffi.call/cls_align_double.c,
       
 12147 +	testsuite/libffi.call/nested_struct.c,
       
 12148 +	testsuite/libffi.call/cls_2byte.c,
       
 12149 +	testsuite/libffi.call/nested_struct10.c,
       
 12150 +	testsuite/libffi.call/cls_4byte.c,
       
 12151 +	testsuite/libffi.call/cls_6byte.c,
       
 12152 +	testsuite/libffi.call/cls_8byte.c,
       
 12153 +	testsuite/libffi.call/cls_multi_sshort.c,
       
 12154 +	testsuite/libffi.call/cls_align_sint16.c,
       
 12155 +	testsuite/libffi.call/cls_align_uint32.c,
       
 12156 +	testsuite/libffi.call/cls_20byte.c,
       
 12157 +	testsuite/libffi.call/cls_float.c,
       
 12158 +	testsuite/libffi.call/nested_struct2.c,
       
 12159 +	testsuite/libffi.call/cls_5_1_byte.c,
       
 12160 +	testsuite/libffi.call/nested_struct4.c,
       
 12161 +	testsuite/libffi.call/cls_24byte.c,
       
 12162 +	testsuite/libffi.call/nested_struct6.c,
       
 12163 +	testsuite/libffi.call/cls_64byte.c,
       
 12164 +	testsuite/libffi.call/nested_struct8.c,
       
 12165 +	testsuite/libffi.call/cls_uint.c,
       
 12166 +	testsuite/libffi.call/cls_multi_ushortchar.c,
       
 12167 +	testsuite/libffi.call/cls_schar.c,
       
 12168 +	testsuite/libffi.call/cls_uchar.c,
       
 12169 +	testsuite/libffi.call/cls_align_uint64.c,
       
 12170 +	testsuite/libffi.call/cls_ulonglong.c,
       
 12171 +	testsuite/libffi.call/cls_align_longdouble.c,
       
 12172 +	testsuite/libffi.call/cls_1_1byte.c,
       
 12173 +	testsuite/libffi.call/cls_12byte.c,
       
 12174 +	testsuite/libffi.call/cls_3_1byte.c,
       
 12175 +	testsuite/libffi.call/cls_3byte1.c,
       
 12176 +	testsuite/libffi.call/cls_4_1byte.c,
       
 12177 +	testsuite/libffi.call/cls_6_1_byte.c,
       
 12178 +	testsuite/libffi.call/cls_16byte.c,
       
 12179 +	testsuite/libffi.call/cls_18byte.c,
       
 12180 +	testsuite/libffi.call/closure_fn0.c,
       
 12181 +	testsuite/libffi.call/cls_9byte2.c,
       
 12182 +	testsuite/libffi.call/closure_fn2.c,
       
 12183 +	testsuite/libffi.call/closure_fn4.c,
       
 12184 +	testsuite/libffi.call/cls_ushort.c,
       
 12185 +	testsuite/libffi.call/closure_fn6.c,
       
 12186 +	testsuite/libffi.call/cls_5byte.c,
       
 12187 +	testsuite/libffi.call/cls_align_pointer.c,
       
 12188 +	testsuite/libffi.call/cls_7byte.c,
       
 12189 +	testsuite/libffi.call/cls_align_sint32.c,
       
 12190 +	testsuite/libffi.special/unwindtest_ffi_call.cc,
       
 12191 +	testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*.
       
 12192 +
       
 12193 +2007-08-10  David Daney  <ddaney@avtrex.com>
       
 12194 +
       
 12195 +	PR libffi/28313
       
 12196 +	* configure.ac: Don't treat mips64 as a special case.
       
 12197 +	* Makefile.am (nodist_libffi_la_SOURCES): Add n32.S.
       
 12198 +	* configure: Regenerate
       
 12199 +	* Makefile.in: Ditto.
       
 12200 +	* fficonfig.h.in: Ditto.
       
 12201 +	* src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent.
       
 12202 +	(LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros.
       
 12203 +	(FFI_DEFAULT_ABI): Set for n64 case.
       
 12204 +	(FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases.
       
 12205 +	* src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE.
       
 12206 +	(ffi_closure_N32): New function.
       
 12207 +	(.eh_frame): New section
       
 12208 +	* src/mips/o32.S: Clean up comments.
       
 12209 +	(ffi_closure_O32): Pass ffi_closure parameter in $12.
       
 12210 +	* src/mips/ffi.c: Use FFI_MIPS_N32 instead of
       
 12211 +	_MIPS_SIM == _ABIN32 throughout.
       
 12212 +	(FFI_MIPS_STOP_HERE): New, use in place of
       
 12213 +	ffi_stop_here.
       
 12214 +	(ffi_prep_args): Use unsigned long to hold pointer values.  Rewrite
       
 12215 +	to support n32/n64 ABIs.
       
 12216 +	(calc_n32_struct_flags): Rewrite.
       
 12217 +	(calc_n32_return_struct_flags): Remove unused variable.  Reverse
       
 12218 +	position of flag bits.
       
 12219 +	(ffi_prep_cif_machdep): Rewrite n32 portion.
       
 12220 +	(ffi_call): Enable for n64.  Add special handling for small structure
       
 12221 +	return values.
       
 12222 +	(ffi_prep_closure_loc): Add n32 and n64 support.
       
 12223 +	(ffi_closure_mips_inner_O32): Add cast to silence warning.
       
 12224 +	(copy_struct_N32, ffi_closure_mips_inner_N32): New functions.
       
 12225 +
       
 12226 +2007-08-08  David Daney  <ddaney@avtrex.com>
       
 12227 +
       
 12228 +	* testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition.
       
 12229 +	* testsuite/libffi.call/cls_align_uint16.c (main): Use correct type
       
 12230 +	specifiers.
       
 12231 +	* testsuite/libffi.call/nested_struct1.c (main): Ditto.
       
 12232 +	* testsuite/libffi.call/cls_sint.c (main): Ditto.
       
 12233 +	* testsuite/libffi.call/nested_struct9.c (main): Ditto.
       
 12234 +	* testsuite/libffi.call/cls_20byte1.c (main): Ditto.
       
 12235 +	* testsuite/libffi.call/cls_9byte1.c (main): Ditto.
       
 12236 +	* testsuite/libffi.call/closure_fn1.c (main): Ditto.
       
 12237 +	* testsuite/libffi.call/closure_fn3.c (main): Ditto.
       
 12238 +	* testsuite/libffi.call/return_dbl2.c (main): Ditto.
       
 12239 +	* testsuite/libffi.call/cls_sshort.c (main): Ditto.
       
 12240 +	* testsuite/libffi.call/return_fl3.c (main): Ditto.
       
 12241 +	* testsuite/libffi.call/closure_fn5.c (main): Ditto.
       
 12242 +	* testsuite/libffi.call/nested_struct.c (main): Ditto.
       
 12243 +	* testsuite/libffi.call/nested_struct10.c (main): Ditto.
       
 12244 +	* testsuite/libffi.call/return_ll1.c (main): Ditto.
       
 12245 +	* testsuite/libffi.call/cls_8byte.c (main): Ditto.
       
 12246 +	* testsuite/libffi.call/cls_align_uint32.c (main): Ditto.
       
 12247 +	* testsuite/libffi.call/cls_align_sint16.c (main): Ditto.
       
 12248 +	* testsuite/libffi.call/cls_20byte.c (main): Ditto.
       
 12249 +	* testsuite/libffi.call/nested_struct2.c (main): Ditto.
       
 12250 +	* testsuite/libffi.call/cls_24byte.c (main): Ditto.
       
 12251 +	* testsuite/libffi.call/nested_struct6.c (main): Ditto.
       
 12252 +	* testsuite/libffi.call/cls_uint.c (main): Ditto.
       
 12253 +	* testsuite/libffi.call/cls_12byte.c (main): Ditto.
       
 12254 +	* testsuite/libffi.call/cls_16byte.c (main): Ditto.
       
 12255 +	* testsuite/libffi.call/closure_fn0.c (main): Ditto.
       
 12256 +	* testsuite/libffi.call/cls_9byte2.c (main): Ditto.
       
 12257 +	* testsuite/libffi.call/closure_fn2.c (main): Ditto.
       
 12258 +	* testsuite/libffi.call/return_dbl1.c (main): Ditto.
       
 12259 +	* testsuite/libffi.call/closure_fn4.c (main): Ditto.
       
 12260 +	* testsuite/libffi.call/closure_fn6.c (main): Ditto.
       
 12261 +	* testsuite/libffi.call/cls_align_sint32.c (main): Ditto.
       
 12262 +
       
 12263 +2007-08-07  Andrew Haley  <aph@redhat.com>
       
 12264 +
       
 12265 +	* src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous
       
 12266 +	checkin.
       
 12267 +
       
 12268 +2007-08-06  Andrew Haley  <aph@redhat.com>
       
 12269 +
       
 12270 +	PR testsuite/32843
       
 12271 +	* src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
       
 12272 +	FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
       
 12273 +	FFI_TYPE_SINT32.
       
 12274 +
       
 12275 +2007-08-02  David Daney  <ddaney@avtrex.com>
       
 12276 +
       
 12277 +	* testsuite/libffi.call/return_ul.c (main): Define return type as
       
 12278 +	ffi_arg.  Use proper printf conversion specifier.
       
 12279 +
       
 12280 +2007-07-30  Andrew Haley  <aph@redhat.com>
       
 12281 +
       
 12282 +	PR testsuite/32843
       
 12283 +	* src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for
       
 12284 +	signed/unsigned int8/16.
       
 12285 +	* src/x86/sysv.S (ffi_call_SYSV): Rewrite to:
       
 12286 +	Use a jump table.
       
 12287 +	Remove code to pop args from the stack after call.
       
 12288 +	Special-case signed/unsigned int8/16.
       
 12289 +	* testsuite/libffi.call/return_sc.c (main): Revert.
       
 12290 +
       
 12291 +2007-07-26  Richard Guenther  <rguenther@suse.de>
       
 12292 +
       
 12293 +	PR testsuite/32843
       
 12294 +	* testsuite/libffi.call/return_sc.c (main): Verify call
       
 12295 +	result as signed char, not ffi_arg.
       
 12296 +
       
 12297 +2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 12298 +
       
 12299 +	* configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64.
       
 12300 +	* configure: Regenerate.
       
 12301 +
       
 12302 +2007-07-11  David Daney  <ddaney@avtrex.com>
       
 12303 +
       
 12304 +	* src/mips/ffi.c: Don't include sys/cachectl.h.
       
 12305 +	(ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
       
 12306 +	cacheflush().
       
 12307 +
       
 12308 +2007-05-18  Aurelien Jarno  <aurelien@aurel32.net>
       
 12309 +
       
 12310 +	* src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
       
 12311 +	from (ffi_prep_closure): ... this.
       
 12312 +	(FFI_INIT_TRAMPOLINE): Adjust.
       
 12313 +
       
 12314 +2005-12-31  Phil Blundell  <pb@reciva.com>
       
 12315 +
       
 12316 +	* src/arm/ffi.c (ffi_prep_incoming_args_SYSV,
       
 12317 +	ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
       
 12318 +	* src/arm/sysv.S(ffi_closure_SYSV): Likewise.
       
 12319 +	* src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
       
 12320 +	(FFI_CLOSURES): Enable closure support.
       
 12321 +
       
 12322 +2007-07-03  Andrew Haley  <aph@hedges.billgatliff.com>
       
 12323 +
       
 12324 +	* testsuite/libffi.call/cls_multi_ushort.c,
       
 12325 +	testsuite/libffi.call/cls_align_uint16.c,
       
 12326 +	testsuite/libffi.call/nested_struct1.c,
       
 12327 +	testsuite/libffi.call/nested_struct3.c,
       
 12328 +	testsuite/libffi.call/cls_7_1_byte.c,
       
 12329 +	testsuite/libffi.call/cls_double.c,
       
 12330 +	testsuite/libffi.call/nested_struct5.c,
       
 12331 +	testsuite/libffi.call/nested_struct7.c,
       
 12332 +	testsuite/libffi.call/cls_sint.c,
       
 12333 +	testsuite/libffi.call/nested_struct9.c,
       
 12334 +	testsuite/libffi.call/cls_20byte1.c,
       
 12335 +	testsuite/libffi.call/cls_multi_sshortchar.c,
       
 12336 +	testsuite/libffi.call/cls_align_sint64.c,
       
 12337 +	testsuite/libffi.call/cls_3byte2.c,
       
 12338 +	testsuite/libffi.call/cls_multi_schar.c,
       
 12339 +	testsuite/libffi.call/cls_multi_uchar.c,
       
 12340 +	testsuite/libffi.call/cls_19byte.c,
       
 12341 +	testsuite/libffi.call/cls_9byte1.c,
       
 12342 +	testsuite/libffi.call/cls_align_float.c,
       
 12343 +	testsuite/libffi.call/closure_fn1.c,
       
 12344 +	testsuite/libffi.call/problem1.c,
       
 12345 +	testsuite/libffi.call/closure_fn3.c,
       
 12346 +	testsuite/libffi.call/cls_sshort.c,
       
 12347 +	testsuite/libffi.call/closure_fn5.c,
       
 12348 +	testsuite/libffi.call/cls_align_double.c,
       
 12349 +	testsuite/libffi.call/cls_2byte.c,
       
 12350 +	testsuite/libffi.call/nested_struct.c,
       
 12351 +	testsuite/libffi.call/nested_struct10.c,
       
 12352 +	testsuite/libffi.call/cls_4byte.c,
       
 12353 +	testsuite/libffi.call/cls_6byte.c,
       
 12354 +	testsuite/libffi.call/cls_8byte.c,
       
 12355 +	testsuite/libffi.call/cls_multi_sshort.c,
       
 12356 +	testsuite/libffi.call/cls_align_uint32.c,
       
 12357 +	testsuite/libffi.call/cls_align_sint16.c,
       
 12358 +	testsuite/libffi.call/cls_float.c,
       
 12359 +	testsuite/libffi.call/cls_20byte.c,
       
 12360 +	testsuite/libffi.call/cls_5_1_byte.c,
       
 12361 +	testsuite/libffi.call/nested_struct2.c,
       
 12362 +	testsuite/libffi.call/cls_24byte.c,
       
 12363 +	testsuite/libffi.call/nested_struct4.c,
       
 12364 +	testsuite/libffi.call/nested_struct6.c,
       
 12365 +	testsuite/libffi.call/cls_64byte.c,
       
 12366 +	testsuite/libffi.call/nested_struct8.c,
       
 12367 +	testsuite/libffi.call/cls_uint.c,
       
 12368 +	testsuite/libffi.call/cls_multi_ushortchar.c,
       
 12369 +	testsuite/libffi.call/cls_schar.c,
       
 12370 +	testsuite/libffi.call/cls_uchar.c,
       
 12371 +	testsuite/libffi.call/cls_align_uint64.c,
       
 12372 +	testsuite/libffi.call/cls_ulonglong.c,
       
 12373 +	testsuite/libffi.call/cls_align_longdouble.c,
       
 12374 +	testsuite/libffi.call/cls_1_1byte.c,
       
 12375 +	testsuite/libffi.call/cls_12byte.c,
       
 12376 +	testsuite/libffi.call/cls_3_1byte.c,
       
 12377 +	testsuite/libffi.call/cls_3byte1.c,
       
 12378 +	testsuite/libffi.call/cls_4_1byte.c,
       
 12379 +	testsuite/libffi.call/cls_6_1_byte.c,
       
 12380 +	testsuite/libffi.call/cls_16byte.c,
       
 12381 +	testsuite/libffi.call/cls_18byte.c,
       
 12382 +	testsuite/libffi.call/closure_fn0.c,
       
 12383 +	testsuite/libffi.call/cls_9byte2.c,
       
 12384 +	testsuite/libffi.call/closure_fn2.c,
       
 12385 +	testsuite/libffi.call/closure_fn4.c,
       
 12386 +	testsuite/libffi.call/cls_ushort.c,
       
 12387 +	testsuite/libffi.call/closure_fn6.c,
       
 12388 +	testsuite/libffi.call/cls_5byte.c,
       
 12389 +	testsuite/libffi.call/cls_align_pointer.c,
       
 12390 +	testsuite/libffi.call/cls_7byte.c,
       
 12391 +	testsuite/libffi.call/cls_align_sint32.c,
       
 12392 +	testsuite/libffi.special/unwindtest_ffi_call.cc,
       
 12393 +	testsuite/libffi.special/unwindtest.cc: Enable for ARM.
       
 12394 +
       
 12395 +2007-07-05  H.J. Lu  <hongjiu.lu@intel.com>
       
 12396 +
       
 12397 +	* aclocal.m4: Regenerated.
       
 12398 +
       
 12399 +2007-06-02  Paolo Bonzini  <bonzini@gnu.org>
       
 12400 +
       
 12401 +	* configure: Regenerate.
       
 12402 +
       
 12403 +2007-05-23  Steve Ellcey  <sje@cup.hp.com>
       
 12404 +
       
 12405 +	* Makefile.in: Regenerate.
       
 12406 +	* configure: Regenerate.
       
 12407 +	* aclocal.m4: Regenerate.
       
 12408 +	* include/Makefile.in: Regenerate.
       
 12409 +	* testsuite/Makefile.in: Regenerate.
       
 12410 +
       
 12411 +2007-05-10  Roman Zippel <zippel@linux-m68k.org>
       
 12412 +
       
 12413 +	* src/m68k/ffi.c (ffi_prep_incoming_args_SYSV,
       
 12414 +	ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support.
       
 12415 +	* src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise.
       
 12416 +	* src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
       
 12417 +	(FFI_CLOSURES): Enable closure support.
       
 12418 +
       
 12419 +2007-05-10  Roman Zippel <zippel@linux-m68k.org>
       
 12420 +
       
 12421 +	* configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test.
       
 12422 +	* configure: Regenerate.
       
 12423 +	* fficonfig.h.in: Regenerate.
       
 12424 +	* src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC,
       
 12425 +	CFI_OFFSET,CFI_DEF_CFA): New macros.
       
 12426 +	(ffi_call_SYSV): Add callframe annotation.
       
 12427 +
       
 12428 +2007-05-10  Roman Zippel <zippel@linux-m68k.org>
       
 12429 +
       
 12430 +	* src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix
       
 12431 +	numerous test suite failures.
       
 12432 +	* src/m68k/sysv.S (ffi_call_SYSV): Likewise.
       
 12433 +
       
 12434 +2007-04-11  Paolo Bonzini  <bonzini@gnu.org>
       
 12435 +
       
 12436 +	* Makefile.am (EXTRA_DIST): Bring up to date.
       
 12437 +	* Makefile.in: Regenerate.
       
 12438 +	* src/frv/eabi.S: Remove RCS keyword.
       
 12439 +
       
 12440 +2007-04-06  Richard Henderson  <rth@redhat.com>
       
 12441 +
       
 12442 +	* configure.ac: Tidy target case.
       
 12443 +	(HAVE_LONG_DOUBLE): Allow the target to override.
       
 12444 +	* configure: Regenerate.
       
 12445 +	* include/ffi.h.in: Don't define ffi_type_foo if
       
 12446 +	LIBFFI_HIDE_BASIC_TYPES is defined.
       
 12447 +	(ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define
       
 12448 +	to ffi_type_double.
       
 12449 +	* types.c (LIBFFI_HIDE_BASIC_TYPES): Define.
       
 12450 +	(FFI_TYPEDEF, ffi_type_void): Mark the data const.
       
 12451 +	(ffi_type_longdouble): Special case for Alpha.  Don't define
       
 12452 +	if long double == double.
       
 12453 +
       
 12454 +	* src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value.
       
 12455 +	(ffi_prep_cif_machdep): Handle it as the 128-bit type.
       
 12456 +	(ffi_call, ffi_closure_osf_inner): Likewise.
       
 12457 +	(ffi_closure_osf_inner): Likewise.  Mark hidden.
       
 12458 +	(ffi_call_osf, ffi_closure_osf): Mark hidden.
       
 12459 +	* src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition.
       
 12460 +	* src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden.
       
 12461 +	(load_table): Handle 128-bit long double.
       
 12462 +
       
 12463 +	* testsuite/libffi.call/float4.c: Add -mieee for alpha.
       
 12464 +
       
 12465 +2007-04-06  Tom Tromey  <tromey@redhat.com>
       
 12466 +
       
 12467 +	PR libffi/31491:
       
 12468 +	* README: Fixed bug in example.
       
 12469 +
       
 12470 +2007-04-03  Jakub Jelinek  <jakub@redhat.com>
       
 12471 +
       
 12472 +	* src/closures.c: Include sys/statfs.h.
       
 12473 +	(_GNU_SOURCE): Define on Linux.
       
 12474 +	(FFI_MMAP_EXEC_SELINUX): Define.
       
 12475 +	(selinux_enabled): New variable.
       
 12476 +	(selinux_enabled_check): New function.
       
 12477 +	(is_selinux_enabled): Define.
       
 12478 +	(dlmmap): Use it.
       
 12479 +
       
 12480 +2007-03-24  Uros Bizjak  <ubizjak@gmail.com>
       
 12481 +
       
 12482 +	* testsuite/libffi.call/return_fl2.c (return_fl): Mark as static.
       
 12483 +	Use 'volatile float sum' to create sum of floats to avoid false
       
 12484 +	negative due to excess precision on ix86 targets.
       
 12485 +	(main): Ditto.
       
 12486 +
       
 12487 +2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
       
 12488 +
       
 12489 +	* src/powerpc/ffi.c (flush_icache): Fix left-over from previous
       
 12490 +	patch.
       
 12491 +	(ffi_prep_closure_loc): Remove unneeded casts.  Add needed ones.
       
 12492 +
       
 12493 +2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
       
 12494 +
       
 12495 +	* include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
       
 12496 +	(ffi_prep_closure_loc): New.
       
 12497 +	(ffi_prep_raw_closure_loc): New.
       
 12498 +	(ffi_prep_java_raw_closure_loc): New.
       
 12499 +	* src/closures.c: New file.
       
 12500 +	* src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment):
       
 12501 +	Replace sflags with exec_offset.
       
 12502 +	[FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset,
       
 12503 +	sub_segment_exec_offset): New macros.
       
 12504 +	(get_segment_flags, set_segment_flags, check_segment_merge): New
       
 12505 +	macros.
       
 12506 +	(is_mmapped_segment, is_extern_segment): Use get_segment_flags.
       
 12507 +	(add_segment, sys_alloc, create_mspace, create_mspace_with_base,
       
 12508 +	destroy_mspace): Use new macros.
       
 12509 +	(sys_alloc): Silence warning.
       
 12510 +	* Makefile.am (libffi_la_SOURCES): Add src/closures.c.
       
 12511 +	* Makefile.in: Rebuilt.
       
 12512 +	* src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in
       
 12513 +	terms of ffi_prep_closure_loc.
       
 12514 +	* src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted
       
 12515 +	from...
       
 12516 +	(ffi_prep_raw_closure): ... this.  Re-implement in terms of the
       
 12517 +	renamed version.
       
 12518 +	* src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and
       
 12519 +	adjusted from...
       
 12520 +	(ffi_prep_java_raw_closure): ... this.  Re-implement in terms of
       
 12521 +	the renamed version.
       
 12522 +	* src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from
       
 12523 +	(ffi_prep_closure): ... this.
       
 12524 +	* src/pa/ffi.c: Likewise.
       
 12525 +	* src/cris/ffi.c: Likewise.  Adjust.
       
 12526 +	* src/frv/ffi.c: Likewise.
       
 12527 +	* src/ia64/ffi.c: Likewise.
       
 12528 +	* src/mips/ffi.c: Likewise.
       
 12529 +	* src/powerpc/ffi_darwin.c: Likewise.
       
 12530 +	* src/s390/ffi.c: Likewise.
       
 12531 +	* src/sh/ffi.c: Likewise.
       
 12532 +	* src/sh64/ffi.c: Likewise.
       
 12533 +	* src/sparc/ffi.c: Likewise.
       
 12534 +	* src/x86/ffi64.c: Likewise.
       
 12535 +	* src/x86/ffi.c: Likewise.
       
 12536 +	(FFI_INIT_TRAMPOLINE): Adjust.
       
 12537 +	(ffi_prep_raw_closure_loc): Renamed and adjusted from...
       
 12538 +	(ffi_prep_raw_closure): ... this.
       
 12539 +	* src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from
       
 12540 +	(ffi_prep_closure): ... this.
       
 12541 +	(flush_icache): Adjust.
       
 12542 +
       
 12543 +2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
       
 12544 +
       
 12545 +	* src/dlmalloc.c: New file, imported version 2.8.3 of Doug
       
 12546 +	Lea's malloc.
       
 12547 +
       
 12548 +2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
       
 12549 +
       
 12550 +	* Makefile.am: Add dummy install-pdf target.
       
 12551 +	* Makefile.in: Regenerate
       
 12552 +
       
 12553 +2007-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
       
 12554 +
       
 12555 +	* src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep,
       
 12556 +	ffi_closure_helper_SYSV): Add long double handling.
       
 12557 +
       
 12558 +2007-02-02  Jakub Jelinek  <jakub@redhat.com>
       
 12559 +
       
 12560 +	* src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2
       
 12561 +	immediately after bctrl instruction.
       
 12562 +
       
 12563 +2007-01-18  Alexandre Oliva  <aoliva@redhat.com>
       
 12564 +
       
 12565 +	* Makefile.am (all-recursive, install-recursive,
       
 12566 +	mostlyclean-recursive, clean-recursive, distclean-recursive,
       
 12567 +	maintainer-clean-recursive): Add missing targets.
       
 12568 +	* Makefile.in: Rebuilt.
       
 12569 +
       
 12570 +2006-12-14  Andreas Tobler  <a.tobler@schweiz.org>
       
 12571 +
       
 12572 +	* configure.ac: Add TARGET for x86_64-*-darwin*.
       
 12573 +	* Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources
       
 12574 +	for X86_DARWIN.
       
 12575 +	* src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*.
       
 12576 +	* src/x86/darwin64.S: New file for x86_64-*-darwin* support.
       
 12577 +	* configure: Regenerate.
       
 12578 +	* Makefile.in: Regenerate.
       
 12579 +	* include/Makefile.in: Regenerate.
       
 12580 +	* testsuite/Makefile.in: Regenerate.
       
 12581 +	* testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for
       
 12582 +	ffi_call only.
       
 12583 +
       
 12584 +2006-12-13  Andreas Tobler <a.tobler@schweiz.org>
       
 12585 +
       
 12586 +	* aclocal.m4: Regenerate with aclocal -I .. as written in the
       
 12587 +	Makefile.am.
       
 12588 +
       
 12589 +2006-10-31  Geoffrey Keating  <geoffk@apple.com>
       
 12590 +
       
 12591 +	* src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New.
       
 12592 +	(ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for
       
 12593 +	Darwin.
       
 12594 +	* testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL.
       
 12595 +	* testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL.
       
 12596 +
       
 12597 +2006-10-10  Paolo Bonzini  <bonzini@gnu.org>
       
 12598 +	    Sandro Tolaini  <tolaini@libero.it>
       
 12599 +
       
 12600 +	* configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and
       
 12601 +	conditional.
       
 12602 +	* configure: Regenerated.
       
 12603 +	* Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
       
 12604 +	(EXTRA_DIST): Add src/x86/darwin.S.
       
 12605 +	* Makefile.in: Regenerated.
       
 12606 +	* include/Makefile.in: Regenerated.
       
 12607 +	* testsuite/Makefile.in: Regenerated.
       
 12608 +
       
 12609 +	* src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like
       
 12610 +	X86_WIN32, and additionally align stack to 16 bytes.
       
 12611 +	* src/x86/darwin.S: New, based on sysv.S.
       
 12612 +	* src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs.
       
 12613 +
       
 12614 +2006-09-12  David Daney  <ddaney@avtrex.com>
       
 12615 +
       
 12616 +	PR libffi/23935
       
 12617 +	* include/Makefile.am: Install both ffi.h and ffitarget.h in
       
 12618 +	$(libdir)/gcc/$(target_alias)/$(gcc_version)/include.
       
 12619 +	* aclocal.m4: Regenerated for automake 1.9.6.
       
 12620 +	* Makefile.in: Regenerated.
       
 12621 +	* include/Makefile.in: Regenerated.
       
 12622 +	* testsuite/Makefile.in: Regenerated.
       
 12623 +
       
 12624 +2006-08-17  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12625 +
       
 12626 +	* include/ffi_common.h (struct): Revert accidental commit.
       
 12627 +
       
 12628 +2006-08-15  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12629 +
       
 12630 +	* include/ffi_common.h: Remove lint directives.
       
 12631 +	* include/ffi.h.in: Likewise.
       
 12632 +
       
 12633 +2006-07-25  Torsten Schoenfeld  <kaffeetisch@gmx.de>
       
 12634 +
       
 12635 +	* include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly
       
 12636 +	for 32-bit architectures.
       
 12637 +	* testsuite/libffi.call/return_ul.c: New test case.
       
 12638 +
       
 12639 +2006-07-19  David Daney  <ddaney@avtrex.com>
       
 12640 +
       
 12641 +	* testsuite/libffi.call/closure_fn6.c: Remove xfail for mips,
       
 12642 +	xfail remains for mips64.
       
 12643 +
       
 12644 +2006-05-23  Carlos O'Donell  <carlos@codesourcery.com>
       
 12645 +
       
 12646 +	* Makefile.am: Add install-html target. Add install-html to .PHONY
       
 12647 +	* Makefile.in: Regenerate.
       
 12648 +	* aclocal.m4: Regenerate.
       
 12649 +	* include/Makefile.in: Regenerate.
       
 12650 +	* testsuite/Makefile.in: Regenerate.
       
 12651 +
       
 12652 +2006-05-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
 12653 +
       
 12654 +	* pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from
       
 12655 +	stack slot.
       
 12656 +
       
 12657 +2006-04-22  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12658 +
       
 12659 +	* README: Remove notice about 'Crazy Comments'.
       
 12660 +	* src/debug.c: Remove lint directives. Cleanup white spaces.
       
 12661 +	* src/java_raw_api.c: Likewise.
       
 12662 +	* src/prep_cif.c: Likewise.
       
 12663 +	* src/raw_api.c: Likewise.
       
 12664 +	* src/ffitest.c: Delete. No longer needed, all test cases migrated
       
 12665 +	to the testsuite.
       
 12666 +	* src/arm/ffi.c: Remove lint directives.
       
 12667 +	* src/m32r/ffi.c: Likewise.
       
 12668 +	* src/pa/ffi.c: Likewise.
       
 12669 +	* src/powerpc/ffi.c: Likewise.
       
 12670 +	* src/powerpc/ffi_darwin.c: Likewise.
       
 12671 +	* src/sh/ffi.c: Likewise.
       
 12672 +	* src/sh64/ffi.c: Likewise.
       
 12673 +	* src/x86/ffi.c: Likewise.
       
 12674 +	* testsuite/libffi.call/float2.c: Likewise.
       
 12675 +	* testsuite/libffi.call/promotion.c: Likewise.
       
 12676 +	* testsuite/libffi.call/struct1.c: Likewise.
       
 12677 +
       
 12678 +2006-04-13  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12679 +
       
 12680 +	* src/pa/hpux32.S: Correct unwind offset calculation for
       
 12681 +	ffi_closure_pa32.
       
 12682 +	* src/pa/linux.S: Likewise.
       
 12683 +
       
 12684 +2006-04-12  James E Wilson  <wilson@specifix.com>
       
 12685 +
       
 12686 +	PR libgcj/26483
       
 12687 +	* src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros.
       
 12688 +	(hfa_type_load): Call stf_spill.
       
 12689 +	(hfa_type_store): Call ldf_fill.
       
 12690 +	(ffi_call): Adjust calls to above routines.  Add local temps for
       
 12691 +	macro result.
       
 12692 +
       
 12693 +2006-04-10  Matthias Klose  <doko@debian.org>
       
 12694 +
       
 12695 +	* testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib
       
 12696 +	directory names containing underscores.
       
 12697 +
       
 12698 +2006-04-07  James E Wilson  <wilson@specifix.com>
       
 12699 +
       
 12700 +	* testsuite/libffi.call/float4.c: New testcase.
       
 12701 +
       
 12702 +2006-04-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
 12703 +	    Andreas Tobler  <a.tobler@schweiz.ch>
       
 12704 +
       
 12705 +	* Makefile.am: Add PA_HPUX port.
       
 12706 +	* Makefile.in: Regenerate.
       
 12707 +	* include/Makefile.in: Likewise.
       
 12708 +	* testsuite/Makefile.in: Likewise.
       
 12709 +	* configure.ac: Add PA_HPUX rules.
       
 12710 +	* configure: Regenerate.
       
 12711 +	* src/pa/ffitarget.h: Rename linux target to PA_LINUX.
       
 12712 +	Add PA_HPUX and PA64_HPUX.
       
 12713 +	Rename FFI_LINUX ABI to FFI_PA32 ABI.
       
 12714 +	(FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets.
       
 12715 +	(FFI_TYPE_SMALL_STRUCT2): Define.
       
 12716 +	(FFI_TYPE_SMALL_STRUCT4): Likewise.
       
 12717 +	(FFI_TYPE_SMALL_STRUCT8): Likewise.
       
 12718 +	(FFI_TYPE_SMALL_STRUCT3): Redefine.
       
 12719 +	(FFI_TYPE_SMALL_STRUCT5): Likewise.
       
 12720 +	(FFI_TYPE_SMALL_STRUCT6): Likewise.
       
 12721 +	(FFI_TYPE_SMALL_STRUCT7): Likewise.
       
 12722 +	* src/pa/ffi.c (ROUND_DOWN): Delete.
       
 12723 +	(fldw, fstw, fldd, fstd): Use '__asm__'.
       
 12724 +	(ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2,
       
 12725 +	FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8.
       
 12726 +	(ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment.
       
 12727 +	Simplify incrementing of stack slot variable. Change type of local
       
 12728 +	'n' to unsigned int.
       
 12729 +	(ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long
       
 12730 +	double on PA_HPUX.
       
 12731 +	(ffi_prep_cif_machdep): Likewise.
       
 12732 +	(ffi_call): Likewise.
       
 12733 +	(ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change
       
 12734 +	return type to ffi_status. Simplify incrementing of stack slot
       
 12735 +	variable. Only copy floating point argument registers when PA_LINUX
       
 12736 +	is true. Reformat debug statement.
       
 12737 +	Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and
       
 12738 +	FFI_TYPE_SMALL_STRUCT8.
       
 12739 +	(ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to
       
 12740 +	declaration.
       
 12741 +	(ffi_prep_closure): Make linux trampoline conditional on PA_LINUX.
       
 12742 +	Add nops to cache flush.  Add trampoline for PA_HPUX.
       
 12743 +	* src/pa/hpux32.S: New file.
       
 12744 +	* src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename
       
 12745 +	ffi_prep_args_LINUX to ffi_prep_args_pa32.
       
 12746 +	Localize labels. Add support for 2, 4 and 8-byte small structs. Handle
       
 12747 +	unaligned destinations in 3, 5, 6 and 7-byte small structs. Order
       
 12748 +	argument type checks so that common argument types appear first.
       
 12749 +	(ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename
       
 12750 +	ffi_closure_inner_LINUX to ffi_closure_inner_pa32.
       
 12751 +
       
 12752 +2006-03-24  Alan Modra  <amodra@bigpond.net.au>
       
 12753 +
       
 12754 +	* src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX.  Default
       
 12755 +	for 32-bit using IBM extended double format.  Fix FFI_LAST_ABI.
       
 12756 +	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of
       
 12757 +	FFI_TYPE_LONGDOUBLE.
       
 12758 +	(ffi_prep_args64): Assert using IBM extended double.
       
 12759 +	(ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type.
       
 12760 +	Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args.
       
 12761 +	(ffi_call): Handle FFI_LINUX.
       
 12762 +	(ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs
       
 12763 +	gpr3 return pointer as for struct return.  Handle FFI_LINUX
       
 12764 +	FFI_TYPE_LONGDOUBLE return and args.  Don't increment "nf"
       
 12765 +	unnecessarily.
       
 12766 +	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2
       
 12767 +	for FFI_TYPE_LONGDOUBLE.  Move epilogue insns into case table.
       
 12768 +	Don't use r6 as pointer to results, instead use sp offset.  Don't
       
 12769 +	make a special call to load lr with case table address, instead
       
 12770 +	use offset from previous call.
       
 12771 +	* src/powerpc/sysv.S (ffi_call_SYSV): Save long double return.
       
 12772 +	* src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double
       
 12773 +	return.
       
 12774 +
       
 12775 +2006-03-15  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 12776 +
       
 12777 +	* src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments
       
 12778 +	passed with FP registers correctly.
       
 12779 +	(ffi_closure_helper_SYSV): Likewise.
       
 12780 +	* src/sh64/sysv.S: Likewise.
       
 12781 +
       
 12782 +2006-03-01  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12783 +
       
 12784 +	* testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif,
       
 12785 +	args and userdata unused.
       
 12786 +	(closure_test_fn1): Mark cif and userdata unused.
       
 12787 +	(main): Remove unused res.
       
 12788 +
       
 12789 +2006-02-28  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12790 +
       
 12791 +	* testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for
       
 12792 +	-O2, -O3, -Os and the warning flags -W -Wall.
       
 12793 +	* testsuite/libffi.special/special.exp: Likewise.
       
 12794 +	* testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark
       
 12795 +	unused parameter unused for gcc or else do nothing.
       
 12796 +	* testsuite/libffi.special/ffitestcxx.h: Likewise.
       
 12797 +	* testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif
       
 12798 +	and userdata unused.
       
 12799 +	* testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise.
       
 12800 +	* testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise.
       
 12801 +	* testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise.
       
 12802 +	* testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise.
       
 12803 +	* testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise.
       
 12804 +	* testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise.
       
 12805 +	* testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise.
       
 12806 +	* testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise.
       
 12807 +	* testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise.
       
 12808 +	* testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise.
       
 12809 +	* testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise.
       
 12810 +	* testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise.
       
 12811 +	* testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise.
       
 12812 +	* testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise.
       
 12813 +	* testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise.
       
 12814 +	* testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise.
       
 12815 +	* testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise.
       
 12816 +	* testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise.
       
 12817 +	* testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise.
       
 12818 +	* testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise.
       
 12819 +	* testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise.
       
 12820 +	* testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise.
       
 12821 +	* testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise.
       
 12822 +	* testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn):
       
 12823 +	Likewise.
       
 12824 +	* testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn):
       
 12825 +	Likewise.
       
 12826 +	* testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn):
       
 12827 +	Likewise.
       
 12828 +	* testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast
       
 12829 +	void* to avoid compiler warning.
       
 12830 +	(main): Likewise.
       
 12831 +	(cls_struct_align_gn): Mark cif and userdata unused.
       
 12832 +	* testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn):
       
 12833 +	Likewise.
       
 12834 +	* testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn):
       
 12835 +	Likewise.
       
 12836 +	* testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn):
       
 12837 +	Likewise.
       
 12838 +	* testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn):
       
 12839 +	Likewise.
       
 12840 +	* testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn):
       
 12841 +	Likewise.
       
 12842 +	* testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise.
       
 12843 +	* testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise.
       
 12844 +	* testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and
       
 12845 +	data unused.
       
 12846 +	(main): Cast res_call to silence gcc.
       
 12847 +	* testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and
       
 12848 +	data unused.
       
 12849 +	(main): Cast res_call to silence gcc.
       
 12850 +	* testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif
       
 12851 +	and data unused.
       
 12852 +	(main): Cast res_call to silence gcc.
       
 12853 +	* testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and
       
 12854 +	data unused.
       
 12855 +	(main): Cast res_call to silence gcc.
       
 12856 +	* testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and
       
 12857 +	data unused.
       
 12858 +	(main): Cast res_call to silence gcc.
       
 12859 +	* testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif
       
 12860 +	and data unused.
       
 12861 +	(main): Cast res_call to silence gcc.
       
 12862 +	* testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and
       
 12863 +	userdata unused.
       
 12864 +	(cls_ret_schar_fn): Cast printf parameter to silence gcc.
       
 12865 +	* testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and
       
 12866 +	userdata unused.
       
 12867 +	(cls_ret_sint_fn): Cast printf parameter to silence gcc.
       
 12868 +	* testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and
       
 12869 +	userdata unused.
       
 12870 +	(cls_ret_sshort_fn): Cast printf parameter to silence gcc.
       
 12871 +	* testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn):  Mark cif and
       
 12872 +	userdata unused.
       
 12873 +	(cls_ret_uchar_fn): Cast printf parameter to silence gcc.
       
 12874 +	* testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and
       
 12875 +	userdata unused.
       
 12876 +	(cls_ret_uint_fn): Cast printf parameter to silence gcc.
       
 12877 +	* testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif
       
 12878 +	and userdata unused.
       
 12879 +	* testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and
       
 12880 +	userdata unused.
       
 12881 +	(cls_ret_ushort_fn): Cast printf parameter to silence gcc.
       
 12882 +	* testsuite/libffi.call/float.c (floating): Remove unused parameter e.
       
 12883 +	* testsuite/libffi.call/float1.c (main): Remove unused variable i.
       
 12884 +	Cleanup white spaces.
       
 12885 +	* testsuite/libffi.call/negint.c (checking): Remove unused variable i.
       
 12886 +	* testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark
       
 12887 +	cif and userdata unused.
       
 12888 +	* testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn):
       
 12889 +	Likewise.
       
 12890 +	* testsuite/libffi.call/nested_struct10.c (B_gn): Likewise.
       
 12891 +	* testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf
       
 12892 +	formatters to silence gcc.
       
 12893 +	(B_gn): Mark cif and userdata unused.
       
 12894 +	* testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata
       
 12895 +	unused.
       
 12896 +	* testsuite/libffi.call/nested_struct4.c: Mention related PR.
       
 12897 +	(B_gn): Mark cif and userdata unused.
       
 12898 +	* testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata
       
 12899 +	unused.
       
 12900 +	* testsuite/libffi.call/nested_struct6.c: Mention related PR.
       
 12901 +	(B_gn): Mark cif and userdata unused.
       
 12902 +	* testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata
       
 12903 +	unused.
       
 12904 +	* testsuite/libffi.call/nested_struct8.c (B_gn): Likewise.
       
 12905 +	* testsuite/libffi.call/nested_struct9.c (B_gn): Likewise.
       
 12906 +	* testsuite/libffi.call/problem1.c (stub): Likewise.
       
 12907 +	* testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence
       
 12908 +	gcc.
       
 12909 +	* testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned
       
 12910 +	in the last commit for this test case in the test case itself.
       
 12911 +	* testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as
       
 12912 +	unused.
       
 12913 +	* testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise.
       
 12914 +	* testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise.
       
 12915 +	* testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise.
       
 12916 +	* testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise.
       
 12917 +	* testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise.
       
 12918 +	* testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise.
       
 12919 +
       
 12920 +2006-02-22  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 12921 +
       
 12922 +	* src/sh/sysv.S: Fix register numbers in the FDE for
       
 12923 +	ffi_closure_SYSV.
       
 12924 +
       
 12925 +2006-02-20  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12926 +
       
 12927 +	* testsuite/libffi.call/return_fl2.c (return_fl): Remove static
       
 12928 +	declaration to avoid a false negative on ix86. See PR323.
       
 12929 +
       
 12930 +2006-02-18  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 12931 +
       
 12932 +	* src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
       
 12933 +	and cast integer to void * if needed.  Update the pointer to
       
 12934 +	the FP register saved area correctly.
       
 12935 +
       
 12936 +2006-02-17  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12937 +
       
 12938 +	* testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630
       
 12939 +	is fixed.
       
 12940 +	* testsuite/libffi.call/nested_struct4.c: Likewise.
       
 12941 +
       
 12942 +2006-02-16  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12943 +
       
 12944 +	* testsuite/libffi.call/return_dbl.c: New test case.
       
 12945 +	* testsuite/libffi.call/return_dbl1.c: Likewise.
       
 12946 +	* testsuite/libffi.call/return_dbl2.c: Likewise.
       
 12947 +	* testsuite/libffi.call/return_fl.c: Likewise.
       
 12948 +	* testsuite/libffi.call/return_fl1.c: Likewise.
       
 12949 +	* testsuite/libffi.call/return_fl2.c: Likewise.
       
 12950 +	* testsuite/libffi.call/return_fl3.c: Likewise.
       
 12951 +	* testsuite/libffi.call/closure_fn6.c: Likewise.
       
 12952 +
       
 12953 +	* testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong
       
 12954 +	definition.
       
 12955 +	* testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition
       
 12956 +	here to be used by other test cases too.
       
 12957 +
       
 12958 +	* testsuite/libffi.call/nested_struct10.c: New test case.
       
 12959 +	* testsuite/libffi.call/nested_struct9.c: Likewise.
       
 12960 +	* testsuite/libffi.call/nested_struct8.c: Likewise.
       
 12961 +	* testsuite/libffi.call/nested_struct7.c: Likewise.
       
 12962 +	* testsuite/libffi.call/nested_struct6.c: Likewise.
       
 12963 +	* testsuite/libffi.call/nested_struct5.c: Likewise.
       
 12964 +	* testsuite/libffi.call/nested_struct4.c: Likewise.
       
 12965 +
       
 12966 +2006-01-21  Andreas Tobler  <a.tobler@schweiz.ch>
       
 12967 +
       
 12968 +	* configure.ac: Enable libffi for sparc64-*-freebsd*.
       
 12969 +	* configure: Rebuilt.
       
 12970 +
       
 12971 +2006-01-18  Jakub Jelinek  <jakub@redhat.com>
       
 12972 +
       
 12973 +	* src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3,
       
 12974 +	instead do the shifting inline.
       
 12975 +	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5
       
 12976 +	shift count unconditionally.  Simplify load sequences for 1, 2, 3, 4
       
 12977 +	and 8 byte structs, for the remaining struct sizes don't call
       
 12978 +	__lshrdi3, instead do the shifting inline.
       
 12979 +
       
 12980 +2005-12-07  Thiemo Seufer  <ths@networkno.de>
       
 12981 +
       
 12982 +	* src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add
       
 12983 +	missing parentheses.
       
 12984 +	* src/mips/o32.S (ffi_call_O32): Code formatting. Define
       
 12985 +	and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations.
       
 12986 +	(ffi_closure_O32): Likewise, but with newly defined A3_OFF2,
       
 12987 +	A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2,
       
 12988 +	V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2,
       
 12989 +	FA_0_0_OFF2.
       
 12990 +	* src/mips/ffi.c (ffi_prep_args): Code formatting. Fix
       
 12991 +	endianness bugs.
       
 12992 +	(ffi_prep_closure): Improve trampoline instruction scheduling.
       
 12993 +	(ffi_closure_mips_inner_O32): Fix endianness bugs.
       
 12994 +
       
 12995 +2005-12-03  Alan Modra  <amodra@bigpond.net.au>
       
 12996 +
       
 12997 +	* src/powerpc/ffi.c: Formatting.
       
 12998 +	(ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions.
       
 12999 +	(ffi_prep_args64): Likewise.
       
 13000 +
       
 13001 +2005-09-30  Geoffrey Keating  <geoffk@apple.com>
       
 13002 +
       
 13003 +	* testsuite/lib/libffi-dg.exp (libffi_target_compile): For
       
 13004 +	darwin, use -shared-libgcc not -lgcc_s, and explain why.
       
 13005 +
       
 13006 +2005-09-26  Tom Tromey  <tromey@redhat.com>
       
 13007 +
       
 13008 +	* testsuite/libffi.call/float1.c (value_type): New typedef.
       
 13009 +	(CANARY): New define.
       
 13010 +	(main): Check for result buffer overflow.
       
 13011 +	* src/powerpc/linux64.S: Handle linux64 long double returns.
       
 13012 +	* src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant.
       
 13013 +	(ffi_prep_cif_machdep): Handle linux64 long double returns.
       
 13014 +
       
 13015 +2005-08-25  Alan Modra  <amodra@bigpond.net.au>
       
 13016 +
       
 13017 +	PR target/23404
       
 13018 +	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack
       
 13019 +	homed fp args.
       
 13020 +	(ffi_status ffi_prep_cif_machdep): Correct stack sizing for same.
       
 13021 +
       
 13022 +2005-08-11  Jakub Jelinek  <jakub@redhat.com>
       
 13023 +
       
 13024 +	* configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test.
       
 13025 +	(AH_BOTTOM): Add FFI_HIDDEN definition.
       
 13026 +	* configure: Rebuilt.
       
 13027 +	* fficonfig.h.in: Rebuilt.
       
 13028 +	* src/powerpc/ffi.c (hidden): Remove.
       
 13029 +	(ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64,
       
 13030 +	ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden.
       
 13031 +	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64,
       
 13032 +	.ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden.
       
 13033 +	* src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove,
       
 13034 +	add FFI_HIDDEN to its prototype.
       
 13035 +	(ffi_closure_SYSV_inner): New.
       
 13036 +	* src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
       
 13037 +	* src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
       
 13038 +
       
 13039 +2005-08-10  Alfred M. Szmidt  <ams@gnu.org>
       
 13040 +
       
 13041 +	PR libffi/21819:
       
 13042 +	* configure: Rebuilt.
       
 13043 +	* configure.ac: Handle i*86-*-gnu*.
       
 13044 +
       
 13045 +2005-08-09  Jakub Jelinek  <jakub@redhat.com>
       
 13046 +
       
 13047 +	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use
       
 13048 +	DW_CFA_offset_extended_sf rather than
       
 13049 +	DW_CFA_GNU_negative_offset_extended.
       
 13050 +	* src/powerpc/sysv.S (ffi_call_SYSV): Likewise.
       
 13051 +
       
 13052 +2005-07-22  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
       
 13053 +
       
 13054 +	* src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly
       
 13055 +	on sh3.
       
 13056 +	(ffi_closure_SYSV): Change the stack layout for sh3 struct argument.
       
 13057 +	* src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is
       
 13058 +	partially on register.
       
 13059 +	(ffi_closure_helper_SYSV): Likewise.
       
 13060 +	(ffi_prep_cif_machdep): Don't set too many cif->flags.
       
 13061 +
       
 13062 +2005-07-20  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 13063 +
       
 13064 +	* src/sh/ffi.c (ffi_call): Handle small structures correctly.
       
 13065 +	Remove empty line.
       
 13066 +	* src/sh64/ffi.c (simple_type): Remove.
       
 13067 +	(return_type): Handle small structures correctly.
       
 13068 +	(ffi_prep_args): Likewise.
       
 13069 +	(ffi_call): Likewise.
       
 13070 +	(ffi_closure_helper_SYSV): Likewise.
       
 13071 +	* src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return.
       
 13072 +	Emit position independent code if PIC and remove wrong datalabel
       
 13073 +	prefixes from EH data.
       
 13074 +
       
 13075 +2005-07-19  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13076 +
       
 13077 +	* Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD.
       
 13078 +	* Makefile.in: Regenerate.
       
 13079 +	* include/Makefile.in: Likewise.
       
 13080 +	* testsuite/Makefile.in: Likewise.
       
 13081 +	* configure.ac: Add POWERPC_FREEBSD rules.
       
 13082 +	* configure: Regenerate.
       
 13083 +	* src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules.
       
 13084 +	(FFI_SYSV_TYPE_SMALL_STRUCT): Define.
       
 13085 +	* src/powerpc/ffi.c: Add flags to handle small structure returns
       
 13086 +	in ffi_call_SYSV.
       
 13087 +	(ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI.
       
 13088 +	Aka FFI_SYSV.
       
 13089 +	(ffi_closure_helper_SYSV): Likewise.
       
 13090 +	* src/powerpc/ppc_closure.S: Add return types for small structures.
       
 13091 +	* src/powerpc/sysv.S: Add bits to handle small structures for
       
 13092 +	final SYSV 4 ABI.
       
 13093 +
       
 13094 +2005-07-10  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13095 +
       
 13096 +	* testsuite/libffi.call/cls_5_1_byte.c: New test file.
       
 13097 +	* testsuite/libffi.call/cls_6_1_byte.c: Likewise.
       
 13098 +	* testsuite/libffi.call/cls_7_1_byte.c: Likewise.
       
 13099 +
       
 13100 +2005-07-05  Randolph Chung  <tausq@debian.org>
       
 13101 +
       
 13102 +	* src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1
       
 13103 +	as FFI_TYPE_SMALL_STRUCT3.  Break out handling for 5-7 byte
       
 13104 +	structures.  Kill compilation warnings.
       
 13105 +	(ffi_closure_inner_LINUX): Print return values as hex in debug
       
 13106 +	message.  Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3.
       
 13107 +	Properly handle 5-7 byte structure returns.
       
 13108 +	* src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1)
       
 13109 +	(FFI_TYPE_SMALL_STRUCT2): Remove.
       
 13110 +	(FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5)
       
 13111 +	(FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define.
       
 13112 +	* src/pa/linux.S: Mark source file as using PA1.1 assembly.
       
 13113 +	(checksmst1, checksmst2): Remove.
       
 13114 +	(checksmst3): Optimize handling of 3-byte struct returns.
       
 13115 +	(checksmst567): Properly handle 5-7 byte struct returns.
       
 13116 +
       
 13117 +2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 13118 +
       
 13119 +	PR libgcj/21943
       
 13120 +	* src/mips/n32.S: Enforce PIC code.
       
 13121 +	* src/mips/o32.S: Likewise.
       
 13122 +
       
 13123 +2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 13124 +
       
 13125 +	* configure.ac: Treat i*86-*-solaris2.10 and up as X86_64.
       
 13126 +	* configure: Regenerate.
       
 13127 +
       
 13128 +2005-06-01  Alan Modra  <amodra@bigpond.net.au>
       
 13129 +
       
 13130 +	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET
       
 13131 +	to call ffi_closure_helper_SYSV.  Append @local instead.
       
 13132 +	* src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV.
       
 13133 +
       
 13134 +2005-05-17  Kelley Cook  <kcook@gcc.gnu.org>
       
 13135 +
       
 13136 +	* configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
       
 13137 +	Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
       
 13138 +	* Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config.
       
 13139 +	* aclocal.m4, configure, fficonfig.h.in, Makefile.in,
       
 13140 +	include/Makefile.in, testsuite/Makefile.in: Regenerate.
       
 13141 +
       
 13142 +2005-05-09  Mike Stump  <mrs@apple.com>
       
 13143 +
       
 13144 +	* configure: Regenerate.
       
 13145 +
       
 13146 +2005-05-08  Richard Henderson  <rth@redhat.com>
       
 13147 +
       
 13148 +	PR libffi/21285
       
 13149 +	* src/alpha/osf.S: Update unwind into to match code.
       
 13150 +
       
 13151 +2005-05-04  Andreas Degert <ad@papyrus-gmbh.de>
       
 13152 +	    Richard Henderson  <rth@redhat.com>
       
 13153 +
       
 13154 +	* src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in
       
 13155 +	bit 11 of flags.
       
 13156 +	(ffi_call): Mask return type field.  Pass ssecount to ffi_call_unix64.
       
 13157 +	(ffi_prep_closure): Set carry bit if sse-used flag set.
       
 13158 +	* src/x86/unix64.S (ffi_call_unix64): Add ssecount argument.
       
 13159 +	Only load sse registers if ssecount non-zero.
       
 13160 +	(ffi_closure_unix64): Only save sse registers if carry set on entry.
       
 13161 +
       
 13162 +2005-04-29  Ralf Corsepius  <ralf.corsepius@rtems.org>
       
 13163 +
       
 13164 +	* configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*,
       
 13165 +	powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*.
       
 13166 +	* configure: Regenerate.
       
 13167 +
       
 13168 +2005-04-20  Hans-Peter Nilsson  <hp@axis.com>
       
 13169 +
       
 13170 +	* testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use,
       
 13171 +	have Tcl8.3-compatible intermediate variable.
       
 13172 +
       
 13173 +2005-04-18  Simon Posnjak <simon.posnjak@siol.net>
       
 13174 +	    Hans-Peter Nilsson  <hp@axis.com>
       
 13175 +
       
 13176 +	* Makefile.am: Add CRIS support.
       
 13177 +	* configure.ac: Likewise.
       
 13178 +	* Makefile.in, configure, testsuite/Makefile.in,
       
 13179 +	include/Makefile.in: Regenerate.
       
 13180 +	* src/cris: New directory.
       
 13181 +	* src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files.
       
 13182 +	* src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__.
       
 13183 +
       
 13184 +	* testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with
       
 13185 +	\r?\n in output tests.
       
 13186 +
       
 13187 +2005-04-12  Mike Stump  <mrs@apple.com>
       
 13188 +
       
 13189 +	* configure: Regenerate.
       
 13190 +
       
 13191 +2005-03-30  Hans Boehm  <Hans.Boehm@hp.com>
       
 13192 +
       
 13193 +	* src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI.
       
 13194 +
       
 13195 +2005-03-30  Steve Ellcey  <sje@cup.hp.com>
       
 13196 +
       
 13197 +	* src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.
       
 13198 +	(ffi_sarg) Ditto.
       
 13199 +	* src/ia64/unix.S (ffi_closure_unix): Extend gp
       
 13200 +	to 64 bits in ILP32 mode.
       
 13201 +	Load 64 bits even for short data.
       
 13202 +
       
 13203 +2005-03-23  Mike Stump  <mrs@apple.com>
       
 13204 +
       
 13205 +	* src/powerpc/darwin.S: Update for -m64 multilib.
       
 13206 +	* src/powerpc/darwin_closure.S: Likewise.
       
 13207 +
       
 13208 +2005-03-21  Zack Weinberg  <zack@codesourcery.com>
       
 13209 +
       
 13210 +	* configure.ac: Do not invoke TL_AC_GCC_VERSION.
       
 13211 +	Do not set tool_include_dir.
       
 13212 +	* aclocal.m4, configure, Makefile.in, testsuite/Makefile.in:
       
 13213 +	Regenerate.
       
 13214 +	* include/Makefile.am: Set gcc_version and toollibffidir.
       
 13215 +	* include/Makefile.in: Regenerate.
       
 13216 +
       
 13217 +2005-02-22  Andrew Haley  <aph@redhat.com>
       
 13218 +
       
 13219 +	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to
       
 13220 +	odd-numbered register pairs for 64-bit integer types.
       
 13221 +
       
 13222 +2005-02-23  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13223 +
       
 13224 +	PR libffi/20104
       
 13225 +	* testsuite/libffi.call/return_ll1.c: New test case.
       
 13226 +
       
 13227 +2005-02-11  Janis Johnson  <janis187@us.ibm.com>
       
 13228 +
       
 13229 +	* testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options.
       
 13230 +	* testsuite/libffi.call/float.c: Ditto.
       
 13231 +	* testsuite/libffi.call/float2.c: Ditto.
       
 13232 +	* testsuite/libffi.call/float3.c: Ditto.
       
 13233 +
       
 13234 +2005-02-08  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13235 +
       
 13236 +	* src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv.
       
 13237 +
       
 13238 +2005-01-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
       
 13239 +
       
 13240 +	* testsuite/libffi.special/special.exp (cxx_options): Add
       
 13241 +	-shared-libgcc.
       
 13242 +
       
 13243 +2004-12-31  Richard Henderson  <rth@redhat.com>
       
 13244 +
       
 13245 +	* src/types.c (FFI_AGGREGATE_TYPEDEF): Remove.
       
 13246 +	(FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF.  Replace size and
       
 13247 +	offset parameters with a type parameter; deduce size and structure
       
 13248 +	alignment.  Update all users.
       
 13249 +
       
 13250 +2004-12-31  Richard Henderson  <rth@redhat.com>
       
 13251 +
       
 13252 +	* src/types.c (FFI_TYPE_POINTER): Define with sizeof.
       
 13253 +	(FFI_TYPE_LONGDOUBLE): Fix for ia64.
       
 13254 +	* src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move
       
 13255 +	into ffi_prep_closure.
       
 13256 +	* src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite
       
 13257 +	from scratch.
       
 13258 +
       
 13259 +2004-12-27  Richard Henderson  <rth@redhat.com>
       
 13260 +
       
 13261 +	* src/x86/unix64.S: Fix typo in unwind info.
       
 13262 +
       
 13263 +2004-12-25  Richard Henderson  <rth@redhat.com>
       
 13264 +
       
 13265 +	* src/x86/ffi64.c (struct register_args): Rename from stackLayout.
       
 13266 +	(enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS.
       
 13267 +	(merge_classes): Check for it.
       
 13268 +	(SSE_CLASS_P): New.
       
 13269 +	(classify_argument): Pass byte_offset by value; perform all updates
       
 13270 +	inside struct case.
       
 13271 +	(examine_argument): Add classes argument; handle
       
 13272 +	X86_64_COMPLEX_X87_CLASS.
       
 13273 +	(ffi_prep_args): Merge into ...
       
 13274 +	(ffi_call): ... here.  Share stack frame with ffi_call_unix64.
       
 13275 +	(ffi_prep_cif_machdep): Setup cif->flags for proper structure return.
       
 13276 +	(ffi_fill_return_value): Remove.
       
 13277 +	(ffi_prep_closure): Remove dead assert.
       
 13278 +	(ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner.
       
 13279 +	Rewrite to use struct register_args instead of va_list.  Create
       
 13280 +	flags for handling structure returns.
       
 13281 +	* src/x86/unix64.S: Remove dead strings.
       
 13282 +	(ffi_call_unix64): Rename from ffi_call_UNIX64.  Rewrite to share
       
 13283 +	stack frame with ffi_call.  Handle structure returns properly.
       
 13284 +	(float2sse, floatfloat2sse, double2sse): Remove.
       
 13285 +	(sse2float, sse2double, sse2floatfloat): Remove.
       
 13286 +	(ffi_closure_unix64): Rename from ffi_closure_UNIX64.  Rewrite
       
 13287 +	to handle structure returns properly.
       
 13288 +
       
 13289 +2004-12-08  David Edelsohn  <edelsohn@gnu.org>
       
 13290 +
       
 13291 +	* Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and
       
 13292 +	PICFLAG.
       
 13293 +	* Makefile.in: Regenerated.
       
 13294 +
       
 13295 +2004-12-02  Richard Sandiford  <rsandifo@redhat.com>
       
 13296 +
       
 13297 +	* configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.
       
 13298 +	* configure, aclocal.m4, Makefile.in: Regenerate.
       
 13299 +	* include/Makefile.in, testsuite/Makefile.in: Regenerate.
       
 13300 +
       
 13301 +2004-11-29  Kelley Cook  <kcook@gcc.gnu.org>
       
 13302 +
       
 13303 +	* configure: Regenerate for libtool change.
       
 13304 +
       
 13305 +2004-11-25  Kelley Cook  <kcook@gcc.gnu.org>
       
 13306 +
       
 13307 +	* configure: Regenerate for libtool reversion.
       
 13308 +
       
 13309 +2004-11-24  Kelley Cook  <kcook@gcc.gnu.org>
       
 13310 +
       
 13311 +	* configure: Regenerate for libtool change.
       
 13312 +
       
 13313 +2004-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
       
 13314 +
       
 13315 +	* testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp.
       
 13316 +
       
 13317 +2004-11-23  Richard Sandiford  <rsandifo@redhat.com>
       
 13318 +
       
 13319 +	* src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead
       
 13320 +	of jal.  Use an absolute encoding for the frame information.
       
 13321 +
       
 13322 +2004-11-23  Kelley Cook  <kcook@gcc.gnu.org>
       
 13323 +
       
 13324 +	* Makefile.am: Remove no-dependencies.  Add ACLOCAL_AMFLAGS.
       
 13325 +	* acinclude.m4: Delete logic for sincludes.
       
 13326 +	* aclocal.m4, Makefile.in, configure: Regenerate.
       
 13327 +	* include/Makefile: Likewise.
       
 13328 +	* testsuite/Makefile: Likewise.
       
 13329 +
       
 13330 +2004-11-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
       
 13331 +
       
 13332 +	* src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers
       
 13333 +	on a 8-byte boundary.
       
 13334 +	* src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments.
       
 13335 +
       
 13336 +2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
       
 13337 +
       
 13338 +	* src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return
       
 13339 +	long long values.  Round stack allocation to a multiple of 8 bytes
       
 13340 +	for ATPCS compatibility.
       
 13341 +	* src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register
       
 13342 +	names.  Handle returning long long types.  Add Thumb and interworking
       
 13343 +	support.  Improve soft-float code.
       
 13344 +
       
 13345 +2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
       
 13346 +
       
 13347 +	* testsuite/lib/libffi-db.exp (load_gcc_lib): New function.
       
 13348 +	(libffi_exit): New function.
       
 13349 +	(libffi_init): Build the testglue wrapper if needed.
       
 13350 +
       
 13351 +2004-10-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
       
 13352 +
       
 13353 +	PR other/18138
       
 13354 +	* testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc.
       
 13355 +
       
 13356 +2004-10-25  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
       
 13357 +
       
 13358 +	* src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0.
       
 13359 +
       
 13360 +2004-10-20  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 13361 +
       
 13362 +	* src/sh/sysv.S (ffi_call_SYSV): Don't align for double data.
       
 13363 +	* testsuite/libffi.call/float3.c: New test case.
       
 13364 +
       
 13365 +2004-10-18  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 13366 +
       
 13367 +	* src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for
       
 13368 +	the function returning a structure pointed with R2.
       
 13369 +	* src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to
       
 13370 +	the structure return value if T bit set.  Emit position
       
 13371 +	independent code and EH data if PIC.
       
 13372 +
       
 13373 +2004-10-13  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
       
 13374 +
       
 13375 +	* Makefile.am: Add m32r support.
       
 13376 +	* configure.ac: Likewise.
       
 13377 +	* Makefile.in: Regenerate.
       
 13378 +	* confiugre: Regenerate.
       
 13379 +	* src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF
       
 13380 +	(uint64, sint64, double, longdouble)
       
 13381 +	* src/m32r: New directory.
       
 13382 +	* src/m32r/ffi.c: New file.
       
 13383 +	* src/m32r/sysv.S: Likewise.
       
 13384 +	* src/m32r/ffitarget.h: Likewise.
       
 13385 +
       
 13386 +2004-10-02  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 13387 +
       
 13388 +	* testsuite/libffi.call/negint.c: New test case.
       
 13389 +
       
 13390 +2004-09-14  H.J. Lu  <hongjiu.lu@intel.com>
       
 13391 +
       
 13392 +	PR libgcj/17465
       
 13393 +	* testsuite/lib/libffi-dg.exp: Don't use global ld_library_path.
       
 13394 +	Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH,
       
 13395 +	LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and
       
 13396 +	DYLD_LIBRARY_PATH.
       
 13397 +
       
 13398 +2004-09-05  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13399 +
       
 13400 +	* testsuite/libffi.call/many_win32.c: Remove whitespaces.
       
 13401 +	* testsuite/libffi.call/promotion.c: Likewise.
       
 13402 +	* testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup
       
 13403 +	whitespaces.
       
 13404 +	* testsuite/libffi.call/return_sc.c: Likewise.
       
 13405 +	* testsuite/libffi.call/return_uc.c: Likewise.
       
 13406 +
       
 13407 +2004-09-05  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13408 +
       
 13409 +	* src/powerpc/darwin.S: Fix comments and identation.
       
 13410 +	* src/powerpc/darwin_closure.S: Likewise.
       
 13411 +
       
 13412 +2004-09-02  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13413 +
       
 13414 +	* src/powerpc/ffi_darwin.c: Add flag for longdouble return values.
       
 13415 +	(ffi_prep_args): Handle longdouble arguments.
       
 13416 +	(ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for
       
 13417 +	longdouble.
       
 13418 +	(ffi_closure_helper_DARWIN): Add closure handling for longdouble.
       
 13419 +	* src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble
       
 13420 +	values.
       
 13421 +	* src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise.
       
 13422 +	* src/types.c: Defined longdouble size and alignment for darwin.
       
 13423 +
       
 13424 +2004-09-02  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13425 +
       
 13426 +	* src/powerpc/aix.S: Remove whitespaces.
       
 13427 +	* src/powerpc/aix_closure.S: Likewise.
       
 13428 +	* src/powerpc/asm.h: Likewise.
       
 13429 +	* src/powerpc/ffi.c: Likewise.
       
 13430 +	* src/powerpc/ffitarget.h: Likewise.
       
 13431 +	* src/powerpc/linux64.S: Likewise.
       
 13432 +	* src/powerpc/linux64_closure.S: Likewise.
       
 13433 +	* src/powerpc/ppc_closure.S: Likewise.
       
 13434 +	* src/powerpc/sysv.S: Likewise.
       
 13435 +
       
 13436 +2004-08-30  Anthony Green  <green@redhat.com>
       
 13437 +
       
 13438 +	* Makefile.am: Add frv support.
       
 13439 +	* Makefile.in, testsuite/Makefile.in: Rebuilt.
       
 13440 +	* configure.ac: Read configure.host.
       
 13441 +	* configure.in: Read configure.host.
       
 13442 +	* configure.host: New file.  frv-elf needs libgloss.
       
 13443 +	* include/ffi.h.in: Force ffi_closure to have a nice big (8)
       
 13444 +	alignment.  This is needed to frv and shouldn't harm the others.
       
 13445 +	* include/ffi_common.h (ALIGN_DOWN): New macro.
       
 13446 +	* src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files.
       
 13447 +
       
 13448 +2004-08-24  David Daney  <daney@avtrex.com>
       
 13449 +
       
 13450 +	* testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*.
       
 13451 +	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
 13452 +	* testsuite/libffi.call/closure_fn2.c  Likewise.
       
 13453 +	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
 13454 +	* testsuite/libffi.call/closure_fn4.c: Likewise.
       
 13455 +	* testsuite/libffi.call/closure_fn5.c: Likewise.
       
 13456 +	* testsuite/libffi.call/cls_18byte.c: Likewise.
       
 13457 +	* testsuite/libffi.call/cls_19byte.c: Likewise.
       
 13458 +	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
 13459 +	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
 13460 +	* testsuite/libffi.call/cls_20byte1.c: Likewise.
       
 13461 +	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
 13462 +	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
 13463 +	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
 13464 +	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
 13465 +	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
 13466 +	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
 13467 +	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
 13468 +	* testsuite/libffi.call/cls_64byte.c: Likewise.
       
 13469 +	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
 13470 +	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
 13471 +	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
 13472 +	* testsuite/libffi.call/cls_9byte1.c: Likewise.
       
 13473 +	* testsuite/libffi.call/cls_9byte2.c: Likewise.
       
 13474 +	* testsuite/libffi.call/cls_align_double.c: Likewise.
       
 13475 +	* testsuite/libffi.call/cls_align_float.c: Likewise.
       
 13476 +	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
       
 13477 +	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
       
 13478 +	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
       
 13479 +	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
       
 13480 +	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
       
 13481 +	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
       
 13482 +	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
       
 13483 +	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
       
 13484 +	* testsuite/libffi.call/cls_double.c: Likewise.
       
 13485 +	* testsuite/libffi.call/cls_float.c: Likewise.
       
 13486 +	* testsuite/libffi.call/cls_multi_schar.c: Likewise.
       
 13487 +	* testsuite/libffi.call/cls_multi_sshort.c: Likewise.
       
 13488 +	* testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
       
 13489 +	* testsuite/libffi.call/cls_multi_uchar.c: Likewise.
       
 13490 +	* testsuite/libffi.call/cls_multi_ushort.c: Likewise.
       
 13491 +	* testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
       
 13492 +	* testsuite/libffi.call/cls_schar.c: Likewise.
       
 13493 +	* testsuite/libffi.call/cls_sint.c: Likewise.
       
 13494 +	* testsuite/libffi.call/cls_sshort.c: Likewise.
       
 13495 +	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
 13496 +	* testsuite/libffi.call/cls_uint.c: Likewise.
       
 13497 +	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
 13498 +	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
 13499 +	* testsuite/libffi.call/nested_struct.c: Likewise.
       
 13500 +	* testsuite/libffi.call/nested_struct1.c: Likewise.
       
 13501 +	* testsuite/libffi.call/nested_struct2.c: Likewise.
       
 13502 +	* testsuite/libffi.call/nested_struct3.c: Likewise.
       
 13503 +	* testsuite/libffi.call/problem1.c: Likewise.
       
 13504 +	* testsuite/libffi.special/unwindtest.cc: Likewise.
       
 13505 +	* testsuite/libffi.call/cls_12byte.c: Likewise and set return value
       
 13506 +	to zero.
       
 13507 +	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
 13508 +	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
 13509 +
       
 13510 +2004-08-23  David Daney <daney@avtrex.com>
       
 13511 +
       
 13512 +	PR libgcj/13141
       
 13513 +	* src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI.
       
 13514 +	* src/mips/ffi.c (ffi_prep_args): Fix alignment calculation.
       
 13515 +	(ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point
       
 13516 +	parameters and return types.
       
 13517 +	(ffi_call): Handle FFI_O32_SOFT_FLOAT ABI.
       
 13518 +	(ffi_prep_closure): Ditto.
       
 13519 +	(ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix
       
 13520 +	alignment calculations.
       
 13521 +	* src/mips/o32.S (ffi_closure_O32): Don't use floating point
       
 13522 +	instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant.
       
 13523 +
       
 13524 +2004-08-14  Casey Marshall <csm@gnu.org>
       
 13525 +
       
 13526 +	* src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to
       
 13527 +	contain `FFI_TYPE_UINT64' as return type for any 64-bit
       
 13528 +	integer (O32 ABI only).
       
 13529 +	(ffi_prep_closure): new function.
       
 13530 +	(ffi_closure_mips_inner_O32): new function.
       
 13531 +	* src/mips/ffitarget.h: Define `FFI_CLOSURES' and
       
 13532 +	`FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32.
       
 13533 +	* src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return
       
 13534 +	64 bit integers correctly.
       
 13535 +	(ffi_closure_O32): new function.
       
 13536 +	Added DWARF-2 unwind info for both functions.
       
 13537 +
       
 13538 +2004-08-10  Andrew Haley  <aph@redhat.com>
       
 13539 +
       
 13540 +	* src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments.
       
 13541 +
       
 13542 +2004-08-01  Robert Millan  <robertmh@gnu.org>
       
 13543 +
       
 13544 +	* configure.ac: Detect knetbsd-gnu and kfreebsd-gnu.
       
 13545 +	* configure: Regenerate.
       
 13546 +
       
 13547 +2004-07-30  Maciej W. Rozycki  <macro@linux-mips.org>
       
 13548 +
       
 13549 +	* acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
       
 13550 +	and mmap() explicitly instead of relying on preset autoconf cache
       
 13551 +	variables.
       
 13552 +	* aclocal.m4: Regenerate.
       
 13553 +	* configure: Regenerate.
       
 13554 +
       
 13555 +2004-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
       
 13556 +
       
 13557 +	* src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation.
       
 13558 +	(ffi_check_float_struct): Remove unused prototype.
       
 13559 +
       
 13560 +2004-06-30  Geoffrey Keating  <geoffk@apple.com>
       
 13561 +
       
 13562 +	* src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment
       
 13563 +	character on Darwin, use '\n\t' instead.
       
 13564 +
       
 13565 +2004-06-26  Matthias Klose  <doko@debian.org>
       
 13566 +
       
 13567 +	* libtool-version: Fix typo in revision/age.
       
 13568 +
       
 13569 +2004-06-17  Matthias Klose  <doko@debian.org>
       
 13570 +
       
 13571 +	* libtool-version: New.
       
 13572 +	* Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname.
       
 13573 +	* Makefile.in: Regenerate.
       
 13574 +
       
 13575 +2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
       
 13576 +
       
 13577 +	* Makefile.am: Remove useless multilib rules.
       
 13578 +	* Makefile.in: Regenerate.
       
 13579 +	* aclocal.m4: Regenerate with automake 1.8.5.
       
 13580 +	* configure.ac: Remove useless multilib configury.
       
 13581 +	* configure: Regenerate.
       
 13582 +
       
 13583 +2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
       
 13584 +
       
 13585 +	* .cvsignore: New file.
       
 13586 +
       
 13587 +2004-06-10  Jakub Jelinek  <jakub@redhat.com>
       
 13588 +
       
 13589 +	* src/ia64/unix.S (ffi_call_unix): Insert group barrier break
       
 13590 +	fp_done.
       
 13591 +	(ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever
       
 13592 +	changed from 8.
       
 13593 +
       
 13594 +2004-06-06  Sean McNeil  <sean@mcneil.com>
       
 13595 +
       
 13596 +	* configure.ac: Add x86_64-*-freebsd* support.
       
 13597 +	* configure: Regenerate.
       
 13598 +
       
 13599 +2004-04-26  Joe Buck <jbuck@welsh-buck.org>
       
 13600 +
       
 13601 +	Bug 15093
       
 13602 +	* configure.ac: Test for existence of mmap and sys/mman.h before
       
 13603 +	checking blacklist.  Fix suggested by Jim Wilson.
       
 13604 +	* configure: Regenerate.
       
 13605 +
       
 13606 +2004-04-26  Matt Austern  <austern@apple.com>
       
 13607 +
       
 13608 +	* src/powerpc/darwin.S: Go through a non-lazy pointer for initial
       
 13609 +	FDE location.
       
 13610 +	* src/powerpc/darwin_closure.S: Likewise.
       
 13611 +
       
 13612 +2004-04-24  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13613 +
       
 13614 +	* testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization
       
 13615 +	error. Reported by Thomas Heller <theller@python.net>.
       
 13616 +	* testsuite/libffi.call/cls_multi_sshort.c (main): Likewise.
       
 13617 +	* testsuite/libffi.call/cls_multi_ushort.c (main): Likewise.
       
 13618 +
       
 13619 +2004-03-20  Matthias Klose  <doko@debian.org>
       
 13620 +
       
 13621 +	* src/pa/linux.S: Fix typo.
       
 13622 +
       
 13623 +2004-03-19  Matthias Klose  <doko@debian.org>
       
 13624 +
       
 13625 +	* Makefile.am: Update.
       
 13626 +	* Makefile.in: Regenerate.
       
 13627 +	* src/pa/ffi.h.in: Remove.
       
 13628 +	* src/pa/ffitarget.h: New file.
       
 13629 +
       
 13630 +2004-02-10  Randolph Chung  <tausq@debian.org>
       
 13631 +
       
 13632 +	* Makefile.am: Add PA support.
       
 13633 +	* Makefile.in: Regenerate.
       
 13634 +	* include/Makefile.in: Regenerate.
       
 13635 +	* configure.ac: Add PA target.
       
 13636 +	* configure: Regenerate.
       
 13637 +	* src/pa/ffi.c: New file.
       
 13638 +	* src/pa/ffi.h.in: Add PA support.
       
 13639 +	* src/pa/linux.S: New file.
       
 13640 +	* prep_cif.c: Add PA support.
       
 13641 +
       
 13642 +2004-03-16  Hosaka Yuji  <hos@tamanegi.org>
       
 13643 +
       
 13644 +	* src/types.c: Fix alignment size of X86_WIN32 case int64 and
       
 13645 +	double.
       
 13646 +	* src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type
       
 13647 +	with ecif->cif->flags.
       
 13648 +	(ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type
       
 13649 +	with cif->flags.
       
 13650 +	(ffi_prep_cif_machdep): Add X86_WIN32 struct case.
       
 13651 +	(ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32.
       
 13652 +	* src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b,
       
 13653 +	sc_retstruct2b): Add for 1 or 2-bytes struct case.
       
 13654 +
       
 13655 +2004-03-15 Kelley Cook <kcook@gcc.gnu.org>
       
 13656 +
       
 13657 +	* configure.in: Rename file to ...
       
 13658 +	* configure.ac: ... this.
       
 13659 +	* fficonfig.h.in: Regenerate.
       
 13660 +	* Makefile.in: Regenerate.
       
 13661 +	* include/Makefile.in: Regenerate.
       
 13662 +	* testsuite/Makefile.in: Regenerate.
       
 13663 +
       
 13664 +2004-03-12  Matt Austern  <austern@apple.com>
       
 13665 +
       
 13666 +	* src/powerpc/darwin.S: Fix EH information so it corresponds to
       
 13667 +	changes in EH format resulting from addition of linkonce support.
       
 13668 +	* src/powerpc/darwin_closure.S: Likewise.
       
 13669 +
       
 13670 +2004-03-11  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13671 +	    Paolo Bonzini  <bonzini@gnu.org>
       
 13672 +
       
 13673 +	* Makefile.am (AUTOMAKE_OPTIONS): Set them.
       
 13674 +	Remove VPATH. Remove rules for object files. Remove multilib support.
       
 13675 +	(AM_CCASFLAGS): Add.
       
 13676 +	* configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER.
       
 13677 +	(AC_PREREQ): Bump version to 2.59.
       
 13678 +	(AC_INIT): Fill with version info and bug address.
       
 13679 +	(ORIGINAL_LD_FOR_MULTILIBS): Remove.
       
 13680 +	(AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE.
       
 13681 +	De-precious CC so that the right flags are passed down to multilibs.
       
 13682 +	(AC_MSG_ERROR): Replace obsolete macro AC_ERROR.
       
 13683 +	(AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES.
       
 13684 +	(AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS.
       
 13685 +	* configure: Rebuilt.
       
 13686 +	* aclocal.m4: Likewise.
       
 13687 +	* Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise.
       
 13688 +	* fficonfig.h.in: Likewise.
       
 13689 +
       
 13690 +2004-03-11  Andreas Schwab  <schwab@suse.de>
       
 13691 +
       
 13692 +	* src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point
       
 13693 +	arguments from fp registers only for the first 8 parameter slots.
       
 13694 +	Don't convert a float parameter when passed in memory.
       
 13695 +
       
 13696 +2004-03-09  Hans-Peter Nilsson  <hp@axis.com>
       
 13697 +
       
 13698 +	* configure: Regenerate for config/accross.m4 correction.
       
 13699 +
       
 13700 +2004-02-25  Matt Kraai  <kraai@alumni.cmu.edu>
       
 13701 +
       
 13702 +	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Change
       
 13703 +	ecif->cif->bytes to bytes.
       
 13704 +	(ffi_prep_cif_machdep): Add braces around nested if statement.
       
 13705 +
       
 13706 +2004-02-09  Alan Modra  <amodra@bigpond.net.au>
       
 13707 +
       
 13708 +	* src/types.c (pointer): POWERPC64 has 8 byte pointers.
       
 13709 +
       
 13710 +	* src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling.
       
 13711 +	(ffi_closure_helper_LINUX64): Fix typo.
       
 13712 +	* testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128
       
 13713 +	for powerpc64-*-*.
       
 13714 +	* testsuite/libffi.call/float.c: Likewise.
       
 13715 +	* testsuite/libffi.call/float2.c: Likewise.
       
 13716 +
       
 13717 +2004-02-08  Alan Modra  <amodra@bigpond.net.au>
       
 13718 +
       
 13719 +	* src/powerpc/ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct
       
 13720 +	long double function return and long double arg handling.
       
 13721 +	(ffi_closure_helper_LINUX64): Formatting.  Delete unused "ng" var.
       
 13722 +	Use "end_pfr" instead of "nf".  Correct long double handling.
       
 13723 +	Localise "temp".
       
 13724 +	* src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double
       
 13725 +	return value.
       
 13726 +	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate
       
 13727 +	space for long double return value.  Adjust stack frame and offsets.
       
 13728 +	Load f2 long double return.
       
 13729 +
       
 13730 +2004-02-07  Alan Modra  <amodra@bigpond.net.au>
       
 13731 +
       
 13732 +	* src/types.c: Use 16 byte long double for POWERPC64.
       
 13733 +
       
 13734 +2004-01-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
       
 13735 +
       
 13736 +	* src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array
       
 13737 +	when the structure return address is passed in %o0.
       
 13738 +	(ffi_V9_return_struct): Rename into ffi_v9_layout_struct.
       
 13739 +	(ffi_v9_layout_struct): Align the field following a nested structure
       
 13740 +	on a word boundary.  Use memmove instead of memcpy.
       
 13741 +	(ffi_call): Update call to ffi_V9_return_struct.
       
 13742 +	(ffi_prep_closure): Define 'ctx' only for V8.
       
 13743 +	(ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8
       
 13744 +	and ffi_closure_sparc_inner_v9.
       
 13745 +	(ffi_closure_sparc_inner_v8): Return long doubles by reference.
       
 13746 +	Always skip the structure return address.  For structures and long
       
 13747 +	doubles, copy the argument directly.
       
 13748 +	(ffi_closure_sparc_inner_v9): Skip the structure return address only
       
 13749 +	if required.  Shift the maximum floating-point slot accordingly.  For
       
 13750 +	big structures, copy the argument directly; otherwise, left-justify the
       
 13751 +	argument and call ffi_v9_layout_struct to lay out the structure on
       
 13752 +	the stack.
       
 13753 +	* src/sparc/v8.S: Undef STACKFRAME before defining it.
       
 13754 +	(ffi_closure_v8): Pass the structure return address.  Update call to
       
 13755 +	ffi_closure_sparc_inner_v8.  Short-circuit FFI_TYPE_INT handling.
       
 13756 +	Skip the 'unimp' insn when returning long doubles and structures.
       
 13757 +	* src/sparc/v9.S: Undef STACKFRAME before defining it.
       
 13758 +	(ffi_closure_v9): Increase the frame size by 2 words.  Short-circuit
       
 13759 +	FFI_TYPE_INT handling.  Load structures both in integers and
       
 13760 +	floating-point registers on return.
       
 13761 +	* README: Update status of the SPARC port.
       
 13762 +
       
 13763 +2004-01-24  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13764 +
       
 13765 +	* testsuite/libffi.call/pyobjc-tc.c (main): Treat result value
       
 13766 +	as of type ffi_arg.
       
 13767 +	* testsuite/libffi.call/struct3.c (main): Fix CHECK.
       
 13768 +
       
 13769 +2004-01-22  Ulrich Weigand  <uweigand@de.ibm.com>
       
 13770 +
       
 13771 +	* testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result
       
 13772 +	value as of type ffi_arg, not unsigned int.
       
 13773 +
       
 13774 +2004-01-21  Michael Ritzert  <ritzert@t-online.de>
       
 13775 +
       
 13776 +	* ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead
       
 13777 +	of the LHS.
       
 13778 +
       
 13779 +2004-01-12  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13780 +
       
 13781 +	* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for
       
 13782 +	Solaris.
       
 13783 +
       
 13784 +2004-01-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 13785 +
       
 13786 +	* testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED
       
 13787 +	to void *.
       
 13788 +
       
 13789 +2003-12-10  Richard Henderson  <rth@redhat.com>
       
 13790 +
       
 13791 +	* testsuite/libffi.call/cls_align_pointer.c: Cast pointers to
       
 13792 +	size_t instead of int.
       
 13793 +
       
 13794 +2003-12-04  Hosaka Yuji  <hos@tamanegi.org>
       
 13795 +
       
 13796 +	* testsuite/libffi.call/many_win32.c: Include <float.h>.
       
 13797 +	* testsuite/libffi.call/many_win32.c (main): Replace variable
       
 13798 +	int i with unsigned long ul.
       
 13799 +
       
 13800 +	* testsuite/libffi.call/cls_align_uint64.c: New test case.
       
 13801 +	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
       
 13802 +	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
       
 13803 +	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
       
 13804 +	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
       
 13805 +	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
       
 13806 +	* testsuite/libffi.call/cls_align_float.c: Likewise.
       
 13807 +	* testsuite/libffi.call/cls_align_double.c: Likewise.
       
 13808 +	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
       
 13809 +	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
       
 13810 +
       
 13811 +2003-12-02  Hosaka Yuji  <hos@tamanegi.org>
       
 13812 +
       
 13813 +	PR other/13221
       
 13814 +	* src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV):
       
 13815 +	Align arguments to 32 bits.
       
 13816 +
       
 13817 +2003-12-01  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13818 +
       
 13819 +	PR other/13221
       
 13820 +	* testsuite/libffi.call/cls_multi_sshort.c: New test case.
       
 13821 +	* testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
       
 13822 +	* testsuite/libffi.call/cls_multi_uchar.c: Likewise.
       
 13823 +	* testsuite/libffi.call/cls_multi_schar.c: Likewise.
       
 13824 +	* testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
       
 13825 +	* testsuite/libffi.call/cls_multi_ushort.c: Likewise.
       
 13826 +
       
 13827 +	* testsuite/libffi.special/unwindtest.cc: Cosmetics.
       
 13828 +
       
 13829 +2003-11-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
       
 13830 +
       
 13831 +	* testsuite/libffi.call/ffitest.h: Include <fcntl.h>.
       
 13832 +	* testsuite/libffi.special/ffitestcxx.h: Likewise.
       
 13833 +
       
 13834 +2003-11-22  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13835 +
       
 13836 +	* Makefile.in: Rebuilt.
       
 13837 +	* configure: Likewise.
       
 13838 +	* testsuite/libffi.special/unwindtest.cc: Convert the mmap to
       
 13839 +	the right type.
       
 13840 +
       
 13841 +2003-11-21  Andreas Jaeger  <aj@suse.de>
       
 13842 +	    Andreas Tobler  <a.tobler@schweiz.ch>
       
 13843 +
       
 13844 +	* acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST.
       
 13845 +	* configure.in: Call AC_FUNC_MMAP_BLACKLIST.
       
 13846 +	* Makefile.in: Rebuilt.
       
 13847 +	* aclocal.m4: Likewise.
       
 13848 +	* configure: Likewise.
       
 13849 +	* fficonfig.h.in: Likewise.
       
 13850 +	* testsuite/lib/libffi-dg.exp: Add include dir.
       
 13851 +	* testsuite/libffi.call/ffitest.h: Add MMAP definitions.
       
 13852 +	* testsuite/libffi.special/ffitestcxx.h: Likewise.
       
 13853 +	* testsuite/libffi.call/closure_fn0.c: Use MMAP functionality
       
 13854 +	for ffi_closure if available.
       
 13855 +	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
 13856 +	* testsuite/libffi.call/closure_fn2.c: Likewise.
       
 13857 +	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
 13858 +	* testsuite/libffi.call/closure_fn4.c: Likewise.
       
 13859 +	* testsuite/libffi.call/closure_fn5.c: Likewise.
       
 13860 +	* testsuite/libffi.call/cls_12byte.c: Likewise.
       
 13861 +	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
 13862 +	* testsuite/libffi.call/cls_18byte.c: Likewise.
       
 13863 +	* testsuite/libffi.call/cls_19byte.c: Likewise.
       
 13864 +	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
 13865 +	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
 13866 +	* testsuite/libffi.call/cls_20byte1.c: Likewise.
       
 13867 +	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
 13868 +	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
 13869 +	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
 13870 +	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
 13871 +	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
 13872 +	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
 13873 +	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
 13874 +	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
 13875 +	* testsuite/libffi.call/cls_64byte.c: Likewise.
       
 13876 +	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
 13877 +	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
 13878 +	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
 13879 +	* testsuite/libffi.call/cls_9byte1.c: Likewise.
       
 13880 +	* testsuite/libffi.call/cls_9byte2.c: Likewise.
       
 13881 +	* testsuite/libffi.call/cls_double.c: Likewise.
       
 13882 +	* testsuite/libffi.call/cls_float.c: Likewise.
       
 13883 +	* testsuite/libffi.call/cls_schar.c: Likewise.
       
 13884 +	* testsuite/libffi.call/cls_sint.c: Likewise.
       
 13885 +	* testsuite/libffi.call/cls_sshort.c: Likewise.
       
 13886 +	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
 13887 +	* testsuite/libffi.call/cls_uint.c: Likewise.
       
 13888 +	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
 13889 +	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
 13890 +	* testsuite/libffi.call/nested_struct.c: Likewise.
       
 13891 +	* testsuite/libffi.call/nested_struct1.c: Likewise.
       
 13892 +	* testsuite/libffi.call/nested_struct2.c: Likewise.
       
 13893 +	* testsuite/libffi.call/nested_struct3.c: Likewise.
       
 13894 +	* testsuite/libffi.call/problem1.c: Likewise.
       
 13895 +	* testsuite/libffi.special/unwindtest.cc: Likewise.
       
 13896 +
       
 13897 +2003-11-20  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13898 +
       
 13899 +	* testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional.
       
 13900 +
       
 13901 +2003-11-19  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13902 +
       
 13903 +	* testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin.
       
 13904 +	Add -lgcc_s to additional flags.
       
 13905 +
       
 13906 +2003-11-12  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13907 +
       
 13908 +	* configure.in, include/Makefile.am: PR libgcj/11147, install
       
 13909 +	the ffitarget.h header file in a gcc versioned and target
       
 13910 +	dependent place.
       
 13911 +	* configure: Regenerated.
       
 13912 +	* Makefile.in, include/Makefile.in: Likewise.
       
 13913 +	* testsuite/Makefile.in: Likewise.
       
 13914 +
       
 13915 +2003-11-09  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13916 +
       
 13917 +	* testsuite/libffi.call/closure_fn0.c: Print result and check
       
 13918 +	with dg-output to make debugging easier.
       
 13919 +	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
 13920 +	* testsuite/libffi.call/closure_fn2.c: Likewise.
       
 13921 +	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
 13922 +	* testsuite/libffi.call/closure_fn4.c: Likewise.
       
 13923 +	* testsuite/libffi.call/closure_fn5.c: Likewise.
       
 13924 +	* testsuite/libffi.call/cls_12byte.c: Likewise.
       
 13925 +	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
 13926 +	* testsuite/libffi.call/cls_18byte.c: Likewise.
       
 13927 +	* testsuite/libffi.call/cls_19byte.c: Likewise.
       
 13928 +	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
 13929 +	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
 13930 +	* testsuite/libffi.call/cls_20byte1.c: Likewise.
       
 13931 +	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
 13932 +	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
 13933 +	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
 13934 +	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
 13935 +	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
 13936 +	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
 13937 +	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
 13938 +	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
 13939 +	* testsuite/libffi.call/cls_64byte.c: Likewise.
       
 13940 +	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
 13941 +	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
 13942 +	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
 13943 +	* testsuite/libffi.call/cls_9byte1.c: Likewise.
       
 13944 +	* testsuite/libffi.call/cls_9byte2.c: Likewise.
       
 13945 +	* testsuite/libffi.call/cls_double.c: Likewise.
       
 13946 +	* testsuite/libffi.call/cls_float.c: Likewise.
       
 13947 +	* testsuite/libffi.call/cls_schar.c: Likewise.
       
 13948 +	* testsuite/libffi.call/cls_sint.c: Likewise.
       
 13949 +	* testsuite/libffi.call/cls_sshort.c: Likewise.
       
 13950 +	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
 13951 +	* testsuite/libffi.call/cls_uint.c: Likewise.
       
 13952 +	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
 13953 +	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
 13954 +	* testsuite/libffi.call/problem1.c: Likewise.
       
 13955 +
       
 13956 +	* testsuite/libffi.special/unwindtest.cc: Make ffi_closure
       
 13957 +	static.
       
 13958 +
       
 13959 +2003-11-08  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13960 +
       
 13961 +	* testsuite/libffi.call/cls_9byte2.c: New test case.
       
 13962 +	* testsuite/libffi.call/cls_9byte1.c: Likewise.
       
 13963 +	* testsuite/libffi.call/cls_64byte.c: Likewise.
       
 13964 +	* testsuite/libffi.call/cls_20byte1.c: Likewise.
       
 13965 +	* testsuite/libffi.call/cls_19byte.c: Likewise.
       
 13966 +	* testsuite/libffi.call/cls_18byte.c: Likewise.
       
 13967 +	* testsuite/libffi.call/closure_fn4.c: Likewise.
       
 13968 +	* testsuite/libffi.call/closure_fn5.c: Likewise.
       
 13969 +	* testsuite/libffi.call/cls_schar.c: Likewise.
       
 13970 +	* testsuite/libffi.call/cls_sint.c: Likewise.
       
 13971 +	* testsuite/libffi.call/cls_sshort.c: Likewise.
       
 13972 +	* testsuite/libffi.call/nested_struct2.c: Likewise.
       
 13973 +	* testsuite/libffi.call/nested_struct3.c: Likewise.
       
 13974 +
       
 13975 +2003-11-08  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13976 +
       
 13977 +	* testsuite/libffi.call/cls_double.c: Do a check on the result.
       
 13978 +	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
 13979 +	* testsuite/libffi.call/cls_uint.c: Likewise.
       
 13980 +	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
 13981 +	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
 13982 +	* testsuite/libffi.call/return_sc.c: Cleanup whitespaces.
       
 13983 +
       
 13984 +2003-11-06  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13985 +
       
 13986 +	* src/prep_cif.c (ffi_prep_cif): Move the validity check after
       
 13987 +	the initialization.
       
 13988 +
       
 13989 +2003-10-23  Andreas Tobler  <a.tobler@schweiz.ch>
       
 13990 +
       
 13991 +	* src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace
       
 13992 +	FFI_ASSERT(FALSE) with FFI_ASSERT(0).
       
 13993 +
       
 13994 +2003-10-22  David Daney  <ddaney@avtrex.com>
       
 13995 +
       
 13996 +	* src/mips/ffitarget.h: Replace undefined UINT32 and friends with
       
 13997 +	__attribute__((__mode__(__SI__))) and friends.
       
 13998 +
       
 13999 +2003-10-22  Andreas Schwab  <schwab@suse.de>
       
 14000 +
       
 14001 +	* src/ia64/ffi.c: Replace FALSE/TRUE with false/true.
       
 14002 +
       
 14003 +2003-10-21  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14004 +
       
 14005 +	* configure.in: AC_LINK_FILES(ffitarget.h).
       
 14006 +	* configure: Regenerate.
       
 14007 +	* Makefile.in: Likewise.
       
 14008 +	* include/Makefile.in: Likewise.
       
 14009 +	* testsuite/Makefile.in: Likewise.
       
 14010 +	* fficonfig.h.in: Likewise.
       
 14011 +
       
 14012 +2003-10-21  Paolo Bonzini  <bonzini@gnu.org>
       
 14013 +	    Richard Henderson  <rth@redhat.com>
       
 14014 +
       
 14015 +	Avoid that ffi.h includes fficonfig.h.
       
 14016 +
       
 14017 +	* Makefile.am (EXTRA_DIST): Include ffitarget.h files
       
 14018 +	(TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
       
 14019 +	(TARGET_SRC_MIPS_SGI): Removed.
       
 14020 +	(MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
       
 14021 +	(MIPS_SGI): Removed.
       
 14022 +	(CLEANFILES): Removed.
       
 14023 +	(mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New
       
 14024 +	targets.
       
 14025 +	* acconfig.h: Removed.
       
 14026 +	* configure.in: Compute sizeofs only for double and long double.
       
 14027 +	Use them to define and subst HAVE_LONG_DOUBLE.  Include comments
       
 14028 +	into AC_DEFINE instead of using acconfig.h.  Create
       
 14029 +	include/ffitarget.h instead of include/fficonfig.h.  Rename
       
 14030 +	MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree.
       
 14031 +	AC_DEFINE EH_FRAME_FLAGS.
       
 14032 +	* include/Makefile.am (DISTCLEANFILES): New automake macro.
       
 14033 +	(hack_DATA): Add ffitarget.h.
       
 14034 +	* include/ffi.h.in: Remove all system specific definitions.
       
 14035 +	Declare raw API even if it is not installed, why bother?
       
 14036 +	Use limits.h instead of SIZEOF_* to define ffi_type_*.  Do
       
 14037 +	not define EH_FRAME_FLAGS, it is in fficonfig.h now.  Include
       
 14038 +	ffitarget.h instead of fficonfig.h.  Remove ALIGN macro.
       
 14039 +	(UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead.
       
 14040 +	* include/ffi_common.h (bool): Do not define.
       
 14041 +	(ffi_assert): Accept failed assertion.
       
 14042 +	(ffi_type_test): Return void and accept file/line.
       
 14043 +	(FFI_ASSERT): Pass stringized failed assertion.
       
 14044 +	(FFI_ASSERT_AT): New macro.
       
 14045 +	(FFI_ASSERT_VALID_TYPE): New macro.
       
 14046 +	(UINT8, SINT8, UINT16, SINT16, UINT32, SINT32,
       
 14047 +	UINT64, SINT64): Define here with gcc's __attribute__ macro
       
 14048 +	instead of in ffi.h
       
 14049 +	(FLOAT32, ALIGN): Define here instead of in ffi.h
       
 14050 +	* include/ffi-mips.h: Removed.  Its content moved to
       
 14051 +	src/mips/ffitarget.h after separating assembly and C sections.
       
 14052 +	* src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c
       
 14053 +	src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c,
       
 14054 +	src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S,
       
 14055 +	src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c:
       
 14056 +	SIZEOF_ARG -> FFI_SIZEOF_ARG.
       
 14057 +	* src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+).
       
 14058 +	* src/debug.c (ffi_assert): Accept stringized failed assertion.
       
 14059 +	(ffi_type_test): Rewritten.
       
 14060 +	* src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call
       
 14061 +	FFI_ASSERT_VALID_TYPE.
       
 14062 +	* src/alpha/ffitarget.h, src/arm/ffitarget.h,
       
 14063 +	src/ia64/ffitarget.h, src/m68k/ffitarget.h,
       
 14064 +	src/mips/ffitarget.h, src/powerpc/ffitarget.h,
       
 14065 +	src/s390/ffitarget.h, src/sh/ffitarget.h,
       
 14066 +	src/sh64/ffitarget.h, src/sparc/ffitarget.h,
       
 14067 +	src/x86/ffitarget.h: New files.
       
 14068 +	* src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S,
       
 14069 +	src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S,
       
 14070 +	src/powerpc/aix.S, src/powerpc/darwin.S,
       
 14071 +	src/powerpc/ffi_darwin.c, src/powerpc/linux64.S,
       
 14072 +	src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S,
       
 14073 +	src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S,
       
 14074 +	src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S,
       
 14075 +	src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S:
       
 14076 +	include fficonfig.h
       
 14077 +
       
 14078 +2003-10-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 14079 +
       
 14080 +	* src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external
       
 14081 +	_MIPS_SIM_NABI32, _MIPS_SIM_ABI32.
       
 14082 +
       
 14083 +2003-10-19  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14084 +
       
 14085 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again.
       
 14086 +	Used when FFI_DEBUG = 1.
       
 14087 +
       
 14088 +2003-10-14  Alan Modra  <amodra@bigpond.net.au>
       
 14089 +
       
 14090 +	* src/types.c (double, longdouble): Default POWERPC64 to 8 byte size
       
 14091 +	and align.
       
 14092 +
       
 14093 +2003-10-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 14094 +
       
 14095 +	* include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs,
       
 14096 +	FFI_MIPS_O32 for O32 ABI.
       
 14097 +
       
 14098 +2003-10-01  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14099 +
       
 14100 +	* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for
       
 14101 +	SPARC64. Cleanup whitespaces.
       
 14102 +
       
 14103 +2003-09-19  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14104 +
       
 14105 +	* testsuite/libffi.call/closure_fn0.c: Xfail mips, arm,
       
 14106 +	strongarm, xscale. Cleanup whitespaces.
       
 14107 +	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
 14108 +	* testsuite/libffi.call/closure_fn2.c: Likewise.
       
 14109 +	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
 14110 +	* testsuite/libffi.call/cls_12byte.c: Likewise.
       
 14111 +	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
 14112 +	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
 14113 +	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
 14114 +	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
 14115 +	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
 14116 +	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
 14117 +	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
 14118 +	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
 14119 +	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
 14120 +	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
 14121 +	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
 14122 +	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
 14123 +	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
 14124 +	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
 14125 +	* testsuite/libffi.call/cls_double.c: Likewise.
       
 14126 +	* testsuite/libffi.call/cls_float.c: Likewise.
       
 14127 +	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
 14128 +	* testsuite/libffi.call/cls_uint.c: Likewise.
       
 14129 +	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
 14130 +	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
 14131 +	* testsuite/libffi.call/nested_struct.c: Likewise.
       
 14132 +	* testsuite/libffi.call/nested_struct1.c: Likewise.
       
 14133 +	* testsuite/libffi.call/problem1.c: Likewise.
       
 14134 +	* testsuite/libffi.special/unwindtest.cc: Likewise.
       
 14135 +	* testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces.
       
 14136 +
       
 14137 +2003-09-18  David Edelsohn  <edelsohn@gnu.org>
       
 14138 +
       
 14139 +	* src/powerpc/aix.S: Cleanup whitespaces.
       
 14140 +	* src/powerpc/aix_closure.S: Likewise.
       
 14141 +
       
 14142 +2003-09-18  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14143 +
       
 14144 +	* src/powerpc/darwin.S: Cleanup whitespaces, comment formatting.
       
 14145 +	* src/powerpc/darwin_closure.S: Likewise.
       
 14146 +	* src/powerpc/ffi_darwin.c: Likewise.
       
 14147 +
       
 14148 +2003-09-18  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14149 +	    David Edelsohn  <edelsohn@gnu.org>
       
 14150 +
       
 14151 +	* src/types.c (double): Add AIX and Darwin to the right TYPEDEF.
       
 14152 +	* src/powerpc/aix_closure.S: Remove the pointer to the outgoing
       
 14153 +	parameter stack.
       
 14154 +	* src/powerpc/darwin_closure.S: Likewise.
       
 14155 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures
       
 14156 +	according to the Darwin/AIX ABI.
       
 14157 +	(ffi_prep_cif_machdep): Likewise.
       
 14158 +	(ffi_closure_helper_DARWIN): Likewise.
       
 14159 +	Remove the outgoing parameter stack logic. Simplify the evaluation
       
 14160 +	of the different CASE types.
       
 14161 +	(ffi_prep_clousure): Avoid the casts on lvalues. Change the branch
       
 14162 +	statement in the trampoline code.
       
 14163 +
       
 14164 +2003-09-18  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 14165 +
       
 14166 +	* src/sh/ffi.c (ffi_prep_args): Take account into the alignement
       
 14167 +	for the register size.
       
 14168 +	(ffi_closure_helper_SYSV): Handle the structure return value
       
 14169 +	address correctly.
       
 14170 +	(ffi_closure_helper_SYSV): Return the appropriate type when
       
 14171 +	the registers are used for the structure return value.
       
 14172 +	* src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for
       
 14173 +	the 64-bit return value.  Update copyright years.
       
 14174 +
       
 14175 +2003-09-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 14176 +
       
 14177 +	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in
       
 14178 +	srcdir for ffi_mips.h.
       
 14179 +
       
 14180 +2003-09-12  Alan Modra  <amodra@bigpond.net.au>
       
 14181 +
       
 14182 +	* src/prep_cif.c (initialize_aggregate): Include tail padding in
       
 14183 +	structure size.
       
 14184 +	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct
       
 14185 +	placement of float result.
       
 14186 +	* testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct
       
 14187 +	cast of "resp" for big-endian 64 bit machines.
       
 14188 +
       
 14189 +2003-09-11  Alan Modra  <amodra@bigpond.net.au>
       
 14190 +
       
 14191 +	* src/types.c (double, longdouble): Merge identical SH and ARM
       
 14192 +	typedefs, and add POWERPC64.
       
 14193 +	* src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for
       
 14194 +	struct split over gpr and rest.
       
 14195 +	(ffi_prep_cif_machdep): Correct intarg_count for structures.
       
 14196 +	* src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets.
       
 14197 +
       
 14198 +2003-09-09  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14199 +
       
 14200 +	* src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct
       
 14201 +	passing correctly.
       
 14202 +
       
 14203 +2003-09-09  Alan Modra  <amodra@bigpond.net.au>
       
 14204 +
       
 14205 +	* configure: Regenerate.
       
 14206 +
       
 14207 +2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14208 +
       
 14209 +	* Makefile.am: Remove build rules for ffitest.
       
 14210 +	* Makefile.in: Rebuilt.
       
 14211 +
       
 14212 +2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14213 +
       
 14214 +	* src/java_raw_api.c: Include <stdlib.h> to fix compiler warning
       
 14215 +	about implicit declaration of abort().
       
 14216 +
       
 14217 +2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14218 +
       
 14219 +	* Makefile.am: Add dejagnu test framework. Fixes PR other/11411.
       
 14220 +	* Makefile.in: Rebuilt.
       
 14221 +	* configure.in: Add dejagnu test framework.
       
 14222 +	* configure: Rebuilt.
       
 14223 +
       
 14224 +	* testsuite/Makefile.am: New file.
       
 14225 +	* testsuite/Makefile.in: Built
       
 14226 +	* testsuite/lib/libffi-dg.exp: New file.
       
 14227 +	* testsuite/config/default.exp: Likewise.
       
 14228 +	* testsuite/libffi.call/call.exp: Likewise.
       
 14229 +	* testsuite/libffi.call/ffitest.h: Likewise.
       
 14230 +	* testsuite/libffi.call/closure_fn0.c: Likewise.
       
 14231 +	* testsuite/libffi.call/closure_fn1.c: Likewise.
       
 14232 +	* testsuite/libffi.call/closure_fn2.c: Likewise.
       
 14233 +	* testsuite/libffi.call/closure_fn3.c: Likewise.
       
 14234 +	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
       
 14235 +	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
       
 14236 +	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
       
 14237 +	* testsuite/libffi.call/cls_2byte.c: Likewise.
       
 14238 +	* testsuite/libffi.call/cls_3byte1.c: Likewise.
       
 14239 +	* testsuite/libffi.call/cls_3byte2.c: Likewise.
       
 14240 +	* testsuite/libffi.call/cls_4byte.c: Likewise.
       
 14241 +	* testsuite/libffi.call/cls_5byte.c: Likewise.
       
 14242 +	* testsuite/libffi.call/cls_6byte.c: Likewise.
       
 14243 +	* testsuite/libffi.call/cls_7byte.c: Likewise.
       
 14244 +	* testsuite/libffi.call/cls_8byte.c: Likewise.
       
 14245 +	* testsuite/libffi.call/cls_12byte.c: Likewise.
       
 14246 +	* testsuite/libffi.call/cls_16byte.c: Likewise.
       
 14247 +	* testsuite/libffi.call/cls_20byte.c: Likewise.
       
 14248 +	* testsuite/libffi.call/cls_24byte.c: Likewise.
       
 14249 +	* testsuite/libffi.call/cls_double.c: Likewise.
       
 14250 +	* testsuite/libffi.call/cls_float.c: Likewise.
       
 14251 +	* testsuite/libffi.call/cls_uchar.c: Likewise.
       
 14252 +	* testsuite/libffi.call/cls_uint.c: Likewise.
       
 14253 +	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
       
 14254 +	* testsuite/libffi.call/cls_ushort.c: Likewise.
       
 14255 +	* testsuite/libffi.call/float.c: Likewise.
       
 14256 +	* testsuite/libffi.call/float1.c: Likewise.
       
 14257 +	* testsuite/libffi.call/float2.c: Likewise.
       
 14258 +	* testsuite/libffi.call/many.c: Likewise.
       
 14259 +	* testsuite/libffi.call/many_win32.c: Likewise.
       
 14260 +	* testsuite/libffi.call/nested_struct.c: Likewise.
       
 14261 +	* testsuite/libffi.call/nested_struct1.c: Likewise.
       
 14262 +	* testsuite/libffi.call/pyobjc-tc.c: Likewise.
       
 14263 +	* testsuite/libffi.call/problem1.c: Likewise.
       
 14264 +	* testsuite/libffi.call/promotion.c: Likewise.
       
 14265 +	* testsuite/libffi.call/return_ll.c: Likewise.
       
 14266 +	* testsuite/libffi.call/return_sc.c: Likewise.
       
 14267 +	* testsuite/libffi.call/return_uc.c: Likewise.
       
 14268 +	* testsuite/libffi.call/strlen.c: Likewise.
       
 14269 +	* testsuite/libffi.call/strlen_win32.c: Likewise.
       
 14270 +	* testsuite/libffi.call/struct1.c: Likewise.
       
 14271 +	* testsuite/libffi.call/struct2.c: Likewise.
       
 14272 +	* testsuite/libffi.call/struct3.c: Likewise.
       
 14273 +	* testsuite/libffi.call/struct4.c: Likewise.
       
 14274 +	* testsuite/libffi.call/struct5.c: Likewise.
       
 14275 +	* testsuite/libffi.call/struct6.c: Likewise.
       
 14276 +	* testsuite/libffi.call/struct7.c: Likewise.
       
 14277 +	* testsuite/libffi.call/struct8.c: Likewise.
       
 14278 +	* testsuite/libffi.call/struct9.c: Likewise.
       
 14279 +	* testsuite/libffi.special/special.exp: New file.
       
 14280 +	* testsuite/libffi.special/ffitestcxx.h: Likewise.
       
 14281 +	* testsuite/libffi.special/unwindtest.cc: Likewise.
       
 14282 +
       
 14283 +
       
 14284 +2003-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 14285 +
       
 14286 +	* src/sh/ffi.c (OFS_INT16): Set 0 for little endian case.  Update
       
 14287 +	copyright years.
       
 14288 +
       
 14289 +2003-08-02  Alan Modra  <amodra@bigpond.net.au>
       
 14290 +
       
 14291 +	* src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc
       
 14292 +	structure passing.
       
 14293 +	(ffi_closure_helper_LINUX64): Likewise.
       
 14294 +	* src/powerpc/linux64.S: Remove code writing to parm save area.
       
 14295 +	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return
       
 14296 +	address in lr from ffi_closure_helper_LINUX64 call to calculate
       
 14297 +	table address.  Optimize function tail.
       
 14298 +
       
 14299 +2003-07-28  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14300 +
       
 14301 +	* src/sparc/ffi.c: Handle all floating point registers.
       
 14302 +	* src/sparc/v9.S: Likewise. Fixes second part of PR target/11410.
       
 14303 +
       
 14304 +2003-07-11  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
       
 14305 +
       
 14306 +	* README: Note that libffi is not part of GCC.  Update the project
       
 14307 +	URL and status.
       
 14308 +
       
 14309 +2003-06-19  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
       
 14310 +
       
 14311 +	* src/powerpc/ppc_closure.S: Include ffi.h.
       
 14312 +
       
 14313 +2003-06-13  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 14314 +
       
 14315 +	* src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives.
       
 14316 +	Use C style comments.
       
 14317 +
       
 14318 +2003-06-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
       
 14319 +
       
 14320 +	* Makefile.am: Add SHmedia support.  Fix a typo of SH support.
       
 14321 +	* Makefile.in: Regenerate.
       
 14322 +	* configure.in (sh64-*-linux*, sh5*-*-linux*): Add target.
       
 14323 +	* configure: Regenerate.
       
 14324 +	* include/ffi.h.in: Add SHmedia support.
       
 14325 +	* src/sh64/ffi.c: New file.
       
 14326 +	* src/sh64/sysv.S: New file.
       
 14327 +
       
 14328 +2003-05-16  Jakub Jelinek  <jakub@redhat.com>
       
 14329 +
       
 14330 +	* configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section
       
 14331 +	should be read-only.
       
 14332 +	* configure: Rebuilt.
       
 14333 +	* fficonfig.h.in: Rebuilt.
       
 14334 +	* include/ffi.h.in (EH_FRAME_FLAGS): Define.
       
 14335 +	* src/alpha/osf.S: Use EH_FRAME_FLAGS.
       
 14336 +	* src/powerpc/linux64.S: Likewise.
       
 14337 +	* src/powerpc/linux64_closure.S: Likewise.  Include ffi.h.
       
 14338 +	* src/powerpc/sysv.S: Use EH_FRAME_FLAGS.  Use pcrel encoding
       
 14339 +	if -fpic/-fPIC/-mrelocatable.
       
 14340 +	* src/powerpc/powerpc_closure.S: Likewise.
       
 14341 +	* src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include
       
 14342 +	#write in .eh_frame flags.
       
 14343 +	* src/sparc/v9.S: Likewise.
       
 14344 +	* src/x86/unix64.S: Use EH_FRAME_FLAGS.
       
 14345 +	* src/x86/sysv.S: Likewise.  Use pcrel encoding if -fpic/-fPIC.
       
 14346 +	* src/s390/sysv.S: Use EH_FRAME_FLAGS.  Include ffi.h.
       
 14347 +
       
 14348 +2003-05-07  Jeff Sturm  <jsturm@one-point.com>
       
 14349 +
       
 14350 +	Fixes PR bootstrap/10656
       
 14351 +	* configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler
       
 14352 +	support for .register pseudo-op.
       
 14353 +	* src/sparc/v8.S: Use it.
       
 14354 +	* fficonfig.h.in: Rebuilt.
       
 14355 +	* configure: Rebuilt.
       
 14356 +
       
 14357 +2003-04-18  Jakub Jelinek  <jakub@redhat.com>
       
 14358 +
       
 14359 +	* include/ffi.h.in (POWERPC64): Define if 64-bit.
       
 14360 +	(enum ffi_abi): Add FFI_LINUX64 on POWERPC.
       
 14361 +	Make it the default on POWERPC64.
       
 14362 +	(FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64.
       
 14363 +	* configure.in: Change powerpc-*-linux* into powerpc*-*-linux*.
       
 14364 +	* configure: Rebuilt.
       
 14365 +	* src/powerpc/ffi.c (hidden): Define.
       
 14366 +	(ffi_prep_args_SYSV): Renamed from
       
 14367 +	ffi_prep_args.  Cast pointers to unsigned long to shut up warnings.
       
 14368 +	(NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64,
       
 14369 +	ASM_NEEDS_REGISTERS64): New.
       
 14370 +	(ffi_prep_args64): New function.
       
 14371 +	(ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI.
       
 14372 +	(ffi_call): Likewise.
       
 14373 +	(ffi_prep_closure): Likewise.
       
 14374 +	(flush_icache): Surround by #ifndef POWERPC64.
       
 14375 +	(ffi_dblfl): New union type.
       
 14376 +	(ffi_closure_helper_SYSV): Use it to avoid aliasing problems.
       
 14377 +	(ffi_closure_helper_LINUX64): New function.
       
 14378 +	* src/powerpc/ppc_closure.S: Surround whole file by #ifndef
       
 14379 +	__powerpc64__.
       
 14380 +	* src/powerpc/sysv.S: Likewise.
       
 14381 +	(ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV.
       
 14382 +	* src/powerpc/linux64.S: New file.
       
 14383 +	* src/powerpc/linux64_closure.S: New file.
       
 14384 +	* Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and
       
 14385 +	src/powerpc/linux64_closure.S.
       
 14386 +	(TARGET_SRC_POWERPC): Likewise.
       
 14387 +
       
 14388 +	* src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2,
       
 14389 +	closure_test_fn3): Fix result printing on big-endian 64-bit
       
 14390 +	machines.
       
 14391 +	(main): Print tst2_arg instead of uninitialized tst2_result.
       
 14392 +
       
 14393 +	* src/ffitest.c (main): Hide what closure pointer really points to
       
 14394 +	from the compiler.
       
 14395 +
       
 14396 +2003-04-16  Richard Earnshaw  <rearnsha@arm.com>
       
 14397 +
       
 14398 +	* configure.in (arm-*-netbsdelf*): Add configuration.
       
 14399 +	(configure): Regenerated.
       
 14400 +
       
 14401 +2003-04-04  Loren J. Rittle  <ljrittle@acm.org>
       
 14402 +
       
 14403 +	* include/Makefile.in: Regenerate.
       
 14404 +
       
 14405 +2003-03-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
       
 14406 +
       
 14407 +	* libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32
       
 14408 +	bit mode.
       
 14409 +	* libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV):
       
 14410 +	Receive closure pointer through parameter, read args using
       
 14411 +	__builtin_dwarf_cfa.
       
 14412 +	(FFI_INIT_TRAMPOLINE): Send closure reference through eax.
       
 14413 +
       
 14414 +2003-03-12  Andreas Schwab  <schwab@suse.de>
       
 14415 +
       
 14416 +	* configure.in: Avoid trailing /. in toolexeclibdir.
       
 14417 +	* configure: Rebuilt.
       
 14418 +
       
 14419 +2003-03-03  Andreas Tobler <a.tobler@schweiz.ch>
       
 14420 +
       
 14421 +	* src/powerpc/darwin_closure.S: Recode to fit dynamic libraries.
       
 14422 +
       
 14423 +2003-02-06  Andreas Tobler <a.tobler@schweiz.ch>
       
 14424 +
       
 14425 +	* libffi/src/powerpc/darwin_closure.S:
       
 14426 +	Fix alignement bug, allocate 8 bytes for the result.
       
 14427 +	* libffi/src/powerpc/aix_closure.S:
       
 14428 +	Likewise.
       
 14429 +	* libffi/src/powerpc/ffi_darwin.c:
       
 14430 +	Update stackframe description for aix/darwin_closure.S.
       
 14431 +
       
 14432 +2003-02-06  Jakub Jelinek  <jakub@redhat.com>
       
 14433 +
       
 14434 +	* src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility
       
 14435 +	attribute.
       
 14436 +
       
 14437 +2003-01-31  Christian Cornelssen  <ccorn@cs.tu-berlin.de>,
       
 14438 +	    Andreas Schwab  <schwab@suse.de>
       
 14439 +
       
 14440 +	* configure.in: Adjust command to source config-ml.in to account
       
 14441 +	for changes to the libffi_basedir definition.
       
 14442 +	(libffi_basedir): Remove ${srcdir} from value and include trailing
       
 14443 +	slash if nonempty.
       
 14444 +
       
 14445 +	* configure: Regenerate.
       
 14446 +
       
 14447 +2003-01-29  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
       
 14448 +
       
 14449 +	* src/powerpc/ppc_closure.S: Recode to fit shared libs.
       
 14450 +
       
 14451 +2003-01-28  Andrew Haley  <aph@redhat.com>
       
 14452 +
       
 14453 +	* include/ffi.h.in: Enable FFI_CLOSURES for x86_64.
       
 14454 +	* src/x86/ffi64.c (ffi_prep_closure): New.
       
 14455 +	(ffi_closure_UNIX64_inner): New.
       
 14456 +	* src/x86/unix64.S (ffi_closure_UNIX64): New.
       
 14457 +
       
 14458 +2003-01-27  Alexandre Oliva  <aoliva@redhat.com>
       
 14459 +
       
 14460 +	* configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST.
       
 14461 +	Remove USE_LIBDIR conditional.
       
 14462 +	* Makefile.am (toolexecdir, toolexeclibdir): Don't override.
       
 14463 +	* Makefile.in, configure: Rebuilt.
       
 14464 +
       
 14465 +2003-01027  David Edelsohn  <edelsohn@gnu.org>
       
 14466 +
       
 14467 +	* Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo.
       
 14468 +	* Makefile.in: Regenerate.
       
 14469 +
       
 14470 +2003-01-22  Andrew Haley  <aph@redhat.com>
       
 14471 +
       
 14472 +	* src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to
       
 14473 +	unwind info.
       
 14474 +
       
 14475 +2003-01-21  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14476 +
       
 14477 +	* src/powerpc/darwin.S: Add unwind info.
       
 14478 +	* src/powerpc/darwin_closure.S: Likewise.
       
 14479 +
       
 14480 +2003-01-14  Andrew Haley  <aph@redhat.com>
       
 14481 +
       
 14482 +	* src/x86/ffi64.c (ffi_prep_args): Check for void retval.
       
 14483 +	(ffi_prep_cif_machdep): Likewise.
       
 14484 +	* src/x86/unix64.S: Add unwind info.
       
 14485 +
       
 14486 +2003-01-14  Andreas Jaeger  <aj@suse.de>
       
 14487 +
       
 14488 +	* src/ffitest.c (main): Only use ffi_closures if those are
       
 14489 +	supported.
       
 14490 +
       
 14491 +2003-01-13 Andreas Tobler <a.tobler@schweiz.ch>
       
 14492 +
       
 14493 +	* libffi/src/ffitest.c
       
 14494 +	 add closure testcases
       
 14495 +
       
 14496 +2003-01-13 Kevin B. Hendricks <khendricks@ivey.uwo.ca>
       
 14497 +
       
 14498 +	* libffi/src/powerpc/ffi.c
       
 14499 +	 fix alignment bug for float (4 byte aligned iso 8 byte)
       
 14500 +
       
 14501 +2003-01-09  Geoffrey Keating  <geoffk@apple.com>
       
 14502 +
       
 14503 +	* src/powerpc/ffi_darwin.c: Remove RCS version string.
       
 14504 +	* src/powerpc/darwin.S: Remove RCS version string.
       
 14505 +
       
 14506 +2003-01-03  Jeff Sturm  <jsturm@one-point.com>
       
 14507 +
       
 14508 +	* include/ffi.h.in: Add closure defines for SPARC, SPARC64.
       
 14509 +	* src/ffitest.c (main): Use static storage for closure.
       
 14510 +	* src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New.
       
 14511 +	* src/sparc/v8.S (ffi_closure_v8): New.
       
 14512 +	* src/sparc/v9.S (ffi_closure_v9): New.
       
 14513 +
       
 14514 +2002-11-10  Ranjit Mathew <rmathew@hotmail.com>
       
 14515 +
       
 14516 +	* include/ffi.h.in: Added FFI_STDCALL ffi_type
       
 14517 +	  enumeration for X86_WIN32.
       
 14518 +	* src/x86/win32.S: Added ffi_call_STDCALL function
       
 14519 +	  definition.
       
 14520 +	* src/x86/ffi.c (ffi_call/ffi_raw_call): Added
       
 14521 +	  switch cases for recognising FFI_STDCALL and
       
 14522 +	  calling ffi_call_STDCALL if target is X86_WIN32.
       
 14523 +	* src/ffitest.c (my_stdcall_strlen/stdcall_many):
       
 14524 +	  stdcall versions of the "my_strlen" and "many"
       
 14525 +	  test functions (for X86_WIN32).
       
 14526 +	  Added test cases to test stdcall invocation using
       
 14527 +	  these functions.
       
 14528 +
       
 14529 +2002-12-02  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 14530 +
       
 14531 +	* src/sh/sysv.S: Add DWARF2 unwind info.
       
 14532 +
       
 14533 +2002-11-27  Ulrich Weigand  <uweigand@de.ibm.com>
       
 14534 +
       
 14535 +	* src/s390/sysv.S (.eh_frame section): Make section read-only.
       
 14536 +
       
 14537 +2002-11-26  Jim Wilson  <wilson@redhat.com>
       
 14538 +
       
 14539 +	* src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64.
       
 14540 +
       
 14541 +2002-11-23  H.J. Lu <hjl@gnu.org>
       
 14542 +
       
 14543 +	* acinclude.m4: Add dummy AM_PROG_LIBTOOL.
       
 14544 +	Include ../config/accross.m4.
       
 14545 +	* aclocal.m4; Rebuild.
       
 14546 +	* configure: Likewise.
       
 14547 +
       
 14548 +2002-11-15  Ulrich Weigand  <uweigand@de.ibm.com>
       
 14549 +
       
 14550 +	* src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding.
       
 14551 +
       
 14552 +2002-11-11  DJ Delorie  <dj@redhat.com>
       
 14553 +
       
 14554 +	* configure.in: Look for common files in the right place.
       
 14555 +
       
 14556 +2002-10-08  Ulrich Weigand  <uweigand@de.ibm.com>
       
 14557 +
       
 14558 +	* src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret
       
 14559 +	raw data as _Jv_word values, not ffi_raw.
       
 14560 +	(ffi_java_ptrarray_to_raw): Likewise.
       
 14561 +	(ffi_java_rvalue_to_raw): New function.
       
 14562 +	(ffi_java_raw_call): Call it.
       
 14563 +	(ffi_java_raw_to_rvalue): New function.
       
 14564 +	(ffi_java_translate_args): Call it.
       
 14565 +	* src/ffitest.c (closure_test_fn): Interpret return value
       
 14566 +	as ffi_arg, not int.
       
 14567 +	* src/s390/ffi.c (ffi_prep_cif_machdep): Add missing
       
 14568 +	FFI_TYPE_POINTER case.
       
 14569 +	(ffi_closure_helper_SYSV): Likewise.  Also, assume return
       
 14570 +	values extended to word size.
       
 14571 +
       
 14572 +2002-10-02  Andreas Jaeger  <aj@suse.de>
       
 14573 +
       
 14574 +	* src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output.
       
 14575 +
       
 14576 +2002-10-01  Bo Thorsen  <bo@smetana.suse.de>
       
 14577 +
       
 14578 +	* include/ffi.h.in: Fix i386 win32 compilation.
       
 14579 +
       
 14580 +2002-09-30  Ulrich Weigand  <uweigand@de.ibm.com>
       
 14581 +
       
 14582 +	* configure.in: Add s390x-*-linux-* target.
       
 14583 +	* configure: Regenerate.
       
 14584 +	* include/ffi.h.in: Define S390X for s390x targets.
       
 14585 +	(FFI_CLOSURES): Define for s390/s390x.
       
 14586 +	(FFI_TRAMPOLINE_SIZE): Likewise.
       
 14587 +	(FFI_NATIVE_RAW_API): Likewise.
       
 14588 +	* src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390.
       
 14589 +	* src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x.
       
 14590 +	* src/s390/ffi.c: Major rework of existing code.  Add support for
       
 14591 +	s390x targets.  Add closure support.
       
 14592 +	* src/s390/sysv.S: Likewise.
       
 14593 +
       
 14594 +2002-09-29  Richard Earnshaw  <rearnsha@arm.com>
       
 14595 +
       
 14596 +	* src/arm/sysv.S: Fix typo.
       
 14597 +
       
 14598 +2002-09-28  Richard Earnshaw  <rearnsha@arm.com>
       
 14599 +
       
 14600 +	* src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor
       
 14601 +	has defined __USER_LABEL_PREFIX__, then use it in CNAME.
       
 14602 +	(ffi_call_SYSV): Handle soft-float.
       
 14603 +
       
 14604 +2002-09-27  Bo Thorsen  <bo@suse.de>
       
 14605 +
       
 14606 +	* include/ffi.h.in: Fix multilib x86-64 support.
       
 14607 +
       
 14608 +2002-09-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
       
 14609 +
       
 14610 +	* Makefile.am (all-multi): Fix multilib parallel build.
       
 14611 +
       
 14612 +2002-07-19  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 14613 +
       
 14614 +	* configure.in (sh[34]*-*-linux*): Add brackets.
       
 14615 +	* configure: Regenerate.
       
 14616 +
       
 14617 +2002-07-18  Kaz Kojima  <kkojima@gcc.gnu.org>
       
 14618 +
       
 14619 +	* Makefile.am: Add SH support.
       
 14620 +	* Makefile.in: Regenerate.
       
 14621 +	* configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target.
       
 14622 +	* configure: Regenerate.
       
 14623 +	* include/ffi.h.in: Add SH support.
       
 14624 +	* src/sh/ffi.c: New file.
       
 14625 +	* src/sh/sysv.S: New file.
       
 14626 +	* src/types.c: Add SH support.
       
 14627 +
       
 14628 +2002-07-16  Bo Thorsen  <bo@suse.de>
       
 14629 +
       
 14630 +	* src/x86/ffi64.c: New file that adds x86-64 support.
       
 14631 +	* src/x86/unix64.S: New file that handles argument setup for
       
 14632 +	x86-64.
       
 14633 +	* src/x86/sysv.S: Don't use this on x86-64.
       
 14634 +	* src/x86/ffi.c: Don't use this on x86-64.
       
 14635 +	Remove unused vars.
       
 14636 +	* src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation
       
 14637 +	for x86-64.
       
 14638 +	* src/ffitest.c (struct6): New test that tests a special case in
       
 14639 +	the x86-64 ABI.
       
 14640 +	(struct7): Likewise.
       
 14641 +	(struct8): Likewise.
       
 14642 +	(struct9): Likewise.
       
 14643 +	(closure_test_fn): Silence warning about this when it's not used.
       
 14644 +	(main): Add the new tests.
       
 14645 +	(main): Fix a couple of wrong casts and silence some compiler warnings.
       
 14646 +	* include/ffi.h.in: Add x86-64 ABI definition.
       
 14647 +	* fficonfig.h.in: Regenerate.
       
 14648 +	* Makefile.am: Add x86-64 support.
       
 14649 +	* configure.in: Likewise.
       
 14650 +	* Makefile.in: Regenerate.
       
 14651 +	* configure: Likewise.
       
 14652 +
       
 14653 +2002-06-24  Bo Thorsen  <bo@suse.de>
       
 14654 +
       
 14655 +	* src/types.c: Merge settings for similar architectures.
       
 14656 +	Add x86-64 sizes and alignments.
       
 14657 +
       
 14658 +2002-06-23  Bo Thorsen  <bo@suse.de>
       
 14659 +
       
 14660 +	* src/arm/ffi.c (ffi_prep_args): Remove unused vars.
       
 14661 +	* src/sparc/ffi.c (ffi_prep_args_v8): Likewise.
       
 14662 +	* src/mips/ffi.c (ffi_prep_args): Likewise.
       
 14663 +	* src/m68k/ffi.c (ffi_prep_args): Likewise.
       
 14664 +
       
 14665 +2002-07-18  H.J. Lu  (hjl@gnu.org)
       
 14666 +
       
 14667 +	* Makefile.am (TARGET_SRC_MIPS_LINUX): New.
       
 14668 +	(libffi_la_SOURCES): Support MIPS_LINUX.
       
 14669 +	(libffi_convenience_la_SOURCES): Likewise.
       
 14670 +	* Makefile.in: Regenerated.
       
 14671 +
       
 14672 +	* configure.in (mips64*-*): Skip.
       
 14673 +	(mips*-*-linux*): New.
       
 14674 +	* configure: Regenerated.
       
 14675 +
       
 14676 +	* src/mips/ffi.c: Include <sgidefs.h>.
       
 14677 +
       
 14678 +2002-06-06  Ulrich Weigand  <uweigand@de.ibm.com>
       
 14679 +
       
 14680 +	* src/s390/sysv.S: Save/restore %r6.  Add DWARF-2 unwind info.
       
 14681 +
       
 14682 +2002-05-27  Roger Sayle  <roger@eyesopen.com>
       
 14683 +
       
 14684 +	* src/x86/ffi.c (ffi_prep_args): Remove reference to avn.
       
 14685 +
       
 14686 +2002-05-27  Bo Thorsen  <bo@suse.de>
       
 14687 +
       
 14688 +	* src/x86/ffi.c (ffi_prep_args): Remove unused variable and
       
 14689 +	fix formatting.
       
 14690 +
       
 14691 +2002-05-13  Andreas Tobler  <a.tobler@schweiz.ch>
       
 14692 +
       
 14693 +	* src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at
       
 14694 +	beginning of function (for older apple cc).
       
 14695 +
       
 14696 +2002-05-08  Alexandre Oliva  <aoliva@redhat.com>
       
 14697 +
       
 14698 +	* configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
       
 14699 +	script entry, and set LD to it when configuring multilibs.
       
 14700 +	* configure: Rebuilt.
       
 14701 +
       
 14702 +2002-05-05  Jason Thorpe  <thorpej@wasabisystems.com>
       
 14703 +
       
 14704 +	* configure.in (sparc64-*-netbsd*): Add target.
       
 14705 +	(sparc-*-netbsdelf*): Likewise.
       
 14706 +	* configure: Regenerate.
       
 14707 +
       
 14708 +2002-04-28  David S. Miller  <davem@redhat.com>
       
 14709 +
       
 14710 +	* configure.in, configure: Fix SPARC test in previous change.
       
 14711 +
       
 14712 +2002-04-29  Gerhard Tonn  <GerhardTonn@swol.de>
       
 14713 +
       
 14714 +	* Makefile.am: Add Linux for S/390 support.
       
 14715 +	* Makefile.in: Regenerate.
       
 14716 +	* configure.in: Add Linux for S/390 support.
       
 14717 +	* configure: Regenerate.
       
 14718 +	* include/ffi.h.in: Add Linux for S/390 support.
       
 14719 +	* src/s390/ffi.c: New file from libffi CVS tree.
       
 14720 +	* src/s390/sysv.S: New file from libffi CVS tree.
       
 14721 +
       
 14722 +2002-04-28  Jakub Jelinek  <jakub@redhat.com>
       
 14723 +
       
 14724 +	* configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working
       
 14725 +	%r_disp32().
       
 14726 +	* src/sparc/v8.S: Use it.
       
 14727 +	* src/sparc/v9.S: Likewise.
       
 14728 +	* fficonfig.h.in: Rebuilt.
       
 14729 +	* configure: Rebuilt.
       
 14730 +
       
 14731 +2002-04-08  Hans Boehm  <Hans_Boehm@hp.com>
       
 14732 +
       
 14733 +	* src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE
       
 14734 +	correctly.
       
 14735 +	* src/ia64/unix.S: Add unwind information. Fix comments.
       
 14736 +	Save sp in a way that's compatible with unwind info.
       
 14737 +	(ffi_call_unix): Correctly restore sp in all cases.
       
 14738 +	* src/ia64/ffi.c: Add, fix comments.
       
 14739 +
       
 14740 +2002-04-08  Jakub Jelinek  <jakub@redhat.com>
       
 14741 +
       
 14742 +	* src/sparc/v8.S: Make .eh_frame dependent on target word size.
       
 14743 +
       
 14744 +2002-04-06  Jason Thorpe  <thorpej@wasabisystems.com>
       
 14745 +
       
 14746 +	* configure.in (alpha*-*-netbsd*): Add target.
       
 14747 +	* configure: Regenerate.
       
 14748 +
       
 14749 +2002-04-04  Jeff Sturm  <jsturm@one-point.com>
       
 14750 +
       
 14751 +	* src/sparc/v8.S: Add unwind info.
       
 14752 +	* src/sparc/v9.S: Likewise.
       
 14753 +
       
 14754 +2002-03-30  Krister Walfridsson  <cato@df.lth.se>
       
 14755 +
       
 14756 +	* configure.in: Enable i*86-*-netbsdelf*.
       
 14757 +	* configure: Rebuilt.
       
 14758 +
       
 14759 +2002-03-29  David Billinghurst <David.Billinghurst@riotinto.com>
       
 14760 +
       
 14761 +	PR other/2620
       
 14762 +	* src/mips/n32.s: Delete
       
 14763 +	* src/mips/o32.s: Delete
       
 14764 +
       
 14765 +2002-03-21  Loren J. Rittle  <ljrittle@acm.org>
       
 14766 +
       
 14767 +	* configure.in: Enable alpha*-*-freebsd*.
       
 14768 +	* configure: Rebuilt.
       
 14769 +
       
 14770 +2002-03-17  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
       
 14771 +
       
 14772 +	* Makefile.am: libfficonvenience -> libffi_convenience.
       
 14773 +	* Makefile.in: Rebuilt.
       
 14774 +
       
 14775 +	* Makefile.am: Define ffitest_OBJECTS.
       
 14776 +	* Makefile.in: Rebuilt.
       
 14777 +
       
 14778 +2002-03-07  Andreas Tobler  <toa@pop.agri.ch>
       
 14779 +	    David Edelsohn  <edelsohn@gnu.org>
       
 14780 +
       
 14781 +	* Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files.
       
 14782 +	(TARGET_SRC_POWERPC_AIX): Add aix_closure.S.
       
 14783 +	(TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S.
       
 14784 +	* Makefile.in: Regenerate.
       
 14785 +	* include/ffi.h.in: Add AIX and Darwin closure definitions.
       
 14786 +	* src/powerpc/ffi_darwin.c (ffi_prep_closure): New function.
       
 14787 +	(flush_icache, flush_range): New functions.
       
 14788 +	(ffi_closure_helper_DARWIN): New function.
       
 14789 +	* src/powerpc/aix_closure.S: New file.
       
 14790 +	* src/powerpc/darwin_closure.S: New file.
       
 14791 +
       
 14792 +2002-02-24  Jeff Sturm  <jsturm@one-point.com>
       
 14793 +
       
 14794 +	* include/ffi.h.in: Add typedef for ffi_arg.
       
 14795 +	* src/ffitest.c (main): Declare rint with ffi_arg.
       
 14796 +
       
 14797 +2002-02-21  Andreas Tobler  <toa@pop.agri.ch>
       
 14798 +
       
 14799 +	* src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate
       
 14800 +	number of GPRs for floating-point arguments.
       
 14801 +
       
 14802 +2002-01-31  Anthony Green  <green@redhat.com>
       
 14803 +
       
 14804 +	* configure: Rebuilt.
       
 14805 +	* configure.in: Replace CHECK_SIZEOF and endian tests with
       
 14806 +	cross-compiler friendly macros.
       
 14807 +	* aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New
       
 14808 +	macros.
       
 14809 +
       
 14810 +2002-01-18  David Edelsohn  <edelsohn@gnu.org>
       
 14811 +
       
 14812 +	* src/powerpc/darwin.S (_ffi_call_AIX): New.
       
 14813 +	* src/powerpc/aix.S (ffi_call_DARWIN): New.
       
 14814 +
       
 14815 +2002-01-17  David Edelsohn  <edelsohn@gnu.org>
       
 14816 +
       
 14817 +	* Makefile.am (EXTRA_DIST): Add Darwin and AIX files.
       
 14818 +	(TARGET_SRC_POWERPC_AIX): New.
       
 14819 +	(POWERPC_AIX): New stanza.
       
 14820 +	* Makefile.in: Regenerate.
       
 14821 +	* configure.in: Add AIX case.
       
 14822 +	* configure: Regenerate.
       
 14823 +	* include/ffi.h.in (ffi_abi): Add FFI_AIX.
       
 14824 +	* src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame
       
 14825 +	size.  Fix "long double" support.
       
 14826 +	(ffi_call): Add FFI_AIX case.
       
 14827 +	* src/powerpc/aix.S: New.
       
 14828 +
       
 14829 +2001-10-09  John Hornkvist  <john@toastedmarshmallow.com>
       
 14830 +
       
 14831 +	Implement Darwin PowerPC ABI.
       
 14832 +	* configure.in: Handle powerpc-*-darwin*.
       
 14833 +	* Makefile.am: Set source files for POWERPC_DARWIN.
       
 14834 +	* configure: Rebuilt.
       
 14835 +	* Makefile.in: Rebuilt.
       
 14836 +	* include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for
       
 14837 +	POWERPC_DARWIN.
       
 14838 +	* src/powerpc/darwin.S: New file.
       
 14839 +	* src/powerpc/ffi_darwin.c: New file.
       
 14840 +
       
 14841 +2001-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
       
 14842 +
       
 14843 +	* src/x86/ffi.c: Fix spelling error of "separate" as "seperate".
       
 14844 +
       
 14845 +2001-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 14846 +
       
 14847 +	* src/x86/sysv.S: Avoid gas-only .balign directive.
       
 14848 +	Use C style comments.
       
 14849 +
       
 14850 +2001-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 14851 +
       
 14852 +	* src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic.
       
 14853 +	Fixes PR bootstrap/3563.
       
 14854 +
       
 14855 +2001-06-26  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 14856 +
       
 14857 +	* src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF.
       
 14858 +
       
 14859 +2001-06-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
       
 14860 +
       
 14861 +	* configure.in: Recognize sparc*-sun-* host.
       
 14862 +	* configure: Regenerate.
       
 14863 +
       
 14864 +2001-06-06  Andrew Haley  <aph@redhat.com>
       
 14865 +
       
 14866 +	* src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF.
       
 14867 +
       
 14868 +2001-06-03  Andrew Haley  <aph@redhat.com>
       
 14869 +
       
 14870 +	* src/alpha/osf.S: Add unwind info.
       
 14871 +	* src/powerpc/sysv.S: Add unwind info.
       
 14872 +	* src/powerpc/ppc_closure.S: Likewise.
       
 14873 +
       
 14874 +2000-05-31  Jeff Sturm  <jsturm@one-point.com>
       
 14875 +
       
 14876 +	* configure.in: Fix AC_ARG_ENABLE usage.
       
 14877 +	* configure: Rebuilt.
       
 14878 +
       
 14879 +2001-05-06  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
       
 14880 +
       
 14881 +	* configure.in: Remove warning about beta code.
       
 14882 +	* configure: Rebuilt.
       
 14883 +
       
 14884 +2001-04-25  Hans Boehm <Hans_Boehm@hp.com>
       
 14885 +
       
 14886 +	* src/ia64/unix.S: Restore stack pointer when returning from
       
 14887 +	ffi_closure_UNIX.
       
 14888 +	* src/ia64/ffi.c: Fix typo in comment.
       
 14889 +
       
 14890 +2001-04-18  Jim Wilson  <wilson@redhat.com>
       
 14891 +
       
 14892 +	* src/ia64/unix.S: Delete unnecessary increment and decrement of loc2
       
 14893 +	to eliminate RAW DV.
       
 14894 +
       
 14895 +2001-04-12  Bryce McKinlay  <bryce@albatross.co.nz>
       
 14896 +
       
 14897 +	* Makefile.am: Make a libtool convenience library.
       
 14898 +	* Makefile.in: Rebuilt.
       
 14899 +
       
 14900 +2001-03-29  Bryce McKinlay  <bryce@albatross.co.nz>
       
 14901 +
       
 14902 +	* configure.in: Use different syntax for subdirectory creation.
       
 14903 +	* configure: Rebuilt.
       
 14904 +
       
 14905 +2001-03-27  Jon Beniston  <jon@beniston.com>
       
 14906 +
       
 14907 +	* configure.in: Added X86_WIN32 target (Win32, CygWin, MingW).
       
 14908 +	* configure: Rebuilt.
       
 14909 +	* Makefile.am: Added X86_WIN32 target support.
       
 14910 +	* Makefile.in: Rebuilt.
       
 14911 +
       
 14912 +	* include/ffi.h.in: Added X86_WIN32 target support.
       
 14913 +
       
 14914 +	* src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets.
       
 14915 +	* src/types.c: Added X86_WIN32 target support.
       
 14916 +
       
 14917 +	* src/x86/win32.S: New file. Based on sysv.S, but with EH
       
 14918 +	stuff removed and made to work with CygWin's gas.
       
 14919 +
       
 14920 +2001-03-26  Bryce McKinlay  <bryce@albatross.co.nz>
       
 14921 +
       
 14922 +	* configure.in: Make target subdirectory in build dir.
       
 14923 +	* Makefile.am: Override suffix based rules to specify correct output
       
 14924 +	subdirectory.
       
 14925 +	* Makefile.in: Rebuilt.
       
 14926 +	* configure: Rebuilt.
       
 14927 +
       
 14928 +2001-03-23  Kevin B Hendricks  <khendricks@ivey.uwo.ca>
       
 14929 +
       
 14930 +	* src/powerpc/ppc_closure.S: New file.
       
 14931 +	* src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug
       
 14932 +	involving long long and register pairs.
       
 14933 +	(ffi_prep_closure): New function.
       
 14934 +	(flush_icache): Likewise.
       
 14935 +	(ffi_closure_helper_SYSV): Likewise.
       
 14936 +	* include/ffi.h.in (FFI_CLOSURES): Define on PPC.
       
 14937 +	(FFI_TRAMPOLINE_SIZE): Likewise.
       
 14938 +	(FFI_NATIVE_RAW_API): Likewise.
       
 14939 +	* Makefile.in: Rebuilt.
       
 14940 +	* Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S.
       
 14941 +	(TARGET_SRC_POWERPC): Likewise.
       
 14942 +
       
 14943 +2001-03-19  Tom Tromey  <tromey@redhat.com>
       
 14944 +
       
 14945 +	* Makefile.in: Rebuilt.
       
 14946 +	* Makefile.am (ffitest_LDFLAGS): New macro.
       
 14947 +
       
 14948 +2001-03-02  Nick Clifton  <nickc@redhat.com>
       
 14949 +
       
 14950 +	* include/ffi.h.in: Remove RCS ident string.
       
 14951 +	* include/ffi_mips.h: Remove RCS ident string.
       
 14952 +	* src/debug.c: Remove RCS ident string.
       
 14953 +	* src/ffitest.c: Remove RCS ident string.
       
 14954 +	* src/prep_cif.c: Remove RCS ident string.
       
 14955 +	* src/types.c: Remove RCS ident string.
       
 14956 +	* src/alpha/ffi.c: Remove RCS ident string.
       
 14957 +	* src/alpha/osf.S: Remove RCS ident string.
       
 14958 +	* src/arm/ffi.c: Remove RCS ident string.
       
 14959 +	* src/arm/sysv.S: Remove RCS ident string.
       
 14960 +	* src/mips/ffi.c: Remove RCS ident string.
       
 14961 +	* src/mips/n32.S: Remove RCS ident string.
       
 14962 +	* src/mips/o32.S: Remove RCS ident string.
       
 14963 +	* src/sparc/ffi.c: Remove RCS ident string.
       
 14964 +	* src/sparc/v8.S: Remove RCS ident string.
       
 14965 +	* src/sparc/v9.S: Remove RCS ident string.
       
 14966 +	* src/x86/ffi.c: Remove RCS ident string.
       
 14967 +	* src/x86/sysv.S: Remove RCS ident string.
       
 14968 +
       
 14969 +2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
       
 14970 +
       
 14971 +	* include/ffi.h.in: Change sourceware.cygnus.com references to
       
 14972 +	gcc.gnu.org.
       
 14973 +
       
 14974 +2000-12-09  Richard Henderson  <rth@redhat.com>
       
 14975 +
       
 14976 +	* src/alpha/ffi.c (ffi_call): Simplify struct return test.
       
 14977 +	(ffi_closure_osf_inner): Index rather than increment avalue
       
 14978 +	and arg_types.  Give ffi_closure_osf the raw return value type.
       
 14979 +	* src/alpha/osf.S (ffi_closure_osf): Handle return value type
       
 14980 +	promotion.
       
 14981 +
       
 14982 +2000-12-07  Richard Henderson  <rth@redhat.com>
       
 14983 +
       
 14984 +	* src/raw_api.c (ffi_translate_args): Fix typo.
       
 14985 +	(ffi_prep_closure): Likewise.
       
 14986 +
       
 14987 +	* include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and
       
 14988 +	FFI_TRAMPOLINE_SIZE.
       
 14989 +	* src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal
       
 14990 +	cif->bytes for new ffi_call_osf implementation.
       
 14991 +	(ffi_prep_args): Absorb into ...
       
 14992 +	(ffi_call): ... here.  Do all stack allocation here and
       
 14993 +	avoid a callback function.
       
 14994 +	(ffi_prep_closure, ffi_closure_osf_inner): New.
       
 14995 +	* src/alpha/osf.S (ffi_call_osf): Reimplement with no callback.
       
 14996 +	(ffi_closure_osf): New.
       
 14997 +
       
 14998 +2000-09-10  Alexandre Oliva  <aoliva@redhat.com>
       
 14999 +
       
 15000 +	* config.guess, config.sub, install-sh: Removed.
       
 15001 +	* ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise.
       
 15002 +	* Makefile.in: Rebuilt.
       
 15003 +
       
 15004 +	* acinclude.m4: Include libtool macros from the top level.
       
 15005 +	* aclocal.m4, configure: Rebuilt.
       
 15006 +
       
 15007 +2000-08-22  Alexandre Oliva  <aoliva@redhat.com>
       
 15008 +
       
 15009 +	* configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set.
       
 15010 +	* configure: Rebuilt.
       
 15011 +
       
 15012 +2000-05-11  Scott Bambrough  <scottb@netwinder.org>
       
 15013 +
       
 15014 +	* libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to
       
 15015 +	memory correctly.  Use conditional instructions, not branches where
       
 15016 +	possible.
       
 15017 +
       
 15018 +2000-05-04  Tom Tromey  <tromey@cygnus.com>
       
 15019 +
       
 15020 +	* configure: Rebuilt.
       
 15021 +	* configure.in: Match `arm*-*-linux-*'.
       
 15022 +	From Chris Dornan <cdornan@arm.com>.
       
 15023 +
       
 15024 +2000-04-28  Jakub Jelinek  <jakub@redhat.com>
       
 15025 +
       
 15026 +	* Makefile.am (SUBDIRS): Define.
       
 15027 +	(AM_MAKEFLAGS): Likewise.
       
 15028 +	(Multilib support.): Add section.
       
 15029 +	* Makefile.in: Rebuilt.
       
 15030 +	* ltconfig (extra_compiler_flags, extra_compiler_flags_value):
       
 15031 +	New variables. Set for gcc using -print-multi-lib. Export them
       
 15032 +	to libtool.
       
 15033 +	(sparc64-*-linux-gnu*): Use libsuff 64 for search paths.
       
 15034 +	* ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options
       
 15035 +	for -shared links.
       
 15036 +	(extra_compiler_flags_value, extra_compiler_flags): Check these
       
 15037 +	for extra compiler options which need to be passed down in
       
 15038 +	compiler_flags.
       
 15039 +
       
 15040 +2000-04-16  Anthony Green  <green@redhat.com>
       
 15041 +
       
 15042 +	* configure: Rebuilt.
       
 15043 +	* configure.in: Change i*86-pc-linux* to i*86-*-linux*.
       
 15044 +
       
 15045 +2000-04-14  Jakub Jelinek  <jakub@redhat.com>
       
 15046 +
       
 15047 +	* include/ffi.h.in (SPARC64): Define for 64bit SPARC builds.
       
 15048 +	Set SPARC FFI_DEFAULT_ABI based on SPARC64 define.
       
 15049 +	* src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args.
       
 15050 +	Replace all void * sizeofs with sizeof(int).
       
 15051 +	Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is
       
 15052 +	different than DOUBLE.
       
 15053 +	Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere).
       
 15054 +	(ffi_prep_args_v9): New function.
       
 15055 +	(ffi_prep_cif_machdep): Handle V9 ABI and long long on V8.
       
 15056 +	(ffi_V9_return_struct): New function.
       
 15057 +	(ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from
       
 15058 +	32bit code (not yet cross-arch calls).
       
 15059 +	* src/sparc/v8.S: Add struct return delay nop.
       
 15060 +	Handle long long.
       
 15061 +	* src/sparc/v9.S: New file.
       
 15062 +	* src/prep_cif.c (ffi_prep_cif): Return structure pointer
       
 15063 +	is used on sparc64 only for structures larger than 32 bytes.
       
 15064 +	Pass by reference for structures is done for structure arguments
       
 15065 +	larger than 16 bytes.
       
 15066 +	* src/ffitest.c (main): Use 64bit rint on sparc64.
       
 15067 +	Run long long tests on sparc.
       
 15068 +	* src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and
       
 15069 +	sparc64.
       
 15070 +	(FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits
       
 15071 +	on sparc64.
       
 15072 +	* configure.in (sparc-*-linux*): New supported target.
       
 15073 +	(sparc64-*-linux*): Likewise.
       
 15074 +	* configure: Rebuilt.
       
 15075 +	* Makefile.am: Add v9.S to SPARC files.
       
 15076 +	* Makefile.in: Likewise.
       
 15077 +	(LINK): Surround $(CCLD) into double quotes, so that multilib
       
 15078 +	compiles work correctly.
       
 15079 +
       
 15080 +2000-04-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
       
 15081 +
       
 15082 +	* configure: Rebuilt.
       
 15083 +	* configure.in: (i*86-*-solaris*): New libffi target. Patch
       
 15084 +	proposed by Bryce McKinlay.
       
 15085 +
       
 15086 +2000-03-20  Tom Tromey  <tromey@cygnus.com>
       
 15087 +
       
 15088 +	* Makefile.in: Hand edit for java_raw_api.lo.
       
 15089 +
       
 15090 +2000-03-08  Bryce McKinlay  <bryce@albatross.co.nz>
       
 15091 +
       
 15092 +	* config.guess, config.sub: Update from the gcc tree.
       
 15093 +	Fix for PR libgcj/168.
       
 15094 +
       
 15095 +2000-03-03  Tom Tromey  <tromey@cygnus.com>
       
 15096 +
       
 15097 +	* Makefile.in: Fixed ia64 by hand.
       
 15098 +
       
 15099 +	* configure: Rebuilt.
       
 15100 +	* configure.in (--enable-multilib): New option.
       
 15101 +	(libffi_basedir): New subst.
       
 15102 +	(AC_OUTPUT): Added multilib code.
       
 15103 +
       
 15104 +2000-03-02  Tom Tromey  <tromey@cygnus.com>
       
 15105 +
       
 15106 +	* Makefile.in: Rebuilt.
       
 15107 +	* Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as
       
 15108 +	directory name.
       
 15109 +
       
 15110 +2000-02-25  Hans Boehm <boehm@acm.org>
       
 15111 +
       
 15112 +	* src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New
       
 15113 +	files.
       
 15114 +	* src/raw_api.c (ffi_translate_args): Fixed typo in argument
       
 15115 +	list.
       
 15116 +	(ffi_prep_raw_closure): Use ffi_translate_args, not
       
 15117 +	ffi_closure_translate.
       
 15118 +	* src/java_raw_api.c: New file.
       
 15119 +	* src/ffitest.c (closure_test_fn): New function.
       
 15120 +	(main): Define `rint' as long long on IA64.  Added new test when
       
 15121 +	FFI_CLOSURES is defined.
       
 15122 +	* include/ffi.h.in (ALIGN): Use size_t, not unsigned.
       
 15123 +	(ffi_abi): Recognize IA64.
       
 15124 +	(ffi_raw): Added `flt' field.
       
 15125 +	Added "Java raw API" code.
       
 15126 +	* configure.in: Recognize ia64.
       
 15127 +	* Makefile.am (TARGET_SRC_IA64): New macro.
       
 15128 +	(libffi_la_common_SOURCES): Added java_raw_api.c.
       
 15129 +	(libffi_la_SOURCES): Define in IA64 case.
       
 15130 +
       
 15131 +2000-01-04  Tom Tromey  <tromey@cygnus.com>
       
 15132 +
       
 15133 +	* Makefile.in: Rebuilt with newer automake.
       
 15134 +
       
 15135 +1999-12-31  Tom Tromey  <tromey@cygnus.com>
       
 15136 +
       
 15137 +	* Makefile.am (INCLUDES): Added -I$(top_srcdir)/src.
       
 15138 +
       
 15139 +1999-09-01  Tom Tromey  <tromey@cygnus.com>
       
 15140 +
       
 15141 +	* include/ffi.h.in: Removed PACKAGE and VERSION defines and
       
 15142 +	undefs.
       
 15143 +	* fficonfig.h.in: Rebuilt.
       
 15144 +	* configure: Rebuilt.
       
 15145 +	* configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE.
       
 15146 +	Use AM_PROG_LIBTOOL (automake 1.4 compatibility).
       
 15147 +	* acconfig.h: Don't #undef PACKAGE or VERSION.
       
 15148 +
       
 15149 +1999-08-09  Anthony Green  <green@cygnus.com>
       
 15150 +
       
 15151 +	* include/ffi.h.in: Try to work around messy header problem
       
 15152 +	with PACKAGE and VERSION.
       
 15153 +
       
 15154 +	* configure: Rebuilt.
       
 15155 +	* configure.in: Change version to 2.00-beta.
       
 15156 +
       
 15157 +	* fficonfig.h.in: Rebuilt.
       
 15158 +	* acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define.
       
 15159 +
       
 15160 +	* src/x86/ffi.c (ffi_raw_call): Rename.
       
 15161 +
       
 15162 +1999-08-02  Kresten Krab Thorup  <krab@dominiq.is.s.u-tokyo.ac.jp>
       
 15163 +
       
 15164 +	* src/x86/ffi.c (ffi_closure_SYSV): New function.
       
 15165 +	(ffi_prep_incoming_args_SYSV): Ditto.
       
 15166 +	(ffi_prep_closure): Ditto.
       
 15167 +	(ffi_closure_raw_SYSV): Ditto.
       
 15168 +	(ffi_prep_raw_closure): More ditto.
       
 15169 +	(ffi_call_raw): Final ditto.
       
 15170 +
       
 15171 +	* include/ffi.h.in: Add definitions for closure and raw API.
       
 15172 +
       
 15173 +	* src/x86/ffi.c (ffi_prep_cif_machdep): Added case for
       
 15174 +	FFI_TYPE_UINT64.
       
 15175 +
       
 15176 +	* Makefile.am (libffi_la_common_SOURCES): Added raw_api.c
       
 15177 +
       
 15178 +	* src/raw_api.c: New file.
       
 15179 +
       
 15180 +	* include/ffi.h.in (ffi_raw): New type.
       
 15181 +	(UINT_ARG, SINT_ARG): New defines.
       
 15182 +	(ffi_closure, ffi_raw_closure): New types.
       
 15183 +	(ffi_prep_closure, ffi_prep_raw_closure): New declarations.
       
 15184 +
       
 15185 +	* configure.in: Add check for endianness and sizeof void*.
       
 15186 +
       
 15187 +	* src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument,
       
 15188 +	instead of directly.
       
 15189 +
       
 15190 +	* configure: Rebuilt.
       
 15191 +
       
 15192 +Thu Jul  8 14:28:42 1999  Anthony Green  <green@cygnus.com>
       
 15193 +
       
 15194 +	* configure.in: Add x86 and powerpc BeOS configurations.
       
 15195 +	From Makoto Kato <m_kato@ga2.so-net.ne.jp>.
       
 15196 +
       
 15197 +1999-05-09  Anthony Green  <green@cygnus.com>
       
 15198 +
       
 15199 +	* configure.in: Add warning about this being beta code.
       
 15200 +	Remove src/Makefile.am from the picture.
       
 15201 +	* configure: Rebuilt.
       
 15202 +
       
 15203 +	* Makefile.am: Move logic from src/Makefile.am.  Add changes
       
 15204 +	to support libffi as a target library.
       
 15205 +	* Makefile.in: Rebuilt.
       
 15206 +
       
 15207 +	* aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh:
       
 15208 +	Upgraded to new autoconf, automake, libtool.
       
 15209 +
       
 15210 +	* README: Tweaks.
       
 15211 +
       
 15212 +	* LICENSE: Update copyright date.
       
 15213 +
       
 15214 +	* src/Makefile.am, src/Makefile.in: Removed.
       
 15215 +
       
 15216 +1998-11-29  Anthony Green  <green@cygnus.com>
       
 15217 +
       
 15218 +	* include/ChangeLog: Removed.
       
 15219 +	* src/ChangeLog: Removed.
       
 15220 +	* src/mips/ChangeLog: Removed.
       
 15221 +	* src/sparc/ChangeLog: Remboved.
       
 15222 +	* src/x86/ChangeLog: Removed.
       
 15223 +
       
 15224 +	* ChangeLog.v1: Created.
       
 15225 diff --git a/js/src/ctypes/libffi/ChangeLog.v1 b/js/src/ctypes/libffi/ChangeLog.v1
       
 15226 --- a/js/src/ctypes/libffi/ChangeLog.v1
       
 15227 +++ b/js/src/ctypes/libffi/ChangeLog.v1
       
 15228 @@ -1,13 +1,13 @@
       
 15229  The libffi version 1 ChangeLog archive.
       
 15230  
       
 15231  Version 1 of libffi had per-directory ChangeLogs.  Current and future
       
 15232  versions have a single ChangeLog file in the root directory.  The
       
 15233 -version 1 ChangeLogs have all been concatonated into this file for
       
 15234 +version 1 ChangeLogs have all been concatenated into this file for
       
 15235  future reference only.
       
 15236  
       
 15237  --- libffi ----------------------------------------------------------------
       
 15238  
       
 15239  Mon Oct  5 02:17:50 1998  Anthony Green  <green@cygnus.com>
       
 15240  
       
 15241  	* configure.in: Boosted rev.
       
 15242  	* configure, Makefile.in, aclocal.m4: Rebuilt.
       
 15243 diff --git a/js/src/ctypes/libffi/LICENSE b/js/src/ctypes/libffi/LICENSE
       
 15244 --- a/js/src/ctypes/libffi/LICENSE
       
 15245 +++ b/js/src/ctypes/libffi/LICENSE
       
 15246 @@ -1,21 +1,21 @@
       
 15247 -libffi - Copyright (c) 1996-2009  Anthony Green, Red Hat, Inc and others.  
       
 15248 +libffi - Copyright (c) 1996-2014  Anthony Green, Red Hat, Inc and others.
       
 15249  See source files for details.
       
 15250  
       
 15251  Permission is hereby granted, free of charge, to any person obtaining
       
 15252  a copy of this software and associated documentation files (the
       
 15253  ``Software''), to deal in the Software without restriction, including
       
 15254  without limitation the rights to use, copy, modify, merge, publish,
       
 15255  distribute, sublicense, and/or sell copies of the Software, and to
       
 15256  permit persons to whom the Software is furnished to do so, subject to
       
 15257  the following conditions:
       
 15258  
       
 15259 -The above copyright notice and this permission notice shall be included
       
 15260 -in all copies or substantial portions of the Software.
       
 15261 +The above copyright notice and this permission notice shall be
       
 15262 +included in all copies or substantial portions of the Software.
       
 15263  
       
 15264  THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 15265  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 15266  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 15267  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 15268  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 15269  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 15270  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
 15271 diff --git a/js/src/ctypes/libffi/Makefile.am b/js/src/ctypes/libffi/Makefile.am
       
 15272 --- a/js/src/ctypes/libffi/Makefile.am
       
 15273 +++ b/js/src/ctypes/libffi/Makefile.am
       
 15274 @@ -1,165 +1,212 @@
       
 15275  ## Process this with automake to create Makefile.in
       
 15276  
       
 15277  AUTOMAKE_OPTIONS = foreign subdir-objects
       
 15278  
       
 15279 +ACLOCAL_AMFLAGS = -I m4
       
 15280 +
       
 15281  SUBDIRS = include testsuite man
       
 15282  
       
 15283 -EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
       
 15284 -	src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
       
 15285 -	src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \
       
 15286 -	src/avr32/ffi.c src/avr32/sysv.S src/avr32/ffitarget.h \
       
 15287 -	src/cris/ffi.c src/cris/sysv.S src/cris/ffitarget.h \
       
 15288 -	src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h \
       
 15289 -	src/ia64/unix.S \
       
 15290 -	src/mips/ffi.c src/mips/n32.S src/mips/o32.S \
       
 15291 -	src/mips/ffitarget.h \
       
 15292 -	src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \
       
 15293 -	src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \
       
 15294 -	src/powerpc/ffi.c src/powerpc/sysv.S \
       
 15295 -	src/powerpc/linux64.S src/powerpc/linux64_closure.S \
       
 15296 -	src/powerpc/ppc_closure.S src/powerpc/asm.h \
       
 15297 -	src/powerpc/aix.S src/powerpc/darwin.S \
       
 15298 -	src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \
       
 15299 -	src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \
       
 15300 -	src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \
       
 15301 -	src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h \
       
 15302 -	src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \
       
 15303 -	src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \
       
 15304 -	src/sparc/ffi.c src/x86/darwin64.S \
       
 15305 -	src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/win64.S \
       
 15306 -	src/x86/darwin.S src/x86/freebsd.S \
       
 15307 -	src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \
       
 15308 -	src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
       
 15309 -	src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \
       
 15310 -	libtool-version ChangeLog.libffi m4/libtool.m4 \
       
 15311 -	m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
       
 15312 +EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj			\
       
 15313 +	 src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S	\
       
 15314 +	 src/alpha/ffi.c src/alpha/osf.S			\
       
 15315 +	 src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S	\
       
 15316 +	 src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S		\
       
 15317 +	 src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S		\
       
 15318 +	 src/avr32/ffitarget.h src/cris/ffi.c src/cris/sysv.S		\
       
 15319 +	 src/cris/ffitarget.h src/ia64/ffi.c src/ia64/ffitarget.h	\
       
 15320 +	 src/ia64/ia64_flags.h src/ia64/unix.S src/mips/ffi.c		\
       
 15321 +	 src/mips/n32.S src/mips/o32.S src/metag/ffi.c			\
       
 15322 +	 src/metag/ffitarget.h src/metag/sysv.S src/moxie/ffi.c		\
       
 15323 +	 src/moxie/ffitarget.h src/moxie/eabi.S src/mips/ffitarget.h	\
       
 15324 +	 src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h		\
       
 15325 +	 src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h		\
       
 15326 +	 src/m88k/ffi.c src/m88k/obsd.S src/m88k/ffitarget.h		\
       
 15327 +	 src/microblaze/ffi.c src/microblaze/sysv.S			\
       
 15328 +	 src/microblaze/ffitarget.h					\
       
 15329 +	 src/nios2/ffi.c src/nios2/ffitarget.h src/nios2/sysv.S		\
       
 15330 +	 src/powerpc/ffi.c src/powerpc/ffi_powerpc.h			\
       
 15331 +	 src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c		\
       
 15332 +	 src/powerpc/sysv.S src/powerpc/linux64.S			\
       
 15333 +	 src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S	\
       
 15334 +	 src/powerpc/asm.h src/powerpc/aix.S src/powerpc/darwin.S	\
       
 15335 +	 src/powerpc/aix_closure.S src/powerpc/darwin_closure.S		\
       
 15336 +	 src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h		\
       
 15337 +	 src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h		\
       
 15338 +	 src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/sh64/ffi.c	\
       
 15339 +	 src/sh64/sysv.S src/sh64/ffitarget.h src/sparc/v8.S		\
       
 15340 +	 src/sparc/v9.S src/sparc/ffitarget.h src/sparc/ffi.c		\
       
 15341 +	 src/x86/darwin64.S src/x86/ffi.c src/x86/sysv.S		\
       
 15342 +	 src/x86/win32.S src/x86/darwin.S src/x86/win64.S		\
       
 15343 +	 src/x86/freebsd.S src/x86/ffi64.c src/x86/unix64.S		\
       
 15344 +	 src/x86/ffitarget.h src/pa/ffitarget.h src/pa/ffi.c		\
       
 15345 +	 src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c src/bfin/ffi.c	\
       
 15346 +	 src/bfin/ffitarget.h src/bfin/sysv.S src/frv/eabi.S		\
       
 15347 +	 src/frv/ffitarget.h src/dlmalloc.c src/tile/ffi.c		\
       
 15348 +	 src/tile/ffitarget.h src/tile/tile.S libtool-version		\
       
 15349 +	 src/vax/ffi.c src/vax/ffitarget.h src/vax/elfbsd.S		\
       
 15350 +	 src/xtensa/ffitarget.h src/xtensa/ffi.c src/xtensa/sysv.S	\
       
 15351 +	 ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4		\
       
 15352 +	 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4			\
       
 15353 +	 m4/ltversion.m4 src/arm/gentramp.sh src/debug.c msvcc.sh	\
       
 15354 +	 generate-darwin-source-and-headers.py				\
       
 15355 +	 libffi.xcodeproj/project.pbxproj src/arm/trampoline.S		\
       
 15356 +	 libtool-ldflags ChangeLog.libffi-3.1
       
 15357  
       
 15358  info_TEXINFOS = doc/libffi.texi
       
 15359  
       
 15360  ## ################################################################
       
 15361  
       
 15362  ##
       
 15363  ## This section is for make and multilib madness.
       
 15364  ##
       
 15365  
       
 15366  # Work around what appears to be a GNU make bug handling MAKEFLAGS
       
 15367  # values defined in terms of make variables, as is the case for CC and
       
 15368  # friends when we are called from the top level Makefile.
       
 15369  AM_MAKEFLAGS = \
       
 15370 -	"AR_FLAGS=$(AR_FLAGS)" \
       
 15371 -	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
       
 15372 -	"CFLAGS=$(CFLAGS)" \
       
 15373 -	"CXXFLAGS=$(CXXFLAGS)" \
       
 15374 -	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
       
 15375 -	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
       
 15376 -	"INSTALL=$(INSTALL)" \
       
 15377 -	"INSTALL_DATA=$(INSTALL_DATA)" \
       
 15378 -	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
       
 15379 -	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
       
 15380 -	"JC1FLAGS=$(JC1FLAGS)" \
       
 15381 -	"LDFLAGS=$(LDFLAGS)" \
       
 15382 -	"LIBCFLAGS=$(LIBCFLAGS)" \
       
 15383 -	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
       
 15384 -	"MAKE=$(MAKE)" \
       
 15385 -	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
       
 15386 -	"PICFLAG=$(PICFLAG)" \
       
 15387 -	"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
       
 15388 -	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
       
 15389 -	"SHELL=$(SHELL)" \
       
 15390 -	"exec_prefix=$(exec_prefix)" \
       
 15391 -	"infodir=$(infodir)" \
       
 15392 -	"libdir=$(libdir)" \
       
 15393 -	"mandir=$(mandir)" \
       
 15394 -	"prefix=$(prefix)" \
       
 15395 -	"AR=$(AR)" \
       
 15396 -	"AS=$(AS)" \
       
 15397 -	"CC=$(CC)" \
       
 15398 -	"CXX=$(CXX)" \
       
 15399 -	"LD=$(LD)" \
       
 15400 -	"NM=$(NM)" \
       
 15401 -	"RANLIB=$(RANLIB)" \
       
 15402 -	"DESTDIR=$(DESTDIR)"
       
 15403 +	'AR_FLAGS=$(AR_FLAGS)' \
       
 15404 +	'CC_FOR_BUILD=$(CC_FOR_BUILD)' \
       
 15405 +	'CFLAGS=$(CFLAGS)' \
       
 15406 +	'CXXFLAGS=$(CXXFLAGS)' \
       
 15407 +	'CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)' \
       
 15408 +	'CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)' \
       
 15409 +	'INSTALL=$(INSTALL)' \
       
 15410 +	'INSTALL_DATA=$(INSTALL_DATA)' \
       
 15411 +	'INSTALL_PROGRAM=$(INSTALL_PROGRAM)' \
       
 15412 +	'INSTALL_SCRIPT=$(INSTALL_SCRIPT)' \
       
 15413 +	'JC1FLAGS=$(JC1FLAGS)' \
       
 15414 +	'LDFLAGS=$(LDFLAGS)' \
       
 15415 +	'LIBCFLAGS=$(LIBCFLAGS)' \
       
 15416 +	'LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)' \
       
 15417 +	'MAKE=$(MAKE)' \
       
 15418 +	'MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)' \
       
 15419 +	'PICFLAG=$(PICFLAG)' \
       
 15420 +	'PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)' \
       
 15421 +	'RUNTESTFLAGS=$(RUNTESTFLAGS)' \
       
 15422 +	'SHELL=$(SHELL)' \
       
 15423 +	'exec_prefix=$(exec_prefix)' \
       
 15424 +	'infodir=$(infodir)' \
       
 15425 +	'libdir=$(libdir)' \
       
 15426 +	'mandir=$(mandir)' \
       
 15427 +	'prefix=$(prefix)' \
       
 15428 +	'AR=$(AR)' \
       
 15429 +	'AS=$(AS)' \
       
 15430 +	'CC=$(CC)' \
       
 15431 +	'CXX=$(CXX)' \
       
 15432 +	'LD=$(LD)' \
       
 15433 +	'NM=$(NM)' \
       
 15434 +	'RANLIB=$(RANLIB)' \
       
 15435 +	'DESTDIR=$(DESTDIR)'
       
 15436 +
       
 15437 +# Subdir rules rely on $(FLAGS_TO_PASS)
       
 15438 +FLAGS_TO_PASS = $(AM_MAKEFLAGS)
       
 15439  
       
 15440  MAKEOVERRIDES=
       
 15441  
       
 15442 -ACLOCAL_AMFLAGS=$(ACLOCAL_AMFLAGS) -I m4
       
 15443 -
       
 15444 -lib_LTLIBRARIES = libffi.la
       
 15445 +toolexeclib_LTLIBRARIES = libffi.la
       
 15446  noinst_LTLIBRARIES = libffi_convenience.la
       
 15447  
       
 15448 -libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \
       
 15449 +libffi_la_SOURCES = src/prep_cif.c src/types.c \
       
 15450  		src/raw_api.c src/java_raw_api.c src/closures.c
       
 15451  
       
 15452  pkgconfigdir = $(libdir)/pkgconfig
       
 15453  pkgconfig_DATA = libffi.pc
       
 15454  
       
 15455  nodist_libffi_la_SOURCES =
       
 15456  
       
 15457 +if FFI_DEBUG
       
 15458 +nodist_libffi_la_SOURCES += src/debug.c
       
 15459 +endif
       
 15460 +
       
 15461  if MIPS
       
 15462  nodist_libffi_la_SOURCES += src/mips/ffi.c src/mips/o32.S src/mips/n32.S
       
 15463  endif
       
 15464 +if BFIN
       
 15465 +nodist_libffi_la_SOURCES += src/bfin/ffi.c src/bfin/sysv.S
       
 15466 +endif
       
 15467  if X86
       
 15468 -nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S
       
 15469 +nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S src/x86/win32.S
       
 15470  endif
       
 15471  if X86_FREEBSD
       
 15472 -nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/freebsd.S
       
 15473 +nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/freebsd.S src/x86/win32.S
       
 15474  endif
       
 15475  if X86_WIN32
       
 15476  nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win32.S
       
 15477  endif
       
 15478  if X86_WIN64
       
 15479  nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win64.S
       
 15480  endif
       
 15481  if X86_DARWIN
       
 15482  nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S
       
 15483 +if X86_DARWIN32
       
 15484 +nodist_libffi_la_SOURCES += src/x86/win32.S
       
 15485 +endif
       
 15486  endif
       
 15487  if SPARC
       
 15488  nodist_libffi_la_SOURCES += src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
       
 15489  endif
       
 15490  if ALPHA
       
 15491  nodist_libffi_la_SOURCES += src/alpha/ffi.c src/alpha/osf.S
       
 15492  endif
       
 15493  if IA64
       
 15494  nodist_libffi_la_SOURCES += src/ia64/ffi.c src/ia64/unix.S
       
 15495  endif
       
 15496  if M32R
       
 15497  nodist_libffi_la_SOURCES += src/m32r/sysv.S src/m32r/ffi.c
       
 15498  endif
       
 15499  if M68K
       
 15500  nodist_libffi_la_SOURCES += src/m68k/ffi.c src/m68k/sysv.S
       
 15501  endif
       
 15502 +if M88K
       
 15503 +nodist_libffi_la_SOURCES += src/m88k/ffi.c src/m88k/obsd.S
       
 15504 +endif
       
 15505 +if MOXIE
       
 15506 +nodist_libffi_la_SOURCES += src/moxie/ffi.c src/moxie/eabi.S
       
 15507 +endif
       
 15508 +if MICROBLAZE
       
 15509 +nodist_libffi_la_SOURCES += src/microblaze/ffi.c src/microblaze/sysv.S
       
 15510 +endif
       
 15511 +if NIOS2
       
 15512 +nodist_libffi_la_SOURCES += src/nios2/sysv.S src/nios2/ffi.c
       
 15513 +endif
       
 15514  if POWERPC
       
 15515 -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
       
 15516 +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
       
 15517  endif
       
 15518  if POWERPC_AIX
       
 15519  nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S
       
 15520  endif
       
 15521  if POWERPC_DARWIN
       
 15522  nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S
       
 15523  endif
       
 15524  if POWERPC_FREEBSD
       
 15525 -nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
       
 15526 +nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
       
 15527 +endif
       
 15528 +if AARCH64
       
 15529 +nodist_libffi_la_SOURCES += src/aarch64/sysv.S src/aarch64/ffi.c
       
 15530 +endif
       
 15531 +if ARC
       
 15532 +nodist_libffi_la_SOURCES += src/arc/arcompact.S src/arc/ffi.c
       
 15533  endif
       
 15534  if ARM
       
 15535  nodist_libffi_la_SOURCES += src/arm/sysv.S src/arm/ffi.c
       
 15536 +if FFI_EXEC_TRAMPOLINE_TABLE
       
 15537 +nodist_libffi_la_SOURCES += src/arm/trampoline.S
       
 15538 +endif
       
 15539  endif
       
 15540  if AVR32
       
 15541  nodist_libffi_la_SOURCES += src/avr32/sysv.S src/avr32/ffi.c
       
 15542  endif
       
 15543  if LIBFFI_CRIS
       
 15544  nodist_libffi_la_SOURCES += src/cris/sysv.S src/cris/ffi.c
       
 15545  endif
       
 15546  if FRV
       
 15547  nodist_libffi_la_SOURCES += src/frv/eabi.S src/frv/ffi.c
       
 15548  endif
       
 15549 -if MOXIE
       
 15550 -nodist_libffi_la_SOURCES += src/moxie/eabi.S src/moxie/ffi.c
       
 15551 -endif
       
 15552  if S390
       
 15553  nodist_libffi_la_SOURCES += src/s390/sysv.S src/s390/ffi.c
       
 15554  endif
       
 15555  if X86_64
       
 15556  nodist_libffi_la_SOURCES += src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
       
 15557  endif
       
 15558  if SH
       
 15559  nodist_libffi_la_SOURCES += src/sh/sysv.S src/sh/ffi.c
       
 15560 @@ -168,31 +215,40 @@ if SH64
       
 15561  nodist_libffi_la_SOURCES += src/sh64/sysv.S src/sh64/ffi.c
       
 15562  endif
       
 15563  if PA_LINUX
       
 15564  nodist_libffi_la_SOURCES += src/pa/linux.S src/pa/ffi.c
       
 15565  endif
       
 15566  if PA_HPUX
       
 15567  nodist_libffi_la_SOURCES += src/pa/hpux32.S src/pa/ffi.c
       
 15568  endif
       
 15569 +if TILE
       
 15570 +nodist_libffi_la_SOURCES += src/tile/tile.S src/tile/ffi.c
       
 15571 +endif
       
 15572 +if XTENSA
       
 15573 +nodist_libffi_la_SOURCES += src/xtensa/sysv.S src/xtensa/ffi.c
       
 15574 +endif
       
 15575 +if METAG
       
 15576 +nodist_libffi_la_SOURCES += src/metag/sysv.S src/metag/ffi.c
       
 15577 +endif
       
 15578 +if VAX
       
 15579 +nodist_libffi_la_SOURCES += src/vax/elfbsd.S src/vax/ffi.c
       
 15580 +endif
       
 15581  
       
 15582  libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
       
 15583  nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
       
 15584  
       
 15585 -AM_CFLAGS = -Wall -g -fexceptions
       
 15586 +LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS))
       
 15587 +
       
 15588 +AM_CFLAGS =
       
 15589  if FFI_DEBUG
       
 15590  # Build debug. Define FFI_DEBUG on the commandline so that, when building with
       
 15591  # MSVC, it can link against the debug CRT.
       
 15592  AM_CFLAGS += -DFFI_DEBUG
       
 15593 -else
       
 15594 -# Build opt.
       
 15595 -AM_CFLAGS += -O2
       
 15596  endif
       
 15597  
       
 15598 -libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
       
 15599 +libffi_la_LDFLAGS = -no-undefined -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
       
 15600  
       
 15601  AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
       
 15602  AM_CCASFLAGS = $(AM_CPPFLAGS)
       
 15603  
       
 15604 -# No install-html or install-pdf support in automake yet
       
 15605 -.PHONY: install-html install-pdf
       
 15606 -install-html:
       
 15607 -install-pdf:
       
 15608 +dist-hook:
       
 15609 +	if [ -d $(top_srcdir)/.git ] ; then git -C $(top_srcdir) log --no-decorate ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog
       
 15610 diff --git a/js/src/ctypes/libffi/Makefile.in b/js/src/ctypes/libffi/Makefile.in
       
 15611 --- a/js/src/ctypes/libffi/Makefile.in
       
 15612 +++ b/js/src/ctypes/libffi/Makefile.in
       
 15613 @@ -1,27 +1,71 @@
       
 15614 -# Makefile.in generated by automake 1.11.1 from Makefile.am.
       
 15615 +# Makefile.in generated by automake 1.13.4 from Makefile.am.
       
 15616  # @configure_input@
       
 15617  
       
 15618 -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
       
 15619 -# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
       
 15620 -# Inc.
       
 15621 +# Copyright (C) 1994-2013 Free Software Foundation, Inc.
       
 15622 +
       
 15623  # This Makefile.in is free software; the Free Software Foundation
       
 15624  # gives unlimited permission to copy and/or distribute it,
       
 15625  # with or without modifications, as long as this notice is preserved.
       
 15626  
       
 15627  # This program is distributed in the hope that it will be useful,
       
 15628  # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
       
 15629  # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
       
 15630  # PARTICULAR PURPOSE.
       
 15631  
       
 15632  @SET_MAKE@
       
 15633  
       
 15634  
       
 15635  VPATH = @srcdir@
       
 15636 +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
       
 15637 +am__make_running_with_option = \
       
 15638 +  case $${target_option-} in \
       
 15639 +      ?) ;; \
       
 15640 +      *) echo "am__make_running_with_option: internal error: invalid" \
       
 15641 +              "target option '$${target_option-}' specified" >&2; \
       
 15642 +         exit 1;; \
       
 15643 +  esac; \
       
 15644 +  has_opt=no; \
       
 15645 +  sane_makeflags=$$MAKEFLAGS; \
       
 15646 +  if $(am__is_gnu_make); then \
       
 15647 +    sane_makeflags=$$MFLAGS; \
       
 15648 +  else \
       
 15649 +    case $$MAKEFLAGS in \
       
 15650 +      *\\[\ \	]*) \
       
 15651 +        bs=\\; \
       
 15652 +        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
       
 15653 +          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
       
 15654 +    esac; \
       
 15655 +  fi; \
       
 15656 +  skip_next=no; \
       
 15657 +  strip_trailopt () \
       
 15658 +  { \
       
 15659 +    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
       
 15660 +  }; \
       
 15661 +  for flg in $$sane_makeflags; do \
       
 15662 +    test $$skip_next = yes && { skip_next=no; continue; }; \
       
 15663 +    case $$flg in \
       
 15664 +      *=*|--*) continue;; \
       
 15665 +        -*I) strip_trailopt 'I'; skip_next=yes;; \
       
 15666 +      -*I?*) strip_trailopt 'I';; \
       
 15667 +        -*O) strip_trailopt 'O'; skip_next=yes;; \
       
 15668 +      -*O?*) strip_trailopt 'O';; \
       
 15669 +        -*l) strip_trailopt 'l'; skip_next=yes;; \
       
 15670 +      -*l?*) strip_trailopt 'l';; \
       
 15671 +      -[dEDm]) skip_next=yes;; \
       
 15672 +      -[JT]) skip_next=yes;; \
       
 15673 +    esac; \
       
 15674 +    case $$flg in \
       
 15675 +      *$$target_option*) has_opt=yes; break;; \
       
 15676 +    esac; \
       
 15677 +  done; \
       
 15678 +  test $$has_opt = yes
       
 15679 +am__make_dryrun = (target_option=n; $(am__make_running_with_option))
       
 15680 +am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
       
 15681  pkgdatadir = $(datadir)/@PACKAGE@
       
 15682  pkgincludedir = $(includedir)/@PACKAGE@
       
 15683  pkglibdir = $(libdir)/@PACKAGE@
       
 15684  pkglibexecdir = $(libexecdir)/@PACKAGE@
       
 15685  am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
       
 15686  install_sh_DATA = $(install_sh) -c -m 644
       
 15687  install_sh_PROGRAM = $(install_sh) -c
       
 15688  install_sh_SCRIPT = $(install_sh) -c
       
 15689 @@ -31,56 +75,79 @@ NORMAL_INSTALL = :
       
 15690  PRE_INSTALL = :
       
 15691  POST_INSTALL = :
       
 15692  NORMAL_UNINSTALL = :
       
 15693  PRE_UNINSTALL = :
       
 15694  POST_UNINSTALL = :
       
 15695  build_triplet = @build@
       
 15696  host_triplet = @host@
       
 15697  target_triplet = @target@
       
 15698 -@MIPS_TRUE@am__append_1 = src/mips/ffi.c src/mips/o32.S src/mips/n32.S
       
 15699 -@X86_TRUE@am__append_2 = src/x86/ffi.c src/x86/sysv.S
       
 15700 -@X86_FREEBSD_TRUE@am__append_3 = src/x86/ffi.c src/x86/freebsd.S
       
 15701 -@X86_WIN32_TRUE@am__append_4 = src/x86/ffi.c src/x86/win32.S
       
 15702 -@X86_WIN64_TRUE@am__append_5 = src/x86/ffi.c src/x86/win64.S
       
 15703 -@X86_DARWIN_TRUE@am__append_6 = src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S
       
 15704 -@SPARC_TRUE@am__append_7 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
       
 15705 -@ALPHA_TRUE@am__append_8 = src/alpha/ffi.c src/alpha/osf.S
       
 15706 -@IA64_TRUE@am__append_9 = src/ia64/ffi.c src/ia64/unix.S
       
 15707 -@M32R_TRUE@am__append_10 = src/m32r/sysv.S src/m32r/ffi.c
       
 15708 -@M68K_TRUE@am__append_11 = src/m68k/ffi.c src/m68k/sysv.S
       
 15709 -@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
       
 15710 -@POWERPC_AIX_TRUE@am__append_13 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S
       
 15711 -@POWERPC_DARWIN_TRUE@am__append_14 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S
       
 15712 -@POWERPC_FREEBSD_TRUE@am__append_15 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
       
 15713 -@ARM_TRUE@am__append_16 = src/arm/sysv.S src/arm/ffi.c
       
 15714 -@AVR32_TRUE@am__append_17 = src/avr32/sysv.S src/avr32/ffi.c
       
 15715 -@LIBFFI_CRIS_TRUE@am__append_18 = src/cris/sysv.S src/cris/ffi.c
       
 15716 -@FRV_TRUE@am__append_19 = src/frv/eabi.S src/frv/ffi.c
       
 15717 -@MOXIE_TRUE@am__append_20 = src/moxie/eabi.S src/moxie/ffi.c
       
 15718 -@S390_TRUE@am__append_21 = src/s390/sysv.S src/s390/ffi.c
       
 15719 -@X86_64_TRUE@am__append_22 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
       
 15720 -@SH_TRUE@am__append_23 = src/sh/sysv.S src/sh/ffi.c
       
 15721 -@SH64_TRUE@am__append_24 = src/sh64/sysv.S src/sh64/ffi.c
       
 15722 -@PA_LINUX_TRUE@am__append_25 = src/pa/linux.S src/pa/ffi.c
       
 15723 -@PA_HPUX_TRUE@am__append_26 = src/pa/hpux32.S src/pa/ffi.c
       
 15724 +@FFI_DEBUG_TRUE@am__append_1 = src/debug.c
       
 15725 +@MIPS_TRUE@am__append_2 = src/mips/ffi.c src/mips/o32.S src/mips/n32.S
       
 15726 +@BFIN_TRUE@am__append_3 = src/bfin/ffi.c src/bfin/sysv.S
       
 15727 +@X86_TRUE@am__append_4 = src/x86/ffi.c src/x86/sysv.S src/x86/win32.S
       
 15728 +@X86_FREEBSD_TRUE@am__append_5 = src/x86/ffi.c src/x86/freebsd.S src/x86/win32.S
       
 15729 +@X86_WIN32_TRUE@am__append_6 = src/x86/ffi.c src/x86/win32.S
       
 15730 +@X86_WIN64_TRUE@am__append_7 = src/x86/ffi.c src/x86/win64.S
       
 15731 +@X86_DARWIN_TRUE@am__append_8 = src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S
       
 15732 +@X86_DARWIN32_TRUE@@X86_DARWIN_TRUE@am__append_9 = src/x86/win32.S
       
 15733 +@SPARC_TRUE@am__append_10 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
       
 15734 +@ALPHA_TRUE@am__append_11 = src/alpha/ffi.c src/alpha/osf.S
       
 15735 +@IA64_TRUE@am__append_12 = src/ia64/ffi.c src/ia64/unix.S
       
 15736 +@M32R_TRUE@am__append_13 = src/m32r/sysv.S src/m32r/ffi.c
       
 15737 +@M68K_TRUE@am__append_14 = src/m68k/ffi.c src/m68k/sysv.S
       
 15738 +@M88K_TRUE@am__append_15 = src/m88k/ffi.c src/m88k/obsd.S
       
 15739 +@MOXIE_TRUE@am__append_16 = src/moxie/ffi.c src/moxie/eabi.S
       
 15740 +@MICROBLAZE_TRUE@am__append_17 = src/microblaze/ffi.c src/microblaze/sysv.S
       
 15741 +@NIOS2_TRUE@am__append_18 = src/nios2/sysv.S src/nios2/ffi.c
       
 15742 +@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
       
 15743 +@POWERPC_AIX_TRUE@am__append_20 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S
       
 15744 +@POWERPC_DARWIN_TRUE@am__append_21 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S
       
 15745 +@POWERPC_FREEBSD_TRUE@am__append_22 = src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
       
 15746 +@AARCH64_TRUE@am__append_23 = src/aarch64/sysv.S src/aarch64/ffi.c
       
 15747 +@ARC_TRUE@am__append_24 = src/arc/arcompact.S src/arc/ffi.c
       
 15748 +@ARM_TRUE@am__append_25 = src/arm/sysv.S src/arm/ffi.c
       
 15749 +@ARM_TRUE@@FFI_EXEC_TRAMPOLINE_TABLE_TRUE@am__append_26 = src/arm/trampoline.S
       
 15750 +@AVR32_TRUE@am__append_27 = src/avr32/sysv.S src/avr32/ffi.c
       
 15751 +@LIBFFI_CRIS_TRUE@am__append_28 = src/cris/sysv.S src/cris/ffi.c
       
 15752 +@FRV_TRUE@am__append_29 = src/frv/eabi.S src/frv/ffi.c
       
 15753 +@S390_TRUE@am__append_30 = src/s390/sysv.S src/s390/ffi.c
       
 15754 +@X86_64_TRUE@am__append_31 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
       
 15755 +@SH_TRUE@am__append_32 = src/sh/sysv.S src/sh/ffi.c
       
 15756 +@SH64_TRUE@am__append_33 = src/sh64/sysv.S src/sh64/ffi.c
       
 15757 +@PA_LINUX_TRUE@am__append_34 = src/pa/linux.S src/pa/ffi.c
       
 15758 +@PA_HPUX_TRUE@am__append_35 = src/pa/hpux32.S src/pa/ffi.c
       
 15759 +@TILE_TRUE@am__append_36 = src/tile/tile.S src/tile/ffi.c
       
 15760 +@XTENSA_TRUE@am__append_37 = src/xtensa/sysv.S src/xtensa/ffi.c
       
 15761 +@METAG_TRUE@am__append_38 = src/metag/sysv.S src/metag/ffi.c
       
 15762 +@VAX_TRUE@am__append_39 = src/vax/elfbsd.S src/vax/ffi.c
       
 15763  # Build debug. Define FFI_DEBUG on the commandline so that, when building with
       
 15764  # MSVC, it can link against the debug CRT.
       
 15765 -@FFI_DEBUG_TRUE@am__append_27 = -DFFI_DEBUG
       
 15766 -# Build opt.
       
 15767 -@FFI_DEBUG_FALSE@am__append_28 = -O2
       
 15768 +@FFI_DEBUG_TRUE@am__append_40 = -DFFI_DEBUG
       
 15769  subdir = .
       
 15770 -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
       
 15771 -	$(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \
       
 15772 -	$(srcdir)/doc/version.texi $(srcdir)/fficonfig.h.in \
       
 15773 -	$(srcdir)/libffi.pc.in $(top_srcdir)/configure ChangeLog \
       
 15774 -	compile config.guess config.sub depcomp install-sh ltmain.sh \
       
 15775 -	mdate-sh missing texinfo.tex
       
 15776 +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
       
 15777 +	$(top_srcdir)/configure $(am__configure_deps) \
       
 15778 +	$(srcdir)/fficonfig.h.in $(srcdir)/libffi.pc.in depcomp \
       
 15779 +	mdate-sh $(srcdir)/doc/version.texi $(srcdir)/doc/stamp-vti \
       
 15780 +	texinfo.tex README compile config.guess config.sub install-sh \
       
 15781 +	missing ltmain.sh
       
 15782  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
       
 15783 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
       
 15784 +am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
       
 15785 +	$(top_srcdir)/m4/ax_append_flag.m4 \
       
 15786 +	$(top_srcdir)/m4/ax_cc_maxopt.m4 \
       
 15787 +	$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
       
 15788 +	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
       
 15789 +	$(top_srcdir)/m4/ax_compiler_vendor.m4 \
       
 15790 +	$(top_srcdir)/m4/ax_configure_args.m4 \
       
 15791 +	$(top_srcdir)/m4/ax_enable_builddir.m4 \
       
 15792 +	$(top_srcdir)/m4/ax_gcc_archflag.m4 \
       
 15793 +	$(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
       
 15794 +	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
       
 15795 +	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
       
 15796 +	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
       
 15797  	$(top_srcdir)/configure.ac
       
 15798  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
       
 15799  	$(ACLOCAL_M4)
       
 15800  am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
       
 15801   configure.lineno config.status.lineno
       
 15802  mkinstalldirs = $(install_sh) -d
       
 15803  CONFIG_HEADER = fficonfig.h
       
 15804  CONFIG_CLEAN_FILES = libffi.pc
       
 15805 @@ -101,149 +168,272 @@ am__nobase_list = $(am__nobase_strip_set
       
 15806    sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
       
 15807    $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
       
 15808      if (++n[$$2] == $(am__install_max)) \
       
 15809        { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
       
 15810      END { for (dir in files) print dir, files[dir] }'
       
 15811  am__base_list = \
       
 15812    sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
       
 15813    sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
       
 15814 -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" \
       
 15815 +am__uninstall_files_from_dir = { \
       
 15816 +  test -z "$$files" \
       
 15817 +    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
       
 15818 +    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
       
 15819 +         $(am__cd) "$$dir" && rm -f $$files; }; \
       
 15820 +  }
       
 15821 +am__installdirs = "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(infodir)" \
       
 15822  	"$(DESTDIR)$(pkgconfigdir)"
       
 15823 -LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
       
 15824 +LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
       
 15825  libffi_la_LIBADD =
       
 15826  am__dirstamp = $(am__leading_dot)dirstamp
       
 15827 -am_libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \
       
 15828 -	src/raw_api.lo src/java_raw_api.lo src/closures.lo
       
 15829 -@MIPS_TRUE@am__objects_1 = src/mips/ffi.lo src/mips/o32.lo \
       
 15830 +am_libffi_la_OBJECTS = src/prep_cif.lo src/types.lo src/raw_api.lo \
       
 15831 +	src/java_raw_api.lo src/closures.lo
       
 15832 +@FFI_DEBUG_TRUE@am__objects_1 = src/debug.lo
       
 15833 +@MIPS_TRUE@am__objects_2 = src/mips/ffi.lo src/mips/o32.lo \
       
 15834  @MIPS_TRUE@	src/mips/n32.lo
       
 15835 -@X86_TRUE@am__objects_2 = src/x86/ffi.lo src/x86/sysv.lo
       
 15836 -@X86_FREEBSD_TRUE@am__objects_3 = src/x86/ffi.lo src/x86/freebsd.lo
       
 15837 -@X86_WIN32_TRUE@am__objects_4 = src/x86/ffi.lo src/x86/win32.lo
       
 15838 -@X86_WIN64_TRUE@am__objects_5 = src/x86/ffi.lo src/x86/win64.lo
       
 15839 -@X86_DARWIN_TRUE@am__objects_6 = src/x86/ffi.lo src/x86/darwin.lo \
       
 15840 +@BFIN_TRUE@am__objects_3 = src/bfin/ffi.lo src/bfin/sysv.lo
       
 15841 +@X86_TRUE@am__objects_4 = src/x86/ffi.lo src/x86/sysv.lo \
       
 15842 +@X86_TRUE@	src/x86/win32.lo
       
 15843 +@X86_FREEBSD_TRUE@am__objects_5 = src/x86/ffi.lo src/x86/freebsd.lo \
       
 15844 +@X86_FREEBSD_TRUE@	src/x86/win32.lo
       
 15845 +@X86_WIN32_TRUE@am__objects_6 = src/x86/ffi.lo src/x86/win32.lo
       
 15846 +@X86_WIN64_TRUE@am__objects_7 = src/x86/ffi.lo src/x86/win64.lo
       
 15847 +@X86_DARWIN_TRUE@am__objects_8 = src/x86/ffi.lo src/x86/darwin.lo \
       
 15848  @X86_DARWIN_TRUE@	src/x86/ffi64.lo src/x86/darwin64.lo
       
 15849 -@SPARC_TRUE@am__objects_7 = src/sparc/ffi.lo src/sparc/v8.lo \
       
 15850 +@X86_DARWIN32_TRUE@@X86_DARWIN_TRUE@am__objects_9 = src/x86/win32.lo
       
 15851 +@SPARC_TRUE@am__objects_10 = src/sparc/ffi.lo src/sparc/v8.lo \
       
 15852  @SPARC_TRUE@	src/sparc/v9.lo
       
 15853 -@ALPHA_TRUE@am__objects_8 = src/alpha/ffi.lo src/alpha/osf.lo
       
 15854 -@IA64_TRUE@am__objects_9 = src/ia64/ffi.lo src/ia64/unix.lo
       
 15855 -@M32R_TRUE@am__objects_10 = src/m32r/sysv.lo src/m32r/ffi.lo
       
 15856 -@M68K_TRUE@am__objects_11 = src/m68k/ffi.lo src/m68k/sysv.lo
       
 15857 -@POWERPC_TRUE@am__objects_12 = src/powerpc/ffi.lo src/powerpc/sysv.lo \
       
 15858 +@ALPHA_TRUE@am__objects_11 = src/alpha/ffi.lo src/alpha/osf.lo
       
 15859 +@IA64_TRUE@am__objects_12 = src/ia64/ffi.lo src/ia64/unix.lo
       
 15860 +@M32R_TRUE@am__objects_13 = src/m32r/sysv.lo src/m32r/ffi.lo
       
 15861 +@M68K_TRUE@am__objects_14 = src/m68k/ffi.lo src/m68k/sysv.lo
       
 15862 +@M88K_TRUE@am__objects_15 = src/m88k/ffi.lo src/m88k/obsd.lo
       
 15863 +@MOXIE_TRUE@am__objects_16 = src/moxie/ffi.lo src/moxie/eabi.lo
       
 15864 +@MICROBLAZE_TRUE@am__objects_17 = src/microblaze/ffi.lo \
       
 15865 +@MICROBLAZE_TRUE@	src/microblaze/sysv.lo
       
 15866 +@NIOS2_TRUE@am__objects_18 = src/nios2/sysv.lo src/nios2/ffi.lo
       
 15867 +@POWERPC_TRUE@am__objects_19 = src/powerpc/ffi.lo \
       
 15868 +@POWERPC_TRUE@	src/powerpc/ffi_sysv.lo \
       
 15869 +@POWERPC_TRUE@	src/powerpc/ffi_linux64.lo src/powerpc/sysv.lo \
       
 15870  @POWERPC_TRUE@	src/powerpc/ppc_closure.lo \
       
 15871  @POWERPC_TRUE@	src/powerpc/linux64.lo \
       
 15872  @POWERPC_TRUE@	src/powerpc/linux64_closure.lo
       
 15873 -@POWERPC_AIX_TRUE@am__objects_13 = src/powerpc/ffi_darwin.lo \
       
 15874 +@POWERPC_AIX_TRUE@am__objects_20 = src/powerpc/ffi_darwin.lo \
       
 15875  @POWERPC_AIX_TRUE@	src/powerpc/aix.lo \
       
 15876  @POWERPC_AIX_TRUE@	src/powerpc/aix_closure.lo
       
 15877 -@POWERPC_DARWIN_TRUE@am__objects_14 = src/powerpc/ffi_darwin.lo \
       
 15878 +@POWERPC_DARWIN_TRUE@am__objects_21 = src/powerpc/ffi_darwin.lo \
       
 15879  @POWERPC_DARWIN_TRUE@	src/powerpc/darwin.lo \
       
 15880  @POWERPC_DARWIN_TRUE@	src/powerpc/darwin_closure.lo
       
 15881 -@POWERPC_FREEBSD_TRUE@am__objects_15 = src/powerpc/ffi.lo \
       
 15882 +@POWERPC_FREEBSD_TRUE@am__objects_22 = src/powerpc/ffi.lo \
       
 15883 +@POWERPC_FREEBSD_TRUE@	src/powerpc/ffi_sysv.lo \
       
 15884  @POWERPC_FREEBSD_TRUE@	src/powerpc/sysv.lo \
       
 15885  @POWERPC_FREEBSD_TRUE@	src/powerpc/ppc_closure.lo
       
 15886 -@ARM_TRUE@am__objects_16 = src/arm/sysv.lo src/arm/ffi.lo
       
 15887 -@AVR32_TRUE@am__objects_17 = src/avr32/sysv.lo src/avr32/ffi.lo
       
 15888 -@LIBFFI_CRIS_TRUE@am__objects_18 = src/cris/sysv.lo src/cris/ffi.lo
       
 15889 -@FRV_TRUE@am__objects_19 = src/frv/eabi.lo src/frv/ffi.lo
       
 15890 -@MOXIE_TRUE@am__objects_20 = src/moxie/eabi.lo src/moxie/ffi.lo
       
 15891 -@S390_TRUE@am__objects_21 = src/s390/sysv.lo src/s390/ffi.lo
       
 15892 -@X86_64_TRUE@am__objects_22 = src/x86/ffi64.lo src/x86/unix64.lo \
       
 15893 +@AARCH64_TRUE@am__objects_23 = src/aarch64/sysv.lo src/aarch64/ffi.lo
       
 15894 +@ARC_TRUE@am__objects_24 = src/arc/arcompact.lo src/arc/ffi.lo
       
 15895 +@ARM_TRUE@am__objects_25 = src/arm/sysv.lo src/arm/ffi.lo
       
 15896 +@ARM_TRUE@@FFI_EXEC_TRAMPOLINE_TABLE_TRUE@am__objects_26 = src/arm/trampoline.lo
       
 15897 +@AVR32_TRUE@am__objects_27 = src/avr32/sysv.lo src/avr32/ffi.lo
       
 15898 +@LIBFFI_CRIS_TRUE@am__objects_28 = src/cris/sysv.lo src/cris/ffi.lo
       
 15899 +@FRV_TRUE@am__objects_29 = src/frv/eabi.lo src/frv/ffi.lo
       
 15900 +@S390_TRUE@am__objects_30 = src/s390/sysv.lo src/s390/ffi.lo
       
 15901 +@X86_64_TRUE@am__objects_31 = src/x86/ffi64.lo src/x86/unix64.lo \
       
 15902  @X86_64_TRUE@	src/x86/ffi.lo src/x86/sysv.lo
       
 15903 -@SH_TRUE@am__objects_23 = src/sh/sysv.lo src/sh/ffi.lo
       
 15904 -@SH64_TRUE@am__objects_24 = src/sh64/sysv.lo src/sh64/ffi.lo
       
 15905 -@PA_LINUX_TRUE@am__objects_25 = src/pa/linux.lo src/pa/ffi.lo
       
 15906 -@PA_HPUX_TRUE@am__objects_26 = src/pa/hpux32.lo src/pa/ffi.lo
       
 15907 +@SH_TRUE@am__objects_32 = src/sh/sysv.lo src/sh/ffi.lo
       
 15908 +@SH64_TRUE@am__objects_33 = src/sh64/sysv.lo src/sh64/ffi.lo
       
 15909 +@PA_LINUX_TRUE@am__objects_34 = src/pa/linux.lo src/pa/ffi.lo
       
 15910 +@PA_HPUX_TRUE@am__objects_35 = src/pa/hpux32.lo src/pa/ffi.lo
       
 15911 +@TILE_TRUE@am__objects_36 = src/tile/tile.lo src/tile/ffi.lo
       
 15912 +@XTENSA_TRUE@am__objects_37 = src/xtensa/sysv.lo src/xtensa/ffi.lo
       
 15913 +@METAG_TRUE@am__objects_38 = src/metag/sysv.lo src/metag/ffi.lo
       
 15914 +@VAX_TRUE@am__objects_39 = src/vax/elfbsd.lo src/vax/ffi.lo
       
 15915  nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
       
 15916  	$(am__objects_3) $(am__objects_4) $(am__objects_5) \
       
 15917  	$(am__objects_6) $(am__objects_7) $(am__objects_8) \
       
 15918  	$(am__objects_9) $(am__objects_10) $(am__objects_11) \
       
 15919  	$(am__objects_12) $(am__objects_13) $(am__objects_14) \
       
 15920  	$(am__objects_15) $(am__objects_16) $(am__objects_17) \
       
 15921  	$(am__objects_18) $(am__objects_19) $(am__objects_20) \
       
 15922  	$(am__objects_21) $(am__objects_22) $(am__objects_23) \
       
 15923 -	$(am__objects_24) $(am__objects_25) $(am__objects_26)
       
 15924 +	$(am__objects_24) $(am__objects_25) $(am__objects_26) \
       
 15925 +	$(am__objects_27) $(am__objects_28) $(am__objects_29) \
       
 15926 +	$(am__objects_30) $(am__objects_31) $(am__objects_32) \
       
 15927 +	$(am__objects_33) $(am__objects_34) $(am__objects_35) \
       
 15928 +	$(am__objects_36) $(am__objects_37) $(am__objects_38) \
       
 15929 +	$(am__objects_39)
       
 15930  libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) \
       
 15931  	$(nodist_libffi_la_OBJECTS)
       
 15932 -libffi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
       
 15933 +AM_V_lt = $(am__v_lt_@AM_V@)
       
 15934 +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
       
 15935 +am__v_lt_0 = --silent
       
 15936 +am__v_lt_1 = 
       
 15937 +libffi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
       
 15938  	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
       
 15939  	$(libffi_la_LDFLAGS) $(LDFLAGS) -o $@
       
 15940  libffi_convenience_la_LIBADD =
       
 15941 -am__objects_27 = src/debug.lo src/prep_cif.lo src/types.lo \
       
 15942 -	src/raw_api.lo src/java_raw_api.lo src/closures.lo
       
 15943 -am_libffi_convenience_la_OBJECTS = $(am__objects_27)
       
 15944 -am__objects_28 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
       
 15945 +am__objects_40 = src/prep_cif.lo src/types.lo src/raw_api.lo \
       
 15946 +	src/java_raw_api.lo src/closures.lo
       
 15947 +am_libffi_convenience_la_OBJECTS = $(am__objects_40)
       
 15948 +am__objects_41 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
       
 15949  	$(am__objects_4) $(am__objects_5) $(am__objects_6) \
       
 15950  	$(am__objects_7) $(am__objects_8) $(am__objects_9) \
       
 15951  	$(am__objects_10) $(am__objects_11) $(am__objects_12) \
       
 15952  	$(am__objects_13) $(am__objects_14) $(am__objects_15) \
       
 15953  	$(am__objects_16) $(am__objects_17) $(am__objects_18) \
       
 15954  	$(am__objects_19) $(am__objects_20) $(am__objects_21) \
       
 15955  	$(am__objects_22) $(am__objects_23) $(am__objects_24) \
       
 15956 -	$(am__objects_25) $(am__objects_26)
       
 15957 -nodist_libffi_convenience_la_OBJECTS = $(am__objects_28)
       
 15958 +	$(am__objects_25) $(am__objects_26) $(am__objects_27) \
       
 15959 +	$(am__objects_28) $(am__objects_29) $(am__objects_30) \
       
 15960 +	$(am__objects_31) $(am__objects_32) $(am__objects_33) \
       
 15961 +	$(am__objects_34) $(am__objects_35) $(am__objects_36) \
       
 15962 +	$(am__objects_37) $(am__objects_38) $(am__objects_39)
       
 15963 +nodist_libffi_convenience_la_OBJECTS = $(am__objects_41)
       
 15964  libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \
       
 15965  	$(nodist_libffi_convenience_la_OBJECTS)
       
 15966 +AM_V_P = $(am__v_P_@AM_V@)
       
 15967 +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
       
 15968 +am__v_P_0 = false
       
 15969 +am__v_P_1 = :
       
 15970 +AM_V_GEN = $(am__v_GEN_@AM_V@)
       
 15971 +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
       
 15972 +am__v_GEN_0 = @echo "  GEN     " $@;
       
 15973 +am__v_GEN_1 = 
       
 15974 +AM_V_at = $(am__v_at_@AM_V@)
       
 15975 +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
       
 15976 +am__v_at_0 = @
       
 15977 +am__v_at_1 = 
       
 15978  DEFAULT_INCLUDES = -I.@am__isrc@
       
 15979  depcomp = $(SHELL) $(top_srcdir)/depcomp
       
 15980  am__depfiles_maybe = depfiles
       
 15981  am__mv = mv -f
       
 15982  CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
       
 15983  	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
       
 15984 -LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
       
 15985 -	--mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
       
 15986 -	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
       
 15987 +LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
       
 15988 +	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \
       
 15989 +	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
       
 15990 +	$(AM_CCASFLAGS) $(CCASFLAGS)
       
 15991 +AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
       
 15992 +am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
       
 15993 +am__v_CPPAS_0 = @echo "  CPPAS   " $@;
       
 15994 +am__v_CPPAS_1 = 
       
 15995  COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
       
 15996  	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
       
 15997 -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
       
 15998 -	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
       
 15999 -	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
       
 16000 +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
       
 16001 +	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
       
 16002 +	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
       
 16003 +	$(AM_CFLAGS) $(CFLAGS)
       
 16004 +AM_V_CC = $(am__v_CC_@AM_V@)
       
 16005 +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
       
 16006 +am__v_CC_0 = @echo "  CC      " $@;
       
 16007 +am__v_CC_1 = 
       
 16008  CCLD = $(CC)
       
 16009 -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
       
 16010 -	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
       
 16011 -	$(LDFLAGS) -o $@
       
 16012 +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
       
 16013 +	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
       
 16014 +	$(AM_LDFLAGS) $(LDFLAGS) -o $@
       
 16015 +AM_V_CCLD = $(am__v_CCLD_@AM_V@)
       
 16016 +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
       
 16017 +am__v_CCLD_0 = @echo "  CCLD    " $@;
       
 16018 +am__v_CCLD_1 = 
       
 16019  SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \
       
 16020  	$(libffi_convenience_la_SOURCES) \
       
 16021  	$(nodist_libffi_convenience_la_SOURCES)
       
 16022  DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES)
       
 16023 -INFO_DEPS =
       
 16024 +AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
       
 16025 +am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
       
 16026 +am__v_DVIPS_0 = @echo "  DVIPS   " $@;
       
 16027 +am__v_DVIPS_1 = 
       
 16028 +AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@)
       
 16029 +am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@)
       
 16030 +am__v_MAKEINFO_0 = @echo "  MAKEINFO" $@;
       
 16031 +am__v_MAKEINFO_1 = 
       
 16032 +AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@)
       
 16033 +am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@)
       
 16034 +am__v_INFOHTML_0 = @echo "  INFOHTML" $@;
       
 16035 +am__v_INFOHTML_1 = 
       
 16036 +AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@)
       
 16037 +am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@)
       
 16038 +am__v_TEXI2DVI_0 = @echo "  TEXI2DVI" $@;
       
 16039 +am__v_TEXI2DVI_1 = 
       
 16040 +AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@)
       
 16041 +am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@)
       
 16042 +am__v_TEXI2PDF_0 = @echo "  TEXI2PDF" $@;
       
 16043 +am__v_TEXI2PDF_1 = 
       
 16044 +AM_V_texinfo = $(am__v_texinfo_@AM_V@)
       
 16045 +am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@)
       
 16046 +am__v_texinfo_0 = -q
       
 16047 +am__v_texinfo_1 = 
       
 16048 +AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
       
 16049 +am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
       
 16050 +am__v_texidevnull_0 = > /dev/null
       
 16051 +am__v_texidevnull_1 = 
       
 16052 +INFO_DEPS = $(srcdir)/doc/libffi.info
       
 16053  am__TEXINFO_TEX_DIR = $(srcdir)
       
 16054  DVIS = doc/libffi.dvi
       
 16055  PDFS = doc/libffi.pdf
       
 16056  PSS = doc/libffi.ps
       
 16057  HTMLS = doc/libffi.html
       
 16058  TEXINFOS = doc/libffi.texi
       
 16059  TEXI2DVI = texi2dvi
       
 16060  TEXI2PDF = $(TEXI2DVI) --pdf --batch
       
 16061  MAKEINFOHTML = $(MAKEINFO) --html
       
 16062  AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
       
 16063  DVIPS = dvips
       
 16064 -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
       
 16065 -	html-recursive info-recursive install-data-recursive \
       
 16066 -	install-dvi-recursive install-exec-recursive \
       
 16067 -	install-html-recursive install-info-recursive \
       
 16068 -	install-pdf-recursive install-ps-recursive install-recursive \
       
 16069 -	installcheck-recursive installdirs-recursive pdf-recursive \
       
 16070 -	ps-recursive uninstall-recursive
       
 16071 +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
       
 16072 +	ctags-recursive dvi-recursive html-recursive info-recursive \
       
 16073 +	install-data-recursive install-dvi-recursive \
       
 16074 +	install-exec-recursive install-html-recursive \
       
 16075 +	install-info-recursive install-pdf-recursive \
       
 16076 +	install-ps-recursive install-recursive installcheck-recursive \
       
 16077 +	installdirs-recursive pdf-recursive ps-recursive \
       
 16078 +	tags-recursive uninstall-recursive
       
 16079 +am__can_run_installinfo = \
       
 16080 +  case $$AM_UPDATE_INFO_DIR in \
       
 16081 +    n|no|NO) false;; \
       
 16082 +    *) (install-info --version) >/dev/null 2>&1;; \
       
 16083 +  esac
       
 16084  DATA = $(pkgconfig_DATA)
       
 16085  RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
       
 16086    distclean-recursive maintainer-clean-recursive
       
 16087 -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
       
 16088 -	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
       
 16089 -	distdir dist dist-all distcheck
       
 16090 +am__recursive_targets = \
       
 16091 +  $(RECURSIVE_TARGETS) \
       
 16092 +  $(RECURSIVE_CLEAN_TARGETS) \
       
 16093 +  $(am__extra_recursive_targets)
       
 16094 +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
       
 16095 +	cscope distdir dist dist-all distcheck
       
 16096 +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
       
 16097 +	$(LISP)fficonfig.h.in
       
 16098 +# Read a list of newline-separated strings from the standard input,
       
 16099 +# and print each of them once, without duplicates.  Input order is
       
 16100 +# *not* preserved.
       
 16101 +am__uniquify_input = $(AWK) '\
       
 16102 +  BEGIN { nonempty = 0; } \
       
 16103 +  { items[$$0] = 1; nonempty = 1; } \
       
 16104 +  END { if (nonempty) { for (i in items) print i; }; } \
       
 16105 +'
       
 16106 +# Make sure the list of sources is unique.  This is necessary because,
       
 16107 +# e.g., the same source file might be shared among _SOURCES variables
       
 16108 +# for different programs/libraries.
       
 16109 +am__define_uniq_tagged_files = \
       
 16110 +  list='$(am__tagged_files)'; \
       
 16111 +  unique=`for i in $$list; do \
       
 16112 +    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
       
 16113 +  done | $(am__uniquify_input)`
       
 16114  ETAGS = etags
       
 16115  CTAGS = ctags
       
 16116 +CSCOPE = cscope
       
 16117  DIST_SUBDIRS = $(SUBDIRS)
       
 16118  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
       
 16119  distdir = $(PACKAGE)-$(VERSION)
       
 16120  top_distdir = $(distdir)
       
 16121  am__remove_distdir = \
       
 16122 -  { test ! -d "$(distdir)" \
       
 16123 -    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
       
 16124 -         && rm -fr "$(distdir)"; }; }
       
 16125 +  if test -d "$(distdir)"; then \
       
 16126 +    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
       
 16127 +      && rm -rf "$(distdir)" \
       
 16128 +      || { sleep 5 && rm -rf "$(distdir)"; }; \
       
 16129 +  else :; fi
       
 16130 +am__post_remove_distdir = $(am__remove_distdir)
       
 16131  am__relativize = \
       
 16132    dir0=`pwd`; \
       
 16133    sed_first='s,^\([^/]*\)/.*$$,\1,'; \
       
 16134    sed_rest='s,^[^/]*/*,,'; \
       
 16135    sed_last='s,^.*/\([^/]*\)$$,\1,'; \
       
 16136    sed_butlast='s,/*[^/]*$$,,'; \
       
 16137    while test -n "$$dir1"; do \
       
 16138      first=`echo "$$dir1" | sed -e "$$sed_first"`; \
       
 16139 @@ -261,21 +451,25 @@ am__relativize = \
       
 16140          dir0="$$dir0"/"$$first"; \
       
 16141        fi; \
       
 16142      fi; \
       
 16143      dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
       
 16144    done; \
       
 16145    reldir="$$dir2"
       
 16146  DIST_ARCHIVES = $(distdir).tar.gz
       
 16147  GZIP_ENV = --best
       
 16148 +DIST_TARGETS = dist-gzip
       
 16149  distuninstallcheck_listfiles = find . -type f -print
       
 16150 +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
       
 16151 +  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
       
 16152  distcleancheck_listfiles = find . -type f -print
       
 16153  ACLOCAL = @ACLOCAL@
       
 16154  ALLOCA = @ALLOCA@
       
 16155  AMTAR = @AMTAR@
       
 16156 +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
       
 16157  AM_LTLDFLAGS = @AM_LTLDFLAGS@
       
 16158  AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@
       
 16159  AR = @AR@
       
 16160  AUTOCONF = @AUTOCONF@
       
 16161  AUTOHEADER = @AUTOHEADER@
       
 16162  AUTOMAKE = @AUTOMAKE@
       
 16163  AWK = @AWK@
       
 16164  CC = @CC@
       
 16165 @@ -284,75 +478,82 @@ CCASDEPMODE = @CCASDEPMODE@
       
 16166  CCASFLAGS = @CCASFLAGS@
       
 16167  CCDEPMODE = @CCDEPMODE@
       
 16168  CFLAGS = @CFLAGS@
       
 16169  CPP = @CPP@
       
 16170  CPPFLAGS = @CPPFLAGS@
       
 16171  CYGPATH_W = @CYGPATH_W@
       
 16172  DEFS = @DEFS@
       
 16173  DEPDIR = @DEPDIR@
       
 16174 +DLLTOOL = @DLLTOOL@
       
 16175  DSYMUTIL = @DSYMUTIL@
       
 16176  DUMPBIN = @DUMPBIN@
       
 16177  ECHO_C = @ECHO_C@
       
 16178  ECHO_N = @ECHO_N@
       
 16179  ECHO_T = @ECHO_T@
       
 16180  EGREP = @EGREP@
       
 16181  EXEEXT = @EXEEXT@
       
 16182 +FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
       
 16183  FGREP = @FGREP@
       
 16184  GREP = @GREP@
       
 16185  HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
       
 16186 +HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@
       
 16187  INSTALL = @INSTALL@
       
 16188  INSTALL_DATA = @INSTALL_DATA@
       
 16189  INSTALL_PROGRAM = @INSTALL_PROGRAM@
       
 16190  INSTALL_SCRIPT = @INSTALL_SCRIPT@
       
 16191  INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
       
 16192  LD = @LD@
       
 16193  LDFLAGS = @LDFLAGS@
       
 16194  LIBOBJS = @LIBOBJS@
       
 16195  LIBS = @LIBS@
       
 16196  LIBTOOL = @LIBTOOL@
       
 16197  LIPO = @LIPO@
       
 16198  LN_S = @LN_S@
       
 16199  LTLIBOBJS = @LTLIBOBJS@
       
 16200  MAINT = @MAINT@
       
 16201  MAKEINFO = @MAKEINFO@
       
 16202 +MANIFEST_TOOL = @MANIFEST_TOOL@
       
 16203  MKDIR_P = @MKDIR_P@
       
 16204  NM = @NM@
       
 16205  NMEDIT = @NMEDIT@
       
 16206  OBJDUMP = @OBJDUMP@
       
 16207  OBJEXT = @OBJEXT@
       
 16208  OTOOL = @OTOOL@
       
 16209  OTOOL64 = @OTOOL64@
       
 16210  PACKAGE = @PACKAGE@
       
 16211  PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
       
 16212  PACKAGE_NAME = @PACKAGE_NAME@
       
 16213  PACKAGE_STRING = @PACKAGE_STRING@
       
 16214  PACKAGE_TARNAME = @PACKAGE_TARNAME@
       
 16215  PACKAGE_URL = @PACKAGE_URL@
       
 16216  PACKAGE_VERSION = @PACKAGE_VERSION@
       
 16217  PATH_SEPARATOR = @PATH_SEPARATOR@
       
 16218 +PRTDIAG = @PRTDIAG@
       
 16219  RANLIB = @RANLIB@
       
 16220  SED = @SED@
       
 16221  SET_MAKE = @SET_MAKE@
       
 16222  SHELL = @SHELL@
       
 16223  STRIP = @STRIP@
       
 16224  TARGET = @TARGET@
       
 16225  TARGETDIR = @TARGETDIR@
       
 16226  VERSION = @VERSION@
       
 16227  abs_builddir = @abs_builddir@
       
 16228  abs_srcdir = @abs_srcdir@
       
 16229  abs_top_builddir = @abs_top_builddir@
       
 16230  abs_top_srcdir = @abs_top_srcdir@
       
 16231 +ac_ct_AR = @ac_ct_AR@
       
 16232  ac_ct_CC = @ac_ct_CC@
       
 16233  ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
       
 16234  am__include = @am__include@
       
 16235  am__leading_dot = @am__leading_dot@
       
 16236  am__quote = @am__quote@
       
 16237  am__tar = @am__tar@
       
 16238  am__untar = @am__untar@
       
 16239 +ax_enable_builddir_sed = @ax_enable_builddir_sed@
       
 16240  bindir = @bindir@
       
 16241  build = @build@
       
 16242  build_alias = @build_alias@
       
 16243  build_cpu = @build_cpu@
       
 16244  build_os = @build_os@
       
 16245  build_vendor = @build_vendor@
       
 16246  builddir = @builddir@
       
 16247  datadir = @datadir@
       
 16248 @@ -368,69 +569,86 @@ host_vendor = @host_vendor@
       
 16249  htmldir = @htmldir@
       
 16250  includedir = @includedir@
       
 16251  infodir = @infodir@
       
 16252  install_sh = @install_sh@
       
 16253  libdir = @libdir@
       
 16254  libexecdir = @libexecdir@
       
 16255  localedir = @localedir@
       
 16256  localstatedir = @localstatedir@
       
 16257 -lt_ECHO = @lt_ECHO@
       
 16258  mandir = @mandir@
       
 16259  mkdir_p = @mkdir_p@
       
 16260  oldincludedir = @oldincludedir@
       
 16261  pdfdir = @pdfdir@
       
 16262  prefix = @prefix@
       
 16263  program_transform_name = @program_transform_name@
       
 16264  psdir = @psdir@
       
 16265  sbindir = @sbindir@
       
 16266  sharedstatedir = @sharedstatedir@
       
 16267  srcdir = @srcdir@
       
 16268 +sys_symbol_underscore = @sys_symbol_underscore@
       
 16269  sysconfdir = @sysconfdir@
       
 16270  target = @target@
       
 16271  target_alias = @target_alias@
       
 16272  target_cpu = @target_cpu@
       
 16273  target_os = @target_os@
       
 16274  target_vendor = @target_vendor@
       
 16275  toolexecdir = @toolexecdir@
       
 16276  toolexeclibdir = @toolexeclibdir@
       
 16277  top_build_prefix = @top_build_prefix@
       
 16278  top_builddir = @top_builddir@
       
 16279  top_srcdir = @top_srcdir@
       
 16280  AUTOMAKE_OPTIONS = foreign subdir-objects
       
 16281 +ACLOCAL_AMFLAGS = -I m4
       
 16282  SUBDIRS = include testsuite man
       
 16283 -EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
       
 16284 -	src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
       
 16285 -	src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \
       
 16286 -	src/avr32/ffi.c src/avr32/sysv.S src/avr32/ffitarget.h \
       
 16287 -	src/cris/ffi.c src/cris/sysv.S src/cris/ffitarget.h \
       
 16288 -	src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h \
       
 16289 -	src/ia64/unix.S \
       
 16290 -	src/mips/ffi.c src/mips/n32.S src/mips/o32.S \
       
 16291 -	src/mips/ffitarget.h \
       
 16292 -	src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \
       
 16293 -	src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \
       
 16294 -	src/powerpc/ffi.c src/powerpc/sysv.S \
       
 16295 -	src/powerpc/linux64.S src/powerpc/linux64_closure.S \
       
 16296 -	src/powerpc/ppc_closure.S src/powerpc/asm.h \
       
 16297 -	src/powerpc/aix.S src/powerpc/darwin.S \
       
 16298 -	src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \
       
 16299 -	src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \
       
 16300 -	src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \
       
 16301 -	src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h \
       
 16302 -	src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \
       
 16303 -	src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \
       
 16304 -	src/sparc/ffi.c src/x86/darwin64.S \
       
 16305 -	src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/win64.S \
       
 16306 -	src/x86/darwin.S src/x86/freebsd.S \
       
 16307 -	src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \
       
 16308 -	src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
       
 16309 -	src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \
       
 16310 -	libtool-version ChangeLog.libffi m4/libtool.m4 \
       
 16311 -	m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
       
 16312 +EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj			\
       
 16313 +	 src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S	\
       
 16314 +	 src/alpha/ffi.c src/alpha/osf.S			\
       
 16315 +	 src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S	\
       
 16316 +	 src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S		\
       
 16317 +	 src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S		\
       
 16318 +	 src/avr32/ffitarget.h src/cris/ffi.c src/cris/sysv.S		\
       
 16319 +	 src/cris/ffitarget.h src/ia64/ffi.c src/ia64/ffitarget.h	\
       
 16320 +	 src/ia64/ia64_flags.h src/ia64/unix.S src/mips/ffi.c		\
       
 16321 +	 src/mips/n32.S src/mips/o32.S src/metag/ffi.c			\
       
 16322 +	 src/metag/ffitarget.h src/metag/sysv.S src/moxie/ffi.c		\
       
 16323 +	 src/moxie/ffitarget.h src/moxie/eabi.S src/mips/ffitarget.h	\
       
 16324 +	 src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h		\
       
 16325 +	 src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h		\
       
 16326 +	 src/m88k/ffi.c src/m88k/obsd.S src/m88k/ffitarget.h		\
       
 16327 +	 src/microblaze/ffi.c src/microblaze/sysv.S			\
       
 16328 +	 src/microblaze/ffitarget.h					\
       
 16329 +	 src/nios2/ffi.c src/nios2/ffitarget.h src/nios2/sysv.S		\
       
 16330 +	 src/powerpc/ffi.c src/powerpc/ffi_powerpc.h			\
       
 16331 +	 src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c		\
       
 16332 +	 src/powerpc/sysv.S src/powerpc/linux64.S			\
       
 16333 +	 src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S	\
       
 16334 +	 src/powerpc/asm.h src/powerpc/aix.S src/powerpc/darwin.S	\
       
 16335 +	 src/powerpc/aix_closure.S src/powerpc/darwin_closure.S		\
       
 16336 +	 src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h		\
       
 16337 +	 src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h		\
       
 16338 +	 src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/sh64/ffi.c	\
       
 16339 +	 src/sh64/sysv.S src/sh64/ffitarget.h src/sparc/v8.S		\
       
 16340 +	 src/sparc/v9.S src/sparc/ffitarget.h src/sparc/ffi.c		\
       
 16341 +	 src/x86/darwin64.S src/x86/ffi.c src/x86/sysv.S		\
       
 16342 +	 src/x86/win32.S src/x86/darwin.S src/x86/win64.S		\
       
 16343 +	 src/x86/freebsd.S src/x86/ffi64.c src/x86/unix64.S		\
       
 16344 +	 src/x86/ffitarget.h src/pa/ffitarget.h src/pa/ffi.c		\
       
 16345 +	 src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c src/bfin/ffi.c	\
       
 16346 +	 src/bfin/ffitarget.h src/bfin/sysv.S src/frv/eabi.S		\
       
 16347 +	 src/frv/ffitarget.h src/dlmalloc.c src/tile/ffi.c		\
       
 16348 +	 src/tile/ffitarget.h src/tile/tile.S libtool-version		\
       
 16349 +	 src/vax/ffi.c src/vax/ffitarget.h src/vax/elfbsd.S		\
       
 16350 +	 src/xtensa/ffitarget.h src/xtensa/ffi.c src/xtensa/sysv.S	\
       
 16351 +	 ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4		\
       
 16352 +	 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4			\
       
 16353 +	 m4/ltversion.m4 src/arm/gentramp.sh src/debug.c msvcc.sh	\
       
 16354 +	 generate-darwin-source-and-headers.py				\
       
 16355 +	 libffi.xcodeproj/project.pbxproj src/arm/trampoline.S		\
       
 16356 +	 libtool-ldflags ChangeLog.libffi-3.1
       
 16357  
       
 16358  info_TEXINFOS = doc/libffi.texi
       
 16359  
       
 16360  # Work around what appears to be a GNU make bug handling MAKEFLAGS
       
 16361  # values defined in terms of make variables, as is the case for CC and
       
 16362  # friends when we are called from the top level Makefile.
       
 16363  AM_MAKEFLAGS = \
       
 16364  	'AR_FLAGS=$(AR_FLAGS)' \
       
 16365 @@ -462,46 +680,54 @@ AM_MAKEFLAGS = \
       
 16366  	'AS=$(AS)' \
       
 16367  	'CC=$(CC)' \
       
 16368  	'CXX=$(CXX)' \
       
 16369  	'LD=$(LD)' \
       
 16370  	'NM=$(NM)' \
       
 16371  	'RANLIB=$(RANLIB)' \
       
 16372  	'DESTDIR=$(DESTDIR)'
       
 16373  
       
 16374 +
       
 16375 +# Subdir rules rely on $(FLAGS_TO_PASS)
       
 16376 +FLAGS_TO_PASS = $(AM_MAKEFLAGS)
       
 16377  MAKEOVERRIDES = 
       
 16378 -ACLOCAL_AMFLAGS = $(ACLOCAL_AMFLAGS) -I m4
       
 16379 -lib_LTLIBRARIES = libffi.la
       
 16380 +toolexeclib_LTLIBRARIES = libffi.la
       
 16381  noinst_LTLIBRARIES = libffi_convenience.la
       
 16382 -libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \
       
 16383 +libffi_la_SOURCES = src/prep_cif.c src/types.c \
       
 16384  		src/raw_api.c src/java_raw_api.c src/closures.c
       
 16385  
       
 16386  pkgconfigdir = $(libdir)/pkgconfig
       
 16387  pkgconfig_DATA = libffi.pc
       
 16388  nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \
       
 16389  	$(am__append_3) $(am__append_4) $(am__append_5) \
       
 16390  	$(am__append_6) $(am__append_7) $(am__append_8) \
       
 16391  	$(am__append_9) $(am__append_10) $(am__append_11) \
       
 16392  	$(am__append_12) $(am__append_13) $(am__append_14) \
       
 16393  	$(am__append_15) $(am__append_16) $(am__append_17) \
       
 16394  	$(am__append_18) $(am__append_19) $(am__append_20) \
       
 16395  	$(am__append_21) $(am__append_22) $(am__append_23) \
       
 16396 -	$(am__append_24) $(am__append_25) $(am__append_26)
       
 16397 +	$(am__append_24) $(am__append_25) $(am__append_26) \
       
 16398 +	$(am__append_27) $(am__append_28) $(am__append_29) \
       
 16399 +	$(am__append_30) $(am__append_31) $(am__append_32) \
       
 16400 +	$(am__append_33) $(am__append_34) $(am__append_35) \
       
 16401 +	$(am__append_36) $(am__append_37) $(am__append_38) \
       
 16402 +	$(am__append_39)
       
 16403  libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
       
 16404  nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
       
 16405 -AM_CFLAGS = -Wall -g -fexceptions $(am__append_27) $(am__append_28)
       
 16406 -libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
       
 16407 +LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS))
       
 16408 +AM_CFLAGS = $(am__append_40)
       
 16409 +libffi_la_LDFLAGS = -no-undefined -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
       
 16410  AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
       
 16411  AM_CCASFLAGS = $(AM_CPPFLAGS)
       
 16412  all: fficonfig.h
       
 16413  	$(MAKE) $(AM_MAKEFLAGS) all-recursive
       
 16414  
       
 16415  .SUFFIXES:
       
 16416  .SUFFIXES: .S .c .dvi .lo .o .obj .ps
       
 16417 -am--refresh:
       
 16418 +am--refresh: Makefile
       
 16419  	@:
       
 16420  $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
       
 16421  	@for dep in $?; do \
       
 16422  	  case '$(am__configure_deps)' in \
       
 16423  	    *$$dep*) \
       
 16424  	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
       
 16425  	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
       
 16426  		&& exit 0; \
       
 16427 @@ -527,111 +753,125 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
       
 16428  
       
 16429  $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
       
 16430  	$(am__cd) $(srcdir) && $(AUTOCONF)
       
 16431  $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
       
 16432  	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
       
 16433  $(am__aclocal_m4_deps):
       
 16434  
       
 16435  fficonfig.h: stamp-h1
       
 16436 -	@if test ! -f $@; then \
       
 16437 -	  rm -f stamp-h1; \
       
 16438 -	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
       
 16439 -	else :; fi
       
 16440 +	@if test ! -f $@; then rm -f stamp-h1; else :; fi
       
 16441 +	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
       
 16442  
       
 16443  stamp-h1: $(srcdir)/fficonfig.h.in $(top_builddir)/config.status
       
 16444  	@rm -f stamp-h1
       
 16445  	cd $(top_builddir) && $(SHELL) ./config.status fficonfig.h
       
 16446  $(srcdir)/fficonfig.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
       
 16447  	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
       
 16448  	rm -f stamp-h1
       
 16449  	touch $@
       
 16450  
       
 16451  distclean-hdr:
       
 16452  	-rm -f fficonfig.h stamp-h1
       
 16453  libffi.pc: $(top_builddir)/config.status $(srcdir)/libffi.pc.in
       
 16454  	cd $(top_builddir) && $(SHELL) ./config.status $@
       
 16455 -install-libLTLIBRARIES: $(lib_LTLIBRARIES)
       
 16456 +
       
 16457 +clean-noinstLTLIBRARIES:
       
 16458 +	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
       
 16459 +	@list='$(noinst_LTLIBRARIES)'; \
       
 16460 +	locs=`for p in $$list; do echo $$p; done | \
       
 16461 +	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
       
 16462 +	      sort -u`; \
       
 16463 +	test -z "$$locs" || { \
       
 16464 +	  echo rm -f $${locs}; \
       
 16465 +	  rm -f $${locs}; \
       
 16466 +	}
       
 16467 +
       
 16468 +install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
       
 16469  	@$(NORMAL_INSTALL)
       
 16470 -	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
       
 16471 -	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
       
 16472 +	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
       
 16473  	list2=; for p in $$list; do \
       
 16474  	  if test -f $$p; then \
       
 16475  	    list2="$$list2 $$p"; \
       
 16476  	  else :; fi; \
       
 16477  	done; \
       
 16478  	test -z "$$list2" || { \
       
 16479 -	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
       
 16480 -	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
       
 16481 +	  echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \
       
 16482 +	  $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \
       
 16483 +	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \
       
 16484 +	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \
       
 16485  	}
       
 16486  
       
 16487 -uninstall-libLTLIBRARIES:
       
 16488 +uninstall-toolexeclibLTLIBRARIES:
       
 16489  	@$(NORMAL_UNINSTALL)
       
 16490 -	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
       
 16491 +	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
       
 16492  	for p in $$list; do \
       
 16493  	  $(am__strip_dir) \
       
 16494 -	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
       
 16495 -	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
       
 16496 +	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
       
 16497 +	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \
       
 16498  	done
       
 16499  
       
 16500 -clean-libLTLIBRARIES:
       
 16501 -	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
       
 16502 -	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
       
 16503 -	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
       
 16504 -	  test "$$dir" != "$$p" || dir=.; \
       
 16505 -	  echo "rm -f \"$${dir}/so_locations\""; \
       
 16506 -	  rm -f "$${dir}/so_locations"; \
       
 16507 -	done
       
 16508 -
       
 16509 -clean-noinstLTLIBRARIES:
       
 16510 -	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
       
 16511 -	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
       
 16512 -	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
       
 16513 -	  test "$$dir" != "$$p" || dir=.; \
       
 16514 -	  echo "rm -f \"$${dir}/so_locations\""; \
       
 16515 -	  rm -f "$${dir}/so_locations"; \
       
 16516 -	done
       
 16517 +clean-toolexeclibLTLIBRARIES:
       
 16518 +	-test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
       
 16519 +	@list='$(toolexeclib_LTLIBRARIES)'; \
       
 16520 +	locs=`for p in $$list; do echo $$p; done | \
       
 16521 +	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
       
 16522 +	      sort -u`; \
       
 16523 +	test -z "$$locs" || { \
       
 16524 +	  echo rm -f $${locs}; \
       
 16525 +	  rm -f $${locs}; \
       
 16526 +	}
       
 16527  src/$(am__dirstamp):
       
 16528  	@$(MKDIR_P) src
       
 16529  	@: > src/$(am__dirstamp)
       
 16530  src/$(DEPDIR)/$(am__dirstamp):
       
 16531  	@$(MKDIR_P) src/$(DEPDIR)
       
 16532  	@: > src/$(DEPDIR)/$(am__dirstamp)
       
 16533 -src/debug.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
       
 16534  src/prep_cif.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
       
 16535  src/types.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
       
 16536  src/raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
       
 16537  src/java_raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
       
 16538  src/closures.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
       
 16539 +src/debug.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
       
 16540  src/mips/$(am__dirstamp):
       
 16541  	@$(MKDIR_P) src/mips
       
 16542  	@: > src/mips/$(am__dirstamp)
       
 16543  src/mips/$(DEPDIR)/$(am__dirstamp):
       
 16544  	@$(MKDIR_P) src/mips/$(DEPDIR)
       
 16545  	@: > src/mips/$(DEPDIR)/$(am__dirstamp)
       
 16546  src/mips/ffi.lo: src/mips/$(am__dirstamp) \
       
 16547  	src/mips/$(DEPDIR)/$(am__dirstamp)
       
 16548  src/mips/o32.lo: src/mips/$(am__dirstamp) \
       
 16549  	src/mips/$(DEPDIR)/$(am__dirstamp)
       
 16550  src/mips/n32.lo: src/mips/$(am__dirstamp) \
       
 16551  	src/mips/$(DEPDIR)/$(am__dirstamp)
       
 16552 +src/bfin/$(am__dirstamp):
       
 16553 +	@$(MKDIR_P) src/bfin
       
 16554 +	@: > src/bfin/$(am__dirstamp)
       
 16555 +src/bfin/$(DEPDIR)/$(am__dirstamp):
       
 16556 +	@$(MKDIR_P) src/bfin/$(DEPDIR)
       
 16557 +	@: > src/bfin/$(DEPDIR)/$(am__dirstamp)
       
 16558 +src/bfin/ffi.lo: src/bfin/$(am__dirstamp) \
       
 16559 +	src/bfin/$(DEPDIR)/$(am__dirstamp)
       
 16560 +src/bfin/sysv.lo: src/bfin/$(am__dirstamp) \
       
 16561 +	src/bfin/$(DEPDIR)/$(am__dirstamp)
       
 16562  src/x86/$(am__dirstamp):
       
 16563  	@$(MKDIR_P) src/x86
       
 16564  	@: > src/x86/$(am__dirstamp)
       
 16565  src/x86/$(DEPDIR)/$(am__dirstamp):
       
 16566  	@$(MKDIR_P) src/x86/$(DEPDIR)
       
 16567  	@: > src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16568  src/x86/ffi.lo: src/x86/$(am__dirstamp) \
       
 16569  	src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16570  src/x86/sysv.lo: src/x86/$(am__dirstamp) \
       
 16571  	src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16572 +src/x86/win32.lo: src/x86/$(am__dirstamp) \
       
 16573 +	src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16574  src/x86/freebsd.lo: src/x86/$(am__dirstamp) \
       
 16575  	src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16576 -src/x86/win32.lo: src/x86/$(am__dirstamp) \
       
 16577 -	src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16578  src/x86/win64.lo: src/x86/$(am__dirstamp) \
       
 16579  	src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16580  src/x86/darwin.lo: src/x86/$(am__dirstamp) \
       
 16581  	src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16582  src/x86/ffi64.lo: src/x86/$(am__dirstamp) \
       
 16583  	src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16584  src/x86/darwin64.lo: src/x86/$(am__dirstamp) \
       
 16585  	src/x86/$(DEPDIR)/$(am__dirstamp)
       
 16586 @@ -682,24 +922,68 @@ src/m68k/$(am__dirstamp):
       
 16587  	@: > src/m68k/$(am__dirstamp)
       
 16588  src/m68k/$(DEPDIR)/$(am__dirstamp):
       
 16589  	@$(MKDIR_P) src/m68k/$(DEPDIR)
       
 16590  	@: > src/m68k/$(DEPDIR)/$(am__dirstamp)
       
 16591  src/m68k/ffi.lo: src/m68k/$(am__dirstamp) \
       
 16592  	src/m68k/$(DEPDIR)/$(am__dirstamp)
       
 16593  src/m68k/sysv.lo: src/m68k/$(am__dirstamp) \
       
 16594  	src/m68k/$(DEPDIR)/$(am__dirstamp)
       
 16595 +src/m88k/$(am__dirstamp):
       
 16596 +	@$(MKDIR_P) src/m88k
       
 16597 +	@: > src/m88k/$(am__dirstamp)
       
 16598 +src/m88k/$(DEPDIR)/$(am__dirstamp):
       
 16599 +	@$(MKDIR_P) src/m88k/$(DEPDIR)
       
 16600 +	@: > src/m88k/$(DEPDIR)/$(am__dirstamp)
       
 16601 +src/m88k/ffi.lo: src/m88k/$(am__dirstamp) \
       
 16602 +	src/m88k/$(DEPDIR)/$(am__dirstamp)
       
 16603 +src/m88k/obsd.lo: src/m88k/$(am__dirstamp) \
       
 16604 +	src/m88k/$(DEPDIR)/$(am__dirstamp)
       
 16605 +src/moxie/$(am__dirstamp):
       
 16606 +	@$(MKDIR_P) src/moxie
       
 16607 +	@: > src/moxie/$(am__dirstamp)
       
 16608 +src/moxie/$(DEPDIR)/$(am__dirstamp):
       
 16609 +	@$(MKDIR_P) src/moxie/$(DEPDIR)
       
 16610 +	@: > src/moxie/$(DEPDIR)/$(am__dirstamp)
       
 16611 +src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \
       
 16612 +	src/moxie/$(DEPDIR)/$(am__dirstamp)
       
 16613 +src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \
       
 16614 +	src/moxie/$(DEPDIR)/$(am__dirstamp)
       
 16615 +src/microblaze/$(am__dirstamp):
       
 16616 +	@$(MKDIR_P) src/microblaze
       
 16617 +	@: > src/microblaze/$(am__dirstamp)
       
 16618 +src/microblaze/$(DEPDIR)/$(am__dirstamp):
       
 16619 +	@$(MKDIR_P) src/microblaze/$(DEPDIR)
       
 16620 +	@: > src/microblaze/$(DEPDIR)/$(am__dirstamp)
       
 16621 +src/microblaze/ffi.lo: src/microblaze/$(am__dirstamp) \
       
 16622 +	src/microblaze/$(DEPDIR)/$(am__dirstamp)
       
 16623 +src/microblaze/sysv.lo: src/microblaze/$(am__dirstamp) \
       
 16624 +	src/microblaze/$(DEPDIR)/$(am__dirstamp)
       
 16625 +src/nios2/$(am__dirstamp):
       
 16626 +	@$(MKDIR_P) src/nios2
       
 16627 +	@: > src/nios2/$(am__dirstamp)
       
 16628 +src/nios2/$(DEPDIR)/$(am__dirstamp):
       
 16629 +	@$(MKDIR_P) src/nios2/$(DEPDIR)
       
 16630 +	@: > src/nios2/$(DEPDIR)/$(am__dirstamp)
       
 16631 +src/nios2/sysv.lo: src/nios2/$(am__dirstamp) \
       
 16632 +	src/nios2/$(DEPDIR)/$(am__dirstamp)
       
 16633 +src/nios2/ffi.lo: src/nios2/$(am__dirstamp) \
       
 16634 +	src/nios2/$(DEPDIR)/$(am__dirstamp)
       
 16635  src/powerpc/$(am__dirstamp):
       
 16636  	@$(MKDIR_P) src/powerpc
       
 16637  	@: > src/powerpc/$(am__dirstamp)
       
 16638  src/powerpc/$(DEPDIR)/$(am__dirstamp):
       
 16639  	@$(MKDIR_P) src/powerpc/$(DEPDIR)
       
 16640  	@: > src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16641  src/powerpc/ffi.lo: src/powerpc/$(am__dirstamp) \
       
 16642  	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16643 +src/powerpc/ffi_sysv.lo: src/powerpc/$(am__dirstamp) \
       
 16644 +	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16645 +src/powerpc/ffi_linux64.lo: src/powerpc/$(am__dirstamp) \
       
 16646 +	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16647  src/powerpc/sysv.lo: src/powerpc/$(am__dirstamp) \
       
 16648  	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16649  src/powerpc/ppc_closure.lo: src/powerpc/$(am__dirstamp) \
       
 16650  	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16651  src/powerpc/linux64.lo: src/powerpc/$(am__dirstamp) \
       
 16652  	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16653  src/powerpc/linux64_closure.lo: src/powerpc/$(am__dirstamp) \
       
 16654  	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16655 @@ -708,26 +992,48 @@ src/powerpc/ffi_darwin.lo: src/powerpc/$
       
 16656  src/powerpc/aix.lo: src/powerpc/$(am__dirstamp) \
       
 16657  	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16658  src/powerpc/aix_closure.lo: src/powerpc/$(am__dirstamp) \
       
 16659  	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16660  src/powerpc/darwin.lo: src/powerpc/$(am__dirstamp) \
       
 16661  	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16662  src/powerpc/darwin_closure.lo: src/powerpc/$(am__dirstamp) \
       
 16663  	src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 16664 +src/aarch64/$(am__dirstamp):
       
 16665 +	@$(MKDIR_P) src/aarch64
       
 16666 +	@: > src/aarch64/$(am__dirstamp)
       
 16667 +src/aarch64/$(DEPDIR)/$(am__dirstamp):
       
 16668 +	@$(MKDIR_P) src/aarch64/$(DEPDIR)
       
 16669 +	@: > src/aarch64/$(DEPDIR)/$(am__dirstamp)
       
 16670 +src/aarch64/sysv.lo: src/aarch64/$(am__dirstamp) \
       
 16671 +	src/aarch64/$(DEPDIR)/$(am__dirstamp)
       
 16672 +src/aarch64/ffi.lo: src/aarch64/$(am__dirstamp) \
       
 16673 +	src/aarch64/$(DEPDIR)/$(am__dirstamp)
       
 16674 +src/arc/$(am__dirstamp):
       
 16675 +	@$(MKDIR_P) src/arc
       
 16676 +	@: > src/arc/$(am__dirstamp)
       
 16677 +src/arc/$(DEPDIR)/$(am__dirstamp):
       
 16678 +	@$(MKDIR_P) src/arc/$(DEPDIR)
       
 16679 +	@: > src/arc/$(DEPDIR)/$(am__dirstamp)
       
 16680 +src/arc/arcompact.lo: src/arc/$(am__dirstamp) \
       
 16681 +	src/arc/$(DEPDIR)/$(am__dirstamp)
       
 16682 +src/arc/ffi.lo: src/arc/$(am__dirstamp) \
       
 16683 +	src/arc/$(DEPDIR)/$(am__dirstamp)
       
 16684  src/arm/$(am__dirstamp):
       
 16685  	@$(MKDIR_P) src/arm
       
 16686  	@: > src/arm/$(am__dirstamp)
       
 16687  src/arm/$(DEPDIR)/$(am__dirstamp):
       
 16688  	@$(MKDIR_P) src/arm/$(DEPDIR)
       
 16689  	@: > src/arm/$(DEPDIR)/$(am__dirstamp)
       
 16690  src/arm/sysv.lo: src/arm/$(am__dirstamp) \
       
 16691  	src/arm/$(DEPDIR)/$(am__dirstamp)
       
 16692  src/arm/ffi.lo: src/arm/$(am__dirstamp) \
       
 16693  	src/arm/$(DEPDIR)/$(am__dirstamp)
       
 16694 +src/arm/trampoline.lo: src/arm/$(am__dirstamp) \
       
 16695 +	src/arm/$(DEPDIR)/$(am__dirstamp)
       
 16696  src/avr32/$(am__dirstamp):
       
 16697  	@$(MKDIR_P) src/avr32
       
 16698  	@: > src/avr32/$(am__dirstamp)
       
 16699  src/avr32/$(DEPDIR)/$(am__dirstamp):
       
 16700  	@$(MKDIR_P) src/avr32/$(DEPDIR)
       
 16701  	@: > src/avr32/$(DEPDIR)/$(am__dirstamp)
       
 16702  src/avr32/sysv.lo: src/avr32/$(am__dirstamp) \
       
 16703  	src/avr32/$(DEPDIR)/$(am__dirstamp)
       
 16704 @@ -748,26 +1054,16 @@ src/frv/$(am__dirstamp):
       
 16705  	@: > src/frv/$(am__dirstamp)
       
 16706  src/frv/$(DEPDIR)/$(am__dirstamp):
       
 16707  	@$(MKDIR_P) src/frv/$(DEPDIR)
       
 16708  	@: > src/frv/$(DEPDIR)/$(am__dirstamp)
       
 16709  src/frv/eabi.lo: src/frv/$(am__dirstamp) \
       
 16710  	src/frv/$(DEPDIR)/$(am__dirstamp)
       
 16711  src/frv/ffi.lo: src/frv/$(am__dirstamp) \
       
 16712  	src/frv/$(DEPDIR)/$(am__dirstamp)
       
 16713 -src/moxie/$(am__dirstamp):
       
 16714 -	@$(MKDIR_P) src/moxie
       
 16715 -	@: > src/moxie/$(am__dirstamp)
       
 16716 -src/moxie/$(DEPDIR)/$(am__dirstamp):
       
 16717 -	@$(MKDIR_P) src/moxie/$(DEPDIR)
       
 16718 -	@: > src/moxie/$(DEPDIR)/$(am__dirstamp)
       
 16719 -src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \
       
 16720 -	src/moxie/$(DEPDIR)/$(am__dirstamp)
       
 16721 -src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \
       
 16722 -	src/moxie/$(DEPDIR)/$(am__dirstamp)
       
 16723  src/s390/$(am__dirstamp):
       
 16724  	@$(MKDIR_P) src/s390
       
 16725  	@: > src/s390/$(am__dirstamp)
       
 16726  src/s390/$(DEPDIR)/$(am__dirstamp):
       
 16727  	@$(MKDIR_P) src/s390/$(DEPDIR)
       
 16728  	@: > src/s390/$(DEPDIR)/$(am__dirstamp)
       
 16729  src/s390/sysv.lo: src/s390/$(am__dirstamp) \
       
 16730  	src/s390/$(DEPDIR)/$(am__dirstamp)
       
 16731 @@ -800,282 +1096,297 @@ src/pa/$(am__dirstamp):
       
 16732  src/pa/$(DEPDIR)/$(am__dirstamp):
       
 16733  	@$(MKDIR_P) src/pa/$(DEPDIR)
       
 16734  	@: > src/pa/$(DEPDIR)/$(am__dirstamp)
       
 16735  src/pa/linux.lo: src/pa/$(am__dirstamp) \
       
 16736  	src/pa/$(DEPDIR)/$(am__dirstamp)
       
 16737  src/pa/ffi.lo: src/pa/$(am__dirstamp) src/pa/$(DEPDIR)/$(am__dirstamp)
       
 16738  src/pa/hpux32.lo: src/pa/$(am__dirstamp) \
       
 16739  	src/pa/$(DEPDIR)/$(am__dirstamp)
       
 16740 -libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) 
       
 16741 -	$(libffi_la_LINK) -rpath $(libdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS)
       
 16742 -libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES) 
       
 16743 -	$(LINK)  $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS)
       
 16744 +src/tile/$(am__dirstamp):
       
 16745 +	@$(MKDIR_P) src/tile
       
 16746 +	@: > src/tile/$(am__dirstamp)
       
 16747 +src/tile/$(DEPDIR)/$(am__dirstamp):
       
 16748 +	@$(MKDIR_P) src/tile/$(DEPDIR)
       
 16749 +	@: > src/tile/$(DEPDIR)/$(am__dirstamp)
       
 16750 +src/tile/tile.lo: src/tile/$(am__dirstamp) \
       
 16751 +	src/tile/$(DEPDIR)/$(am__dirstamp)
       
 16752 +src/tile/ffi.lo: src/tile/$(am__dirstamp) \
       
 16753 +	src/tile/$(DEPDIR)/$(am__dirstamp)
       
 16754 +src/xtensa/$(am__dirstamp):
       
 16755 +	@$(MKDIR_P) src/xtensa
       
 16756 +	@: > src/xtensa/$(am__dirstamp)
       
 16757 +src/xtensa/$(DEPDIR)/$(am__dirstamp):
       
 16758 +	@$(MKDIR_P) src/xtensa/$(DEPDIR)
       
 16759 +	@: > src/xtensa/$(DEPDIR)/$(am__dirstamp)
       
 16760 +src/xtensa/sysv.lo: src/xtensa/$(am__dirstamp) \
       
 16761 +	src/xtensa/$(DEPDIR)/$(am__dirstamp)
       
 16762 +src/xtensa/ffi.lo: src/xtensa/$(am__dirstamp) \
       
 16763 +	src/xtensa/$(DEPDIR)/$(am__dirstamp)
       
 16764 +src/metag/$(am__dirstamp):
       
 16765 +	@$(MKDIR_P) src/metag
       
 16766 +	@: > src/metag/$(am__dirstamp)
       
 16767 +src/metag/$(DEPDIR)/$(am__dirstamp):
       
 16768 +	@$(MKDIR_P) src/metag/$(DEPDIR)
       
 16769 +	@: > src/metag/$(DEPDIR)/$(am__dirstamp)
       
 16770 +src/metag/sysv.lo: src/metag/$(am__dirstamp) \
       
 16771 +	src/metag/$(DEPDIR)/$(am__dirstamp)
       
 16772 +src/metag/ffi.lo: src/metag/$(am__dirstamp) \
       
 16773 +	src/metag/$(DEPDIR)/$(am__dirstamp)
       
 16774 +src/vax/$(am__dirstamp):
       
 16775 +	@$(MKDIR_P) src/vax
       
 16776 +	@: > src/vax/$(am__dirstamp)
       
 16777 +src/vax/$(DEPDIR)/$(am__dirstamp):
       
 16778 +	@$(MKDIR_P) src/vax/$(DEPDIR)
       
 16779 +	@: > src/vax/$(DEPDIR)/$(am__dirstamp)
       
 16780 +src/vax/elfbsd.lo: src/vax/$(am__dirstamp) \
       
 16781 +	src/vax/$(DEPDIR)/$(am__dirstamp)
       
 16782 +src/vax/ffi.lo: src/vax/$(am__dirstamp) \
       
 16783 +	src/vax/$(DEPDIR)/$(am__dirstamp)
       
 16784 +
       
 16785 +libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) $(EXTRA_libffi_la_DEPENDENCIES) 
       
 16786 +	$(AM_V_CCLD)$(libffi_la_LINK) -rpath $(toolexeclibdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS)
       
 16787 +
       
 16788 +libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES) $(EXTRA_libffi_convenience_la_DEPENDENCIES) 
       
 16789 +	$(AM_V_CCLD)$(LINK)  $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS)
       
 16790  
       
 16791  mostlyclean-compile:
       
 16792  	-rm -f *.$(OBJEXT)
       
 16793 -	-rm -f src/alpha/ffi.$(OBJEXT)
       
 16794 -	-rm -f src/alpha/ffi.lo
       
 16795 -	-rm -f src/alpha/osf.$(OBJEXT)
       
 16796 -	-rm -f src/alpha/osf.lo
       
 16797 -	-rm -f src/arm/ffi.$(OBJEXT)
       
 16798 -	-rm -f src/arm/ffi.lo
       
 16799 -	-rm -f src/arm/sysv.$(OBJEXT)
       
 16800 -	-rm -f src/arm/sysv.lo
       
 16801 -	-rm -f src/avr32/ffi.$(OBJEXT)
       
 16802 -	-rm -f src/avr32/ffi.lo
       
 16803 -	-rm -f src/avr32/sysv.$(OBJEXT)
       
 16804 -	-rm -f src/avr32/sysv.lo
       
 16805 -	-rm -f src/closures.$(OBJEXT)
       
 16806 -	-rm -f src/closures.lo
       
 16807 -	-rm -f src/cris/ffi.$(OBJEXT)
       
 16808 -	-rm -f src/cris/ffi.lo
       
 16809 -	-rm -f src/cris/sysv.$(OBJEXT)
       
 16810 -	-rm -f src/cris/sysv.lo
       
 16811 -	-rm -f src/debug.$(OBJEXT)
       
 16812 -	-rm -f src/debug.lo
       
 16813 -	-rm -f src/frv/eabi.$(OBJEXT)
       
 16814 -	-rm -f src/frv/eabi.lo
       
 16815 -	-rm -f src/frv/ffi.$(OBJEXT)
       
 16816 -	-rm -f src/frv/ffi.lo
       
 16817 -	-rm -f src/ia64/ffi.$(OBJEXT)
       
 16818 -	-rm -f src/ia64/ffi.lo
       
 16819 -	-rm -f src/ia64/unix.$(OBJEXT)
       
 16820 -	-rm -f src/ia64/unix.lo
       
 16821 -	-rm -f src/java_raw_api.$(OBJEXT)
       
 16822 -	-rm -f src/java_raw_api.lo
       
 16823 -	-rm -f src/m32r/ffi.$(OBJEXT)
       
 16824 -	-rm -f src/m32r/ffi.lo
       
 16825 -	-rm -f src/m32r/sysv.$(OBJEXT)
       
 16826 -	-rm -f src/m32r/sysv.lo
       
 16827 -	-rm -f src/m68k/ffi.$(OBJEXT)
       
 16828 -	-rm -f src/m68k/ffi.lo
       
 16829 -	-rm -f src/m68k/sysv.$(OBJEXT)
       
 16830 -	-rm -f src/m68k/sysv.lo
       
 16831 -	-rm -f src/mips/ffi.$(OBJEXT)
       
 16832 -	-rm -f src/mips/ffi.lo
       
 16833 -	-rm -f src/mips/n32.$(OBJEXT)
       
 16834 -	-rm -f src/mips/n32.lo
       
 16835 -	-rm -f src/mips/o32.$(OBJEXT)
       
 16836 -	-rm -f src/mips/o32.lo
       
 16837 -	-rm -f src/moxie/eabi.$(OBJEXT)
       
 16838 -	-rm -f src/moxie/eabi.lo
       
 16839 -	-rm -f src/moxie/ffi.$(OBJEXT)
       
 16840 -	-rm -f src/moxie/ffi.lo
       
 16841 -	-rm -f src/pa/ffi.$(OBJEXT)
       
 16842 -	-rm -f src/pa/ffi.lo
       
 16843 -	-rm -f src/pa/hpux32.$(OBJEXT)
       
 16844 -	-rm -f src/pa/hpux32.lo
       
 16845 -	-rm -f src/pa/linux.$(OBJEXT)
       
 16846 -	-rm -f src/pa/linux.lo
       
 16847 -	-rm -f src/powerpc/aix.$(OBJEXT)
       
 16848 -	-rm -f src/powerpc/aix.lo
       
 16849 -	-rm -f src/powerpc/aix_closure.$(OBJEXT)
       
 16850 -	-rm -f src/powerpc/aix_closure.lo
       
 16851 -	-rm -f src/powerpc/darwin.$(OBJEXT)
       
 16852 -	-rm -f src/powerpc/darwin.lo
       
 16853 -	-rm -f src/powerpc/darwin_closure.$(OBJEXT)
       
 16854 -	-rm -f src/powerpc/darwin_closure.lo
       
 16855 -	-rm -f src/powerpc/ffi.$(OBJEXT)
       
 16856 -	-rm -f src/powerpc/ffi.lo
       
 16857 -	-rm -f src/powerpc/ffi_darwin.$(OBJEXT)
       
 16858 -	-rm -f src/powerpc/ffi_darwin.lo
       
 16859 -	-rm -f src/powerpc/linux64.$(OBJEXT)
       
 16860 -	-rm -f src/powerpc/linux64.lo
       
 16861 -	-rm -f src/powerpc/linux64_closure.$(OBJEXT)
       
 16862 -	-rm -f src/powerpc/linux64_closure.lo
       
 16863 -	-rm -f src/powerpc/ppc_closure.$(OBJEXT)
       
 16864 -	-rm -f src/powerpc/ppc_closure.lo
       
 16865 -	-rm -f src/powerpc/sysv.$(OBJEXT)
       
 16866 -	-rm -f src/powerpc/sysv.lo
       
 16867 -	-rm -f src/prep_cif.$(OBJEXT)
       
 16868 -	-rm -f src/prep_cif.lo
       
 16869 -	-rm -f src/raw_api.$(OBJEXT)
       
 16870 -	-rm -f src/raw_api.lo
       
 16871 -	-rm -f src/s390/ffi.$(OBJEXT)
       
 16872 -	-rm -f src/s390/ffi.lo
       
 16873 -	-rm -f src/s390/sysv.$(OBJEXT)
       
 16874 -	-rm -f src/s390/sysv.lo
       
 16875 -	-rm -f src/sh/ffi.$(OBJEXT)
       
 16876 -	-rm -f src/sh/ffi.lo
       
 16877 -	-rm -f src/sh/sysv.$(OBJEXT)
       
 16878 -	-rm -f src/sh/sysv.lo
       
 16879 -	-rm -f src/sh64/ffi.$(OBJEXT)
       
 16880 -	-rm -f src/sh64/ffi.lo
       
 16881 -	-rm -f src/sh64/sysv.$(OBJEXT)
       
 16882 -	-rm -f src/sh64/sysv.lo
       
 16883 -	-rm -f src/sparc/ffi.$(OBJEXT)
       
 16884 -	-rm -f src/sparc/ffi.lo
       
 16885 -	-rm -f src/sparc/v8.$(OBJEXT)
       
 16886 -	-rm -f src/sparc/v8.lo
       
 16887 -	-rm -f src/sparc/v9.$(OBJEXT)
       
 16888 -	-rm -f src/sparc/v9.lo
       
 16889 -	-rm -f src/types.$(OBJEXT)
       
 16890 -	-rm -f src/types.lo
       
 16891 -	-rm -f src/x86/darwin.$(OBJEXT)
       
 16892 -	-rm -f src/x86/darwin.lo
       
 16893 -	-rm -f src/x86/darwin64.$(OBJEXT)
       
 16894 -	-rm -f src/x86/darwin64.lo
       
 16895 -	-rm -f src/x86/ffi.$(OBJEXT)
       
 16896 -	-rm -f src/x86/ffi.lo
       
 16897 -	-rm -f src/x86/ffi64.$(OBJEXT)
       
 16898 -	-rm -f src/x86/ffi64.lo
       
 16899 -	-rm -f src/x86/freebsd.$(OBJEXT)
       
 16900 -	-rm -f src/x86/freebsd.lo
       
 16901 -	-rm -f src/x86/sysv.$(OBJEXT)
       
 16902 -	-rm -f src/x86/sysv.lo
       
 16903 -	-rm -f src/x86/unix64.$(OBJEXT)
       
 16904 -	-rm -f src/x86/unix64.lo
       
 16905 -	-rm -f src/x86/win32.$(OBJEXT)
       
 16906 -	-rm -f src/x86/win32.lo
       
 16907 -	-rm -f src/x86/win64.$(OBJEXT)
       
 16908 -	-rm -f src/x86/win64.lo
       
 16909 +	-rm -f src/*.$(OBJEXT)
       
 16910 +	-rm -f src/*.lo
       
 16911 +	-rm -f src/aarch64/*.$(OBJEXT)
       
 16912 +	-rm -f src/aarch64/*.lo
       
 16913 +	-rm -f src/alpha/*.$(OBJEXT)
       
 16914 +	-rm -f src/alpha/*.lo
       
 16915 +	-rm -f src/arc/*.$(OBJEXT)
       
 16916 +	-rm -f src/arc/*.lo
       
 16917 +	-rm -f src/arm/*.$(OBJEXT)
       
 16918 +	-rm -f src/arm/*.lo
       
 16919 +	-rm -f src/avr32/*.$(OBJEXT)
       
 16920 +	-rm -f src/avr32/*.lo
       
 16921 +	-rm -f src/bfin/*.$(OBJEXT)
       
 16922 +	-rm -f src/bfin/*.lo
       
 16923 +	-rm -f src/cris/*.$(OBJEXT)
       
 16924 +	-rm -f src/cris/*.lo
       
 16925 +	-rm -f src/frv/*.$(OBJEXT)
       
 16926 +	-rm -f src/frv/*.lo
       
 16927 +	-rm -f src/ia64/*.$(OBJEXT)
       
 16928 +	-rm -f src/ia64/*.lo
       
 16929 +	-rm -f src/m32r/*.$(OBJEXT)
       
 16930 +	-rm -f src/m32r/*.lo
       
 16931 +	-rm -f src/m68k/*.$(OBJEXT)
       
 16932 +	-rm -f src/m68k/*.lo
       
 16933 +	-rm -f src/m88k/*.$(OBJEXT)
       
 16934 +	-rm -f src/m88k/*.lo
       
 16935 +	-rm -f src/metag/*.$(OBJEXT)
       
 16936 +	-rm -f src/metag/*.lo
       
 16937 +	-rm -f src/microblaze/*.$(OBJEXT)
       
 16938 +	-rm -f src/microblaze/*.lo
       
 16939 +	-rm -f src/mips/*.$(OBJEXT)
       
 16940 +	-rm -f src/mips/*.lo
       
 16941 +	-rm -f src/moxie/*.$(OBJEXT)
       
 16942 +	-rm -f src/moxie/*.lo
       
 16943 +	-rm -f src/nios2/*.$(OBJEXT)
       
 16944 +	-rm -f src/nios2/*.lo
       
 16945 +	-rm -f src/pa/*.$(OBJEXT)
       
 16946 +	-rm -f src/pa/*.lo
       
 16947 +	-rm -f src/powerpc/*.$(OBJEXT)
       
 16948 +	-rm -f src/powerpc/*.lo
       
 16949 +	-rm -f src/s390/*.$(OBJEXT)
       
 16950 +	-rm -f src/s390/*.lo
       
 16951 +	-rm -f src/sh/*.$(OBJEXT)
       
 16952 +	-rm -f src/sh/*.lo
       
 16953 +	-rm -f src/sh64/*.$(OBJEXT)
       
 16954 +	-rm -f src/sh64/*.lo
       
 16955 +	-rm -f src/sparc/*.$(OBJEXT)
       
 16956 +	-rm -f src/sparc/*.lo
       
 16957 +	-rm -f src/tile/*.$(OBJEXT)
       
 16958 +	-rm -f src/tile/*.lo
       
 16959 +	-rm -f src/vax/*.$(OBJEXT)
       
 16960 +	-rm -f src/vax/*.lo
       
 16961 +	-rm -f src/x86/*.$(OBJEXT)
       
 16962 +	-rm -f src/x86/*.lo
       
 16963 +	-rm -f src/xtensa/*.$(OBJEXT)
       
 16964 +	-rm -f src/xtensa/*.lo
       
 16965  
       
 16966  distclean-compile:
       
 16967  	-rm -f *.tab.c
       
 16968  
       
 16969  @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/closures.Plo@am__quote@
       
 16970  @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/debug.Plo@am__quote@
       
 16971  @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/java_raw_api.Plo@am__quote@
       
 16972  @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/prep_cif.Plo@am__quote@
       
 16973  @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/raw_api.Plo@am__quote@
       
 16974  @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/types.Plo@am__quote@
       
 16975 +@AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/ffi.Plo@am__quote@
       
 16976 +@AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/sysv.Plo@am__quote@
       
 16977  @AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/ffi.Plo@am__quote@
       
 16978  @AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/osf.Plo@am__quote@
       
 16979 +@AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/arcompact.Plo@am__quote@
       
 16980 +@AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/ffi.Plo@am__quote@
       
 16981  @AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/ffi.Plo@am__quote@
       
 16982  @AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/sysv.Plo@am__quote@
       
 16983 +@AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/trampoline.Plo@am__quote@
       
 16984  @AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/ffi.Plo@am__quote@
       
 16985  @AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/sysv.Plo@am__quote@
       
 16986 +@AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/ffi.Plo@am__quote@
       
 16987 +@AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/sysv.Plo@am__quote@
       
 16988  @AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/ffi.Plo@am__quote@
       
 16989  @AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/sysv.Plo@am__quote@
       
 16990  @AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/eabi.Plo@am__quote@
       
 16991  @AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/ffi.Plo@am__quote@
       
 16992  @AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/ffi.Plo@am__quote@
       
 16993  @AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/unix.Plo@am__quote@
       
 16994  @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/ffi.Plo@am__quote@
       
 16995  @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/sysv.Plo@am__quote@
       
 16996  @AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/ffi.Plo@am__quote@
       
 16997  @AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/sysv.Plo@am__quote@
       
 16998 +@AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/ffi.Plo@am__quote@
       
 16999 +@AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/obsd.Plo@am__quote@
       
 17000 +@AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/ffi.Plo@am__quote@
       
 17001 +@AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/sysv.Plo@am__quote@
       
 17002 +@AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/ffi.Plo@am__quote@
       
 17003 +@AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/sysv.Plo@am__quote@
       
 17004  @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/ffi.Plo@am__quote@
       
 17005  @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/n32.Plo@am__quote@
       
 17006  @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/o32.Plo@am__quote@
       
 17007  @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/eabi.Plo@am__quote@
       
 17008  @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/ffi.Plo@am__quote@
       
 17009 +@AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/ffi.Plo@am__quote@
       
 17010 +@AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/sysv.Plo@am__quote@
       
 17011  @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/ffi.Plo@am__quote@
       
 17012  @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/hpux32.Plo@am__quote@
       
 17013  @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/linux.Plo@am__quote@
       
 17014  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix.Plo@am__quote@
       
 17015  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix_closure.Plo@am__quote@
       
 17016  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin.Plo@am__quote@
       
 17017  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin_closure.Plo@am__quote@
       
 17018  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi.Plo@am__quote@
       
 17019  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_darwin.Plo@am__quote@
       
 17020 +@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_linux64.Plo@am__quote@
       
 17021 +@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_sysv.Plo@am__quote@
       
 17022  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64.Plo@am__quote@
       
 17023  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64_closure.Plo@am__quote@
       
 17024  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ppc_closure.Plo@am__quote@
       
 17025  @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/sysv.Plo@am__quote@
       
 17026  @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/ffi.Plo@am__quote@
       
 17027  @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/sysv.Plo@am__quote@
       
 17028  @AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/ffi.Plo@am__quote@
       
 17029  @AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/sysv.Plo@am__quote@
       
 17030  @AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/ffi.Plo@am__quote@
       
 17031  @AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/sysv.Plo@am__quote@
       
 17032  @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/ffi.Plo@am__quote@
       
 17033  @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v8.Plo@am__quote@
       
 17034  @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v9.Plo@am__quote@
       
 17035 +@AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/ffi.Plo@am__quote@
       
 17036 +@AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/tile.Plo@am__quote@
       
 17037 +@AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/elfbsd.Plo@am__quote@
       
 17038 +@AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/ffi.Plo@am__quote@
       
 17039  @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/darwin.Plo@am__quote@
       
 17040  @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/darwin64.Plo@am__quote@
       
 17041  @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi.Plo@am__quote@
       
 17042  @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi64.Plo@am__quote@
       
 17043  @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/freebsd.Plo@am__quote@
       
 17044  @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/sysv.Plo@am__quote@
       
 17045  @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/unix64.Plo@am__quote@
       
 17046  @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win32.Plo@am__quote@
       
 17047  @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win64.Plo@am__quote@
       
 17048 +@AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/ffi.Plo@am__quote@
       
 17049 +@AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/sysv.Plo@am__quote@
       
 17050  
       
 17051 -%.o: %.S
       
 17052 -@am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
       
 17053 +.S.o:
       
 17054 +@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
       
 17055  @am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
       
 17056  @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
       
 17057 -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 17058 +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 17059  @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 17060 -@am__fastdepCCAS_FALSE@	$(CPPASCOMPILE) -c -o $@ $<
       
 17061 +@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $<
       
 17062  
       
 17063 -%.obj: %.S
       
 17064 -@am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
       
 17065 +.S.obj:
       
 17066 +@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
       
 17067  @am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
       
 17068  @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
       
 17069 -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 17070 +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 17071  @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 17072 -@am__fastdepCCAS_FALSE@	$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
       
 17073 +@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
       
 17074  
       
 17075 -%.lo: %.S
       
 17076 -@am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
       
 17077 +.S.lo:
       
 17078 +@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
       
 17079  @am__fastdepCCAS_TRUE@	$(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
       
 17080  @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
       
 17081 -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
       
 17082 +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
       
 17083  @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 17084 -@am__fastdepCCAS_FALSE@	$(LTCPPASCOMPILE) -c -o $@ $<
       
 17085 +@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $<
       
 17086  
       
 17087 -%.o: %.c
       
 17088 -@am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
       
 17089 +.c.o:
       
 17090 +@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
       
 17091  @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
       
 17092  @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
       
 17093 -@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 17094 +@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 17095  @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 17096 -@am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ $<
       
 17097 +@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
       
 17098  
       
 17099 -%.obj: %.c
       
 17100 -@am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
       
 17101 +.c.obj:
       
 17102 +@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
       
 17103  @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
       
 17104  @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
       
 17105 -@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 17106 +@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 17107  @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 17108 -@am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
       
 17109 +@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
       
 17110  
       
 17111 -%.lo: %.c
       
 17112 -@am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
       
 17113 +.c.lo:
       
 17114 +@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
       
 17115  @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
       
 17116  @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
       
 17117 -@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
       
 17118 +@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
       
 17119  @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 17120 -@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
       
 17121 +@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
       
 17122  
       
 17123  mostlyclean-libtool:
       
 17124  	-rm -f *.lo
       
 17125  
       
 17126  clean-libtool:
       
 17127  	-rm -rf .libs _libs
       
 17128  	-rm -rf src/.libs src/_libs
       
 17129 +	-rm -rf src/aarch64/.libs src/aarch64/_libs
       
 17130  	-rm -rf src/alpha/.libs src/alpha/_libs
       
 17131 +	-rm -rf src/arc/.libs src/arc/_libs
       
 17132  	-rm -rf src/arm/.libs src/arm/_libs
       
 17133  	-rm -rf src/avr32/.libs src/avr32/_libs
       
 17134 +	-rm -rf src/bfin/.libs src/bfin/_libs
       
 17135  	-rm -rf src/cris/.libs src/cris/_libs
       
 17136  	-rm -rf src/frv/.libs src/frv/_libs
       
 17137  	-rm -rf src/ia64/.libs src/ia64/_libs
       
 17138  	-rm -rf src/m32r/.libs src/m32r/_libs
       
 17139  	-rm -rf src/m68k/.libs src/m68k/_libs
       
 17140 +	-rm -rf src/m88k/.libs src/m88k/_libs
       
 17141 +	-rm -rf src/metag/.libs src/metag/_libs
       
 17142 +	-rm -rf src/microblaze/.libs src/microblaze/_libs
       
 17143  	-rm -rf src/mips/.libs src/mips/_libs
       
 17144  	-rm -rf src/moxie/.libs src/moxie/_libs
       
 17145 +	-rm -rf src/nios2/.libs src/nios2/_libs
       
 17146  	-rm -rf src/pa/.libs src/pa/_libs
       
 17147  	-rm -rf src/powerpc/.libs src/powerpc/_libs
       
 17148  	-rm -rf src/s390/.libs src/s390/_libs
       
 17149  	-rm -rf src/sh/.libs src/sh/_libs
       
 17150  	-rm -rf src/sh64/.libs src/sh64/_libs
       
 17151  	-rm -rf src/sparc/.libs src/sparc/_libs
       
 17152 +	-rm -rf src/tile/.libs src/tile/_libs
       
 17153 +	-rm -rf src/vax/.libs src/vax/_libs
       
 17154  	-rm -rf src/x86/.libs src/x86/_libs
       
 17155 +	-rm -rf src/xtensa/.libs src/xtensa/_libs
       
 17156  
       
 17157  distclean-libtool:
       
 17158  	-rm -f libtool config.lt
       
 17159  doc/$(am__dirstamp):
       
 17160  	@$(MKDIR_P) doc
       
 17161  	@: > doc/$(am__dirstamp)
       
 17162  
       
 17163  $(srcdir)/doc/libffi.info: doc/libffi.texi $(srcdir)/doc/version.texi
       
 17164 -	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
       
 17165 +	$(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
       
 17166  	am__cwd=`pwd` && $(am__cd) $(srcdir) && \
       
 17167  	rm -rf $$backupdir && mkdir $$backupdir && \
       
 17168  	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
       
 17169  	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
       
 17170  	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
       
 17171  	  done; \
       
 17172  	else :; fi && \
       
 17173  	cd "$$am__cwd"; \
       
 17174 @@ -1087,28 +1398,30 @@ doc/$(am__dirstamp):
       
 17175  	else \
       
 17176  	  rc=$$?; \
       
 17177  	  $(am__cd) $(srcdir) && \
       
 17178  	  $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
       
 17179  	fi; \
       
 17180  	rm -rf $$backupdir; exit $$rc
       
 17181  
       
 17182  doc/libffi.dvi: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
       
 17183 -	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
       
 17184 +	$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
       
 17185  	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
       
 17186 -	$(TEXI2DVI) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
       
 17187 +	$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
       
 17188 +	`test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
       
 17189  
       
 17190  doc/libffi.pdf: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
       
 17191 -	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
       
 17192 +	$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
       
 17193  	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
       
 17194 -	$(TEXI2PDF) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
       
 17195 +	$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
       
 17196 +	`test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
       
 17197  
       
 17198  doc/libffi.html: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
       
 17199 -	rm -rf $(@:.html=.htp)
       
 17200 -	if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
       
 17201 +	$(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
       
 17202 +	$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
       
 17203  	 -o $(@:.html=.htp) `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi; \
       
 17204  	then \
       
 17205  	  rm -rf $@; \
       
 17206  	  if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
       
 17207  	    mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
       
 17208  	else \
       
 17209  	  if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
       
 17210  	    rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
       
 17211 @@ -1129,19 +1442,19 @@ doc/libffi.html: doc/libffi.texi $(srcdi
       
 17212  	-@rm -f vti.tmp
       
 17213  	@cp $(srcdir)/doc/version.texi $@
       
 17214  
       
 17215  mostlyclean-vti:
       
 17216  	-rm -f vti.tmp
       
 17217  
       
 17218  maintainer-clean-vti:
       
 17219  @MAINTAINER_MODE_TRUE@	-rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi
       
 17220 -%.ps: %.dvi
       
 17221 -	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
       
 17222 -	$(DVIPS) -o $@ $<
       
 17223 +.dvi.ps:
       
 17224 +	$(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
       
 17225 +	$(DVIPS) $(AM_V_texinfo) -o $@ $<
       
 17226  
       
 17227  uninstall-dvi-am:
       
 17228  	@$(NORMAL_UNINSTALL)
       
 17229  	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
       
 17230  	for p in $$list; do \
       
 17231  	  $(am__strip_dir) \
       
 17232  	  echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
       
 17233  	  rm -f "$(DESTDIR)$(dvidir)/$$f"; \
       
 17234 @@ -1153,19 +1466,17 @@ uninstall-html-am:
       
 17235  	for p in $$list; do \
       
 17236  	  $(am__strip_dir) \
       
 17237  	  echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
       
 17238  	  rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
       
 17239  	done
       
 17240  
       
 17241  uninstall-info-am:
       
 17242  	@$(PRE_UNINSTALL)
       
 17243 -	@if test -d '$(DESTDIR)$(infodir)' && \
       
 17244 -	    (install-info --version && \
       
 17245 -	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
       
 17246 +	@if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
       
 17247  	  list='$(INFO_DEPS)'; \
       
 17248  	  for file in $$list; do \
       
 17249  	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
       
 17250  	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
       
 17251  	    if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
       
 17252  	    then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
       
 17253  	  done; \
       
 17254  	else :; fi
       
 17255 @@ -1212,184 +1523,155 @@ dist-info: $(INFO_DEPS)
       
 17256  	      relfile=`expr "$$file" : "$$d/\(.*\)"`; \
       
 17257  	      test -f "$(distdir)/$$relfile" || \
       
 17258  		cp -p $$file "$(distdir)/$$relfile"; \
       
 17259  	    else :; fi; \
       
 17260  	  done; \
       
 17261  	done
       
 17262  
       
 17263  mostlyclean-aminfo:
       
 17264 -	-rm -rf libffi.aux libffi.cp libffi.cps libffi.fn libffi.ky libffi.log \
       
 17265 -	  libffi.pg libffi.tmp libffi.toc libffi.tp libffi.vr
       
 17266 +	-rm -rf doc/libffi.t2d doc/libffi.t2p
       
 17267  
       
 17268  clean-aminfo:
       
 17269  	-test -z "doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html" \
       
 17270  	|| rm -rf doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html
       
 17271  
       
 17272  maintainer-clean-aminfo:
       
 17273  	@list='$(INFO_DEPS)'; for i in $$list; do \
       
 17274  	  i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
       
 17275  	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
       
 17276  	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
       
 17277  	done
       
 17278  install-pkgconfigDATA: $(pkgconfig_DATA)
       
 17279  	@$(NORMAL_INSTALL)
       
 17280 -	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
       
 17281  	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
       
 17282 +	if test -n "$$list"; then \
       
 17283 +	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
       
 17284 +	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
       
 17285 +	fi; \
       
 17286  	for p in $$list; do \
       
 17287  	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
       
 17288  	  echo "$$d$$p"; \
       
 17289  	done | $(am__base_list) | \
       
 17290  	while read files; do \
       
 17291  	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
       
 17292  	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
       
 17293  	done
       
 17294  
       
 17295  uninstall-pkgconfigDATA:
       
 17296  	@$(NORMAL_UNINSTALL)
       
 17297  	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
       
 17298  	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
       
 17299 -	test -n "$$files" || exit 0; \
       
 17300 -	echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
       
 17301 -	cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
       
 17302 +	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
       
 17303  
       
 17304  # This directory's subdirectories are mostly independent; you can cd
       
 17305 -# into them and run `make' without going through this Makefile.
       
 17306 -# To change the values of `make' variables: instead of editing Makefiles,
       
 17307 -# (1) if the variable is set in `config.status', edit `config.status'
       
 17308 -#     (which will cause the Makefiles to be regenerated when you run `make');
       
 17309 -# (2) otherwise, pass the desired values on the `make' command line.
       
 17310 -$(RECURSIVE_TARGETS):
       
 17311 -	@fail= failcom='exit 1'; \
       
 17312 -	for f in x $$MAKEFLAGS; do \
       
 17313 -	  case $$f in \
       
 17314 -	    *=* | --[!k]*);; \
       
 17315 -	    *k*) failcom='fail=yes';; \
       
 17316 -	  esac; \
       
 17317 -	done; \
       
 17318 +# into them and run 'make' without going through this Makefile.
       
 17319 +# To change the values of 'make' variables: instead of editing Makefiles,
       
 17320 +# (1) if the variable is set in 'config.status', edit 'config.status'
       
 17321 +#     (which will cause the Makefiles to be regenerated when you run 'make');
       
 17322 +# (2) otherwise, pass the desired values on the 'make' command line.
       
 17323 +$(am__recursive_targets):
       
 17324 +	@fail=; \
       
 17325 +	if $(am__make_keepgoing); then \
       
 17326 +	  failcom='fail=yes'; \
       
 17327 +	else \
       
 17328 +	  failcom='exit 1'; \
       
 17329 +	fi; \
       
 17330  	dot_seen=no; \
       
 17331  	target=`echo $@ | sed s/-recursive//`; \
       
 17332 -	list='$(SUBDIRS)'; for subdir in $$list; do \
       
 17333 +	case "$@" in \
       
 17334 +	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
       
 17335 +	  *) list='$(SUBDIRS)' ;; \
       
 17336 +	esac; \
       
 17337 +	for subdir in $$list; do \
       
 17338  	  echo "Making $$target in $$subdir"; \
       
 17339  	  if test "$$subdir" = "."; then \
       
 17340  	    dot_seen=yes; \
       
 17341  	    local_target="$$target-am"; \
       
 17342  	  else \
       
 17343  	    local_target="$$target"; \
       
 17344  	  fi; \
       
 17345  	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
       
 17346  	  || eval $$failcom; \
       
 17347  	done; \
       
 17348  	if test "$$dot_seen" = "no"; then \
       
 17349  	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
       
 17350  	fi; test -z "$$fail"
       
 17351  
       
 17352 -$(RECURSIVE_CLEAN_TARGETS):
       
 17353 -	@fail= failcom='exit 1'; \
       
 17354 -	for f in x $$MAKEFLAGS; do \
       
 17355 -	  case $$f in \
       
 17356 -	    *=* | --[!k]*);; \
       
 17357 -	    *k*) failcom='fail=yes';; \
       
 17358 -	  esac; \
       
 17359 -	done; \
       
 17360 -	dot_seen=no; \
       
 17361 -	case "$@" in \
       
 17362 -	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
       
 17363 -	  *) list='$(SUBDIRS)' ;; \
       
 17364 -	esac; \
       
 17365 -	rev=''; for subdir in $$list; do \
       
 17366 -	  if test "$$subdir" = "."; then :; else \
       
 17367 -	    rev="$$subdir $$rev"; \
       
 17368 -	  fi; \
       
 17369 -	done; \
       
 17370 -	rev="$$rev ."; \
       
 17371 -	target=`echo $@ | sed s/-recursive//`; \
       
 17372 -	for subdir in $$rev; do \
       
 17373 -	  echo "Making $$target in $$subdir"; \
       
 17374 -	  if test "$$subdir" = "."; then \
       
 17375 -	    local_target="$$target-am"; \
       
 17376 -	  else \
       
 17377 -	    local_target="$$target"; \
       
 17378 -	  fi; \
       
 17379 -	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
       
 17380 -	  || eval $$failcom; \
       
 17381 -	done && test -z "$$fail"
       
 17382 -tags-recursive:
       
 17383 -	list='$(SUBDIRS)'; for subdir in $$list; do \
       
 17384 -	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
       
 17385 -	done
       
 17386 -ctags-recursive:
       
 17387 -	list='$(SUBDIRS)'; for subdir in $$list; do \
       
 17388 -	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
       
 17389 -	done
       
 17390 +ID: $(am__tagged_files)
       
 17391 +	$(am__define_uniq_tagged_files); mkid -fID $$unique
       
 17392 +tags: tags-recursive
       
 17393 +TAGS: tags
       
 17394  
       
 17395 -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
       
 17396 -	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
       
 17397 -	unique=`for i in $$list; do \
       
 17398 -	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
       
 17399 -	  done | \
       
 17400 -	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
       
 17401 -	      END { if (nonempty) { for (i in files) print i; }; }'`; \
       
 17402 -	mkid -fID $$unique
       
 17403 -tags: TAGS
       
 17404 -
       
 17405 -TAGS: tags-recursive $(HEADERS) $(SOURCES) fficonfig.h.in $(TAGS_DEPENDENCIES) \
       
 17406 -		$(TAGS_FILES) $(LISP)
       
 17407 +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
       
 17408  	set x; \
       
 17409  	here=`pwd`; \
       
 17410  	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
       
 17411  	  include_option=--etags-include; \
       
 17412  	  empty_fix=.; \
       
 17413  	else \
       
 17414  	  include_option=--include; \
       
 17415  	  empty_fix=; \
       
 17416  	fi; \
       
 17417  	list='$(SUBDIRS)'; for subdir in $$list; do \
       
 17418  	  if test "$$subdir" = .; then :; else \
       
 17419  	    test ! -f $$subdir/TAGS || \
       
 17420  	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
       
 17421  	  fi; \
       
 17422  	done; \
       
 17423 -	list='$(SOURCES) $(HEADERS) fficonfig.h.in $(LISP) $(TAGS_FILES)'; \
       
 17424 -	unique=`for i in $$list; do \
       
 17425 -	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
       
 17426 -	  done | \
       
 17427 -	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
       
 17428 -	      END { if (nonempty) { for (i in files) print i; }; }'`; \
       
 17429 +	$(am__define_uniq_tagged_files); \
       
 17430  	shift; \
       
 17431  	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
       
 17432  	  test -n "$$unique" || unique=$$empty_fix; \
       
 17433  	  if test $$# -gt 0; then \
       
 17434  	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
       
 17435  	      "$$@" $$unique; \
       
 17436  	  else \
       
 17437  	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
       
 17438  	      $$unique; \
       
 17439  	  fi; \
       
 17440  	fi
       
 17441 -ctags: CTAGS
       
 17442 -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) fficonfig.h.in $(TAGS_DEPENDENCIES) \
       
 17443 -		$(TAGS_FILES) $(LISP)
       
 17444 -	list='$(SOURCES) $(HEADERS) fficonfig.h.in $(LISP) $(TAGS_FILES)'; \
       
 17445 -	unique=`for i in $$list; do \
       
 17446 -	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
       
 17447 -	  done | \
       
 17448 -	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
       
 17449 -	      END { if (nonempty) { for (i in files) print i; }; }'`; \
       
 17450 +ctags: ctags-recursive
       
 17451 +
       
 17452 +CTAGS: ctags
       
 17453 +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
       
 17454 +	$(am__define_uniq_tagged_files); \
       
 17455  	test -z "$(CTAGS_ARGS)$$unique" \
       
 17456  	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
       
 17457  	     $$unique
       
 17458  
       
 17459  GTAGS:
       
 17460  	here=`$(am__cd) $(top_builddir) && pwd` \
       
 17461  	  && $(am__cd) $(top_srcdir) \
       
 17462  	  && gtags -i $(GTAGS_ARGS) "$$here"
       
 17463 +cscope: cscope.files
       
 17464 +	test ! -s cscope.files \
       
 17465 +	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
       
 17466 +clean-cscope:
       
 17467 +	-rm -f cscope.files
       
 17468 +cscope.files: clean-cscope cscopelist
       
 17469 +cscopelist: cscopelist-recursive
       
 17470 +
       
 17471 +cscopelist-am: $(am__tagged_files)
       
 17472 +	list='$(am__tagged_files)'; \
       
 17473 +	case "$(srcdir)" in \
       
 17474 +	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
       
 17475 +	  *) sdir=$(subdir)/$(srcdir) ;; \
       
 17476 +	esac; \
       
 17477 +	for i in $$list; do \
       
 17478 +	  if test -f "$$i"; then \
       
 17479 +	    echo "$(subdir)/$$i"; \
       
 17480 +	  else \
       
 17481 +	    echo "$$sdir/$$i"; \
       
 17482 +	  fi; \
       
 17483 +	done >> $(top_builddir)/cscope.files
       
 17484  
       
 17485  distclean-tags:
       
 17486  	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
       
 17487 +	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
       
 17488  
       
 17489  distdir: $(DISTFILES)
       
 17490  	$(am__remove_distdir)
       
 17491  	test -d "$(distdir)" || mkdir "$(distdir)"
       
 17492  	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
       
 17493  	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
       
 17494  	list='$(DISTFILES)'; \
       
 17495  	  dist_files=`for file in $$list; do echo $$file; done | \
       
 17496 @@ -1415,23 +1697,20 @@ distdir: $(DISTFILES)
       
 17497  	  else \
       
 17498  	    test -f "$(distdir)/$$file" \
       
 17499  	    || cp -p $$d/$$file "$(distdir)/$$file" \
       
 17500  	    || exit 1; \
       
 17501  	  fi; \
       
 17502  	done
       
 17503  	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
       
 17504  	  if test "$$subdir" = .; then :; else \
       
 17505 -	    test -d "$(distdir)/$$subdir" \
       
 17506 -	    || $(MKDIR_P) "$(distdir)/$$subdir" \
       
 17507 -	    || exit 1; \
       
 17508 -	  fi; \
       
 17509 -	done
       
 17510 -	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
       
 17511 -	  if test "$$subdir" = .; then :; else \
       
 17512 +	    $(am__make_dryrun) \
       
 17513 +	      || test -d "$(distdir)/$$subdir" \
       
 17514 +	      || $(MKDIR_P) "$(distdir)/$$subdir" \
       
 17515 +	      || exit 1; \
       
 17516  	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
       
 17517  	    $(am__relativize); \
       
 17518  	    new_distdir=$$reldir; \
       
 17519  	    dir1=$$subdir; dir2="$(top_distdir)"; \
       
 17520  	    $(am__relativize); \
       
 17521  	    new_top_distdir=$$reldir; \
       
 17522  	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
       
 17523  	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
       
 17524 @@ -1443,87 +1722,88 @@ distdir: $(DISTFILES)
       
 17525  		am__skip_length_check=: \
       
 17526  		am__skip_mode_fix=: \
       
 17527  	        distdir) \
       
 17528  	      || exit 1; \
       
 17529  	  fi; \
       
 17530  	done
       
 17531  	$(MAKE) $(AM_MAKEFLAGS) \
       
 17532  	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
       
 17533 -	  dist-info
       
 17534 +	  dist-info dist-hook
       
 17535  	-test -n "$(am__skip_mode_fix)" \
       
 17536  	|| find "$(distdir)" -type d ! -perm -755 \
       
 17537  		-exec chmod u+rwx,go+rx {} \; -o \
       
 17538  	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
       
 17539  	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
       
 17540  	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
       
 17541  	|| chmod -R a+r "$(distdir)"
       
 17542  dist-gzip: distdir
       
 17543  	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
       
 17544 -	$(am__remove_distdir)
       
 17545 +	$(am__post_remove_distdir)
       
 17546  
       
 17547  dist-bzip2: distdir
       
 17548 -	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
       
 17549 -	$(am__remove_distdir)
       
 17550 +	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
       
 17551 +	$(am__post_remove_distdir)
       
 17552  
       
 17553 -dist-lzma: distdir
       
 17554 -	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
       
 17555 -	$(am__remove_distdir)
       
 17556 +dist-lzip: distdir
       
 17557 +	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
       
 17558 +	$(am__post_remove_distdir)
       
 17559  
       
 17560  dist-xz: distdir
       
 17561 -	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
       
 17562 -	$(am__remove_distdir)
       
 17563 +	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
       
 17564 +	$(am__post_remove_distdir)
       
 17565  
       
 17566  dist-tarZ: distdir
       
 17567  	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
       
 17568 -	$(am__remove_distdir)
       
 17569 +	$(am__post_remove_distdir)
       
 17570  
       
 17571  dist-shar: distdir
       
 17572  	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
       
 17573 -	$(am__remove_distdir)
       
 17574 +	$(am__post_remove_distdir)
       
 17575  
       
 17576  dist-zip: distdir
       
 17577  	-rm -f $(distdir).zip
       
 17578  	zip -rq $(distdir).zip $(distdir)
       
 17579 -	$(am__remove_distdir)
       
 17580 +	$(am__post_remove_distdir)
       
 17581  
       
 17582 -dist dist-all: distdir
       
 17583 -	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
       
 17584 -	$(am__remove_distdir)
       
 17585 +dist dist-all:
       
 17586 +	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
       
 17587 +	$(am__post_remove_distdir)
       
 17588  
       
 17589  # This target untars the dist file and tries a VPATH configuration.  Then
       
 17590  # it guarantees that the distribution is self-contained by making another
       
 17591  # tarfile.
       
 17592  distcheck: dist
       
 17593  	case '$(DIST_ARCHIVES)' in \
       
 17594  	*.tar.gz*) \
       
 17595  	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
       
 17596  	*.tar.bz2*) \
       
 17597  	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
       
 17598 -	*.tar.lzma*) \
       
 17599 -	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
       
 17600 +	*.tar.lz*) \
       
 17601 +	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
       
 17602  	*.tar.xz*) \
       
 17603  	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
       
 17604  	*.tar.Z*) \
       
 17605  	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
       
 17606  	*.shar.gz*) \
       
 17607  	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
       
 17608  	*.zip*) \
       
 17609  	  unzip $(distdir).zip ;;\
       
 17610  	esac
       
 17611 -	chmod -R a-w $(distdir); chmod a+w $(distdir)
       
 17612 -	mkdir $(distdir)/_build
       
 17613 -	mkdir $(distdir)/_inst
       
 17614 +	chmod -R a-w $(distdir)
       
 17615 +	chmod u+w $(distdir)
       
 17616 +	mkdir $(distdir)/_build $(distdir)/_inst
       
 17617  	chmod a-w $(distdir)
       
 17618  	test -d $(distdir)/_build || exit 0; \
       
 17619  	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
       
 17620  	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
       
 17621  	  && am__cwd=`pwd` \
       
 17622  	  && $(am__cd) $(distdir)/_build \
       
 17623  	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
       
 17624 +	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
       
 17625  	    $(DISTCHECK_CONFIGURE_FLAGS) \
       
 17626  	  && $(MAKE) $(AM_MAKEFLAGS) \
       
 17627  	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
       
 17628  	  && $(MAKE) $(AM_MAKEFLAGS) check \
       
 17629  	  && $(MAKE) $(AM_MAKEFLAGS) install \
       
 17630  	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
       
 17631  	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
       
 17632  	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
       
 17633 @@ -1537,23 +1817,31 @@ distcheck: dist
       
 17634  	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
       
 17635  	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
       
 17636  	  && rm -rf "$$dc_destdir" \
       
 17637  	  && $(MAKE) $(AM_MAKEFLAGS) dist \
       
 17638  	  && rm -rf $(DIST_ARCHIVES) \
       
 17639  	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
       
 17640  	  && cd "$$am__cwd" \
       
 17641  	  || exit 1
       
 17642 -	$(am__remove_distdir)
       
 17643 +	$(am__post_remove_distdir)
       
 17644  	@(echo "$(distdir) archives ready for distribution: "; \
       
 17645  	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
       
 17646  	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
       
 17647  distuninstallcheck:
       
 17648 -	@$(am__cd) '$(distuninstallcheck_dir)' \
       
 17649 -	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
       
 17650 +	@test -n '$(distuninstallcheck_dir)' || { \
       
 17651 +	  echo 'ERROR: trying to run $@ with an empty' \
       
 17652 +	       '$$(distuninstallcheck_dir)' >&2; \
       
 17653 +	  exit 1; \
       
 17654 +	}; \
       
 17655 +	$(am__cd) '$(distuninstallcheck_dir)' || { \
       
 17656 +	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
       
 17657 +	  exit 1; \
       
 17658 +	}; \
       
 17659 +	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
       
 17660  	   || { echo "ERROR: files left after uninstall:" ; \
       
 17661  	        if test -n "$(DESTDIR)"; then \
       
 17662  	          echo "  (check DESTDIR support)"; \
       
 17663  	        fi ; \
       
 17664  	        $(distuninstallcheck_listfiles) ; \
       
 17665  	        exit 1; } >&2
       
 17666  distcleancheck: distclean
       
 17667  	@if test '$(srcdir)' = . ; then \
       
 17668 @@ -1564,89 +1852,115 @@ distcleancheck: distclean
       
 17669  	  || { echo "ERROR: files left in build directory after distclean:" ; \
       
 17670  	       $(distcleancheck_listfiles) ; \
       
 17671  	       exit 1; } >&2
       
 17672  check-am: all-am
       
 17673  check: check-recursive
       
 17674  all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(DATA) fficonfig.h
       
 17675  installdirs: installdirs-recursive
       
 17676  installdirs-am:
       
 17677 -	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \
       
 17678 +	for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \
       
 17679  	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
       
 17680  	done
       
 17681  install: install-recursive
       
 17682  install-exec: install-exec-recursive
       
 17683  install-data: install-data-recursive
       
 17684  uninstall: uninstall-recursive
       
 17685  
       
 17686  install-am: all-am
       
 17687  	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
       
 17688  
       
 17689  installcheck: installcheck-recursive
       
 17690  install-strip:
       
 17691 -	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 17692 -	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 17693 -	  `test -z '$(STRIP)' || \
       
 17694 -	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
       
 17695 +	if test -z '$(STRIP)'; then \
       
 17696 +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 17697 +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 17698 +	      install; \
       
 17699 +	else \
       
 17700 +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 17701 +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 17702 +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
       
 17703 +	fi
       
 17704  mostlyclean-generic:
       
 17705  
       
 17706  clean-generic:
       
 17707  
       
 17708  distclean-generic:
       
 17709  	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
       
 17710  	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
       
 17711  	-rm -f doc/$(am__dirstamp)
       
 17712  	-rm -f src/$(DEPDIR)/$(am__dirstamp)
       
 17713  	-rm -f src/$(am__dirstamp)
       
 17714 +	-rm -f src/aarch64/$(DEPDIR)/$(am__dirstamp)
       
 17715 +	-rm -f src/aarch64/$(am__dirstamp)
       
 17716  	-rm -f src/alpha/$(DEPDIR)/$(am__dirstamp)
       
 17717  	-rm -f src/alpha/$(am__dirstamp)
       
 17718 +	-rm -f src/arc/$(DEPDIR)/$(am__dirstamp)
       
 17719 +	-rm -f src/arc/$(am__dirstamp)
       
 17720  	-rm -f src/arm/$(DEPDIR)/$(am__dirstamp)
       
 17721  	-rm -f src/arm/$(am__dirstamp)
       
 17722  	-rm -f src/avr32/$(DEPDIR)/$(am__dirstamp)
       
 17723  	-rm -f src/avr32/$(am__dirstamp)
       
 17724 +	-rm -f src/bfin/$(DEPDIR)/$(am__dirstamp)
       
 17725 +	-rm -f src/bfin/$(am__dirstamp)
       
 17726  	-rm -f src/cris/$(DEPDIR)/$(am__dirstamp)
       
 17727  	-rm -f src/cris/$(am__dirstamp)
       
 17728  	-rm -f src/frv/$(DEPDIR)/$(am__dirstamp)
       
 17729  	-rm -f src/frv/$(am__dirstamp)
       
 17730  	-rm -f src/ia64/$(DEPDIR)/$(am__dirstamp)
       
 17731  	-rm -f src/ia64/$(am__dirstamp)
       
 17732  	-rm -f src/m32r/$(DEPDIR)/$(am__dirstamp)
       
 17733  	-rm -f src/m32r/$(am__dirstamp)
       
 17734  	-rm -f src/m68k/$(DEPDIR)/$(am__dirstamp)
       
 17735  	-rm -f src/m68k/$(am__dirstamp)
       
 17736 +	-rm -f src/m88k/$(DEPDIR)/$(am__dirstamp)
       
 17737 +	-rm -f src/m88k/$(am__dirstamp)
       
 17738 +	-rm -f src/metag/$(DEPDIR)/$(am__dirstamp)
       
 17739 +	-rm -f src/metag/$(am__dirstamp)
       
 17740 +	-rm -f src/microblaze/$(DEPDIR)/$(am__dirstamp)
       
 17741 +	-rm -f src/microblaze/$(am__dirstamp)
       
 17742  	-rm -f src/mips/$(DEPDIR)/$(am__dirstamp)
       
 17743  	-rm -f src/mips/$(am__dirstamp)
       
 17744  	-rm -f src/moxie/$(DEPDIR)/$(am__dirstamp)
       
 17745  	-rm -f src/moxie/$(am__dirstamp)
       
 17746 +	-rm -f src/nios2/$(DEPDIR)/$(am__dirstamp)
       
 17747 +	-rm -f src/nios2/$(am__dirstamp)
       
 17748  	-rm -f src/pa/$(DEPDIR)/$(am__dirstamp)
       
 17749  	-rm -f src/pa/$(am__dirstamp)
       
 17750  	-rm -f src/powerpc/$(DEPDIR)/$(am__dirstamp)
       
 17751  	-rm -f src/powerpc/$(am__dirstamp)
       
 17752  	-rm -f src/s390/$(DEPDIR)/$(am__dirstamp)
       
 17753  	-rm -f src/s390/$(am__dirstamp)
       
 17754  	-rm -f src/sh/$(DEPDIR)/$(am__dirstamp)
       
 17755  	-rm -f src/sh/$(am__dirstamp)
       
 17756  	-rm -f src/sh64/$(DEPDIR)/$(am__dirstamp)
       
 17757  	-rm -f src/sh64/$(am__dirstamp)
       
 17758  	-rm -f src/sparc/$(DEPDIR)/$(am__dirstamp)
       
 17759  	-rm -f src/sparc/$(am__dirstamp)
       
 17760 +	-rm -f src/tile/$(DEPDIR)/$(am__dirstamp)
       
 17761 +	-rm -f src/tile/$(am__dirstamp)
       
 17762 +	-rm -f src/vax/$(DEPDIR)/$(am__dirstamp)
       
 17763 +	-rm -f src/vax/$(am__dirstamp)
       
 17764  	-rm -f src/x86/$(DEPDIR)/$(am__dirstamp)
       
 17765  	-rm -f src/x86/$(am__dirstamp)
       
 17766 +	-rm -f src/xtensa/$(DEPDIR)/$(am__dirstamp)
       
 17767 +	-rm -f src/xtensa/$(am__dirstamp)
       
 17768  
       
 17769  maintainer-clean-generic:
       
 17770  	@echo "This command is intended for maintainers to use"
       
 17771  	@echo "it deletes files that may require special tools to rebuild."
       
 17772  clean: clean-recursive
       
 17773  
       
 17774 -clean-am: clean-aminfo clean-generic clean-libLTLIBRARIES \
       
 17775 -	clean-libtool clean-noinstLTLIBRARIES mostlyclean-am
       
 17776 +clean-am: clean-aminfo clean-generic clean-libtool \
       
 17777 +	clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES \
       
 17778 +	mostlyclean-am
       
 17779  
       
 17780  distclean: distclean-recursive
       
 17781  	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
       
 17782 -	-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)
       
 17783 +	-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)
       
 17784  	-rm -f Makefile
       
 17785  distclean-am: clean-am distclean-compile distclean-generic \
       
 17786  	distclean-hdr distclean-libtool distclean-tags
       
 17787  
       
 17788  dvi: dvi-recursive
       
 17789  
       
 17790  dvi-am: $(DVIS)
       
 17791  
       
 17792 @@ -1659,56 +1973,68 @@ info: info-recursive
       
 17793  info-am: $(INFO_DEPS)
       
 17794  
       
 17795  install-data-am: install-info-am install-pkgconfigDATA
       
 17796  
       
 17797  install-dvi: install-dvi-recursive
       
 17798  
       
 17799  install-dvi-am: $(DVIS)
       
 17800  	@$(NORMAL_INSTALL)
       
 17801 -	test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
       
 17802  	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
       
 17803 +	if test -n "$$list"; then \
       
 17804 +	  echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
       
 17805 +	  $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
       
 17806 +	fi; \
       
 17807  	for p in $$list; do \
       
 17808  	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
       
 17809  	  echo "$$d$$p"; \
       
 17810  	done | $(am__base_list) | \
       
 17811  	while read files; do \
       
 17812  	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
       
 17813  	  $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
       
 17814  	done
       
 17815 -install-exec-am: install-libLTLIBRARIES
       
 17816 +install-exec-am: install-toolexeclibLTLIBRARIES
       
 17817 +
       
 17818 +install-html: install-html-recursive
       
 17819  
       
 17820  install-html-am: $(HTMLS)
       
 17821  	@$(NORMAL_INSTALL)
       
 17822 -	test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
       
 17823  	@list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
       
 17824 +	if test -n "$$list"; then \
       
 17825 +	  echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
       
 17826 +	  $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
       
 17827 +	fi; \
       
 17828  	for p in $$list; do \
       
 17829  	  if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
       
 17830  	  $(am__strip_dir) \
       
 17831 -	  if test -d "$$d$$p"; then \
       
 17832 +	  d2=$$d$$p; \
       
 17833 +	  if test -d "$$d2"; then \
       
 17834  	    echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
       
 17835  	    $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
       
 17836 -	    echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
       
 17837 -	    $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
       
 17838 +	    echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
       
 17839 +	    $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
       
 17840  	  else \
       
 17841 -	    list2="$$list2 $$d$$p"; \
       
 17842 +	    list2="$$list2 $$d2"; \
       
 17843  	  fi; \
       
 17844  	done; \
       
 17845  	test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
       
 17846  	while read files; do \
       
 17847  	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
       
 17848  	  $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
       
 17849  	done; }
       
 17850  install-info: install-info-recursive
       
 17851  
       
 17852  install-info-am: $(INFO_DEPS)
       
 17853  	@$(NORMAL_INSTALL)
       
 17854 -	test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
       
 17855  	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
       
 17856  	list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
       
 17857 +	if test -n "$$list"; then \
       
 17858 +	  echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
       
 17859 +	  $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
       
 17860 +	fi; \
       
 17861  	for file in $$list; do \
       
 17862  	  case $$file in \
       
 17863  	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
       
 17864  	  esac; \
       
 17865  	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
       
 17866  	  file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
       
 17867  	  for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
       
 17868  	               $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
       
 17869 @@ -1716,57 +2042,64 @@ install-info-am: $(INFO_DEPS)
       
 17870  	      echo "$$ifile"; \
       
 17871  	    else : ; fi; \
       
 17872  	  done; \
       
 17873  	done | $(am__base_list) | \
       
 17874  	while read files; do \
       
 17875  	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
       
 17876  	  $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
       
 17877  	@$(POST_INSTALL)
       
 17878 -	@if (install-info --version && \
       
 17879 -	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
       
 17880 +	@if $(am__can_run_installinfo); then \
       
 17881  	  list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
       
 17882  	  for file in $$list; do \
       
 17883  	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
       
 17884  	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
       
 17885  	    install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
       
 17886  	  done; \
       
 17887  	else : ; fi
       
 17888  install-man:
       
 17889  
       
 17890 +install-pdf: install-pdf-recursive
       
 17891 +
       
 17892  install-pdf-am: $(PDFS)
       
 17893  	@$(NORMAL_INSTALL)
       
 17894 -	test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
       
 17895  	@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
       
 17896 +	if test -n "$$list"; then \
       
 17897 +	  echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
       
 17898 +	  $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
       
 17899 +	fi; \
       
 17900  	for p in $$list; do \
       
 17901  	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
       
 17902  	  echo "$$d$$p"; \
       
 17903  	done | $(am__base_list) | \
       
 17904  	while read files; do \
       
 17905  	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
       
 17906  	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
       
 17907  install-ps: install-ps-recursive
       
 17908  
       
 17909  install-ps-am: $(PSS)
       
 17910  	@$(NORMAL_INSTALL)
       
 17911 -	test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
       
 17912  	@list='$(PSS)'; test -n "$(psdir)" || list=; \
       
 17913 +	if test -n "$$list"; then \
       
 17914 +	  echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
       
 17915 +	  $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
       
 17916 +	fi; \
       
 17917  	for p in $$list; do \
       
 17918  	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
       
 17919  	  echo "$$d$$p"; \
       
 17920  	done | $(am__base_list) | \
       
 17921  	while read files; do \
       
 17922  	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
       
 17923  	  $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
       
 17924  installcheck-am:
       
 17925  
       
 17926  maintainer-clean: maintainer-clean-recursive
       
 17927  	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
       
 17928  	-rm -rf $(top_srcdir)/autom4te.cache
       
 17929 -	-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)
       
 17930 +	-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)
       
 17931  	-rm -f Makefile
       
 17932  maintainer-clean-am: distclean-am maintainer-clean-aminfo \
       
 17933  	maintainer-clean-generic maintainer-clean-vti
       
 17934  
       
 17935  mostlyclean: mostlyclean-recursive
       
 17936  
       
 17937  mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
       
 17938  	mostlyclean-generic mostlyclean-libtool mostlyclean-vti
       
 17939 @@ -1775,46 +2108,44 @@ pdf: pdf-recursive
       
 17940  
       
 17941  pdf-am: $(PDFS)
       
 17942  
       
 17943  ps: ps-recursive
       
 17944  
       
 17945  ps-am: $(PSS)
       
 17946  
       
 17947  uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
       
 17948 -	uninstall-libLTLIBRARIES uninstall-pdf-am \
       
 17949 -	uninstall-pkgconfigDATA uninstall-ps-am
       
 17950 +	uninstall-pdf-am uninstall-pkgconfigDATA uninstall-ps-am \
       
 17951 +	uninstall-toolexeclibLTLIBRARIES
       
 17952  
       
 17953 -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
       
 17954 -	ctags-recursive install-am install-strip tags-recursive
       
 17955 +.MAKE: $(am__recursive_targets) all install-am install-strip
       
 17956  
       
 17957 -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
       
 17958 -	all all-am am--refresh check check-am clean clean-aminfo \
       
 17959 -	clean-generic clean-libLTLIBRARIES clean-libtool \
       
 17960 -	clean-noinstLTLIBRARIES ctags ctags-recursive dist dist-all \
       
 17961 -	dist-bzip2 dist-gzip dist-info dist-lzma dist-shar dist-tarZ \
       
 17962 -	dist-xz dist-zip distcheck distclean distclean-compile \
       
 17963 -	distclean-generic distclean-hdr distclean-libtool \
       
 17964 -	distclean-tags distcleancheck distdir distuninstallcheck dvi \
       
 17965 -	dvi-am html html-am info info-am install install-am \
       
 17966 -	install-data install-data-am install-dvi install-dvi-am \
       
 17967 -	install-exec install-exec-am install-html install-html-am \
       
 17968 -	install-info install-info-am install-libLTLIBRARIES \
       
 17969 +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
       
 17970 +	am--refresh check check-am clean clean-aminfo clean-cscope \
       
 17971 +	clean-generic clean-libtool clean-noinstLTLIBRARIES \
       
 17972 +	clean-toolexeclibLTLIBRARIES cscope cscopelist-am ctags \
       
 17973 +	ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \
       
 17974 +	dist-info dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
       
 17975 +	distcheck distclean distclean-compile distclean-generic \
       
 17976 +	distclean-hdr distclean-libtool distclean-tags distcleancheck \
       
 17977 +	distdir distuninstallcheck dvi dvi-am html html-am info \
       
 17978 +	info-am install install-am install-data install-data-am \
       
 17979 +	install-dvi install-dvi-am install-exec install-exec-am \
       
 17980 +	install-html install-html-am install-info install-info-am \
       
 17981  	install-man install-pdf install-pdf-am install-pkgconfigDATA \
       
 17982 -	install-ps install-ps-am install-strip installcheck \
       
 17983 -	installcheck-am installdirs installdirs-am maintainer-clean \
       
 17984 +	install-ps install-ps-am install-strip \
       
 17985 +	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
       
 17986 +	installdirs installdirs-am maintainer-clean \
       
 17987  	maintainer-clean-aminfo maintainer-clean-generic \
       
 17988  	maintainer-clean-vti mostlyclean mostlyclean-aminfo \
       
 17989  	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
       
 17990 -	mostlyclean-vti pdf pdf-am ps ps-am tags tags-recursive \
       
 17991 -	uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
       
 17992 -	uninstall-info-am uninstall-libLTLIBRARIES uninstall-pdf-am \
       
 17993 -	uninstall-pkgconfigDATA uninstall-ps-am
       
 17994 +	mostlyclean-vti pdf pdf-am ps ps-am tags tags-am uninstall \
       
 17995 +	uninstall-am uninstall-dvi-am uninstall-html-am \
       
 17996 +	uninstall-info-am uninstall-pdf-am uninstall-pkgconfigDATA \
       
 17997 +	uninstall-ps-am uninstall-toolexeclibLTLIBRARIES
       
 17998  
       
 17999  
       
 18000 -# No install-html or install-pdf support in automake yet
       
 18001 -.PHONY: install-html install-pdf
       
 18002 -install-html:
       
 18003 -install-pdf:
       
 18004 +dist-hook:
       
 18005 +	if [ -d $(top_srcdir)/.git ] ; then git -C $(top_srcdir) log --no-decorate ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog
       
 18006  
       
 18007  # Tell versions [3.59,3.63) of GNU make to not export all variables.
       
 18008  # Otherwise a system limit (for SysV at least) may be exceeded.
       
 18009  .NOEXPORT:
       
 18010 diff --git a/js/src/ctypes/libffi/README b/js/src/ctypes/libffi/README
       
 18011 --- a/js/src/ctypes/libffi/README
       
 18012 +++ b/js/src/ctypes/libffi/README
       
 18013 @@ -1,12 +1,12 @@
       
 18014  Status
       
 18015  ======
       
 18016  
       
 18017 -libffi-3.0.10 was released on XXXXXXXXXX, 2010. Check the libffi web
       
 18018 +libffi-3.1 was released on TBD.  Check the libffi web
       
 18019  page for updates: <URL:http://sourceware.org/libffi/>.
       
 18020  
       
 18021  
       
 18022  What is libffi?
       
 18023  ===============
       
 18024  
       
 18025  Compilers for high level languages generate code that follow certain
       
 18026  conventions. These conventions are necessary, in part, for separate
       
 18027 @@ -38,70 +38,102 @@ between the two languages.
       
 18028  
       
 18029  Supported Platforms
       
 18030  ===================
       
 18031  
       
 18032  Libffi has been ported to many different platforms.
       
 18033  For specific configuration details and testing status, please
       
 18034  refer to the wiki page here:
       
 18035  
       
 18036 - http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.10
       
 18037 + http://www.moxielogic.org/wiki/index.php?title=Libffi_3.1
       
 18038  
       
 18039  At the time of release, the following basic configurations have been
       
 18040  tested:
       
 18041  
       
 18042 -|--------------+------------------|
       
 18043 -| Architecture | Operating System |
       
 18044 -|--------------+------------------|
       
 18045 -| Alpha        | Linux            |
       
 18046 -| Alpha        | Tru64            |
       
 18047 -| ARM          | Linux            |
       
 18048 -| AVR32        | Linux            |
       
 18049 -| HPPA         | HPUX             |
       
 18050 -| IA-64        | Linux            |
       
 18051 -| MIPS         | IRIX             |
       
 18052 -| MIPS         | Linux            |
       
 18053 -| MIPS64       | Linux            |
       
 18054 -| PowerPC      | Linux            |
       
 18055 -| PowerPC      | Mac OSX          |
       
 18056 -| PowerPC      | FreeBSD          |
       
 18057 -| PowerPC64    | Linux            |
       
 18058 -| S390         | Linux            |
       
 18059 -| S390X        | Linux            |
       
 18060 -| SPARC        | Linux            |
       
 18061 -| SPARC        | Solaris          |
       
 18062 -| SPARC64      | Linux            |
       
 18063 -| SPARC64      | FreeBSD          |
       
 18064 -| X86          | FreeBSD          |
       
 18065 -| X86          | kFreeBSD         |
       
 18066 -| X86          | Linux            |
       
 18067 -| X86          | Mac OSX          |
       
 18068 -| X86          | OpenBSD          |
       
 18069 -| X86          | OS/2             |
       
 18070 -| X86          | Solaris          |
       
 18071 -| X86          | Windows/Cygwin   |
       
 18072 -| X86          | Windows/MingW    |
       
 18073 -| X86-64       | FreeBSD          |
       
 18074 -| X86-64       | Linux            |
       
 18075 -| X86-64       | OpenBSD          |
       
 18076 -| X86-64       | Windows/MingW    |
       
 18077 -|--------------+------------------|
       
 18078 +|-----------------+------------------+-------------------------|
       
 18079 +| Architecture    | Operating System | Compiler                |
       
 18080 +|-----------------+------------------+-------------------------|
       
 18081 +| AArch64 (ARM64) | iOS              | Clang                   |
       
 18082 +| AArch64         | Linux            | GCC                     |
       
 18083 +| Alpha           | Linux            | GCC                     |
       
 18084 +| Alpha           | Tru64            | GCC                     |
       
 18085 +| ARC             | Linux            | GCC                     |
       
 18086 +| ARM             | Linux            | GCC                     |
       
 18087 +| ARM             | iOS              | GCC                     |
       
 18088 +| AVR32           | Linux            | GCC                     |
       
 18089 +| Blackfin        | uClinux          | GCC                     |
       
 18090 +| HPPA            | HPUX             | GCC                     |
       
 18091 +| IA-64           | Linux            | GCC                     |
       
 18092 +| M68K            | FreeMiNT         | GCC                     |
       
 18093 +| M68K            | Linux            | GCC                     |
       
 18094 +| M68K            | RTEMS            | GCC                     |
       
 18095 +| M88K            | OpenBSD/mvme88k  | GCC                     |
       
 18096 +| Meta            | Linux            | GCC                     |
       
 18097 +| MicroBlaze      | Linux            | GCC                     |
       
 18098 +| MIPS            | IRIX             | GCC                     |
       
 18099 +| MIPS            | Linux            | GCC                     |
       
 18100 +| MIPS            | RTEMS            | GCC                     |
       
 18101 +| MIPS64          | Linux            | GCC                     |
       
 18102 +| Moxie           | Bare metal       | GCC                     |
       
 18103 +| Nios II         | Linux            | GCC                     |
       
 18104 +| PowerPC 32-bit  | AIX              | IBM XL C                |
       
 18105 +| PowerPC 64-bit  | AIX              | IBM XL C                |
       
 18106 +| PowerPC         | AMIGA            | GCC                     |
       
 18107 +| PowerPC         | Linux            | GCC                     |
       
 18108 +| PowerPC         | Mac OSX          | GCC                     |
       
 18109 +| PowerPC         | FreeBSD          | GCC                     |
       
 18110 +| PowerPC 64-bit  | FreeBSD          | GCC                     |
       
 18111 +| PowerPC 64-bit  | Linux ELFv1      | GCC                     |
       
 18112 +| PowerPC 64-bit  | Linux ELFv2      | GCC                     |
       
 18113 +| S390            | Linux            | GCC                     |
       
 18114 +| S390X           | Linux            | GCC                     |
       
 18115 +| SPARC           | Linux            | GCC                     |
       
 18116 +| SPARC           | Solaris          | GCC                     |
       
 18117 +| SPARC           | Solaris          | Oracle Solaris Studio C |
       
 18118 +| SPARC64         | Linux            | GCC                     |
       
 18119 +| SPARC64         | FreeBSD          | GCC                     |
       
 18120 +| SPARC64         | Solaris          | Oracle Solaris Studio C |
       
 18121 +| TILE-Gx/TILEPro | Linux            | GCC                     |
       
 18122 +| VAX             | OpenBSD/vax      | GCC                     |
       
 18123 +| X86             | FreeBSD          | GCC                     |
       
 18124 +| X86             | GNU HURD         | GCC                     |
       
 18125 +| X86             | Interix          | GCC                     |
       
 18126 +| X86             | kFreeBSD         | GCC                     |
       
 18127 +| X86             | Linux            | GCC                     |
       
 18128 +| X86             | Mac OSX          | GCC                     |
       
 18129 +| X86             | OpenBSD          | GCC                     |
       
 18130 +| X86             | OS/2             | GCC                     |
       
 18131 +| X86             | Solaris          | GCC                     |
       
 18132 +| X86             | Solaris          | Oracle Solaris Studio C |
       
 18133 +| X86             | Windows/Cygwin   | GCC                     |
       
 18134 +| X86             | Windows/MingW    | GCC                     |
       
 18135 +| X86-64          | FreeBSD          | GCC                     |
       
 18136 +| X86-64          | Linux            | GCC                     |
       
 18137 +| X86-64          | Linux/x32        | GCC                     |
       
 18138 +| X86-64          | OpenBSD          | GCC                     |
       
 18139 +| X86-64          | Solaris          | Oracle Solaris Studio C |
       
 18140 +| X86-64          | Windows/MingW    | GCC                     |
       
 18141 +| Xtensa          | Linux            | GCC                     |
       
 18142 +|-----------------+------------------+-------------------------|
       
 18143  
       
 18144  Please send additional platform test results to
       
 18145  libffi-discuss@sourceware.org and feel free to update the wiki page
       
 18146  above.
       
 18147  
       
 18148  Installing libffi
       
 18149  =================
       
 18150  
       
 18151  First you must configure the distribution for your particular
       
 18152  system. Go to the directory you wish to build libffi in and run the
       
 18153  "configure" program found in the root directory of the libffi source
       
 18154  distribution.
       
 18155  
       
 18156 +If you're building libffi directly from version control, configure won't
       
 18157 +exist yet; run ./autogen.sh first.
       
 18158 +
       
 18159  You may want to tell configure where to install the libffi library and
       
 18160  header files. To do that, use the --prefix configure switch.  Libffi
       
 18161  will install under /usr/local by default. 
       
 18162  
       
 18163  If you want to enable extra run-time debugging checks use the the
       
 18164  --enable-debug configure switch. This is useful when your program dies
       
 18165  mysteriously while using libffi. 
       
 18166  
       
 18167 @@ -117,37 +149,93 @@ wrapper script during configuration like
       
 18168  path/to/configure CC=path/to/msvcc.sh LD=link CPP=\"cl -nologo -EP\"
       
 18169  
       
 18170  For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64".
       
 18171  You may also need to specify --build appropriately. When building with MSVC
       
 18172  under a MingW environment, you may need to remove the line in configure
       
 18173  that sets 'fix_srcfile_path' to a 'cygpath' command. ('cygpath' is not
       
 18174  present in MingW, and is not required when using MingW-style paths.)
       
 18175  
       
 18176 +For iOS builds, the 'libffi.xcodeproj' Xcode project is available.
       
 18177 +
       
 18178  Configure has many other options. Use "configure --help" to see them all.
       
 18179  
       
 18180  Once configure has finished, type "make". Note that you must be using
       
 18181 -GNU make.  You can ftp GNU make from prep.ai.mit.edu:/pub/gnu.
       
 18182 +GNU make.  You can ftp GNU make from ftp.gnu.org:/pub/gnu/make .
       
 18183  
       
 18184  To ensure that libffi is working as advertised, type "make check".
       
 18185  This will require that you have DejaGNU installed.
       
 18186  
       
 18187  To install the library and header files, type "make install".
       
 18188  
       
 18189  
       
 18190  History
       
 18191  =======
       
 18192  
       
 18193 -See the ChangeLog files for details.
       
 18194 +See the git log for details at http://github.com/atgreen/libffi.
       
 18195  
       
 18196 -3.0.10 ???-??-??
       
 18197 -        Fix the N64 build on mips-sgi-irix6.5.
       
 18198 +3.1 TBD
       
 18199 +        Add AArch64 (ARM64) iOS support.
       
 18200 +        Add Nios II support.
       
 18201 +        Add m88k and DEC VAX support.
       
 18202 +	Add support for stdcall, thiscall, and fastcall on non-Windows
       
 18203 +	  32-bit x86 targets such as Linux.
       
 18204 +	Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi
       
 18205 +	  fixes.
       
 18206 +	Make the testsuite more robust: eliminated several spurious
       
 18207 +	  failures.
       
 18208 +	Archive off the manually maintained ChangeLog in favor of git
       
 18209 +	  log.
       
 18210 +
       
 18211 +3.0.13 Mar-17-13
       
 18212 +	Add Meta support.
       
 18213 +	Add missing Moxie bits.
       
 18214 +	Fix stack alignment bug on 32-bit x86.
       
 18215 +	Build fix for m68000 targets.
       
 18216 +	Build fix for soft-float Power targets.
       
 18217 +	Fix the install dir location for some platforms when building
       
 18218 +	  with GCC (OS X, Solaris).
       
 18219 +	Fix Cygwin regression.
       
 18220 +
       
 18221 +3.0.12 Feb-11-13
       
 18222 +        Add Moxie support.
       
 18223 +	Add AArch64 support.
       
 18224 +	Add Blackfin support.
       
 18225 +	Add TILE-Gx/TILEPro support.
       
 18226 +	Add MicroBlaze support.
       
 18227 +	Add Xtensa support.
       
 18228 +	Add support for PaX enabled kernels with MPROTECT.
       
 18229 +	Add support for native vendor compilers on
       
 18230 +	  Solaris and AIX.
       
 18231 +	Work around LLVM/GCC interoperability issue on x86_64.
       
 18232 +
       
 18233 +3.0.11 Apr-11-12
       
 18234 +        Lots of build fixes.
       
 18235 +	Add support for variadic functions (ffi_prep_cif_var).
       
 18236 +	Add Linux/x32 support.
       
 18237 +	Add thiscall, fastcall and MSVC cdecl support on Windows.
       
 18238 +	Add Amiga and newer MacOS support.
       
 18239 +	Add m68k FreeMiNT support.
       
 18240 +	Integration with iOS' xcode build tools.
       
 18241 +	Fix Octeon and MC68881 support.
       
 18242 +	Fix code pessimizations.
       
 18243 +
       
 18244 +3.0.10 Aug-23-11
       
 18245 +        Add support for Apple's iOS.
       
 18246 +	Add support for ARM VFP ABI.
       
 18247 +        Add RTEMS support for MIPS and M68K.
       
 18248 +	Fix instruction cache clearing problems on
       
 18249 +	  ARM and SPARC.
       
 18250 +	Fix the N64 build on mips-sgi-irix6.5.
       
 18251 +	Enable builds with Microsoft's compiler.
       
 18252 +	Enable x86 builds with Oracle's Solaris compiler.
       
 18253 +	Fix support for calling code compiled with Oracle's Sparc
       
 18254 +	  Solaris compiler.
       
 18255  	Testsuite fixes for Tru64 Unix.
       
 18256 -	Enable builds with Microsoft's compiler.
       
 18257 -	Enable x86 builds with Sun's compiler.
       
 18258 +	Additional platform support.
       
 18259  
       
 18260  3.0.9 Dec-31-09
       
 18261          Add AVR32 and win64 ports.  Add ARM softfp support.
       
 18262  	Many fixes for AIX, Solaris, HP-UX, *BSD.
       
 18263  	Several PowerPC and x86-64 bug fixes.
       
 18264  	Build DLL for windows.
       
 18265  
       
 18266  3.0.8 Dec-19-08
       
 18267 @@ -267,50 +355,59 @@ 1.01 Oct-8-96
       
 18268  
       
 18269  1.00 Oct-7-96
       
 18270  	First release. No public announcement.
       
 18271  
       
 18272  
       
 18273  Authors & Credits
       
 18274  =================
       
 18275  
       
 18276 -libffi was originally written by Anthony Green <green@redhat.com>.
       
 18277 +libffi was originally written by Anthony Green <green@moxielogic.com>.
       
 18278  
       
 18279  The developers of the GNU Compiler Collection project have made
       
 18280  innumerable valuable contributions.  See the ChangeLog file for
       
 18281  details.
       
 18282  
       
 18283  Some of the ideas behind libffi were inspired by Gianni Mariani's free
       
 18284  gencall library for Silicon Graphics machines.
       
 18285  
       
 18286  The closure mechanism was designed and implemented by Kresten Krab
       
 18287  Thorup.
       
 18288  
       
 18289  Major processor architecture ports were contributed by the following
       
 18290  developers:
       
 18291  
       
 18292 +aarch64		Marcus Shawcroft, James Greenhalgh
       
 18293  alpha		Richard Henderson
       
 18294  arm		Raffaele Sena
       
 18295 +blackfin        Alexandre Keunecke I. de Mendonca
       
 18296  cris		Simon Posnjak, Hans-Peter Nilsson
       
 18297  frv		Anthony Green
       
 18298  ia64		Hans Boehm
       
 18299  m32r		Kazuhiro Inaoka
       
 18300  m68k		Andreas Schwab
       
 18301 +m88k		Miod Vallat
       
 18302 +microblaze	Nathan Rossi
       
 18303  mips		Anthony Green, Casey Marshall
       
 18304  mips64		David Daney
       
 18305 +moxie		Anthony Green
       
 18306 +nios ii		Sandra Loosemore
       
 18307  pa		Randolph Chung, Dave Anglin, Andreas Tobler
       
 18308  powerpc		Geoffrey Keating, Andreas Tobler, 
       
 18309  			 David Edelsohn, John Hornkvist
       
 18310  powerpc64	Jakub Jelinek
       
 18311  s390		Gerhard Tonn, Ulrich Weigand
       
 18312  sh		Kaz Kojima
       
 18313  sh64		Kaz Kojima
       
 18314  sparc		Anthony Green, Gordon Irlam
       
 18315 +tile-gx/tilepro Walter Lee
       
 18316 +vax		Miod Vallat
       
 18317  x86		Anthony Green, Jon Beniston
       
 18318  x86-64		Bo Thorsen
       
 18319 +xtensa		Chris Zankel
       
 18320  
       
 18321  Jesper Skov and Andrew Haley both did more than their fair share of
       
 18322  stepping through the code and tracking down bugs.
       
 18323  
       
 18324  Thanks also to Tom Tromey for bug fixes, documentation and
       
 18325  configuration help.
       
 18326  
       
 18327  Thanks to Jim Blandy, who provided some useful feedback on the libffi
       
 18328 @@ -318,10 +415,11 @@ interface.
       
 18329  
       
 18330  Andreas Tobler has done a tremendous amount of work on the testsuite.
       
 18331  
       
 18332  Alex Oliva solved the executable page problem for SElinux.
       
 18333  
       
 18334  The list above is almost certainly incomplete and inaccurate.  I'm
       
 18335  happy to make corrections or additions upon request.
       
 18336  
       
 18337 -If you have a problem, or have found a bug, please send a note to
       
 18338 -green@redhat.com.
       
 18339 +If you have a problem, or have found a bug, please send a note to the
       
 18340 +author at green@moxielogic.com, or the project mailing list at
       
 18341 +libffi-discuss@sourceware.org.
       
 18342 diff --git a/js/src/ctypes/libffi/aclocal.m4 b/js/src/ctypes/libffi/aclocal.m4
       
 18343 --- a/js/src/ctypes/libffi/aclocal.m4
       
 18344 +++ b/js/src/ctypes/libffi/aclocal.m4
       
 18345 @@ -1,7390 +1,40 @@
       
 18346 -# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
       
 18347 +# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
       
 18348  
       
 18349 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
       
 18350 -# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
       
 18351 +# Copyright (C) 1996-2013 Free Software Foundation, Inc.
       
 18352 +
       
 18353  # This file is free software; the Free Software Foundation
       
 18354  # gives unlimited permission to copy and/or distribute it,
       
 18355  # with or without modifications, as long as this notice is preserved.
       
 18356  
       
 18357  # This program is distributed in the hope that it will be useful,
       
 18358  # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
       
 18359  # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
       
 18360  # PARTICULAR PURPOSE.
       
 18361  
       
 18362 +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
       
 18363  m4_ifndef([AC_AUTOCONF_VERSION],
       
 18364    [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
       
 18365 -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
       
 18366 -[m4_warning([this file was generated for autoconf 2.65.
       
 18367 +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
       
 18368 +[m4_warning([this file was generated for autoconf 2.69.
       
 18369  You have another version of autoconf.  It may work, but is not guaranteed to.
       
 18370  If you have problems, you may need to regenerate the build system entirely.
       
 18371 -To do so, use the procedure documented by the package, typically `autoreconf'.])])
       
 18372 -
       
 18373 -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
       
 18374 -#
       
 18375 -#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
       
 18376 -#                 2006, 2007, 2008 Free Software Foundation, Inc.
       
 18377 -#   Written by Gordon Matzigkeit, 1996
       
 18378 -#
       
 18379 -# This file is free software; the Free Software Foundation gives
       
 18380 -# unlimited permission to copy and/or distribute it, with or without
       
 18381 -# modifications, as long as this notice is preserved.
       
 18382 -
       
 18383 -m4_define([_LT_COPYING], [dnl
       
 18384 -#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
       
 18385 -#                 2006, 2007, 2008 Free Software Foundation, Inc.
       
 18386 -#   Written by Gordon Matzigkeit, 1996
       
 18387 -#
       
 18388 -#   This file is part of GNU Libtool.
       
 18389 -#
       
 18390 -# GNU Libtool is free software; you can redistribute it and/or
       
 18391 -# modify it under the terms of the GNU General Public License as
       
 18392 -# published by the Free Software Foundation; either version 2 of
       
 18393 -# the License, or (at your option) any later version.
       
 18394 -#
       
 18395 -# As a special exception to the GNU General Public License,
       
 18396 -# if you distribute this file as part of a program or library that
       
 18397 -# is built using GNU Libtool, you may include this file under the
       
 18398 -# same distribution terms that you use for the rest of that program.
       
 18399 -#
       
 18400 -# GNU Libtool is distributed in the hope that it will be useful,
       
 18401 -# but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 18402 -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 18403 -# GNU General Public License for more details.
       
 18404 -#
       
 18405 -# You should have received a copy of the GNU General Public License
       
 18406 -# along with GNU Libtool; see the file COPYING.  If not, a copy
       
 18407 -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
       
 18408 -# obtained by writing to the Free Software Foundation, Inc.,
       
 18409 -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       
 18410 -])
       
 18411 -
       
 18412 -# serial 56 LT_INIT
       
 18413 -
       
 18414 -
       
 18415 -# LT_PREREQ(VERSION)
       
 18416 -# ------------------
       
 18417 -# Complain and exit if this libtool version is less that VERSION.
       
 18418 -m4_defun([LT_PREREQ],
       
 18419 -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
       
 18420 -       [m4_default([$3],
       
 18421 -		   [m4_fatal([Libtool version $1 or higher is required],
       
 18422 -		             63)])],
       
 18423 -       [$2])])
       
 18424 -
       
 18425 -
       
 18426 -# _LT_CHECK_BUILDDIR
       
 18427 -# ------------------
       
 18428 -# Complain if the absolute build directory name contains unusual characters
       
 18429 -m4_defun([_LT_CHECK_BUILDDIR],
       
 18430 -[case `pwd` in
       
 18431 -  *\ * | *\	*)
       
 18432 -    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
       
 18433 -esac
       
 18434 -])
       
 18435 -
       
 18436 -
       
 18437 -# LT_INIT([OPTIONS])
       
 18438 -# ------------------
       
 18439 -AC_DEFUN([LT_INIT],
       
 18440 -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
       
 18441 -AC_BEFORE([$0], [LT_LANG])dnl
       
 18442 -AC_BEFORE([$0], [LT_OUTPUT])dnl
       
 18443 -AC_BEFORE([$0], [LTDL_INIT])dnl
       
 18444 -m4_require([_LT_CHECK_BUILDDIR])dnl
       
 18445 -
       
 18446 -dnl Autoconf doesn't catch unexpanded LT_ macros by default:
       
 18447 -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
       
 18448 -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
       
 18449 -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
       
 18450 -dnl unless we require an AC_DEFUNed macro:
       
 18451 -AC_REQUIRE([LTOPTIONS_VERSION])dnl
       
 18452 -AC_REQUIRE([LTSUGAR_VERSION])dnl
       
 18453 -AC_REQUIRE([LTVERSION_VERSION])dnl
       
 18454 -AC_REQUIRE([LTOBSOLETE_VERSION])dnl
       
 18455 -m4_require([_LT_PROG_LTMAIN])dnl
       
 18456 -
       
 18457 -dnl Parse OPTIONS
       
 18458 -_LT_SET_OPTIONS([$0], [$1])
       
 18459 -
       
 18460 -# This can be used to rebuild libtool when needed
       
 18461 -LIBTOOL_DEPS="$ltmain"
       
 18462 -
       
 18463 -# Always use our own libtool.
       
 18464 -LIBTOOL='$(SHELL) $(top_builddir)/libtool'
       
 18465 -AC_SUBST(LIBTOOL)dnl
       
 18466 -
       
 18467 -_LT_SETUP
       
 18468 -
       
 18469 -# Only expand once:
       
 18470 -m4_define([LT_INIT])
       
 18471 -])# LT_INIT
       
 18472 -
       
 18473 -# Old names:
       
 18474 -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
       
 18475 -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
       
 18476 -dnl aclocal-1.4 backwards compatibility:
       
 18477 -dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
       
 18478 -dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
       
 18479 -
       
 18480 -
       
 18481 -# _LT_CC_BASENAME(CC)
       
 18482 -# -------------------
       
 18483 -# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
       
 18484 -m4_defun([_LT_CC_BASENAME],
       
 18485 -[for cc_temp in $1""; do
       
 18486 -  case $cc_temp in
       
 18487 -    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
       
 18488 -    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
       
 18489 -    \-*) ;;
       
 18490 -    *) break;;
       
 18491 -  esac
       
 18492 -done
       
 18493 -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
       
 18494 -])
       
 18495 -
       
 18496 -
       
 18497 -# _LT_FILEUTILS_DEFAULTS
       
 18498 -# ----------------------
       
 18499 -# It is okay to use these file commands and assume they have been set
       
 18500 -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
       
 18501 -m4_defun([_LT_FILEUTILS_DEFAULTS],
       
 18502 -[: ${CP="cp -f"}
       
 18503 -: ${MV="mv -f"}
       
 18504 -: ${RM="rm -f"}
       
 18505 -])# _LT_FILEUTILS_DEFAULTS
       
 18506 -
       
 18507 -
       
 18508 -# _LT_SETUP
       
 18509 -# ---------
       
 18510 -m4_defun([_LT_SETUP],
       
 18511 -[AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 18512 -AC_REQUIRE([AC_CANONICAL_BUILD])dnl
       
 18513 -_LT_DECL([], [host_alias], [0], [The host system])dnl
       
 18514 -_LT_DECL([], [host], [0])dnl
       
 18515 -_LT_DECL([], [host_os], [0])dnl
       
 18516 -dnl
       
 18517 -_LT_DECL([], [build_alias], [0], [The build system])dnl
       
 18518 -_LT_DECL([], [build], [0])dnl
       
 18519 -_LT_DECL([], [build_os], [0])dnl
       
 18520 -dnl
       
 18521 -AC_REQUIRE([AC_PROG_CC])dnl
       
 18522 -AC_REQUIRE([LT_PATH_LD])dnl
       
 18523 -AC_REQUIRE([LT_PATH_NM])dnl
       
 18524 -dnl
       
 18525 -AC_REQUIRE([AC_PROG_LN_S])dnl
       
 18526 -test -z "$LN_S" && LN_S="ln -s"
       
 18527 -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
       
 18528 -dnl
       
 18529 -AC_REQUIRE([LT_CMD_MAX_LEN])dnl
       
 18530 -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
       
 18531 -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
       
 18532 -dnl
       
 18533 -m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 18534 -m4_require([_LT_CHECK_SHELL_FEATURES])dnl
       
 18535 -m4_require([_LT_CMD_RELOAD])dnl
       
 18536 -m4_require([_LT_CHECK_MAGIC_METHOD])dnl
       
 18537 -m4_require([_LT_CMD_OLD_ARCHIVE])dnl
       
 18538 -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
       
 18539 -
       
 18540 -_LT_CONFIG_LIBTOOL_INIT([
       
 18541 -# See if we are running on zsh, and set the options which allow our
       
 18542 -# commands through without removal of \ escapes INIT.
       
 18543 -if test -n "\${ZSH_VERSION+set}" ; then
       
 18544 -   setopt NO_GLOB_SUBST
       
 18545 -fi
       
 18546 -])
       
 18547 -if test -n "${ZSH_VERSION+set}" ; then
       
 18548 -   setopt NO_GLOB_SUBST
       
 18549 -fi
       
 18550 -
       
 18551 -_LT_CHECK_OBJDIR
       
 18552 -
       
 18553 -m4_require([_LT_TAG_COMPILER])dnl
       
 18554 -_LT_PROG_ECHO_BACKSLASH
       
 18555 -
       
 18556 -case $host_os in
       
 18557 -aix3*)
       
 18558 -  # AIX sometimes has problems with the GCC collect2 program.  For some
       
 18559 -  # reason, if we set the COLLECT_NAMES environment variable, the problems
       
 18560 -  # vanish in a puff of smoke.
       
 18561 -  if test "X${COLLECT_NAMES+set}" != Xset; then
       
 18562 -    COLLECT_NAMES=
       
 18563 -    export COLLECT_NAMES
       
 18564 -  fi
       
 18565 -  ;;
       
 18566 -esac
       
 18567 -
       
 18568 -# Sed substitution that helps us do robust quoting.  It backslashifies
       
 18569 -# metacharacters that are still active within double-quoted strings.
       
 18570 -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
       
 18571 -
       
 18572 -# Same as above, but do not quote variable references.
       
 18573 -double_quote_subst='s/\([["`\\]]\)/\\\1/g'
       
 18574 -
       
 18575 -# Sed substitution to delay expansion of an escaped shell variable in a
       
 18576 -# double_quote_subst'ed string.
       
 18577 -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
       
 18578 -
       
 18579 -# Sed substitution to delay expansion of an escaped single quote.
       
 18580 -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
       
 18581 -
       
 18582 -# Sed substitution to avoid accidental globbing in evaled expressions
       
 18583 -no_glob_subst='s/\*/\\\*/g'
       
 18584 -
       
 18585 -# Global variables:
       
 18586 -ofile=libtool
       
 18587 -can_build_shared=yes
       
 18588 -
       
 18589 -# All known linkers require a `.a' archive for static linking (except MSVC,
       
 18590 -# which needs '.lib').
       
 18591 -libext=a
       
 18592 -
       
 18593 -with_gnu_ld="$lt_cv_prog_gnu_ld"
       
 18594 -
       
 18595 -old_CC="$CC"
       
 18596 -old_CFLAGS="$CFLAGS"
       
 18597 -
       
 18598 -# Set sane defaults for various variables
       
 18599 -test -z "$CC" && CC=cc
       
 18600 -test -z "$LTCC" && LTCC=$CC
       
 18601 -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
       
 18602 -test -z "$LD" && LD=ld
       
 18603 -test -z "$ac_objext" && ac_objext=o
       
 18604 -
       
 18605 -_LT_CC_BASENAME([$compiler])
       
 18606 -
       
 18607 -# Only perform the check for file, if the check method requires it
       
 18608 -test -z "$MAGIC_CMD" && MAGIC_CMD=file
       
 18609 -case $deplibs_check_method in
       
 18610 -file_magic*)
       
 18611 -  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
       
 18612 -    _LT_PATH_MAGIC
       
 18613 -  fi
       
 18614 -  ;;
       
 18615 -esac
       
 18616 -
       
 18617 -# Use C for the default configuration in the libtool script
       
 18618 -LT_SUPPORTED_TAG([CC])
       
 18619 -_LT_LANG_C_CONFIG
       
 18620 -_LT_LANG_DEFAULT_CONFIG
       
 18621 -_LT_CONFIG_COMMANDS
       
 18622 -])# _LT_SETUP
       
 18623 -
       
 18624 -
       
 18625 -# _LT_PROG_LTMAIN
       
 18626 -# ---------------
       
 18627 -# Note that this code is called both from `configure', and `config.status'
       
 18628 -# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
       
 18629 -# `config.status' has no value for ac_aux_dir unless we are using Automake,
       
 18630 -# so we pass a copy along to make sure it has a sensible value anyway.
       
 18631 -m4_defun([_LT_PROG_LTMAIN],
       
 18632 -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
       
 18633 -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
       
 18634 -ltmain="$ac_aux_dir/ltmain.sh"
       
 18635 -])# _LT_PROG_LTMAIN
       
 18636 -
       
 18637 -
       
 18638 -
       
 18639 -# So that we can recreate a full libtool script including additional
       
 18640 -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
       
 18641 -# in macros and then make a single call at the end using the `libtool'
       
 18642 -# label.
       
 18643 -
       
 18644 -
       
 18645 -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
       
 18646 -# ----------------------------------------
       
 18647 -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
       
 18648 -m4_define([_LT_CONFIG_LIBTOOL_INIT],
       
 18649 -[m4_ifval([$1],
       
 18650 -          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
       
 18651 -                     [$1
       
 18652 -])])])
       
 18653 -
       
 18654 -# Initialize.
       
 18655 -m4_define([_LT_OUTPUT_LIBTOOL_INIT])
       
 18656 -
       
 18657 -
       
 18658 -# _LT_CONFIG_LIBTOOL([COMMANDS])
       
 18659 -# ------------------------------
       
 18660 -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
       
 18661 -m4_define([_LT_CONFIG_LIBTOOL],
       
 18662 -[m4_ifval([$1],
       
 18663 -          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
       
 18664 -                     [$1
       
 18665 -])])])
       
 18666 -
       
 18667 -# Initialize.
       
 18668 -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
       
 18669 -
       
 18670 -
       
 18671 -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
       
 18672 -# -----------------------------------------------------
       
 18673 -m4_defun([_LT_CONFIG_SAVE_COMMANDS],
       
 18674 -[_LT_CONFIG_LIBTOOL([$1])
       
 18675 -_LT_CONFIG_LIBTOOL_INIT([$2])
       
 18676 -])
       
 18677 -
       
 18678 -
       
 18679 -# _LT_FORMAT_COMMENT([COMMENT])
       
 18680 -# -----------------------------
       
 18681 -# Add leading comment marks to the start of each line, and a trailing
       
 18682 -# full-stop to the whole comment if one is not present already.
       
 18683 -m4_define([_LT_FORMAT_COMMENT],
       
 18684 -[m4_ifval([$1], [
       
 18685 -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
       
 18686 -              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
       
 18687 -)])
       
 18688 -
       
 18689 -
       
 18690 -
       
 18691 -
       
 18692 -
       
 18693 -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
       
 18694 -# -------------------------------------------------------------------
       
 18695 -# CONFIGNAME is the name given to the value in the libtool script.
       
 18696 -# VARNAME is the (base) name used in the configure script.
       
 18697 -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
       
 18698 -# VARNAME.  Any other value will be used directly.
       
 18699 -m4_define([_LT_DECL],
       
 18700 -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
       
 18701 -    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
       
 18702 -	[m4_ifval([$1], [$1], [$2])])
       
 18703 -    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
       
 18704 -    m4_ifval([$4],
       
 18705 -	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
       
 18706 -    lt_dict_add_subkey([lt_decl_dict], [$2],
       
 18707 -	[tagged?], [m4_ifval([$5], [yes], [no])])])
       
 18708 -])
       
 18709 -
       
 18710 -
       
 18711 -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
       
 18712 -# --------------------------------------------------------
       
 18713 -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
       
 18714 -
       
 18715 -
       
 18716 -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
       
 18717 -# ------------------------------------------------
       
 18718 -m4_define([lt_decl_tag_varnames],
       
 18719 -[_lt_decl_filter([tagged?], [yes], $@)])
       
 18720 -
       
 18721 -
       
 18722 -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
       
 18723 -# ---------------------------------------------------------
       
 18724 -m4_define([_lt_decl_filter],
       
 18725 -[m4_case([$#],
       
 18726 -  [0], [m4_fatal([$0: too few arguments: $#])],
       
 18727 -  [1], [m4_fatal([$0: too few arguments: $#: $1])],
       
 18728 -  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
       
 18729 -  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
       
 18730 -  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
       
 18731 -])
       
 18732 -
       
 18733 -
       
 18734 -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
       
 18735 -# --------------------------------------------------
       
 18736 -m4_define([lt_decl_quote_varnames],
       
 18737 -[_lt_decl_filter([value], [1], $@)])
       
 18738 -
       
 18739 -
       
 18740 -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
       
 18741 -# ---------------------------------------------------
       
 18742 -m4_define([lt_decl_dquote_varnames],
       
 18743 -[_lt_decl_filter([value], [2], $@)])
       
 18744 -
       
 18745 -
       
 18746 -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
       
 18747 -# ---------------------------------------------------
       
 18748 -m4_define([lt_decl_varnames_tagged],
       
 18749 -[m4_assert([$# <= 2])dnl
       
 18750 -_$0(m4_quote(m4_default([$1], [[, ]])),
       
 18751 -    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
       
 18752 -    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
       
 18753 -m4_define([_lt_decl_varnames_tagged],
       
 18754 -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
       
 18755 -
       
 18756 -
       
 18757 -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
       
 18758 -# ------------------------------------------------
       
 18759 -m4_define([lt_decl_all_varnames],
       
 18760 -[_$0(m4_quote(m4_default([$1], [[, ]])),
       
 18761 -     m4_if([$2], [],
       
 18762 -	   m4_quote(lt_decl_varnames),
       
 18763 -	m4_quote(m4_shift($@))))[]dnl
       
 18764 -])
       
 18765 -m4_define([_lt_decl_all_varnames],
       
 18766 -[lt_join($@, lt_decl_varnames_tagged([$1],
       
 18767 -			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
       
 18768 -])
       
 18769 -
       
 18770 -
       
 18771 -# _LT_CONFIG_STATUS_DECLARE([VARNAME])
       
 18772 -# ------------------------------------
       
 18773 -# Quote a variable value, and forward it to `config.status' so that its
       
 18774 -# declaration there will have the same value as in `configure'.  VARNAME
       
 18775 -# must have a single quote delimited value for this to work.
       
 18776 -m4_define([_LT_CONFIG_STATUS_DECLARE],
       
 18777 -[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
       
 18778 -
       
 18779 -
       
 18780 -# _LT_CONFIG_STATUS_DECLARATIONS
       
 18781 -# ------------------------------
       
 18782 -# We delimit libtool config variables with single quotes, so when
       
 18783 -# we write them to config.status, we have to be sure to quote all
       
 18784 -# embedded single quotes properly.  In configure, this macro expands
       
 18785 -# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
       
 18786 -#
       
 18787 -#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
       
 18788 -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
       
 18789 -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
       
 18790 -    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
       
 18791 -
       
 18792 -
       
 18793 -# _LT_LIBTOOL_TAGS
       
 18794 -# ----------------
       
 18795 -# Output comment and list of tags supported by the script
       
 18796 -m4_defun([_LT_LIBTOOL_TAGS],
       
 18797 -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
       
 18798 -available_tags="_LT_TAGS"dnl
       
 18799 -])
       
 18800 -
       
 18801 -
       
 18802 -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
       
 18803 -# -----------------------------------
       
 18804 -# Extract the dictionary values for VARNAME (optionally with TAG) and
       
 18805 -# expand to a commented shell variable setting:
       
 18806 -#
       
 18807 -#    # Some comment about what VAR is for.
       
 18808 -#    visible_name=$lt_internal_name
       
 18809 -m4_define([_LT_LIBTOOL_DECLARE],
       
 18810 -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
       
 18811 -					   [description])))[]dnl
       
 18812 -m4_pushdef([_libtool_name],
       
 18813 -    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
       
 18814 -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
       
 18815 -    [0], [_libtool_name=[$]$1],
       
 18816 -    [1], [_libtool_name=$lt_[]$1],
       
 18817 -    [2], [_libtool_name=$lt_[]$1],
       
 18818 -    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
       
 18819 -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
       
 18820 -])
       
 18821 -
       
 18822 -
       
 18823 -# _LT_LIBTOOL_CONFIG_VARS
       
 18824 -# -----------------------
       
 18825 -# Produce commented declarations of non-tagged libtool config variables
       
 18826 -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
       
 18827 -# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
       
 18828 -# section) are produced by _LT_LIBTOOL_TAG_VARS.
       
 18829 -m4_defun([_LT_LIBTOOL_CONFIG_VARS],
       
 18830 -[m4_foreach([_lt_var],
       
 18831 -    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
       
 18832 -    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
       
 18833 -
       
 18834 -
       
 18835 -# _LT_LIBTOOL_TAG_VARS(TAG)
       
 18836 -# -------------------------
       
 18837 -m4_define([_LT_LIBTOOL_TAG_VARS],
       
 18838 -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
       
 18839 -    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
       
 18840 -
       
 18841 -
       
 18842 -# _LT_TAGVAR(VARNAME, [TAGNAME])
       
 18843 -# ------------------------------
       
 18844 -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
       
 18845 -
       
 18846 -
       
 18847 -# _LT_CONFIG_COMMANDS
       
 18848 -# -------------------
       
 18849 -# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
       
 18850 -# variables for single and double quote escaping we saved from calls
       
 18851 -# to _LT_DECL, we can put quote escaped variables declarations
       
 18852 -# into `config.status', and then the shell code to quote escape them in
       
 18853 -# for loops in `config.status'.  Finally, any additional code accumulated
       
 18854 -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
       
 18855 -m4_defun([_LT_CONFIG_COMMANDS],
       
 18856 -[AC_PROVIDE_IFELSE([LT_OUTPUT],
       
 18857 -	dnl If the libtool generation code has been placed in $CONFIG_LT,
       
 18858 -	dnl instead of duplicating it all over again into config.status,
       
 18859 -	dnl then we will have config.status run $CONFIG_LT later, so it
       
 18860 -	dnl needs to know what name is stored there:
       
 18861 -        [AC_CONFIG_COMMANDS([libtool],
       
 18862 -            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
       
 18863 -    dnl If the libtool generation code is destined for config.status,
       
 18864 -    dnl expand the accumulated commands and init code now:
       
 18865 -    [AC_CONFIG_COMMANDS([libtool],
       
 18866 -        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
       
 18867 -])#_LT_CONFIG_COMMANDS
       
 18868 -
       
 18869 -
       
 18870 -# Initialize.
       
 18871 -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
       
 18872 -[
       
 18873 -
       
 18874 -# The HP-UX ksh and POSIX shell print the target directory to stdout
       
 18875 -# if CDPATH is set.
       
 18876 -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
       
 18877 -
       
 18878 -sed_quote_subst='$sed_quote_subst'
       
 18879 -double_quote_subst='$double_quote_subst'
       
 18880 -delay_variable_subst='$delay_variable_subst'
       
 18881 -_LT_CONFIG_STATUS_DECLARATIONS
       
 18882 -LTCC='$LTCC'
       
 18883 -LTCFLAGS='$LTCFLAGS'
       
 18884 -compiler='$compiler_DEFAULT'
       
 18885 -
       
 18886 -# Quote evaled strings.
       
 18887 -for var in lt_decl_all_varnames([[ \
       
 18888 -]], lt_decl_quote_varnames); do
       
 18889 -    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
       
 18890 -    *[[\\\\\\\`\\"\\\$]]*)
       
 18891 -      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       
 18892 -      ;;
       
 18893 -    *)
       
 18894 -      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
       
 18895 -      ;;
       
 18896 -    esac
       
 18897 -done
       
 18898 -
       
 18899 -# Double-quote double-evaled strings.
       
 18900 -for var in lt_decl_all_varnames([[ \
       
 18901 -]], lt_decl_dquote_varnames); do
       
 18902 -    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
       
 18903 -    *[[\\\\\\\`\\"\\\$]]*)
       
 18904 -      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       
 18905 -      ;;
       
 18906 -    *)
       
 18907 -      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
       
 18908 -      ;;
       
 18909 -    esac
       
 18910 -done
       
 18911 -
       
 18912 -# Fix-up fallback echo if it was mangled by the above quoting rules.
       
 18913 -case \$lt_ECHO in
       
 18914 -*'\\\[$]0 --fallback-echo"')dnl "
       
 18915 -  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
       
 18916 -  ;;
       
 18917 -esac
       
 18918 -
       
 18919 -_LT_OUTPUT_LIBTOOL_INIT
       
 18920 -])
       
 18921 -
       
 18922 -
       
 18923 -# LT_OUTPUT
       
 18924 -# ---------
       
 18925 -# This macro allows early generation of the libtool script (before
       
 18926 -# AC_OUTPUT is called), incase it is used in configure for compilation
       
 18927 -# tests.
       
 18928 -AC_DEFUN([LT_OUTPUT],
       
 18929 -[: ${CONFIG_LT=./config.lt}
       
 18930 -AC_MSG_NOTICE([creating $CONFIG_LT])
       
 18931 -cat >"$CONFIG_LT" <<_LTEOF
       
 18932 -#! $SHELL
       
 18933 -# Generated by $as_me.
       
 18934 -# Run this file to recreate a libtool stub with the current configuration.
       
 18935 -
       
 18936 -lt_cl_silent=false
       
 18937 -SHELL=\${CONFIG_SHELL-$SHELL}
       
 18938 -_LTEOF
       
 18939 -
       
 18940 -cat >>"$CONFIG_LT" <<\_LTEOF
       
 18941 -AS_SHELL_SANITIZE
       
 18942 -_AS_PREPARE
       
 18943 -
       
 18944 -exec AS_MESSAGE_FD>&1
       
 18945 -exec AS_MESSAGE_LOG_FD>>config.log
       
 18946 -{
       
 18947 -  echo
       
 18948 -  AS_BOX([Running $as_me.])
       
 18949 -} >&AS_MESSAGE_LOG_FD
       
 18950 -
       
 18951 -lt_cl_help="\
       
 18952 -\`$as_me' creates a local libtool stub from the current configuration,
       
 18953 -for use in further configure time tests before the real libtool is
       
 18954 -generated.
       
 18955 -
       
 18956 -Usage: $[0] [[OPTIONS]]
       
 18957 -
       
 18958 -  -h, --help      print this help, then exit
       
 18959 -  -V, --version   print version number, then exit
       
 18960 -  -q, --quiet     do not print progress messages
       
 18961 -  -d, --debug     don't remove temporary files
       
 18962 -
       
 18963 -Report bugs to <bug-libtool@gnu.org>."
       
 18964 -
       
 18965 -lt_cl_version="\
       
 18966 -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
       
 18967 -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
       
 18968 -configured by $[0], generated by m4_PACKAGE_STRING.
       
 18969 -
       
 18970 -Copyright (C) 2008 Free Software Foundation, Inc.
       
 18971 -This config.lt script is free software; the Free Software Foundation
       
 18972 -gives unlimited permision to copy, distribute and modify it."
       
 18973 -
       
 18974 -while test $[#] != 0
       
 18975 -do
       
 18976 -  case $[1] in
       
 18977 -    --version | --v* | -V )
       
 18978 -      echo "$lt_cl_version"; exit 0 ;;
       
 18979 -    --help | --h* | -h )
       
 18980 -      echo "$lt_cl_help"; exit 0 ;;
       
 18981 -    --debug | --d* | -d )
       
 18982 -      debug=: ;;
       
 18983 -    --quiet | --q* | --silent | --s* | -q )
       
 18984 -      lt_cl_silent=: ;;
       
 18985 -
       
 18986 -    -*) AC_MSG_ERROR([unrecognized option: $[1]
       
 18987 -Try \`$[0] --help' for more information.]) ;;
       
 18988 -
       
 18989 -    *) AC_MSG_ERROR([unrecognized argument: $[1]
       
 18990 -Try \`$[0] --help' for more information.]) ;;
       
 18991 -  esac
       
 18992 -  shift
       
 18993 -done
       
 18994 -
       
 18995 -if $lt_cl_silent; then
       
 18996 -  exec AS_MESSAGE_FD>/dev/null
       
 18997 -fi
       
 18998 -_LTEOF
       
 18999 -
       
 19000 -cat >>"$CONFIG_LT" <<_LTEOF
       
 19001 -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
       
 19002 -_LTEOF
       
 19003 -
       
 19004 -cat >>"$CONFIG_LT" <<\_LTEOF
       
 19005 -AC_MSG_NOTICE([creating $ofile])
       
 19006 -_LT_OUTPUT_LIBTOOL_COMMANDS
       
 19007 -AS_EXIT(0)
       
 19008 -_LTEOF
       
 19009 -chmod +x "$CONFIG_LT"
       
 19010 -
       
 19011 -# configure is writing to config.log, but config.lt does its own redirection,
       
 19012 -# appending to config.log, which fails on DOS, as config.log is still kept
       
 19013 -# open by configure.  Here we exec the FD to /dev/null, effectively closing
       
 19014 -# config.log, so it can be properly (re)opened and appended to by config.lt.
       
 19015 -if test "$no_create" != yes; then
       
 19016 -  lt_cl_success=:
       
 19017 -  test "$silent" = yes &&
       
 19018 -    lt_config_lt_args="$lt_config_lt_args --quiet"
       
 19019 -  exec AS_MESSAGE_LOG_FD>/dev/null
       
 19020 -  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
       
 19021 -  exec AS_MESSAGE_LOG_FD>>config.log
       
 19022 -  $lt_cl_success || AS_EXIT(1)
       
 19023 -fi
       
 19024 -])# LT_OUTPUT
       
 19025 -
       
 19026 -
       
 19027 -# _LT_CONFIG(TAG)
       
 19028 -# ---------------
       
 19029 -# If TAG is the built-in tag, create an initial libtool script with a
       
 19030 -# default configuration from the untagged config vars.  Otherwise add code
       
 19031 -# to config.status for appending the configuration named by TAG from the
       
 19032 -# matching tagged config vars.
       
 19033 -m4_defun([_LT_CONFIG],
       
 19034 -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 19035 -_LT_CONFIG_SAVE_COMMANDS([
       
 19036 -  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
       
 19037 -  m4_if(_LT_TAG, [C], [
       
 19038 -    # See if we are running on zsh, and set the options which allow our
       
 19039 -    # commands through without removal of \ escapes.
       
 19040 -    if test -n "${ZSH_VERSION+set}" ; then
       
 19041 -      setopt NO_GLOB_SUBST
       
 19042 -    fi
       
 19043 -
       
 19044 -    cfgfile="${ofile}T"
       
 19045 -    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
       
 19046 -    $RM "$cfgfile"
       
 19047 -
       
 19048 -    cat <<_LT_EOF >> "$cfgfile"
       
 19049 -#! $SHELL
       
 19050 -
       
 19051 -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
       
 19052 -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
       
 19053 -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
       
 19054 -# NOTE: Changes made to this file will be lost: look at ltmain.sh.
       
 19055 -#
       
 19056 -_LT_COPYING
       
 19057 -_LT_LIBTOOL_TAGS
       
 19058 -
       
 19059 -# ### BEGIN LIBTOOL CONFIG
       
 19060 -_LT_LIBTOOL_CONFIG_VARS
       
 19061 -_LT_LIBTOOL_TAG_VARS
       
 19062 -# ### END LIBTOOL CONFIG
       
 19063 -
       
 19064 -_LT_EOF
       
 19065 -
       
 19066 -  case $host_os in
       
 19067 -  aix3*)
       
 19068 -    cat <<\_LT_EOF >> "$cfgfile"
       
 19069 -# AIX sometimes has problems with the GCC collect2 program.  For some
       
 19070 -# reason, if we set the COLLECT_NAMES environment variable, the problems
       
 19071 -# vanish in a puff of smoke.
       
 19072 -if test "X${COLLECT_NAMES+set}" != Xset; then
       
 19073 -  COLLECT_NAMES=
       
 19074 -  export COLLECT_NAMES
       
 19075 -fi
       
 19076 -_LT_EOF
       
 19077 -    ;;
       
 19078 -  esac
       
 19079 -
       
 19080 -  _LT_PROG_LTMAIN
       
 19081 -
       
 19082 -  # We use sed instead of cat because bash on DJGPP gets confused if
       
 19083 -  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
       
 19084 -  # text mode, it properly converts lines to CR/LF.  This bash problem
       
 19085 -  # is reportedly fixed, but why not run on old versions too?
       
 19086 -  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
       
 19087 -    || (rm -f "$cfgfile"; exit 1)
       
 19088 -
       
 19089 -  _LT_PROG_XSI_SHELLFNS
       
 19090 -
       
 19091 -  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
       
 19092 -    || (rm -f "$cfgfile"; exit 1)
       
 19093 -
       
 19094 -  mv -f "$cfgfile" "$ofile" ||
       
 19095 -    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
       
 19096 -  chmod +x "$ofile"
       
 19097 -],
       
 19098 -[cat <<_LT_EOF >> "$ofile"
       
 19099 -
       
 19100 -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
       
 19101 -dnl in a comment (ie after a #).
       
 19102 -# ### BEGIN LIBTOOL TAG CONFIG: $1
       
 19103 -_LT_LIBTOOL_TAG_VARS(_LT_TAG)
       
 19104 -# ### END LIBTOOL TAG CONFIG: $1
       
 19105 -_LT_EOF
       
 19106 -])dnl /m4_if
       
 19107 -],
       
 19108 -[m4_if([$1], [], [
       
 19109 -    PACKAGE='$PACKAGE'
       
 19110 -    VERSION='$VERSION'
       
 19111 -    TIMESTAMP='$TIMESTAMP'
       
 19112 -    RM='$RM'
       
 19113 -    ofile='$ofile'], [])
       
 19114 -])dnl /_LT_CONFIG_SAVE_COMMANDS
       
 19115 -])# _LT_CONFIG
       
 19116 -
       
 19117 -
       
 19118 -# LT_SUPPORTED_TAG(TAG)
       
 19119 -# ---------------------
       
 19120 -# Trace this macro to discover what tags are supported by the libtool
       
 19121 -# --tag option, using:
       
 19122 -#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
       
 19123 -AC_DEFUN([LT_SUPPORTED_TAG], [])
       
 19124 -
       
 19125 -
       
 19126 -# C support is built-in for now
       
 19127 -m4_define([_LT_LANG_C_enabled], [])
       
 19128 -m4_define([_LT_TAGS], [])
       
 19129 -
       
 19130 -
       
 19131 -# LT_LANG(LANG)
       
 19132 -# -------------
       
 19133 -# Enable libtool support for the given language if not already enabled.
       
 19134 -AC_DEFUN([LT_LANG],
       
 19135 -[AC_BEFORE([$0], [LT_OUTPUT])dnl
       
 19136 -m4_case([$1],
       
 19137 -  [C],			[_LT_LANG(C)],
       
 19138 -  [C++],		[_LT_LANG(CXX)],
       
 19139 -  [Java],		[_LT_LANG(GCJ)],
       
 19140 -  [Fortran 77],		[_LT_LANG(F77)],
       
 19141 -  [Fortran],		[_LT_LANG(FC)],
       
 19142 -  [Windows Resource],	[_LT_LANG(RC)],
       
 19143 -  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
       
 19144 -    [_LT_LANG($1)],
       
 19145 -    [m4_fatal([$0: unsupported language: "$1"])])])dnl
       
 19146 -])# LT_LANG
       
 19147 -
       
 19148 -
       
 19149 -# _LT_LANG(LANGNAME)
       
 19150 -# ------------------
       
 19151 -m4_defun([_LT_LANG],
       
 19152 -[m4_ifdef([_LT_LANG_]$1[_enabled], [],
       
 19153 -  [LT_SUPPORTED_TAG([$1])dnl
       
 19154 -  m4_append([_LT_TAGS], [$1 ])dnl
       
 19155 -  m4_define([_LT_LANG_]$1[_enabled], [])dnl
       
 19156 -  _LT_LANG_$1_CONFIG($1)])dnl
       
 19157 -])# _LT_LANG
       
 19158 -
       
 19159 -
       
 19160 -# _LT_LANG_DEFAULT_CONFIG
       
 19161 -# -----------------------
       
 19162 -m4_defun([_LT_LANG_DEFAULT_CONFIG],
       
 19163 -[AC_PROVIDE_IFELSE([AC_PROG_CXX],
       
 19164 -  [LT_LANG(CXX)],
       
 19165 -  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
       
 19166 -
       
 19167 -AC_PROVIDE_IFELSE([AC_PROG_F77],
       
 19168 -  [LT_LANG(F77)],
       
 19169 -  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
       
 19170 -
       
 19171 -AC_PROVIDE_IFELSE([AC_PROG_FC],
       
 19172 -  [LT_LANG(FC)],
       
 19173 -  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
       
 19174 -
       
 19175 -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
       
 19176 -dnl pulling things in needlessly.
       
 19177 -AC_PROVIDE_IFELSE([AC_PROG_GCJ],
       
 19178 -  [LT_LANG(GCJ)],
       
 19179 -  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
       
 19180 -    [LT_LANG(GCJ)],
       
 19181 -    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
       
 19182 -      [LT_LANG(GCJ)],
       
 19183 -      [m4_ifdef([AC_PROG_GCJ],
       
 19184 -	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
       
 19185 -       m4_ifdef([A][M_PROG_GCJ],
       
 19186 -	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
       
 19187 -       m4_ifdef([LT_PROG_GCJ],
       
 19188 -	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
       
 19189 -
       
 19190 -AC_PROVIDE_IFELSE([LT_PROG_RC],
       
 19191 -  [LT_LANG(RC)],
       
 19192 -  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
       
 19193 -])# _LT_LANG_DEFAULT_CONFIG
       
 19194 -
       
 19195 -# Obsolete macros:
       
 19196 -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
       
 19197 -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
       
 19198 -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
       
 19199 -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
       
 19200 -dnl aclocal-1.4 backwards compatibility:
       
 19201 -dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
       
 19202 -dnl AC_DEFUN([AC_LIBTOOL_F77], [])
       
 19203 -dnl AC_DEFUN([AC_LIBTOOL_FC], [])
       
 19204 -dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
       
 19205 -
       
 19206 -
       
 19207 -# _LT_TAG_COMPILER
       
 19208 -# ----------------
       
 19209 -m4_defun([_LT_TAG_COMPILER],
       
 19210 -[AC_REQUIRE([AC_PROG_CC])dnl
       
 19211 -
       
 19212 -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
       
 19213 -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
       
 19214 -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
       
 19215 -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
       
 19216 -
       
 19217 -# If no C compiler was specified, use CC.
       
 19218 -LTCC=${LTCC-"$CC"}
       
 19219 -
       
 19220 -# If no C compiler flags were specified, use CFLAGS.
       
 19221 -LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
       
 19222 -
       
 19223 -# Allow CC to be a program name with arguments.
       
 19224 -compiler=$CC
       
 19225 -])# _LT_TAG_COMPILER
       
 19226 -
       
 19227 -
       
 19228 -# _LT_COMPILER_BOILERPLATE
       
 19229 -# ------------------------
       
 19230 -# Check for compiler boilerplate output or warnings with
       
 19231 -# the simple compiler test code.
       
 19232 -m4_defun([_LT_COMPILER_BOILERPLATE],
       
 19233 -[m4_require([_LT_DECL_SED])dnl
       
 19234 -ac_outfile=conftest.$ac_objext
       
 19235 -echo "$lt_simple_compile_test_code" >conftest.$ac_ext
       
 19236 -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
       
 19237 -_lt_compiler_boilerplate=`cat conftest.err`
       
 19238 -$RM conftest*
       
 19239 -])# _LT_COMPILER_BOILERPLATE
       
 19240 -
       
 19241 -
       
 19242 -# _LT_LINKER_BOILERPLATE
       
 19243 -# ----------------------
       
 19244 -# Check for linker boilerplate output or warnings with
       
 19245 -# the simple link test code.
       
 19246 -m4_defun([_LT_LINKER_BOILERPLATE],
       
 19247 -[m4_require([_LT_DECL_SED])dnl
       
 19248 -ac_outfile=conftest.$ac_objext
       
 19249 -echo "$lt_simple_link_test_code" >conftest.$ac_ext
       
 19250 -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
       
 19251 -_lt_linker_boilerplate=`cat conftest.err`
       
 19252 -$RM -r conftest*
       
 19253 -])# _LT_LINKER_BOILERPLATE
       
 19254 -
       
 19255 -# _LT_REQUIRED_DARWIN_CHECKS
       
 19256 -# -------------------------
       
 19257 -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
       
 19258 -  case $host_os in
       
 19259 -    rhapsody* | darwin*)
       
 19260 -    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
       
 19261 -    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
       
 19262 -    AC_CHECK_TOOL([LIPO], [lipo], [:])
       
 19263 -    AC_CHECK_TOOL([OTOOL], [otool], [:])
       
 19264 -    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
       
 19265 -    _LT_DECL([], [DSYMUTIL], [1],
       
 19266 -      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
       
 19267 -    _LT_DECL([], [NMEDIT], [1],
       
 19268 -      [Tool to change global to local symbols on Mac OS X])
       
 19269 -    _LT_DECL([], [LIPO], [1],
       
 19270 -      [Tool to manipulate fat objects and archives on Mac OS X])
       
 19271 -    _LT_DECL([], [OTOOL], [1],
       
 19272 -      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
       
 19273 -    _LT_DECL([], [OTOOL64], [1],
       
 19274 -      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
       
 19275 -
       
 19276 -    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
       
 19277 -      [lt_cv_apple_cc_single_mod=no
       
 19278 -      if test -z "${LT_MULTI_MODULE}"; then
       
 19279 -	# By default we will add the -single_module flag. You can override
       
 19280 -	# by either setting the environment variable LT_MULTI_MODULE
       
 19281 -	# non-empty at configure time, or by adding -multi_module to the
       
 19282 -	# link flags.
       
 19283 -	rm -rf libconftest.dylib*
       
 19284 -	echo "int foo(void){return 1;}" > conftest.c
       
 19285 -	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
       
 19286 --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
       
 19287 -	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
       
 19288 -	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
       
 19289 -        _lt_result=$?
       
 19290 -	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
       
 19291 -	  lt_cv_apple_cc_single_mod=yes
       
 19292 -	else
       
 19293 -	  cat conftest.err >&AS_MESSAGE_LOG_FD
       
 19294 -	fi
       
 19295 -	rm -rf libconftest.dylib*
       
 19296 -	rm -f conftest.*
       
 19297 -      fi])
       
 19298 -    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
       
 19299 -      [lt_cv_ld_exported_symbols_list],
       
 19300 -      [lt_cv_ld_exported_symbols_list=no
       
 19301 -      save_LDFLAGS=$LDFLAGS
       
 19302 -      echo "_main" > conftest.sym
       
 19303 -      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
       
 19304 -      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
       
 19305 -	[lt_cv_ld_exported_symbols_list=yes],
       
 19306 -	[lt_cv_ld_exported_symbols_list=no])
       
 19307 -	LDFLAGS="$save_LDFLAGS"
       
 19308 -    ])
       
 19309 -    case $host_os in
       
 19310 -    rhapsody* | darwin1.[[012]])
       
 19311 -      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
       
 19312 -    darwin1.*)
       
 19313 -      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
       
 19314 -    darwin*) # darwin 5.x on
       
 19315 -      # if running on 10.5 or later, the deployment target defaults
       
 19316 -      # to the OS version, if on x86, and 10.4, the deployment
       
 19317 -      # target defaults to 10.4. Don't you love it?
       
 19318 -      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
       
 19319 -	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
       
 19320 -	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
       
 19321 -	10.[[012]]*)
       
 19322 -	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
       
 19323 -	10.*)
       
 19324 -	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
       
 19325 -      esac
       
 19326 -    ;;
       
 19327 -  esac
       
 19328 -    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
       
 19329 -      _lt_dar_single_mod='$single_module'
       
 19330 -    fi
       
 19331 -    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
       
 19332 -      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
       
 19333 -    else
       
 19334 -      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
       
 19335 -    fi
       
 19336 -    if test "$DSYMUTIL" != ":"; then
       
 19337 -      _lt_dsymutil='~$DSYMUTIL $lib || :'
       
 19338 -    else
       
 19339 -      _lt_dsymutil=
       
 19340 -    fi
       
 19341 -    ;;
       
 19342 -  esac
       
 19343 -])
       
 19344 -
       
 19345 -
       
 19346 -# _LT_DARWIN_LINKER_FEATURES
       
 19347 -# --------------------------
       
 19348 -# Checks for linker and compiler features on darwin
       
 19349 -m4_defun([_LT_DARWIN_LINKER_FEATURES],
       
 19350 -[
       
 19351 -  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
       
 19352 -  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 19353 -  _LT_TAGVAR(hardcode_direct, $1)=no
       
 19354 -  _LT_TAGVAR(hardcode_automatic, $1)=yes
       
 19355 -  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
       
 19356 -  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
       
 19357 -  _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 19358 -  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
       
 19359 -  case $cc_basename in
       
 19360 -     ifort*) _lt_dar_can_shared=yes ;;
       
 19361 -     *) _lt_dar_can_shared=$GCC ;;
       
 19362 -  esac
       
 19363 -  if test "$_lt_dar_can_shared" = "yes"; then
       
 19364 -    output_verbose_link_cmd=echo
       
 19365 -    _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}"
       
 19366 -    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
       
 19367 -    _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}"
       
 19368 -    _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}"
       
 19369 -    m4_if([$1], [CXX],
       
 19370 -[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
       
 19371 -      _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}"
       
 19372 -      _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}"
       
 19373 -    fi
       
 19374 -],[])
       
 19375 -  else
       
 19376 -  _LT_TAGVAR(ld_shlibs, $1)=no
       
 19377 -  fi
       
 19378 -])
       
 19379 -
       
 19380 -# _LT_SYS_MODULE_PATH_AIX
       
 19381 -# -----------------------
       
 19382 -# Links a minimal program and checks the executable
       
 19383 -# for the system default hardcoded library path. In most cases,
       
 19384 -# this is /usr/lib:/lib, but when the MPI compilers are used
       
 19385 -# the location of the communication and MPI libs are included too.
       
 19386 -# If we don't find anything, use the default library path according
       
 19387 -# to the aix ld manual.
       
 19388 -m4_defun([_LT_SYS_MODULE_PATH_AIX],
       
 19389 -[m4_require([_LT_DECL_SED])dnl
       
 19390 -AC_LINK_IFELSE(AC_LANG_PROGRAM,[
       
 19391 -lt_aix_libpath_sed='
       
 19392 -    /Import File Strings/,/^$/ {
       
 19393 -	/^0/ {
       
 19394 -	    s/^0  *\(.*\)$/\1/
       
 19395 -	    p
       
 19396 -	}
       
 19397 -    }'
       
 19398 -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 19399 -# Check for a 64-bit object if we didn't find anything.
       
 19400 -if test -z "$aix_libpath"; then
       
 19401 -  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 19402 -fi],[])
       
 19403 -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       
 19404 -])# _LT_SYS_MODULE_PATH_AIX
       
 19405 -
       
 19406 -
       
 19407 -# _LT_SHELL_INIT(ARG)
       
 19408 -# -------------------
       
 19409 -m4_define([_LT_SHELL_INIT],
       
 19410 -[ifdef([AC_DIVERSION_NOTICE],
       
 19411 -	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
       
 19412 -	 [AC_DIVERT_PUSH(NOTICE)])
       
 19413 -$1
       
 19414 -AC_DIVERT_POP
       
 19415 -])# _LT_SHELL_INIT
       
 19416 -
       
 19417 -
       
 19418 -# _LT_PROG_ECHO_BACKSLASH
       
 19419 -# -----------------------
       
 19420 -# Add some code to the start of the generated configure script which
       
 19421 -# will find an echo command which doesn't interpret backslashes.
       
 19422 -m4_defun([_LT_PROG_ECHO_BACKSLASH],
       
 19423 -[_LT_SHELL_INIT([
       
 19424 -# Check that we are running under the correct shell.
       
 19425 -SHELL=${CONFIG_SHELL-/bin/sh}
       
 19426 -
       
 19427 -case X$lt_ECHO in
       
 19428 -X*--fallback-echo)
       
 19429 -  # Remove one level of quotation (which was required for Make).
       
 19430 -  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
       
 19431 -  ;;
       
 19432 -esac
       
 19433 -
       
 19434 -ECHO=${lt_ECHO-echo}
       
 19435 -if test "X[$]1" = X--no-reexec; then
       
 19436 -  # Discard the --no-reexec flag, and continue.
       
 19437 -  shift
       
 19438 -elif test "X[$]1" = X--fallback-echo; then
       
 19439 -  # Avoid inline document here, it may be left over
       
 19440 -  :
       
 19441 -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
       
 19442 -  # Yippee, $ECHO works!
       
 19443 -  :
       
 19444 -else
       
 19445 -  # Restart under the correct shell.
       
 19446 -  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
       
 19447 -fi
       
 19448 -
       
 19449 -if test "X[$]1" = X--fallback-echo; then
       
 19450 -  # used as fallback echo
       
 19451 -  shift
       
 19452 -  cat <<_LT_EOF
       
 19453 -[$]*
       
 19454 -_LT_EOF
       
 19455 -  exit 0
       
 19456 -fi
       
 19457 -
       
 19458 -# The HP-UX ksh and POSIX shell print the target directory to stdout
       
 19459 -# if CDPATH is set.
       
 19460 -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
       
 19461 -
       
 19462 -if test -z "$lt_ECHO"; then
       
 19463 -  if test "X${echo_test_string+set}" != Xset; then
       
 19464 -    # find a string as large as possible, as long as the shell can cope with it
       
 19465 -    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
       
 19466 -      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
       
 19467 -      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
       
 19468 -	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
       
 19469 -      then
       
 19470 -        break
       
 19471 -      fi
       
 19472 -    done
       
 19473 -  fi
       
 19474 -
       
 19475 -  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
       
 19476 -     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
       
 19477 -     test "X$echo_testing_string" = "X$echo_test_string"; then
       
 19478 -    :
       
 19479 -  else
       
 19480 -    # The Solaris, AIX, and Digital Unix default echo programs unquote
       
 19481 -    # backslashes.  This makes it impossible to quote backslashes using
       
 19482 -    #   echo "$something" | sed 's/\\/\\\\/g'
       
 19483 -    #
       
 19484 -    # So, first we look for a working echo in the user's PATH.
       
 19485 -
       
 19486 -    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
       
 19487 -    for dir in $PATH /usr/ucb; do
       
 19488 -      IFS="$lt_save_ifs"
       
 19489 -      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
       
 19490 -         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
       
 19491 -         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
       
 19492 -         test "X$echo_testing_string" = "X$echo_test_string"; then
       
 19493 -        ECHO="$dir/echo"
       
 19494 -        break
       
 19495 -      fi
       
 19496 -    done
       
 19497 -    IFS="$lt_save_ifs"
       
 19498 -
       
 19499 -    if test "X$ECHO" = Xecho; then
       
 19500 -      # We didn't find a better echo, so look for alternatives.
       
 19501 -      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
       
 19502 -         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
       
 19503 -         test "X$echo_testing_string" = "X$echo_test_string"; then
       
 19504 -        # This shell has a builtin print -r that does the trick.
       
 19505 -        ECHO='print -r'
       
 19506 -      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
       
 19507 -	   test "X$CONFIG_SHELL" != X/bin/ksh; then
       
 19508 -        # If we have ksh, try running configure again with it.
       
 19509 -        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
       
 19510 -        export ORIGINAL_CONFIG_SHELL
       
 19511 -        CONFIG_SHELL=/bin/ksh
       
 19512 -        export CONFIG_SHELL
       
 19513 -        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
       
 19514 -      else
       
 19515 -        # Try using printf.
       
 19516 -        ECHO='printf %s\n'
       
 19517 -        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
       
 19518 -	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
       
 19519 -	   test "X$echo_testing_string" = "X$echo_test_string"; then
       
 19520 -	  # Cool, printf works
       
 19521 -	  :
       
 19522 -        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
       
 19523 -	     test "X$echo_testing_string" = 'X\t' &&
       
 19524 -	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
       
 19525 -	     test "X$echo_testing_string" = "X$echo_test_string"; then
       
 19526 -	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
       
 19527 -	  export CONFIG_SHELL
       
 19528 -	  SHELL="$CONFIG_SHELL"
       
 19529 -	  export SHELL
       
 19530 -	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
       
 19531 -        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
       
 19532 -	     test "X$echo_testing_string" = 'X\t' &&
       
 19533 -	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
       
 19534 -	     test "X$echo_testing_string" = "X$echo_test_string"; then
       
 19535 -	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
       
 19536 -        else
       
 19537 -	  # maybe with a smaller string...
       
 19538 -	  prev=:
       
 19539 -
       
 19540 -	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
       
 19541 -	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
       
 19542 -	    then
       
 19543 -	      break
       
 19544 -	    fi
       
 19545 -	    prev="$cmd"
       
 19546 -	  done
       
 19547 -
       
 19548 -	  if test "$prev" != 'sed 50q "[$]0"'; then
       
 19549 -	    echo_test_string=`eval $prev`
       
 19550 -	    export echo_test_string
       
 19551 -	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
       
 19552 -	  else
       
 19553 -	    # Oops.  We lost completely, so just stick with echo.
       
 19554 -	    ECHO=echo
       
 19555 -	  fi
       
 19556 -        fi
       
 19557 -      fi
       
 19558 -    fi
       
 19559 -  fi
       
 19560 -fi
       
 19561 -
       
 19562 -# Copy echo and quote the copy suitably for passing to libtool from
       
 19563 -# the Makefile, instead of quoting the original, which is used later.
       
 19564 -lt_ECHO=$ECHO
       
 19565 -if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
       
 19566 -   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
       
 19567 -fi
       
 19568 -
       
 19569 -AC_SUBST(lt_ECHO)
       
 19570 -])
       
 19571 -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
       
 19572 -_LT_DECL([], [ECHO], [1],
       
 19573 -    [An echo program that does not interpret backslashes])
       
 19574 -])# _LT_PROG_ECHO_BACKSLASH
       
 19575 -
       
 19576 -
       
 19577 -# _LT_ENABLE_LOCK
       
 19578 -# ---------------
       
 19579 -m4_defun([_LT_ENABLE_LOCK],
       
 19580 -[AC_ARG_ENABLE([libtool-lock],
       
 19581 -  [AS_HELP_STRING([--disable-libtool-lock],
       
 19582 -    [avoid locking (might break parallel builds)])])
       
 19583 -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
       
 19584 -
       
 19585 -# Some flags need to be propagated to the compiler or linker for good
       
 19586 -# libtool support.
       
 19587 -case $host in
       
 19588 -ia64-*-hpux*)
       
 19589 -  # Find out which ABI we are using.
       
 19590 -  echo 'int i;' > conftest.$ac_ext
       
 19591 -  if AC_TRY_EVAL(ac_compile); then
       
 19592 -    case `/usr/bin/file conftest.$ac_objext` in
       
 19593 -      *ELF-32*)
       
 19594 -	HPUX_IA64_MODE="32"
       
 19595 -	;;
       
 19596 -      *ELF-64*)
       
 19597 -	HPUX_IA64_MODE="64"
       
 19598 -	;;
       
 19599 -    esac
       
 19600 -  fi
       
 19601 -  rm -rf conftest*
       
 19602 -  ;;
       
 19603 -*-*-irix6*)
       
 19604 -  # Find out which ABI we are using.
       
 19605 -  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
       
 19606 -  if AC_TRY_EVAL(ac_compile); then
       
 19607 -    if test "$lt_cv_prog_gnu_ld" = yes; then
       
 19608 -      case `/usr/bin/file conftest.$ac_objext` in
       
 19609 -	*32-bit*)
       
 19610 -	  LD="${LD-ld} -melf32bsmip"
       
 19611 -	  ;;
       
 19612 -	*N32*)
       
 19613 -	  LD="${LD-ld} -melf32bmipn32"
       
 19614 -	  ;;
       
 19615 -	*64-bit*)
       
 19616 -	  LD="${LD-ld} -melf64bmip"
       
 19617 -	;;
       
 19618 -      esac
       
 19619 -    else
       
 19620 -      case `/usr/bin/file conftest.$ac_objext` in
       
 19621 -	*32-bit*)
       
 19622 -	  LD="${LD-ld} -32"
       
 19623 -	  ;;
       
 19624 -	*N32*)
       
 19625 -	  LD="${LD-ld} -n32"
       
 19626 -	  ;;
       
 19627 -	*64-bit*)
       
 19628 -	  LD="${LD-ld} -64"
       
 19629 -	  ;;
       
 19630 -      esac
       
 19631 -    fi
       
 19632 -  fi
       
 19633 -  rm -rf conftest*
       
 19634 -  ;;
       
 19635 -
       
 19636 -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
       
 19637 -s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
       
 19638 -  # Find out which ABI we are using.
       
 19639 -  echo 'int i;' > conftest.$ac_ext
       
 19640 -  if AC_TRY_EVAL(ac_compile); then
       
 19641 -    case `/usr/bin/file conftest.o` in
       
 19642 -      *32-bit*)
       
 19643 -	case $host in
       
 19644 -	  x86_64-*kfreebsd*-gnu)
       
 19645 -	    LD="${LD-ld} -m elf_i386_fbsd"
       
 19646 -	    ;;
       
 19647 -	  x86_64-*linux*)
       
 19648 -	    LD="${LD-ld} -m elf_i386"
       
 19649 -	    ;;
       
 19650 -	  powerpc64le-*linux*)
       
 19651 -	    LD="${LD-ld} -m elf32lppclinux"
       
 19652 -	    ;;
       
 19653 -	  powerpc64-*linux*)
       
 19654 -	    LD="${LD-ld} -m elf32ppclinux"
       
 19655 -	    ;;
       
 19656 -	  s390x-*linux*)
       
 19657 -	    LD="${LD-ld} -m elf_s390"
       
 19658 -	    ;;
       
 19659 -	  sparc64-*linux*)
       
 19660 -	    LD="${LD-ld} -m elf32_sparc"
       
 19661 -	    ;;
       
 19662 -	esac
       
 19663 -	;;
       
 19664 -      *64-bit*)
       
 19665 -	case $host in
       
 19666 -	  x86_64-*kfreebsd*-gnu)
       
 19667 -	    LD="${LD-ld} -m elf_x86_64_fbsd"
       
 19668 -	    ;;
       
 19669 -	  x86_64-*linux*)
       
 19670 -	    LD="${LD-ld} -m elf_x86_64"
       
 19671 -	    ;;
       
 19672 -	  powerpcle-*linux*)
       
 19673 -	    LD="${LD-ld} -m elf64lppc"
       
 19674 -	    ;;
       
 19675 -	  powerpc-*linux*)
       
 19676 -	    LD="${LD-ld} -m elf64ppc"
       
 19677 -	    ;;
       
 19678 -	  s390*-*linux*|s390*-*tpf*)
       
 19679 -	    LD="${LD-ld} -m elf64_s390"
       
 19680 -	    ;;
       
 19681 -	  sparc*-*linux*)
       
 19682 -	    LD="${LD-ld} -m elf64_sparc"
       
 19683 -	    ;;
       
 19684 -	esac
       
 19685 -	;;
       
 19686 -    esac
       
 19687 -  fi
       
 19688 -  rm -rf conftest*
       
 19689 -  ;;
       
 19690 -
       
 19691 -*-*-sco3.2v5*)
       
 19692 -  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
       
 19693 -  SAVE_CFLAGS="$CFLAGS"
       
 19694 -  CFLAGS="$CFLAGS -belf"
       
 19695 -  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
       
 19696 -    [AC_LANG_PUSH(C)
       
 19697 -     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
       
 19698 -     AC_LANG_POP])
       
 19699 -  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
       
 19700 -    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
       
 19701 -    CFLAGS="$SAVE_CFLAGS"
       
 19702 -  fi
       
 19703 -  ;;
       
 19704 -sparc*-*solaris*)
       
 19705 -  # Find out which ABI we are using.
       
 19706 -  echo 'int i;' > conftest.$ac_ext
       
 19707 -  if AC_TRY_EVAL(ac_compile); then
       
 19708 -    case `/usr/bin/file conftest.o` in
       
 19709 -    *64-bit*)
       
 19710 -      case $lt_cv_prog_gnu_ld in
       
 19711 -      yes*) LD="${LD-ld} -m elf64_sparc" ;;
       
 19712 -      *)
       
 19713 -	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
       
 19714 -	  LD="${LD-ld} -64"
       
 19715 -	fi
       
 19716 -	;;
       
 19717 -      esac
       
 19718 -      ;;
       
 19719 -    esac
       
 19720 -  fi
       
 19721 -  rm -rf conftest*
       
 19722 -  ;;
       
 19723 -esac
       
 19724 -
       
 19725 -need_locks="$enable_libtool_lock"
       
 19726 -])# _LT_ENABLE_LOCK
       
 19727 -
       
 19728 -
       
 19729 -# _LT_CMD_OLD_ARCHIVE
       
 19730 -# -------------------
       
 19731 -m4_defun([_LT_CMD_OLD_ARCHIVE],
       
 19732 -[AC_CHECK_TOOL(AR, ar, false)
       
 19733 -test -z "$AR" && AR=ar
       
 19734 -test -z "$AR_FLAGS" && AR_FLAGS=cru
       
 19735 -_LT_DECL([], [AR], [1], [The archiver])
       
 19736 -_LT_DECL([], [AR_FLAGS], [1])
       
 19737 -
       
 19738 -AC_CHECK_TOOL(STRIP, strip, :)
       
 19739 -test -z "$STRIP" && STRIP=:
       
 19740 -_LT_DECL([], [STRIP], [1], [A symbol stripping program])
       
 19741 -
       
 19742 -AC_CHECK_TOOL(RANLIB, ranlib, :)
       
 19743 -test -z "$RANLIB" && RANLIB=:
       
 19744 -_LT_DECL([], [RANLIB], [1],
       
 19745 -    [Commands used to install an old-style archive])
       
 19746 -
       
 19747 -# Determine commands to create old-style static archives.
       
 19748 -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
       
 19749 -old_postinstall_cmds='chmod 644 $oldlib'
       
 19750 -old_postuninstall_cmds=
       
 19751 -
       
 19752 -if test -n "$RANLIB"; then
       
 19753 -  case $host_os in
       
 19754 -  openbsd*)
       
 19755 -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
       
 19756 -    ;;
       
 19757 -  *)
       
 19758 -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
       
 19759 -    ;;
       
 19760 -  esac
       
 19761 -  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
       
 19762 -fi
       
 19763 -_LT_DECL([], [old_postinstall_cmds], [2])
       
 19764 -_LT_DECL([], [old_postuninstall_cmds], [2])
       
 19765 -_LT_TAGDECL([], [old_archive_cmds], [2],
       
 19766 -    [Commands used to build an old-style archive])
       
 19767 -])# _LT_CMD_OLD_ARCHIVE
       
 19768 -
       
 19769 -
       
 19770 -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
       
 19771 -#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
       
 19772 -# ----------------------------------------------------------------
       
 19773 -# Check whether the given compiler option works
       
 19774 -AC_DEFUN([_LT_COMPILER_OPTION],
       
 19775 -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 19776 -m4_require([_LT_DECL_SED])dnl
       
 19777 -AC_CACHE_CHECK([$1], [$2],
       
 19778 -  [$2=no
       
 19779 -   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
       
 19780 -   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 19781 -   lt_compiler_flag="$3"
       
 19782 -   # Insert the option either (1) after the last *FLAGS variable, or
       
 19783 -   # (2) before a word containing "conftest.", or (3) at the end.
       
 19784 -   # Note that $ac_compile itself does not contain backslashes and begins
       
 19785 -   # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 19786 -   # The option is referenced via a variable to avoid confusing sed.
       
 19787 -   lt_compile=`echo "$ac_compile" | $SED \
       
 19788 -   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 19789 -   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
       
 19790 -   -e 's:$: $lt_compiler_flag:'`
       
 19791 -   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
       
 19792 -   (eval "$lt_compile" 2>conftest.err)
       
 19793 -   ac_status=$?
       
 19794 -   cat conftest.err >&AS_MESSAGE_LOG_FD
       
 19795 -   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
       
 19796 -   if (exit $ac_status) && test -s "$ac_outfile"; then
       
 19797 -     # The compiler can only warn and ignore the option if not recognized
       
 19798 -     # So say no if there are warnings other than the usual output.
       
 19799 -     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
       
 19800 -     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 19801 -     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
       
 19802 -       $2=yes
       
 19803 -     fi
       
 19804 -   fi
       
 19805 -   $RM conftest*
       
 19806 -])
       
 19807 -
       
 19808 -if test x"[$]$2" = xyes; then
       
 19809 -    m4_if([$5], , :, [$5])
       
 19810 -else
       
 19811 -    m4_if([$6], , :, [$6])
       
 19812 -fi
       
 19813 -])# _LT_COMPILER_OPTION
       
 19814 -
       
 19815 -# Old name:
       
 19816 -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
       
 19817 -dnl aclocal-1.4 backwards compatibility:
       
 19818 -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
       
 19819 -
       
 19820 -
       
 19821 -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
       
 19822 -#                  [ACTION-SUCCESS], [ACTION-FAILURE])
       
 19823 -# ----------------------------------------------------
       
 19824 -# Check whether the given linker option works
       
 19825 -AC_DEFUN([_LT_LINKER_OPTION],
       
 19826 -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 19827 -m4_require([_LT_DECL_SED])dnl
       
 19828 -AC_CACHE_CHECK([$1], [$2],
       
 19829 -  [$2=no
       
 19830 -   save_LDFLAGS="$LDFLAGS"
       
 19831 -   LDFLAGS="$LDFLAGS $3"
       
 19832 -   echo "$lt_simple_link_test_code" > conftest.$ac_ext
       
 19833 -   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
       
 19834 -     # The linker can only warn and ignore the option if not recognized
       
 19835 -     # So say no if there are warnings
       
 19836 -     if test -s conftest.err; then
       
 19837 -       # Append any errors to the config.log.
       
 19838 -       cat conftest.err 1>&AS_MESSAGE_LOG_FD
       
 19839 -       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
       
 19840 -       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 19841 -       if diff conftest.exp conftest.er2 >/dev/null; then
       
 19842 -         $2=yes
       
 19843 -       fi
       
 19844 -     else
       
 19845 -       $2=yes
       
 19846 -     fi
       
 19847 -   fi
       
 19848 -   $RM -r conftest*
       
 19849 -   LDFLAGS="$save_LDFLAGS"
       
 19850 -])
       
 19851 -
       
 19852 -if test x"[$]$2" = xyes; then
       
 19853 -    m4_if([$4], , :, [$4])
       
 19854 -else
       
 19855 -    m4_if([$5], , :, [$5])
       
 19856 -fi
       
 19857 -])# _LT_LINKER_OPTION
       
 19858 -
       
 19859 -# Old name:
       
 19860 -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
       
 19861 -dnl aclocal-1.4 backwards compatibility:
       
 19862 -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
       
 19863 -
       
 19864 -
       
 19865 -# LT_CMD_MAX_LEN
       
 19866 -#---------------
       
 19867 -AC_DEFUN([LT_CMD_MAX_LEN],
       
 19868 -[AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 19869 -# find the maximum length of command line arguments
       
 19870 -AC_MSG_CHECKING([the maximum length of command line arguments])
       
 19871 -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
       
 19872 -  i=0
       
 19873 -  teststring="ABCD"
       
 19874 -
       
 19875 -  case $build_os in
       
 19876 -  msdosdjgpp*)
       
 19877 -    # On DJGPP, this test can blow up pretty badly due to problems in libc
       
 19878 -    # (any single argument exceeding 2000 bytes causes a buffer overrun
       
 19879 -    # during glob expansion).  Even if it were fixed, the result of this
       
 19880 -    # check would be larger than it should be.
       
 19881 -    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
       
 19882 -    ;;
       
 19883 -
       
 19884 -  gnu*)
       
 19885 -    # Under GNU Hurd, this test is not required because there is
       
 19886 -    # no limit to the length of command line arguments.
       
 19887 -    # Libtool will interpret -1 as no limit whatsoever
       
 19888 -    lt_cv_sys_max_cmd_len=-1;
       
 19889 -    ;;
       
 19890 -
       
 19891 -  cygwin* | mingw* | cegcc*)
       
 19892 -    # On Win9x/ME, this test blows up -- it succeeds, but takes
       
 19893 -    # about 5 minutes as the teststring grows exponentially.
       
 19894 -    # Worse, since 9x/ME are not pre-emptively multitasking,
       
 19895 -    # you end up with a "frozen" computer, even though with patience
       
 19896 -    # the test eventually succeeds (with a max line length of 256k).
       
 19897 -    # Instead, let's just punt: use the minimum linelength reported by
       
 19898 -    # all of the supported platforms: 8192 (on NT/2K/XP).
       
 19899 -    lt_cv_sys_max_cmd_len=8192;
       
 19900 -    ;;
       
 19901 -
       
 19902 -  amigaos*)
       
 19903 -    # On AmigaOS with pdksh, this test takes hours, literally.
       
 19904 -    # So we just punt and use a minimum line length of 8192.
       
 19905 -    lt_cv_sys_max_cmd_len=8192;
       
 19906 -    ;;
       
 19907 -
       
 19908 -  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
       
 19909 -    # This has been around since 386BSD, at least.  Likely further.
       
 19910 -    if test -x /sbin/sysctl; then
       
 19911 -      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
       
 19912 -    elif test -x /usr/sbin/sysctl; then
       
 19913 -      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
       
 19914 -    else
       
 19915 -      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
       
 19916 -    fi
       
 19917 -    # And add a safety zone
       
 19918 -    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       
 19919 -    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
       
 19920 -    ;;
       
 19921 -
       
 19922 -  interix*)
       
 19923 -    # We know the value 262144 and hardcode it with a safety zone (like BSD)
       
 19924 -    lt_cv_sys_max_cmd_len=196608
       
 19925 -    ;;
       
 19926 -
       
 19927 -  osf*)
       
 19928 -    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
       
 19929 -    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
       
 19930 -    # nice to cause kernel panics so lets avoid the loop below.
       
 19931 -    # First set a reasonable default.
       
 19932 -    lt_cv_sys_max_cmd_len=16384
       
 19933 -    #
       
 19934 -    if test -x /sbin/sysconfig; then
       
 19935 -      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
       
 19936 -        *1*) lt_cv_sys_max_cmd_len=-1 ;;
       
 19937 -      esac
       
 19938 -    fi
       
 19939 -    ;;
       
 19940 -  sco3.2v5*)
       
 19941 -    lt_cv_sys_max_cmd_len=102400
       
 19942 -    ;;
       
 19943 -  sysv5* | sco5v6* | sysv4.2uw2*)
       
 19944 -    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
       
 19945 -    if test -n "$kargmax"; then
       
 19946 -      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
       
 19947 -    else
       
 19948 -      lt_cv_sys_max_cmd_len=32768
       
 19949 -    fi
       
 19950 -    ;;
       
 19951 -  *)
       
 19952 -    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
       
 19953 -    if test -n "$lt_cv_sys_max_cmd_len"; then
       
 19954 -      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       
 19955 -      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
       
 19956 -    else
       
 19957 -      # Make teststring a little bigger before we do anything with it.
       
 19958 -      # a 1K string should be a reasonable start.
       
 19959 -      for i in 1 2 3 4 5 6 7 8 ; do
       
 19960 -        teststring=$teststring$teststring
       
 19961 -      done
       
 19962 -      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
       
 19963 -      # If test is not a shell built-in, we'll probably end up computing a
       
 19964 -      # maximum length that is only half of the actual maximum length, but
       
 19965 -      # we can't tell.
       
 19966 -      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
       
 19967 -	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
       
 19968 -	      test $i != 17 # 1/2 MB should be enough
       
 19969 -      do
       
 19970 -        i=`expr $i + 1`
       
 19971 -        teststring=$teststring$teststring
       
 19972 -      done
       
 19973 -      # Only check the string length outside the loop.
       
 19974 -      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
       
 19975 -      teststring=
       
 19976 -      # Add a significant safety factor because C++ compilers can tack on
       
 19977 -      # massive amounts of additional arguments before passing them to the
       
 19978 -      # linker.  It appears as though 1/2 is a usable value.
       
 19979 -      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
       
 19980 -    fi
       
 19981 -    ;;
       
 19982 -  esac
       
 19983 -])
       
 19984 -if test -n $lt_cv_sys_max_cmd_len ; then
       
 19985 -  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
       
 19986 -else
       
 19987 -  AC_MSG_RESULT(none)
       
 19988 -fi
       
 19989 -max_cmd_len=$lt_cv_sys_max_cmd_len
       
 19990 -_LT_DECL([], [max_cmd_len], [0],
       
 19991 -    [What is the maximum length of a command?])
       
 19992 -])# LT_CMD_MAX_LEN
       
 19993 -
       
 19994 -# Old name:
       
 19995 -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
       
 19996 -dnl aclocal-1.4 backwards compatibility:
       
 19997 -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
       
 19998 -
       
 19999 -
       
 20000 -# _LT_HEADER_DLFCN
       
 20001 -# ----------------
       
 20002 -m4_defun([_LT_HEADER_DLFCN],
       
 20003 -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
       
 20004 -])# _LT_HEADER_DLFCN
       
 20005 -
       
 20006 -
       
 20007 -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
       
 20008 -#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
       
 20009 -# ----------------------------------------------------------------
       
 20010 -m4_defun([_LT_TRY_DLOPEN_SELF],
       
 20011 -[m4_require([_LT_HEADER_DLFCN])dnl
       
 20012 -if test "$cross_compiling" = yes; then :
       
 20013 -  [$4]
       
 20014 -else
       
 20015 -  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
       
 20016 -  lt_status=$lt_dlunknown
       
 20017 -  cat > conftest.$ac_ext <<_LT_EOF
       
 20018 -[#line __oline__ "configure"
       
 20019 -#include "confdefs.h"
       
 20020 -
       
 20021 -#if HAVE_DLFCN_H
       
 20022 -#include <dlfcn.h>
       
 20023 -#endif
       
 20024 -
       
 20025 -#include <stdio.h>
       
 20026 -
       
 20027 -#ifdef RTLD_GLOBAL
       
 20028 -#  define LT_DLGLOBAL		RTLD_GLOBAL
       
 20029 -#else
       
 20030 -#  ifdef DL_GLOBAL
       
 20031 -#    define LT_DLGLOBAL		DL_GLOBAL
       
 20032 -#  else
       
 20033 -#    define LT_DLGLOBAL		0
       
 20034 -#  endif
       
 20035 -#endif
       
 20036 -
       
 20037 -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
       
 20038 -   find out it does not work in some platform. */
       
 20039 -#ifndef LT_DLLAZY_OR_NOW
       
 20040 -#  ifdef RTLD_LAZY
       
 20041 -#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
       
 20042 -#  else
       
 20043 -#    ifdef DL_LAZY
       
 20044 -#      define LT_DLLAZY_OR_NOW		DL_LAZY
       
 20045 -#    else
       
 20046 -#      ifdef RTLD_NOW
       
 20047 -#        define LT_DLLAZY_OR_NOW	RTLD_NOW
       
 20048 -#      else
       
 20049 -#        ifdef DL_NOW
       
 20050 -#          define LT_DLLAZY_OR_NOW	DL_NOW
       
 20051 -#        else
       
 20052 -#          define LT_DLLAZY_OR_NOW	0
       
 20053 -#        endif
       
 20054 -#      endif
       
 20055 -#    endif
       
 20056 -#  endif
       
 20057 -#endif
       
 20058 -
       
 20059 -void fnord() { int i=42;}
       
 20060 -int main ()
       
 20061 -{
       
 20062 -  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
       
 20063 -  int status = $lt_dlunknown;
       
 20064 -
       
 20065 -  if (self)
       
 20066 -    {
       
 20067 -      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
       
 20068 -      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
       
 20069 -      /* dlclose (self); */
       
 20070 -    }
       
 20071 -  else
       
 20072 -    puts (dlerror ());
       
 20073 -
       
 20074 -  return status;
       
 20075 -}]
       
 20076 -_LT_EOF
       
 20077 -  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
       
 20078 -    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
       
 20079 -    lt_status=$?
       
 20080 -    case x$lt_status in
       
 20081 -      x$lt_dlno_uscore) $1 ;;
       
 20082 -      x$lt_dlneed_uscore) $2 ;;
       
 20083 -      x$lt_dlunknown|x*) $3 ;;
       
 20084 -    esac
       
 20085 -  else :
       
 20086 -    # compilation failed
       
 20087 -    $3
       
 20088 -  fi
       
 20089 -fi
       
 20090 -rm -fr conftest*
       
 20091 -])# _LT_TRY_DLOPEN_SELF
       
 20092 -
       
 20093 -
       
 20094 -# LT_SYS_DLOPEN_SELF
       
 20095 -# ------------------
       
 20096 -AC_DEFUN([LT_SYS_DLOPEN_SELF],
       
 20097 -[m4_require([_LT_HEADER_DLFCN])dnl
       
 20098 -if test "x$enable_dlopen" != xyes; then
       
 20099 -  enable_dlopen=unknown
       
 20100 -  enable_dlopen_self=unknown
       
 20101 -  enable_dlopen_self_static=unknown
       
 20102 -else
       
 20103 -  lt_cv_dlopen=no
       
 20104 -  lt_cv_dlopen_libs=
       
 20105 -
       
 20106 -  case $host_os in
       
 20107 -  beos*)
       
 20108 -    lt_cv_dlopen="load_add_on"
       
 20109 -    lt_cv_dlopen_libs=
       
 20110 -    lt_cv_dlopen_self=yes
       
 20111 -    ;;
       
 20112 -
       
 20113 -  mingw* | pw32* | cegcc*)
       
 20114 -    lt_cv_dlopen="LoadLibrary"
       
 20115 -    lt_cv_dlopen_libs=
       
 20116 -    ;;
       
 20117 -
       
 20118 -  cygwin*)
       
 20119 -    lt_cv_dlopen="dlopen"
       
 20120 -    lt_cv_dlopen_libs=
       
 20121 -    ;;
       
 20122 -
       
 20123 -  darwin*)
       
 20124 -  # if libdl is installed we need to link against it
       
 20125 -    AC_CHECK_LIB([dl], [dlopen],
       
 20126 -		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
       
 20127 -    lt_cv_dlopen="dyld"
       
 20128 -    lt_cv_dlopen_libs=
       
 20129 -    lt_cv_dlopen_self=yes
       
 20130 -    ])
       
 20131 -    ;;
       
 20132 -
       
 20133 -  *)
       
 20134 -    AC_CHECK_FUNC([shl_load],
       
 20135 -	  [lt_cv_dlopen="shl_load"],
       
 20136 -      [AC_CHECK_LIB([dld], [shl_load],
       
 20137 -	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
       
 20138 -	[AC_CHECK_FUNC([dlopen],
       
 20139 -	      [lt_cv_dlopen="dlopen"],
       
 20140 -	  [AC_CHECK_LIB([dl], [dlopen],
       
 20141 -		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
       
 20142 -	    [AC_CHECK_LIB([svld], [dlopen],
       
 20143 -		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
       
 20144 -	      [AC_CHECK_LIB([dld], [dld_link],
       
 20145 -		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
       
 20146 -	      ])
       
 20147 -	    ])
       
 20148 -	  ])
       
 20149 -	])
       
 20150 -      ])
       
 20151 -    ;;
       
 20152 -  esac
       
 20153 -
       
 20154 -  if test "x$lt_cv_dlopen" != xno; then
       
 20155 -    enable_dlopen=yes
       
 20156 -  else
       
 20157 -    enable_dlopen=no
       
 20158 -  fi
       
 20159 -
       
 20160 -  case $lt_cv_dlopen in
       
 20161 -  dlopen)
       
 20162 -    save_CPPFLAGS="$CPPFLAGS"
       
 20163 -    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
       
 20164 -
       
 20165 -    save_LDFLAGS="$LDFLAGS"
       
 20166 -    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
       
 20167 -
       
 20168 -    save_LIBS="$LIBS"
       
 20169 -    LIBS="$lt_cv_dlopen_libs $LIBS"
       
 20170 -
       
 20171 -    AC_CACHE_CHECK([whether a program can dlopen itself],
       
 20172 -	  lt_cv_dlopen_self, [dnl
       
 20173 -	  _LT_TRY_DLOPEN_SELF(
       
 20174 -	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
       
 20175 -	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
       
 20176 -    ])
       
 20177 -
       
 20178 -    if test "x$lt_cv_dlopen_self" = xyes; then
       
 20179 -      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
       
 20180 -      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
       
 20181 -	  lt_cv_dlopen_self_static, [dnl
       
 20182 -	  _LT_TRY_DLOPEN_SELF(
       
 20183 -	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
       
 20184 -	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
       
 20185 -      ])
       
 20186 -    fi
       
 20187 -
       
 20188 -    CPPFLAGS="$save_CPPFLAGS"
       
 20189 -    LDFLAGS="$save_LDFLAGS"
       
 20190 -    LIBS="$save_LIBS"
       
 20191 -    ;;
       
 20192 -  esac
       
 20193 -
       
 20194 -  case $lt_cv_dlopen_self in
       
 20195 -  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
       
 20196 -  *) enable_dlopen_self=unknown ;;
       
 20197 -  esac
       
 20198 -
       
 20199 -  case $lt_cv_dlopen_self_static in
       
 20200 -  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
       
 20201 -  *) enable_dlopen_self_static=unknown ;;
       
 20202 -  esac
       
 20203 -fi
       
 20204 -_LT_DECL([dlopen_support], [enable_dlopen], [0],
       
 20205 -	 [Whether dlopen is supported])
       
 20206 -_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
       
 20207 -	 [Whether dlopen of programs is supported])
       
 20208 -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
       
 20209 -	 [Whether dlopen of statically linked programs is supported])
       
 20210 -])# LT_SYS_DLOPEN_SELF
       
 20211 -
       
 20212 -# Old name:
       
 20213 -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
       
 20214 -dnl aclocal-1.4 backwards compatibility:
       
 20215 -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
       
 20216 -
       
 20217 -
       
 20218 -# _LT_COMPILER_C_O([TAGNAME])
       
 20219 -# ---------------------------
       
 20220 -# Check to see if options -c and -o are simultaneously supported by compiler.
       
 20221 -# This macro does not hard code the compiler like AC_PROG_CC_C_O.
       
 20222 -m4_defun([_LT_COMPILER_C_O],
       
 20223 -[m4_require([_LT_DECL_SED])dnl
       
 20224 -m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 20225 -m4_require([_LT_TAG_COMPILER])dnl
       
 20226 -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
       
 20227 -  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
       
 20228 -  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
       
 20229 -   $RM -r conftest 2>/dev/null
       
 20230 -   mkdir conftest
       
 20231 -   cd conftest
       
 20232 -   mkdir out
       
 20233 -   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 20234 -
       
 20235 -   lt_compiler_flag="-o out/conftest2.$ac_objext"
       
 20236 -   # Insert the option either (1) after the last *FLAGS variable, or
       
 20237 -   # (2) before a word containing "conftest.", or (3) at the end.
       
 20238 -   # Note that $ac_compile itself does not contain backslashes and begins
       
 20239 -   # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 20240 -   lt_compile=`echo "$ac_compile" | $SED \
       
 20241 -   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 20242 -   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
       
 20243 -   -e 's:$: $lt_compiler_flag:'`
       
 20244 -   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
       
 20245 -   (eval "$lt_compile" 2>out/conftest.err)
       
 20246 -   ac_status=$?
       
 20247 -   cat out/conftest.err >&AS_MESSAGE_LOG_FD
       
 20248 -   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
       
 20249 -   if (exit $ac_status) && test -s out/conftest2.$ac_objext
       
 20250 -   then
       
 20251 -     # The compiler can only warn and ignore the option if not recognized
       
 20252 -     # So say no if there are warnings
       
 20253 -     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
       
 20254 -     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
       
 20255 -     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
       
 20256 -       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
       
 20257 -     fi
       
 20258 -   fi
       
 20259 -   chmod u+w . 2>&AS_MESSAGE_LOG_FD
       
 20260 -   $RM conftest*
       
 20261 -   # SGI C++ compiler will create directory out/ii_files/ for
       
 20262 -   # template instantiation
       
 20263 -   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
       
 20264 -   $RM out/* && rmdir out
       
 20265 -   cd ..
       
 20266 -   $RM -r conftest
       
 20267 -   $RM conftest*
       
 20268 -])
       
 20269 -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
       
 20270 -	[Does compiler simultaneously support -c and -o options?])
       
 20271 -])# _LT_COMPILER_C_O
       
 20272 -
       
 20273 -
       
 20274 -# _LT_COMPILER_FILE_LOCKS([TAGNAME])
       
 20275 -# ----------------------------------
       
 20276 -# Check to see if we can do hard links to lock some files if needed
       
 20277 -m4_defun([_LT_COMPILER_FILE_LOCKS],
       
 20278 -[m4_require([_LT_ENABLE_LOCK])dnl
       
 20279 -m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 20280 -_LT_COMPILER_C_O([$1])
       
 20281 -
       
 20282 -hard_links="nottested"
       
 20283 -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
       
 20284 -  # do not overwrite the value of need_locks provided by the user
       
 20285 -  AC_MSG_CHECKING([if we can lock with hard links])
       
 20286 -  hard_links=yes
       
 20287 -  $RM conftest*
       
 20288 -  ln conftest.a conftest.b 2>/dev/null && hard_links=no
       
 20289 -  touch conftest.a
       
 20290 -  ln conftest.a conftest.b 2>&5 || hard_links=no
       
 20291 -  ln conftest.a conftest.b 2>/dev/null && hard_links=no
       
 20292 -  AC_MSG_RESULT([$hard_links])
       
 20293 -  if test "$hard_links" = no; then
       
 20294 -    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
       
 20295 -    need_locks=warn
       
 20296 -  fi
       
 20297 -else
       
 20298 -  need_locks=no
       
 20299 -fi
       
 20300 -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
       
 20301 -])# _LT_COMPILER_FILE_LOCKS
       
 20302 -
       
 20303 -
       
 20304 -# _LT_CHECK_OBJDIR
       
 20305 -# ----------------
       
 20306 -m4_defun([_LT_CHECK_OBJDIR],
       
 20307 -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
       
 20308 -[rm -f .libs 2>/dev/null
       
 20309 -mkdir .libs 2>/dev/null
       
 20310 -if test -d .libs; then
       
 20311 -  lt_cv_objdir=.libs
       
 20312 -else
       
 20313 -  # MS-DOS does not allow filenames that begin with a dot.
       
 20314 -  lt_cv_objdir=_libs
       
 20315 -fi
       
 20316 -rmdir .libs 2>/dev/null])
       
 20317 -objdir=$lt_cv_objdir
       
 20318 -_LT_DECL([], [objdir], [0],
       
 20319 -         [The name of the directory that contains temporary libtool files])dnl
       
 20320 -m4_pattern_allow([LT_OBJDIR])dnl
       
 20321 -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
       
 20322 -  [Define to the sub-directory in which libtool stores uninstalled libraries.])
       
 20323 -])# _LT_CHECK_OBJDIR
       
 20324 -
       
 20325 -
       
 20326 -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
       
 20327 -# --------------------------------------
       
 20328 -# Check hardcoding attributes.
       
 20329 -m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
       
 20330 -[AC_MSG_CHECKING([how to hardcode library paths into programs])
       
 20331 -_LT_TAGVAR(hardcode_action, $1)=
       
 20332 -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
       
 20333 -   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
       
 20334 -   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
       
 20335 -
       
 20336 -  # We can hardcode non-existent directories.
       
 20337 -  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
       
 20338 -     # If the only mechanism to avoid hardcoding is shlibpath_var, we
       
 20339 -     # have to relink, otherwise we might link with an installed library
       
 20340 -     # when we should be linking with a yet-to-be-installed one
       
 20341 -     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
       
 20342 -     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
       
 20343 -    # Linking always hardcodes the temporary library directory.
       
 20344 -    _LT_TAGVAR(hardcode_action, $1)=relink
       
 20345 -  else
       
 20346 -    # We can link without hardcoding, and we can hardcode nonexisting dirs.
       
 20347 -    _LT_TAGVAR(hardcode_action, $1)=immediate
       
 20348 -  fi
       
 20349 -else
       
 20350 -  # We cannot hardcode anything, or else we can only hardcode existing
       
 20351 -  # directories.
       
 20352 -  _LT_TAGVAR(hardcode_action, $1)=unsupported
       
 20353 -fi
       
 20354 -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
       
 20355 -
       
 20356 -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
       
 20357 -   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
       
 20358 -  # Fast installation is not supported
       
 20359 -  enable_fast_install=no
       
 20360 -elif test "$shlibpath_overrides_runpath" = yes ||
       
 20361 -     test "$enable_shared" = no; then
       
 20362 -  # Fast installation is not necessary
       
 20363 -  enable_fast_install=needless
       
 20364 -fi
       
 20365 -_LT_TAGDECL([], [hardcode_action], [0],
       
 20366 -    [How to hardcode a shared library path into an executable])
       
 20367 -])# _LT_LINKER_HARDCODE_LIBPATH
       
 20368 -
       
 20369 -
       
 20370 -# _LT_CMD_STRIPLIB
       
 20371 -# ----------------
       
 20372 -m4_defun([_LT_CMD_STRIPLIB],
       
 20373 -[m4_require([_LT_DECL_EGREP])
       
 20374 -striplib=
       
 20375 -old_striplib=
       
 20376 -AC_MSG_CHECKING([whether stripping libraries is possible])
       
 20377 -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
       
 20378 -  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
       
 20379 -  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
       
 20380 -  AC_MSG_RESULT([yes])
       
 20381 -else
       
 20382 -# FIXME - insert some real tests, host_os isn't really good enough
       
 20383 -  case $host_os in
       
 20384 -  darwin*)
       
 20385 -    if test -n "$STRIP" ; then
       
 20386 -      striplib="$STRIP -x"
       
 20387 -      old_striplib="$STRIP -S"
       
 20388 -      AC_MSG_RESULT([yes])
       
 20389 -    else
       
 20390 -      AC_MSG_RESULT([no])
       
 20391 -    fi
       
 20392 -    ;;
       
 20393 -  *)
       
 20394 -    AC_MSG_RESULT([no])
       
 20395 -    ;;
       
 20396 -  esac
       
 20397 -fi
       
 20398 -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
       
 20399 -_LT_DECL([], [striplib], [1])
       
 20400 -])# _LT_CMD_STRIPLIB
       
 20401 -
       
 20402 -
       
 20403 -# _LT_SYS_DYNAMIC_LINKER([TAG])
       
 20404 -# -----------------------------
       
 20405 -# PORTME Fill in your ld.so characteristics
       
 20406 -m4_defun([_LT_SYS_DYNAMIC_LINKER],
       
 20407 -[AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 20408 -m4_require([_LT_DECL_EGREP])dnl
       
 20409 -m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 20410 -m4_require([_LT_DECL_OBJDUMP])dnl
       
 20411 -m4_require([_LT_DECL_SED])dnl
       
 20412 -AC_MSG_CHECKING([dynamic linker characteristics])
       
 20413 -m4_if([$1],
       
 20414 -	[], [
       
 20415 -if test "$GCC" = yes; then
       
 20416 -  case $host_os in
       
 20417 -    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
       
 20418 -    *) lt_awk_arg="/^libraries:/" ;;
       
 20419 -  esac
       
 20420 -  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
       
 20421 -  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
       
 20422 -    # if the path contains ";" then we assume it to be the separator
       
 20423 -    # otherwise default to the standard path separator (i.e. ":") - it is
       
 20424 -    # assumed that no part of a normal pathname contains ";" but that should
       
 20425 -    # okay in the real world where ";" in dirpaths is itself problematic.
       
 20426 -    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
       
 20427 -  else
       
 20428 -    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
       
 20429 -  fi
       
 20430 -  # Ok, now we have the path, separated by spaces, we can step through it
       
 20431 -  # and add multilib dir if necessary.
       
 20432 -  lt_tmp_lt_search_path_spec=
       
 20433 -  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
       
 20434 -  for lt_sys_path in $lt_search_path_spec; do
       
 20435 -    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
       
 20436 -      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
       
 20437 -    else
       
 20438 -      test -d "$lt_sys_path" && \
       
 20439 -	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
       
 20440 -    fi
       
 20441 -  done
       
 20442 -  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
       
 20443 -BEGIN {RS=" "; FS="/|\n";} {
       
 20444 -  lt_foo="";
       
 20445 -  lt_count=0;
       
 20446 -  for (lt_i = NF; lt_i > 0; lt_i--) {
       
 20447 -    if ($lt_i != "" && $lt_i != ".") {
       
 20448 -      if ($lt_i == "..") {
       
 20449 -        lt_count++;
       
 20450 -      } else {
       
 20451 -        if (lt_count == 0) {
       
 20452 -          lt_foo="/" $lt_i lt_foo;
       
 20453 -        } else {
       
 20454 -          lt_count--;
       
 20455 -        }
       
 20456 -      }
       
 20457 -    }
       
 20458 -  }
       
 20459 -  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
       
 20460 -  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
       
 20461 -}'`
       
 20462 -  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
       
 20463 -else
       
 20464 -  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
       
 20465 -fi])
       
 20466 -library_names_spec=
       
 20467 -libname_spec='lib$name'
       
 20468 -soname_spec=
       
 20469 -shrext_cmds=".so"
       
 20470 -postinstall_cmds=
       
 20471 -postuninstall_cmds=
       
 20472 -finish_cmds=
       
 20473 -finish_eval=
       
 20474 -shlibpath_var=
       
 20475 -shlibpath_overrides_runpath=unknown
       
 20476 -version_type=none
       
 20477 -dynamic_linker="$host_os ld.so"
       
 20478 -sys_lib_dlsearch_path_spec="/lib /usr/lib"
       
 20479 -need_lib_prefix=unknown
       
 20480 -hardcode_into_libs=no
       
 20481 -
       
 20482 -# when you set need_version to no, make sure it does not cause -set_version
       
 20483 -# flags to be left without arguments
       
 20484 -need_version=unknown
       
 20485 -
       
 20486 -case $host_os in
       
 20487 -aix3*)
       
 20488 -  version_type=linux
       
 20489 -  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
       
 20490 -  shlibpath_var=LIBPATH
       
 20491 -
       
 20492 -  # AIX 3 has no versioning support, so we append a major version to the name.
       
 20493 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20494 -  ;;
       
 20495 -
       
 20496 -aix[[4-9]]*)
       
 20497 -  version_type=linux
       
 20498 -  need_lib_prefix=no
       
 20499 -  need_version=no
       
 20500 -  hardcode_into_libs=yes
       
 20501 -  if test "$host_cpu" = ia64; then
       
 20502 -    # AIX 5 supports IA64
       
 20503 -    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
       
 20504 -    shlibpath_var=LD_LIBRARY_PATH
       
 20505 -  else
       
 20506 -    # With GCC up to 2.95.x, collect2 would create an import file
       
 20507 -    # for dependence libraries.  The import file would start with
       
 20508 -    # the line `#! .'.  This would cause the generated library to
       
 20509 -    # depend on `.', always an invalid library.  This was fixed in
       
 20510 -    # development snapshots of GCC prior to 3.0.
       
 20511 -    case $host_os in
       
 20512 -      aix4 | aix4.[[01]] | aix4.[[01]].*)
       
 20513 -      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
       
 20514 -	   echo ' yes '
       
 20515 -	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
       
 20516 -	:
       
 20517 -      else
       
 20518 -	can_build_shared=no
       
 20519 -      fi
       
 20520 -      ;;
       
 20521 -    esac
       
 20522 -    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
       
 20523 -    # soname into executable. Probably we can add versioning support to
       
 20524 -    # collect2, so additional links can be useful in future.
       
 20525 -    if test "$aix_use_runtimelinking" = yes; then
       
 20526 -      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
       
 20527 -      # instead of lib<name>.a to let people know that these are not
       
 20528 -      # typical AIX shared libraries.
       
 20529 -      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20530 -    else
       
 20531 -      # We preserve .a as extension for shared libraries through AIX4.2
       
 20532 -      # and later when we are not doing run time linking.
       
 20533 -      library_names_spec='${libname}${release}.a $libname.a'
       
 20534 -      soname_spec='${libname}${release}${shared_ext}$major'
       
 20535 -    fi
       
 20536 -    shlibpath_var=LIBPATH
       
 20537 -  fi
       
 20538 -  ;;
       
 20539 -
       
 20540 -amigaos*)
       
 20541 -  case $host_cpu in
       
 20542 -  powerpc)
       
 20543 -    # Since July 2007 AmigaOS4 officially supports .so libraries.
       
 20544 -    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
       
 20545 -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20546 -    ;;
       
 20547 -  m68k)
       
 20548 -    library_names_spec='$libname.ixlibrary $libname.a'
       
 20549 -    # Create ${libname}_ixlibrary.a entries in /sys/libs.
       
 20550 -    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'
       
 20551 -    ;;
       
 20552 -  esac
       
 20553 -  ;;
       
 20554 -
       
 20555 -beos*)
       
 20556 -  library_names_spec='${libname}${shared_ext}'
       
 20557 -  dynamic_linker="$host_os ld.so"
       
 20558 -  shlibpath_var=LIBRARY_PATH
       
 20559 -  ;;
       
 20560 -
       
 20561 -bsdi[[45]]*)
       
 20562 -  version_type=linux
       
 20563 -  need_version=no
       
 20564 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20565 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20566 -  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
       
 20567 -  shlibpath_var=LD_LIBRARY_PATH
       
 20568 -  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
       
 20569 -  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
       
 20570 -  # the default ld.so.conf also contains /usr/contrib/lib and
       
 20571 -  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
       
 20572 -  # libtool to hard-code these into programs
       
 20573 -  ;;
       
 20574 -
       
 20575 -cygwin* | mingw* | pw32* | cegcc*)
       
 20576 -  version_type=windows
       
 20577 -  shrext_cmds=".dll"
       
 20578 -  need_version=no
       
 20579 -  need_lib_prefix=no
       
 20580 -
       
 20581 -  case $GCC,$host_os in
       
 20582 -  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
       
 20583 -    library_names_spec='$libname.dll.a'
       
 20584 -    # DLL is installed to $(libdir)/../bin by postinstall_cmds
       
 20585 -    postinstall_cmds='base_file=`basename \${file}`~
       
 20586 -      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
       
 20587 -      dldir=$destdir/`dirname \$dlpath`~
       
 20588 -      test -d \$dldir || mkdir -p \$dldir~
       
 20589 -      $install_prog $dir/$dlname \$dldir/$dlname~
       
 20590 -      chmod a+x \$dldir/$dlname~
       
 20591 -      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
       
 20592 -        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
       
 20593 -      fi'
       
 20594 -    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
       
 20595 -      dlpath=$dir/\$dldll~
       
 20596 -       $RM \$dlpath'
       
 20597 -    shlibpath_overrides_runpath=yes
       
 20598 -
       
 20599 -    case $host_os in
       
 20600 -    cygwin*)
       
 20601 -      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
       
 20602 -      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       
 20603 -      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
       
 20604 -      ;;
       
 20605 -    mingw* | cegcc*)
       
 20606 -      # MinGW DLLs use traditional 'lib' prefix
       
 20607 -      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       
 20608 -      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
       
 20609 -      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
       
 20610 -        # It is most probably a Windows format PATH printed by
       
 20611 -        # mingw gcc, but we are running on Cygwin. Gcc prints its search
       
 20612 -        # path with ; separators, and with drive letters. We can handle the
       
 20613 -        # drive letters (cygwin fileutils understands them), so leave them,
       
 20614 -        # especially as we might pass files found there to a mingw objdump,
       
 20615 -        # which wouldn't understand a cygwinified path. Ahh.
       
 20616 -        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
       
 20617 -      else
       
 20618 -        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
       
 20619 -      fi
       
 20620 -      ;;
       
 20621 -    pw32*)
       
 20622 -      # pw32 DLLs use 'pw' prefix rather than 'lib'
       
 20623 -      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       
 20624 -      ;;
       
 20625 -    esac
       
 20626 -    ;;
       
 20627 -
       
 20628 -  *)
       
 20629 -    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
       
 20630 -    ;;
       
 20631 -  esac
       
 20632 -  dynamic_linker='Win32 ld.exe'
       
 20633 -  # FIXME: first we should search . and the directory the executable is in
       
 20634 -  shlibpath_var=PATH
       
 20635 -  ;;
       
 20636 -
       
 20637 -darwin* | rhapsody*)
       
 20638 -  dynamic_linker="$host_os dyld"
       
 20639 -  version_type=darwin
       
 20640 -  need_lib_prefix=no
       
 20641 -  need_version=no
       
 20642 -  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
       
 20643 -  soname_spec='${libname}${release}${major}$shared_ext'
       
 20644 -  shlibpath_overrides_runpath=yes
       
 20645 -  shlibpath_var=DYLD_LIBRARY_PATH
       
 20646 -  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
       
 20647 -m4_if([$1], [],[
       
 20648 -  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
       
 20649 -  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
       
 20650 -  ;;
       
 20651 -
       
 20652 -dgux*)
       
 20653 -  version_type=linux
       
 20654 -  need_lib_prefix=no
       
 20655 -  need_version=no
       
 20656 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
       
 20657 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20658 -  shlibpath_var=LD_LIBRARY_PATH
       
 20659 -  ;;
       
 20660 -
       
 20661 -freebsd1*)
       
 20662 -  dynamic_linker=no
       
 20663 -  ;;
       
 20664 -
       
 20665 -freebsd* | dragonfly*)
       
 20666 -  # DragonFly does not have aout.  When/if they implement a new
       
 20667 -  # versioning mechanism, adjust this.
       
 20668 -  if test -x /usr/bin/objformat; then
       
 20669 -    objformat=`/usr/bin/objformat`
       
 20670 -  else
       
 20671 -    case $host_os in
       
 20672 -    freebsd[[123]]*) objformat=aout ;;
       
 20673 -    *) objformat=elf ;;
       
 20674 -    esac
       
 20675 -  fi
       
 20676 -  version_type=freebsd-$objformat
       
 20677 -  case $version_type in
       
 20678 -    freebsd-elf*)
       
 20679 -      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
       
 20680 -      need_version=no
       
 20681 -      need_lib_prefix=no
       
 20682 -      ;;
       
 20683 -    freebsd-*)
       
 20684 -      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
       
 20685 -      need_version=yes
       
 20686 -      ;;
       
 20687 -  esac
       
 20688 -  shlibpath_var=LD_LIBRARY_PATH
       
 20689 -  case $host_os in
       
 20690 -  freebsd2*)
       
 20691 -    shlibpath_overrides_runpath=yes
       
 20692 -    ;;
       
 20693 -  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
       
 20694 -    shlibpath_overrides_runpath=yes
       
 20695 -    hardcode_into_libs=yes
       
 20696 -    ;;
       
 20697 -  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
       
 20698 -  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
       
 20699 -    shlibpath_overrides_runpath=no
       
 20700 -    hardcode_into_libs=yes
       
 20701 -    ;;
       
 20702 -  *) # from 4.6 on, and DragonFly
       
 20703 -    shlibpath_overrides_runpath=yes
       
 20704 -    hardcode_into_libs=yes
       
 20705 -    ;;
       
 20706 -  esac
       
 20707 -  ;;
       
 20708 -
       
 20709 -gnu*)
       
 20710 -  version_type=linux
       
 20711 -  need_lib_prefix=no
       
 20712 -  need_version=no
       
 20713 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
       
 20714 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20715 -  shlibpath_var=LD_LIBRARY_PATH
       
 20716 -  hardcode_into_libs=yes
       
 20717 -  ;;
       
 20718 -
       
 20719 -hpux9* | hpux10* | hpux11*)
       
 20720 -  # Give a soname corresponding to the major version so that dld.sl refuses to
       
 20721 -  # link against other versions.
       
 20722 -  version_type=sunos
       
 20723 -  need_lib_prefix=no
       
 20724 -  need_version=no
       
 20725 -  case $host_cpu in
       
 20726 -  ia64*)
       
 20727 -    shrext_cmds='.so'
       
 20728 -    hardcode_into_libs=yes
       
 20729 -    dynamic_linker="$host_os dld.so"
       
 20730 -    shlibpath_var=LD_LIBRARY_PATH
       
 20731 -    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
       
 20732 -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20733 -    soname_spec='${libname}${release}${shared_ext}$major'
       
 20734 -    if test "X$HPUX_IA64_MODE" = X32; then
       
 20735 -      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
       
 20736 -    else
       
 20737 -      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
       
 20738 -    fi
       
 20739 -    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
       
 20740 -    ;;
       
 20741 -  hppa*64*)
       
 20742 -    shrext_cmds='.sl'
       
 20743 -    hardcode_into_libs=yes
       
 20744 -    dynamic_linker="$host_os dld.sl"
       
 20745 -    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
       
 20746 -    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
       
 20747 -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20748 -    soname_spec='${libname}${release}${shared_ext}$major'
       
 20749 -    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
       
 20750 -    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
       
 20751 -    ;;
       
 20752 -  *)
       
 20753 -    shrext_cmds='.sl'
       
 20754 -    dynamic_linker="$host_os dld.sl"
       
 20755 -    shlibpath_var=SHLIB_PATH
       
 20756 -    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
       
 20757 -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20758 -    soname_spec='${libname}${release}${shared_ext}$major'
       
 20759 -    ;;
       
 20760 -  esac
       
 20761 -  # HP-UX runs *really* slowly unless shared libraries are mode 555.
       
 20762 -  postinstall_cmds='chmod 555 $lib'
       
 20763 -  ;;
       
 20764 -
       
 20765 -interix[[3-9]]*)
       
 20766 -  version_type=linux
       
 20767 -  need_lib_prefix=no
       
 20768 -  need_version=no
       
 20769 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
       
 20770 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20771 -  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
       
 20772 -  shlibpath_var=LD_LIBRARY_PATH
       
 20773 -  shlibpath_overrides_runpath=no
       
 20774 -  hardcode_into_libs=yes
       
 20775 -  ;;
       
 20776 -
       
 20777 -irix5* | irix6* | nonstopux*)
       
 20778 -  case $host_os in
       
 20779 -    nonstopux*) version_type=nonstopux ;;
       
 20780 -    *)
       
 20781 -	if test "$lt_cv_prog_gnu_ld" = yes; then
       
 20782 -		version_type=linux
       
 20783 -	else
       
 20784 -		version_type=irix
       
 20785 -	fi ;;
       
 20786 -  esac
       
 20787 -  need_lib_prefix=no
       
 20788 -  need_version=no
       
 20789 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20790 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
       
 20791 -  case $host_os in
       
 20792 -  irix5* | nonstopux*)
       
 20793 -    libsuff= shlibsuff=
       
 20794 -    ;;
       
 20795 -  *)
       
 20796 -    case $LD in # libtool.m4 will add one of these switches to LD
       
 20797 -    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
       
 20798 -      libsuff= shlibsuff= libmagic=32-bit;;
       
 20799 -    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
       
 20800 -      libsuff=32 shlibsuff=N32 libmagic=N32;;
       
 20801 -    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
       
 20802 -      libsuff=64 shlibsuff=64 libmagic=64-bit;;
       
 20803 -    *) libsuff= shlibsuff= libmagic=never-match;;
       
 20804 -    esac
       
 20805 -    ;;
       
 20806 -  esac
       
 20807 -  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
       
 20808 -  shlibpath_overrides_runpath=no
       
 20809 -  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
       
 20810 -  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
       
 20811 -  hardcode_into_libs=yes
       
 20812 -  ;;
       
 20813 -
       
 20814 -# No shared lib support for Linux oldld, aout, or coff.
       
 20815 -linux*oldld* | linux*aout* | linux*coff*)
       
 20816 -  dynamic_linker=no
       
 20817 -  ;;
       
 20818 -
       
 20819 -# This must be Linux ELF.
       
 20820 -linux* | k*bsd*-gnu)
       
 20821 -  version_type=linux
       
 20822 -  need_lib_prefix=no
       
 20823 -  need_version=no
       
 20824 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20825 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20826 -  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
       
 20827 -  shlibpath_var=LD_LIBRARY_PATH
       
 20828 -  shlibpath_overrides_runpath=no
       
 20829 -  # Some binutils ld are patched to set DT_RUNPATH
       
 20830 -  save_LDFLAGS=$LDFLAGS
       
 20831 -  save_libdir=$libdir
       
 20832 -  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
       
 20833 -       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
       
 20834 -  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
       
 20835 -    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
       
 20836 -       [shlibpath_overrides_runpath=yes])])
       
 20837 -  LDFLAGS=$save_LDFLAGS
       
 20838 -  libdir=$save_libdir
       
 20839 -
       
 20840 -  # This implies no fast_install, which is unacceptable.
       
 20841 -  # Some rework will be needed to allow for fast_install
       
 20842 -  # before this can be enabled.
       
 20843 -  hardcode_into_libs=yes
       
 20844 -
       
 20845 -  # Add ABI-specific directories to the system library path.
       
 20846 -  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
       
 20847 -
       
 20848 -  # Append ld.so.conf contents to the search path
       
 20849 -  if test -f /etc/ld.so.conf; then
       
 20850 -    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' ' '`
       
 20851 -    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
       
 20852 -  fi
       
 20853 -
       
 20854 -  # We used to test for /lib/ld.so.1 and disable shared libraries on
       
 20855 -  # powerpc, because MkLinux only supported shared libraries with the
       
 20856 -  # GNU dynamic linker.  Since this was broken with cross compilers,
       
 20857 -  # most powerpc-linux boxes support dynamic linking these days and
       
 20858 -  # people can always --disable-shared, the test was removed, and we
       
 20859 -  # assume the GNU/Linux dynamic linker is in use.
       
 20860 -  dynamic_linker='GNU/Linux ld.so'
       
 20861 -  ;;
       
 20862 -
       
 20863 -netbsd*)
       
 20864 -  version_type=sunos
       
 20865 -  need_lib_prefix=no
       
 20866 -  need_version=no
       
 20867 -  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
       
 20868 -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
       
 20869 -    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
       
 20870 -    dynamic_linker='NetBSD (a.out) ld.so'
       
 20871 -  else
       
 20872 -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
       
 20873 -    soname_spec='${libname}${release}${shared_ext}$major'
       
 20874 -    dynamic_linker='NetBSD ld.elf_so'
       
 20875 -  fi
       
 20876 -  shlibpath_var=LD_LIBRARY_PATH
       
 20877 -  shlibpath_overrides_runpath=yes
       
 20878 -  hardcode_into_libs=yes
       
 20879 -  ;;
       
 20880 -
       
 20881 -newsos6)
       
 20882 -  version_type=linux
       
 20883 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20884 -  shlibpath_var=LD_LIBRARY_PATH
       
 20885 -  shlibpath_overrides_runpath=yes
       
 20886 -  ;;
       
 20887 -
       
 20888 -*nto* | *qnx*)
       
 20889 -  version_type=qnx
       
 20890 -  need_lib_prefix=no
       
 20891 -  need_version=no
       
 20892 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20893 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20894 -  shlibpath_var=LD_LIBRARY_PATH
       
 20895 -  shlibpath_overrides_runpath=no
       
 20896 -  hardcode_into_libs=yes
       
 20897 -  dynamic_linker='ldqnx.so'
       
 20898 -  ;;
       
 20899 -
       
 20900 -openbsd*)
       
 20901 -  version_type=sunos
       
 20902 -  sys_lib_dlsearch_path_spec="/usr/lib"
       
 20903 -  need_lib_prefix=no
       
 20904 -  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
       
 20905 -  case $host_os in
       
 20906 -    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
       
 20907 -    *)				need_version=no  ;;
       
 20908 -  esac
       
 20909 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
       
 20910 -  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
       
 20911 -  shlibpath_var=LD_LIBRARY_PATH
       
 20912 -  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
       
 20913 -    case $host_os in
       
 20914 -      openbsd2.[[89]] | openbsd2.[[89]].*)
       
 20915 -	shlibpath_overrides_runpath=no
       
 20916 -	;;
       
 20917 -      *)
       
 20918 -	shlibpath_overrides_runpath=yes
       
 20919 -	;;
       
 20920 -      esac
       
 20921 -  else
       
 20922 -    shlibpath_overrides_runpath=yes
       
 20923 -  fi
       
 20924 -  ;;
       
 20925 -
       
 20926 -os2*)
       
 20927 -  libname_spec='$name'
       
 20928 -  shrext_cmds=".dll"
       
 20929 -  need_lib_prefix=no
       
 20930 -  library_names_spec='$libname${shared_ext} $libname.a'
       
 20931 -  dynamic_linker='OS/2 ld.exe'
       
 20932 -  shlibpath_var=LIBPATH
       
 20933 -  ;;
       
 20934 -
       
 20935 -osf3* | osf4* | osf5*)
       
 20936 -  version_type=osf
       
 20937 -  need_lib_prefix=no
       
 20938 -  need_version=no
       
 20939 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20940 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20941 -  shlibpath_var=LD_LIBRARY_PATH
       
 20942 -  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
       
 20943 -  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
       
 20944 -  ;;
       
 20945 -
       
 20946 -rdos*)
       
 20947 -  dynamic_linker=no
       
 20948 -  ;;
       
 20949 -
       
 20950 -solaris*)
       
 20951 -  version_type=linux
       
 20952 -  need_lib_prefix=no
       
 20953 -  need_version=no
       
 20954 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20955 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20956 -  shlibpath_var=LD_LIBRARY_PATH
       
 20957 -  shlibpath_overrides_runpath=yes
       
 20958 -  hardcode_into_libs=yes
       
 20959 -  # ldd complains unless libraries are executable
       
 20960 -  postinstall_cmds='chmod +x $lib'
       
 20961 -  ;;
       
 20962 -
       
 20963 -sunos4*)
       
 20964 -  version_type=sunos
       
 20965 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
       
 20966 -  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
       
 20967 -  shlibpath_var=LD_LIBRARY_PATH
       
 20968 -  shlibpath_overrides_runpath=yes
       
 20969 -  if test "$with_gnu_ld" = yes; then
       
 20970 -    need_lib_prefix=no
       
 20971 -  fi
       
 20972 -  need_version=yes
       
 20973 -  ;;
       
 20974 -
       
 20975 -sysv4 | sysv4.3*)
       
 20976 -  version_type=linux
       
 20977 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 20978 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 20979 -  shlibpath_var=LD_LIBRARY_PATH
       
 20980 -  case $host_vendor in
       
 20981 -    sni)
       
 20982 -      shlibpath_overrides_runpath=no
       
 20983 -      need_lib_prefix=no
       
 20984 -      runpath_var=LD_RUN_PATH
       
 20985 -      ;;
       
 20986 -    siemens)
       
 20987 -      need_lib_prefix=no
       
 20988 -      ;;
       
 20989 -    motorola)
       
 20990 -      need_lib_prefix=no
       
 20991 -      need_version=no
       
 20992 -      shlibpath_overrides_runpath=no
       
 20993 -      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
       
 20994 -      ;;
       
 20995 -  esac
       
 20996 -  ;;
       
 20997 -
       
 20998 -sysv4*MP*)
       
 20999 -  if test -d /usr/nec ;then
       
 21000 -    version_type=linux
       
 21001 -    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
       
 21002 -    soname_spec='$libname${shared_ext}.$major'
       
 21003 -    shlibpath_var=LD_LIBRARY_PATH
       
 21004 -  fi
       
 21005 -  ;;
       
 21006 -
       
 21007 -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
       
 21008 -  version_type=freebsd-elf
       
 21009 -  need_lib_prefix=no
       
 21010 -  need_version=no
       
 21011 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
       
 21012 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 21013 -  shlibpath_var=LD_LIBRARY_PATH
       
 21014 -  shlibpath_overrides_runpath=yes
       
 21015 -  hardcode_into_libs=yes
       
 21016 -  if test "$with_gnu_ld" = yes; then
       
 21017 -    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
       
 21018 -  else
       
 21019 -    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
       
 21020 -    case $host_os in
       
 21021 -      sco3.2v5*)
       
 21022 -        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
       
 21023 -	;;
       
 21024 -    esac
       
 21025 -  fi
       
 21026 -  sys_lib_dlsearch_path_spec='/usr/lib'
       
 21027 -  ;;
       
 21028 -
       
 21029 -tpf*)
       
 21030 -  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
       
 21031 -  version_type=linux
       
 21032 -  need_lib_prefix=no
       
 21033 -  need_version=no
       
 21034 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 21035 -  shlibpath_var=LD_LIBRARY_PATH
       
 21036 -  shlibpath_overrides_runpath=no
       
 21037 -  hardcode_into_libs=yes
       
 21038 -  ;;
       
 21039 -
       
 21040 -uts4*)
       
 21041 -  version_type=linux
       
 21042 -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 21043 -  soname_spec='${libname}${release}${shared_ext}$major'
       
 21044 -  shlibpath_var=LD_LIBRARY_PATH
       
 21045 -  ;;
       
 21046 -
       
 21047 -*)
       
 21048 -  dynamic_linker=no
       
 21049 -  ;;
       
 21050 -esac
       
 21051 -AC_MSG_RESULT([$dynamic_linker])
       
 21052 -test "$dynamic_linker" = no && can_build_shared=no
       
 21053 -
       
 21054 -variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
       
 21055 -if test "$GCC" = yes; then
       
 21056 -  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
       
 21057 -fi
       
 21058 -
       
 21059 -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
       
 21060 -  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
       
 21061 -fi
       
 21062 -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
       
 21063 -  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
       
 21064 -fi
       
 21065 -
       
 21066 -_LT_DECL([], [variables_saved_for_relink], [1],
       
 21067 -    [Variables whose values should be saved in libtool wrapper scripts and
       
 21068 -    restored at link time])
       
 21069 -_LT_DECL([], [need_lib_prefix], [0],
       
 21070 -    [Do we need the "lib" prefix for modules?])
       
 21071 -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
       
 21072 -_LT_DECL([], [version_type], [0], [Library versioning type])
       
 21073 -_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
       
 21074 -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
       
 21075 -_LT_DECL([], [shlibpath_overrides_runpath], [0],
       
 21076 -    [Is shlibpath searched before the hard-coded library search path?])
       
 21077 -_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
       
 21078 -_LT_DECL([], [library_names_spec], [1],
       
 21079 -    [[List of archive names.  First name is the real one, the rest are links.
       
 21080 -    The last name is the one that the linker finds with -lNAME]])
       
 21081 -_LT_DECL([], [soname_spec], [1],
       
 21082 -    [[The coded name of the library, if different from the real name]])
       
 21083 -_LT_DECL([], [postinstall_cmds], [2],
       
 21084 -    [Command to use after installation of a shared archive])
       
 21085 -_LT_DECL([], [postuninstall_cmds], [2],
       
 21086 -    [Command to use after uninstallation of a shared archive])
       
 21087 -_LT_DECL([], [finish_cmds], [2],
       
 21088 -    [Commands used to finish a libtool library installation in a directory])
       
 21089 -_LT_DECL([], [finish_eval], [1],
       
 21090 -    [[As "finish_cmds", except a single script fragment to be evaled but
       
 21091 -    not shown]])
       
 21092 -_LT_DECL([], [hardcode_into_libs], [0],
       
 21093 -    [Whether we should hardcode library paths into libraries])
       
 21094 -_LT_DECL([], [sys_lib_search_path_spec], [2],
       
 21095 -    [Compile-time system search path for libraries])
       
 21096 -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
       
 21097 -    [Run-time system search path for libraries])
       
 21098 -])# _LT_SYS_DYNAMIC_LINKER
       
 21099 -
       
 21100 -
       
 21101 -# _LT_PATH_TOOL_PREFIX(TOOL)
       
 21102 -# --------------------------
       
 21103 -# find a file program which can recognize shared library
       
 21104 -AC_DEFUN([_LT_PATH_TOOL_PREFIX],
       
 21105 -[m4_require([_LT_DECL_EGREP])dnl
       
 21106 -AC_MSG_CHECKING([for $1])
       
 21107 -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
       
 21108 -[case $MAGIC_CMD in
       
 21109 -[[\\/*] |  ?:[\\/]*])
       
 21110 -  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
       
 21111 -  ;;
       
 21112 -*)
       
 21113 -  lt_save_MAGIC_CMD="$MAGIC_CMD"
       
 21114 -  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
       
 21115 -dnl $ac_dummy forces splitting on constant user-supplied paths.
       
 21116 -dnl POSIX.2 word splitting is done only on the output of word expansions,
       
 21117 -dnl not every word.  This closes a longstanding sh security hole.
       
 21118 -  ac_dummy="m4_if([$2], , $PATH, [$2])"
       
 21119 -  for ac_dir in $ac_dummy; do
       
 21120 -    IFS="$lt_save_ifs"
       
 21121 -    test -z "$ac_dir" && ac_dir=.
       
 21122 -    if test -f $ac_dir/$1; then
       
 21123 -      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
       
 21124 -      if test -n "$file_magic_test_file"; then
       
 21125 -	case $deplibs_check_method in
       
 21126 -	"file_magic "*)
       
 21127 -	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
       
 21128 -	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
       
 21129 -	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
       
 21130 -	    $EGREP "$file_magic_regex" > /dev/null; then
       
 21131 -	    :
       
 21132 -	  else
       
 21133 -	    cat <<_LT_EOF 1>&2
       
 21134 -
       
 21135 -*** Warning: the command libtool uses to detect shared libraries,
       
 21136 -*** $file_magic_cmd, produces output that libtool cannot recognize.
       
 21137 -*** The result is that libtool may fail to recognize shared libraries
       
 21138 -*** as such.  This will affect the creation of libtool libraries that
       
 21139 -*** depend on shared libraries, but programs linked with such libtool
       
 21140 -*** libraries will work regardless of this problem.  Nevertheless, you
       
 21141 -*** may want to report the problem to your system manager and/or to
       
 21142 -*** bug-libtool@gnu.org
       
 21143 -
       
 21144 -_LT_EOF
       
 21145 -	  fi ;;
       
 21146 -	esac
       
 21147 -      fi
       
 21148 -      break
       
 21149 -    fi
       
 21150 -  done
       
 21151 -  IFS="$lt_save_ifs"
       
 21152 -  MAGIC_CMD="$lt_save_MAGIC_CMD"
       
 21153 -  ;;
       
 21154 -esac])
       
 21155 -MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
       
 21156 -if test -n "$MAGIC_CMD"; then
       
 21157 -  AC_MSG_RESULT($MAGIC_CMD)
       
 21158 -else
       
 21159 -  AC_MSG_RESULT(no)
       
 21160 -fi
       
 21161 -_LT_DECL([], [MAGIC_CMD], [0],
       
 21162 -	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
       
 21163 -])# _LT_PATH_TOOL_PREFIX
       
 21164 -
       
 21165 -# Old name:
       
 21166 -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
       
 21167 -dnl aclocal-1.4 backwards compatibility:
       
 21168 -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
       
 21169 -
       
 21170 -
       
 21171 -# _LT_PATH_MAGIC
       
 21172 -# --------------
       
 21173 -# find a file program which can recognize a shared library
       
 21174 -m4_defun([_LT_PATH_MAGIC],
       
 21175 -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
       
 21176 -if test -z "$lt_cv_path_MAGIC_CMD"; then
       
 21177 -  if test -n "$ac_tool_prefix"; then
       
 21178 -    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
       
 21179 -  else
       
 21180 -    MAGIC_CMD=:
       
 21181 -  fi
       
 21182 -fi
       
 21183 -])# _LT_PATH_MAGIC
       
 21184 -
       
 21185 -
       
 21186 -# LT_PATH_LD
       
 21187 -# ----------
       
 21188 -# find the pathname to the GNU or non-GNU linker
       
 21189 -AC_DEFUN([LT_PATH_LD],
       
 21190 -[AC_REQUIRE([AC_PROG_CC])dnl
       
 21191 -AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 21192 -AC_REQUIRE([AC_CANONICAL_BUILD])dnl
       
 21193 -m4_require([_LT_DECL_SED])dnl
       
 21194 -m4_require([_LT_DECL_EGREP])dnl
       
 21195 -
       
 21196 -AC_ARG_WITH([gnu-ld],
       
 21197 -    [AS_HELP_STRING([--with-gnu-ld],
       
 21198 -	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
       
 21199 -    [test "$withval" = no || with_gnu_ld=yes],
       
 21200 -    [with_gnu_ld=no])dnl
       
 21201 -
       
 21202 -ac_prog=ld
       
 21203 -if test "$GCC" = yes; then
       
 21204 -  # Check if gcc -print-prog-name=ld gives a path.
       
 21205 -  AC_MSG_CHECKING([for ld used by $CC])
       
 21206 -  case $host in
       
 21207 -  *-*-mingw*)
       
 21208 -    # gcc leaves a trailing carriage return which upsets mingw
       
 21209 -    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
       
 21210 -  *)
       
 21211 -    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
       
 21212 -  esac
       
 21213 -  case $ac_prog in
       
 21214 -    # Accept absolute paths.
       
 21215 -    [[\\/]]* | ?:[[\\/]]*)
       
 21216 -      re_direlt='/[[^/]][[^/]]*/\.\./'
       
 21217 -      # Canonicalize the pathname of ld
       
 21218 -      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
       
 21219 -      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
       
 21220 -	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
       
 21221 -      done
       
 21222 -      test -z "$LD" && LD="$ac_prog"
       
 21223 -      ;;
       
 21224 -  "")
       
 21225 -    # If it fails, then pretend we aren't using GCC.
       
 21226 -    ac_prog=ld
       
 21227 -    ;;
       
 21228 -  *)
       
 21229 -    # If it is relative, then search for the first ld in PATH.
       
 21230 -    with_gnu_ld=unknown
       
 21231 -    ;;
       
 21232 -  esac
       
 21233 -elif test "$with_gnu_ld" = yes; then
       
 21234 -  AC_MSG_CHECKING([for GNU ld])
       
 21235 -else
       
 21236 -  AC_MSG_CHECKING([for non-GNU ld])
       
 21237 -fi
       
 21238 -AC_CACHE_VAL(lt_cv_path_LD,
       
 21239 -[if test -z "$LD"; then
       
 21240 -  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
       
 21241 -  for ac_dir in $PATH; do
       
 21242 -    IFS="$lt_save_ifs"
       
 21243 -    test -z "$ac_dir" && ac_dir=.
       
 21244 -    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
       
 21245 -      lt_cv_path_LD="$ac_dir/$ac_prog"
       
 21246 -      # Check to see if the program is GNU ld.  I'd rather use --version,
       
 21247 -      # but apparently some variants of GNU ld only accept -v.
       
 21248 -      # Break only if it was the GNU/non-GNU ld that we prefer.
       
 21249 -      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       
 21250 -      *GNU* | *'with BFD'*)
       
 21251 -	test "$with_gnu_ld" != no && break
       
 21252 -	;;
       
 21253 -      *)
       
 21254 -	test "$with_gnu_ld" != yes && break
       
 21255 -	;;
       
 21256 -      esac
       
 21257 -    fi
       
 21258 -  done
       
 21259 -  IFS="$lt_save_ifs"
       
 21260 -else
       
 21261 -  lt_cv_path_LD="$LD" # Let the user override the test with a path.
       
 21262 -fi])
       
 21263 -LD="$lt_cv_path_LD"
       
 21264 -if test -n "$LD"; then
       
 21265 -  AC_MSG_RESULT($LD)
       
 21266 -else
       
 21267 -  AC_MSG_RESULT(no)
       
 21268 -fi
       
 21269 -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
       
 21270 -_LT_PATH_LD_GNU
       
 21271 -AC_SUBST([LD])
       
 21272 -
       
 21273 -_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
       
 21274 -])# LT_PATH_LD
       
 21275 -
       
 21276 -# Old names:
       
 21277 -AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
       
 21278 -AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
       
 21279 -dnl aclocal-1.4 backwards compatibility:
       
 21280 -dnl AC_DEFUN([AM_PROG_LD], [])
       
 21281 -dnl AC_DEFUN([AC_PROG_LD], [])
       
 21282 -
       
 21283 -
       
 21284 -# _LT_PATH_LD_GNU
       
 21285 -#- --------------
       
 21286 -m4_defun([_LT_PATH_LD_GNU],
       
 21287 -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
       
 21288 -[# I'd rather use --version here, but apparently some GNU lds only accept -v.
       
 21289 -case `$LD -v 2>&1 </dev/null` in
       
 21290 -*GNU* | *'with BFD'*)
       
 21291 -  lt_cv_prog_gnu_ld=yes
       
 21292 -  ;;
       
 21293 -*)
       
 21294 -  lt_cv_prog_gnu_ld=no
       
 21295 -  ;;
       
 21296 -esac])
       
 21297 -with_gnu_ld=$lt_cv_prog_gnu_ld
       
 21298 -])# _LT_PATH_LD_GNU
       
 21299 -
       
 21300 -
       
 21301 -# _LT_CMD_RELOAD
       
 21302 -# --------------
       
 21303 -# find reload flag for linker
       
 21304 -#   -- PORTME Some linkers may need a different reload flag.
       
 21305 -m4_defun([_LT_CMD_RELOAD],
       
 21306 -[AC_CACHE_CHECK([for $LD option to reload object files],
       
 21307 -  lt_cv_ld_reload_flag,
       
 21308 -  [lt_cv_ld_reload_flag='-r'])
       
 21309 -reload_flag=$lt_cv_ld_reload_flag
       
 21310 -case $reload_flag in
       
 21311 -"" | " "*) ;;
       
 21312 -*) reload_flag=" $reload_flag" ;;
       
 21313 -esac
       
 21314 -reload_cmds='$LD$reload_flag -o $output$reload_objs'
       
 21315 -case $host_os in
       
 21316 -  darwin*)
       
 21317 -    if test "$GCC" = yes; then
       
 21318 -      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
       
 21319 -    else
       
 21320 -      reload_cmds='$LD$reload_flag -o $output$reload_objs'
       
 21321 -    fi
       
 21322 -    ;;
       
 21323 -esac
       
 21324 -_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
       
 21325 -_LT_DECL([], [reload_cmds], [2])dnl
       
 21326 -])# _LT_CMD_RELOAD
       
 21327 -
       
 21328 -
       
 21329 -# _LT_CHECK_MAGIC_METHOD
       
 21330 -# ----------------------
       
 21331 -# how to check for library dependencies
       
 21332 -#  -- PORTME fill in with the dynamic library characteristics
       
 21333 -m4_defun([_LT_CHECK_MAGIC_METHOD],
       
 21334 -[m4_require([_LT_DECL_EGREP])
       
 21335 -m4_require([_LT_DECL_OBJDUMP])
       
 21336 -AC_CACHE_CHECK([how to recognize dependent libraries],
       
 21337 -lt_cv_deplibs_check_method,
       
 21338 -[lt_cv_file_magic_cmd='$MAGIC_CMD'
       
 21339 -lt_cv_file_magic_test_file=
       
 21340 -lt_cv_deplibs_check_method='unknown'
       
 21341 -# Need to set the preceding variable on all platforms that support
       
 21342 -# interlibrary dependencies.
       
 21343 -# 'none' -- dependencies not supported.
       
 21344 -# `unknown' -- same as none, but documents that we really don't know.
       
 21345 -# 'pass_all' -- all dependencies passed with no checks.
       
 21346 -# 'test_compile' -- check by making test program.
       
 21347 -# 'file_magic [[regex]]' -- check by looking for files in library path
       
 21348 -# which responds to the $file_magic_cmd with a given extended regex.
       
 21349 -# If you have `file' or equivalent on your system and you're not sure
       
 21350 -# whether `pass_all' will *always* work, you probably want this one.
       
 21351 -
       
 21352 -case $host_os in
       
 21353 -aix[[4-9]]*)
       
 21354 -  lt_cv_deplibs_check_method=pass_all
       
 21355 -  ;;
       
 21356 -
       
 21357 -beos*)
       
 21358 -  lt_cv_deplibs_check_method=pass_all
       
 21359 -  ;;
       
 21360 -
       
 21361 -bsdi[[45]]*)
       
 21362 -  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
       
 21363 -  lt_cv_file_magic_cmd='/usr/bin/file -L'
       
 21364 -  lt_cv_file_magic_test_file=/shlib/libc.so
       
 21365 -  ;;
       
 21366 -
       
 21367 -cygwin*)
       
 21368 -  # func_win32_libid is a shell function defined in ltmain.sh
       
 21369 -  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
       
 21370 -  lt_cv_file_magic_cmd='func_win32_libid'
       
 21371 -  ;;
       
 21372 -
       
 21373 -mingw* | pw32*)
       
 21374 -  # Base MSYS/MinGW do not provide the 'file' command needed by
       
 21375 -  # func_win32_libid shell function, so use a weaker test based on 'objdump',
       
 21376 -  # unless we find 'file', for example because we are cross-compiling.
       
 21377 -  if ( file / ) >/dev/null 2>&1; then
       
 21378 -    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
       
 21379 -    lt_cv_file_magic_cmd='func_win32_libid'
       
 21380 -  else
       
 21381 -    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
       
 21382 -    lt_cv_file_magic_cmd='$OBJDUMP -f'
       
 21383 -  fi
       
 21384 -  ;;
       
 21385 -
       
 21386 -cegcc)
       
 21387 -  # use the weaker test based on 'objdump'. See mingw*.
       
 21388 -  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
       
 21389 -  lt_cv_file_magic_cmd='$OBJDUMP -f'
       
 21390 -  ;;
       
 21391 -
       
 21392 -darwin* | rhapsody*)
       
 21393 -  lt_cv_deplibs_check_method=pass_all
       
 21394 -  ;;
       
 21395 -
       
 21396 -freebsd* | dragonfly*)
       
 21397 -  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
       
 21398 -    case $host_cpu in
       
 21399 -    i*86 )
       
 21400 -      # Not sure whether the presence of OpenBSD here was a mistake.
       
 21401 -      # Let's accept both of them until this is cleared up.
       
 21402 -      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
       
 21403 -      lt_cv_file_magic_cmd=/usr/bin/file
       
 21404 -      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
       
 21405 -      ;;
       
 21406 -    esac
       
 21407 -  else
       
 21408 -    lt_cv_deplibs_check_method=pass_all
       
 21409 -  fi
       
 21410 -  ;;
       
 21411 -
       
 21412 -gnu*)
       
 21413 -  lt_cv_deplibs_check_method=pass_all
       
 21414 -  ;;
       
 21415 -
       
 21416 -hpux10.20* | hpux11*)
       
 21417 -  lt_cv_file_magic_cmd=/usr/bin/file
       
 21418 -  case $host_cpu in
       
 21419 -  ia64*)
       
 21420 -    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
       
 21421 -    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
       
 21422 -    ;;
       
 21423 -  hppa*64*)
       
 21424 -    [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]']
       
 21425 -    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
       
 21426 -    ;;
       
 21427 -  *)
       
 21428 -    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
       
 21429 -    lt_cv_file_magic_test_file=/usr/lib/libc.sl
       
 21430 -    ;;
       
 21431 -  esac
       
 21432 -  ;;
       
 21433 -
       
 21434 -interix[[3-9]]*)
       
 21435 -  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
       
 21436 -  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
       
 21437 -  ;;
       
 21438 -
       
 21439 -irix5* | irix6* | nonstopux*)
       
 21440 -  case $LD in
       
 21441 -  *-32|*"-32 ") libmagic=32-bit;;
       
 21442 -  *-n32|*"-n32 ") libmagic=N32;;
       
 21443 -  *-64|*"-64 ") libmagic=64-bit;;
       
 21444 -  *) libmagic=never-match;;
       
 21445 -  esac
       
 21446 -  lt_cv_deplibs_check_method=pass_all
       
 21447 -  ;;
       
 21448 -
       
 21449 -# This must be Linux ELF.
       
 21450 -linux* | k*bsd*-gnu)
       
 21451 -  lt_cv_deplibs_check_method=pass_all
       
 21452 -  ;;
       
 21453 -
       
 21454 -netbsd*)
       
 21455 -  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
       
 21456 -    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
       
 21457 -  else
       
 21458 -    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
       
 21459 -  fi
       
 21460 -  ;;
       
 21461 -
       
 21462 -newos6*)
       
 21463 -  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
       
 21464 -  lt_cv_file_magic_cmd=/usr/bin/file
       
 21465 -  lt_cv_file_magic_test_file=/usr/lib/libnls.so
       
 21466 -  ;;
       
 21467 -
       
 21468 -*nto* | *qnx*)
       
 21469 -  lt_cv_deplibs_check_method=pass_all
       
 21470 -  ;;
       
 21471 -
       
 21472 -openbsd*)
       
 21473 -  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
       
 21474 -    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
       
 21475 -  else
       
 21476 -    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
       
 21477 -  fi
       
 21478 -  ;;
       
 21479 -
       
 21480 -osf3* | osf4* | osf5*)
       
 21481 -  lt_cv_deplibs_check_method=pass_all
       
 21482 -  ;;
       
 21483 -
       
 21484 -rdos*)
       
 21485 -  lt_cv_deplibs_check_method=pass_all
       
 21486 -  ;;
       
 21487 -
       
 21488 -solaris*)
       
 21489 -  lt_cv_deplibs_check_method=pass_all
       
 21490 -  ;;
       
 21491 -
       
 21492 -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
       
 21493 -  lt_cv_deplibs_check_method=pass_all
       
 21494 -  ;;
       
 21495 -
       
 21496 -sysv4 | sysv4.3*)
       
 21497 -  case $host_vendor in
       
 21498 -  motorola)
       
 21499 -    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]]'
       
 21500 -    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
       
 21501 -    ;;
       
 21502 -  ncr)
       
 21503 -    lt_cv_deplibs_check_method=pass_all
       
 21504 -    ;;
       
 21505 -  sequent)
       
 21506 -    lt_cv_file_magic_cmd='/bin/file'
       
 21507 -    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
       
 21508 -    ;;
       
 21509 -  sni)
       
 21510 -    lt_cv_file_magic_cmd='/bin/file'
       
 21511 -    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
       
 21512 -    lt_cv_file_magic_test_file=/lib/libc.so
       
 21513 -    ;;
       
 21514 -  siemens)
       
 21515 -    lt_cv_deplibs_check_method=pass_all
       
 21516 -    ;;
       
 21517 -  pc)
       
 21518 -    lt_cv_deplibs_check_method=pass_all
       
 21519 -    ;;
       
 21520 -  esac
       
 21521 -  ;;
       
 21522 -
       
 21523 -tpf*)
       
 21524 -  lt_cv_deplibs_check_method=pass_all
       
 21525 -  ;;
       
 21526 -esac
       
 21527 -])
       
 21528 -file_magic_cmd=$lt_cv_file_magic_cmd
       
 21529 -deplibs_check_method=$lt_cv_deplibs_check_method
       
 21530 -test -z "$deplibs_check_method" && deplibs_check_method=unknown
       
 21531 -
       
 21532 -_LT_DECL([], [deplibs_check_method], [1],
       
 21533 -    [Method to check whether dependent libraries are shared objects])
       
 21534 -_LT_DECL([], [file_magic_cmd], [1],
       
 21535 -    [Command to use when deplibs_check_method == "file_magic"])
       
 21536 -])# _LT_CHECK_MAGIC_METHOD
       
 21537 -
       
 21538 -
       
 21539 -# LT_PATH_NM
       
 21540 -# ----------
       
 21541 -# find the pathname to a BSD- or MS-compatible name lister
       
 21542 -AC_DEFUN([LT_PATH_NM],
       
 21543 -[AC_REQUIRE([AC_PROG_CC])dnl
       
 21544 -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
       
 21545 -[if test -n "$NM"; then
       
 21546 -  # Let the user override the test.
       
 21547 -  lt_cv_path_NM="$NM"
       
 21548 -else
       
 21549 -  lt_nm_to_check="${ac_tool_prefix}nm"
       
 21550 -  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
       
 21551 -    lt_nm_to_check="$lt_nm_to_check nm"
       
 21552 -  fi
       
 21553 -  for lt_tmp_nm in $lt_nm_to_check; do
       
 21554 -    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
       
 21555 -    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
       
 21556 -      IFS="$lt_save_ifs"
       
 21557 -      test -z "$ac_dir" && ac_dir=.
       
 21558 -      tmp_nm="$ac_dir/$lt_tmp_nm"
       
 21559 -      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
       
 21560 -	# Check to see if the nm accepts a BSD-compat flag.
       
 21561 -	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
       
 21562 -	#   nm: unknown option "B" ignored
       
 21563 -	# Tru64's nm complains that /dev/null is an invalid object file
       
 21564 -	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
       
 21565 -	*/dev/null* | *'Invalid file or object type'*)
       
 21566 -	  lt_cv_path_NM="$tmp_nm -B"
       
 21567 -	  break
       
 21568 -	  ;;
       
 21569 -	*)
       
 21570 -	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
       
 21571 -	  */dev/null*)
       
 21572 -	    lt_cv_path_NM="$tmp_nm -p"
       
 21573 -	    break
       
 21574 -	    ;;
       
 21575 -	  *)
       
 21576 -	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
       
 21577 -	    continue # so that we can try to find one that supports BSD flags
       
 21578 -	    ;;
       
 21579 -	  esac
       
 21580 -	  ;;
       
 21581 -	esac
       
 21582 -      fi
       
 21583 -    done
       
 21584 -    IFS="$lt_save_ifs"
       
 21585 -  done
       
 21586 -  : ${lt_cv_path_NM=no}
       
 21587 -fi])
       
 21588 -if test "$lt_cv_path_NM" != "no"; then
       
 21589 -  NM="$lt_cv_path_NM"
       
 21590 -else
       
 21591 -  # Didn't find any BSD compatible name lister, look for dumpbin.
       
 21592 -  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
       
 21593 -  AC_SUBST([DUMPBIN])
       
 21594 -  if test "$DUMPBIN" != ":"; then
       
 21595 -    NM="$DUMPBIN"
       
 21596 -  fi
       
 21597 -fi
       
 21598 -test -z "$NM" && NM=nm
       
 21599 -AC_SUBST([NM])
       
 21600 -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
       
 21601 -
       
 21602 -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
       
 21603 -  [lt_cv_nm_interface="BSD nm"
       
 21604 -  echo "int some_variable = 0;" > conftest.$ac_ext
       
 21605 -  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
       
 21606 -  (eval "$ac_compile" 2>conftest.err)
       
 21607 -  cat conftest.err >&AS_MESSAGE_LOG_FD
       
 21608 -  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
       
 21609 -  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
       
 21610 -  cat conftest.err >&AS_MESSAGE_LOG_FD
       
 21611 -  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
       
 21612 -  cat conftest.out >&AS_MESSAGE_LOG_FD
       
 21613 -  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
       
 21614 -    lt_cv_nm_interface="MS dumpbin"
       
 21615 -  fi
       
 21616 -  rm -f conftest*])
       
 21617 -])# LT_PATH_NM
       
 21618 -
       
 21619 -# Old names:
       
 21620 -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
       
 21621 -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
       
 21622 -dnl aclocal-1.4 backwards compatibility:
       
 21623 -dnl AC_DEFUN([AM_PROG_NM], [])
       
 21624 -dnl AC_DEFUN([AC_PROG_NM], [])
       
 21625 -
       
 21626 -
       
 21627 -# LT_LIB_M
       
 21628 -# --------
       
 21629 -# check for math library
       
 21630 -AC_DEFUN([LT_LIB_M],
       
 21631 -[AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 21632 -LIBM=
       
 21633 -case $host in
       
 21634 -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
       
 21635 -  # These system don't have libm, or don't need it
       
 21636 -  ;;
       
 21637 -*-ncr-sysv4.3*)
       
 21638 -  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
       
 21639 -  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
       
 21640 -  ;;
       
 21641 -*)
       
 21642 -  AC_CHECK_LIB(m, cos, LIBM="-lm")
       
 21643 -  ;;
       
 21644 -esac
       
 21645 -AC_SUBST([LIBM])
       
 21646 -])# LT_LIB_M
       
 21647 -
       
 21648 -# Old name:
       
 21649 -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
       
 21650 -dnl aclocal-1.4 backwards compatibility:
       
 21651 -dnl AC_DEFUN([AC_CHECK_LIBM], [])
       
 21652 -
       
 21653 -
       
 21654 -# _LT_COMPILER_NO_RTTI([TAGNAME])
       
 21655 -# -------------------------------
       
 21656 -m4_defun([_LT_COMPILER_NO_RTTI],
       
 21657 -[m4_require([_LT_TAG_COMPILER])dnl
       
 21658 -
       
 21659 -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
       
 21660 -
       
 21661 -if test "$GCC" = yes; then
       
 21662 -  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
       
 21663 -
       
 21664 -  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
       
 21665 -    lt_cv_prog_compiler_rtti_exceptions,
       
 21666 -    [-fno-rtti -fno-exceptions], [],
       
 21667 -    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
       
 21668 -fi
       
 21669 -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
       
 21670 -	[Compiler flag to turn off builtin functions])
       
 21671 -])# _LT_COMPILER_NO_RTTI
       
 21672 -
       
 21673 -
       
 21674 -# _LT_CMD_GLOBAL_SYMBOLS
       
 21675 -# ----------------------
       
 21676 -m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
       
 21677 -[AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 21678 -AC_REQUIRE([AC_PROG_CC])dnl
       
 21679 -AC_REQUIRE([LT_PATH_NM])dnl
       
 21680 -AC_REQUIRE([LT_PATH_LD])dnl
       
 21681 -m4_require([_LT_DECL_SED])dnl
       
 21682 -m4_require([_LT_DECL_EGREP])dnl
       
 21683 -m4_require([_LT_TAG_COMPILER])dnl
       
 21684 -
       
 21685 -# Check for command to grab the raw symbol name followed by C symbol from nm.
       
 21686 -AC_MSG_CHECKING([command to parse $NM output from $compiler object])
       
 21687 -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
       
 21688 -[
       
 21689 -# These are sane defaults that work on at least a few old systems.
       
 21690 -# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
       
 21691 -
       
 21692 -# Character class describing NM global symbol codes.
       
 21693 -symcode='[[BCDEGRST]]'
       
 21694 -
       
 21695 -# Regexp to match symbols that can be accessed directly from C.
       
 21696 -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
       
 21697 -
       
 21698 -# Define system-specific variables.
       
 21699 -case $host_os in
       
 21700 -aix*)
       
 21701 -  symcode='[[BCDT]]'
       
 21702 -  ;;
       
 21703 -cygwin* | mingw* | pw32* | cegcc*)
       
 21704 -  symcode='[[ABCDGISTW]]'
       
 21705 -  ;;
       
 21706 -hpux*)
       
 21707 -  if test "$host_cpu" = ia64; then
       
 21708 -    symcode='[[ABCDEGRST]]'
       
 21709 -  fi
       
 21710 -  ;;
       
 21711 -irix* | nonstopux*)
       
 21712 -  symcode='[[BCDEGRST]]'
       
 21713 -  ;;
       
 21714 -osf*)
       
 21715 -  symcode='[[BCDEGQRST]]'
       
 21716 -  ;;
       
 21717 -solaris*)
       
 21718 -  symcode='[[BDRT]]'
       
 21719 -  ;;
       
 21720 -sco3.2v5*)
       
 21721 -  symcode='[[DT]]'
       
 21722 -  ;;
       
 21723 -sysv4.2uw2*)
       
 21724 -  symcode='[[DT]]'
       
 21725 -  ;;
       
 21726 -sysv5* | sco5v6* | unixware* | OpenUNIX*)
       
 21727 -  symcode='[[ABDT]]'
       
 21728 -  ;;
       
 21729 -sysv4)
       
 21730 -  symcode='[[DFNSTU]]'
       
 21731 -  ;;
       
 21732 -esac
       
 21733 -
       
 21734 -# If we're using GNU nm, then use its standard symbol codes.
       
 21735 -case `$NM -V 2>&1` in
       
 21736 -*GNU* | *'with BFD'*)
       
 21737 -  symcode='[[ABCDGIRSTW]]' ;;
       
 21738 -esac
       
 21739 -
       
 21740 -# Transform an extracted symbol line into a proper C declaration.
       
 21741 -# Some systems (esp. on ia64) link data and code symbols differently,
       
 21742 -# so use this general approach.
       
 21743 -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
       
 21744 -
       
 21745 -# Transform an extracted symbol line into symbol name and symbol address
       
 21746 -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
       
 21747 -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'"
       
 21748 -
       
 21749 -# Handle CRLF in mingw tool chain
       
 21750 -opt_cr=
       
 21751 -case $build_os in
       
 21752 -mingw*)
       
 21753 -  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
       
 21754 -  ;;
       
 21755 -esac
       
 21756 -
       
 21757 -# Try without a prefix underscore, then with it.
       
 21758 -for ac_symprfx in "" "_"; do
       
 21759 -
       
 21760 -  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
       
 21761 -  symxfrm="\\1 $ac_symprfx\\2 \\2"
       
 21762 -
       
 21763 -  # Write the raw and C identifiers.
       
 21764 -  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
       
 21765 -    # Fake it for dumpbin and say T for any non-static function
       
 21766 -    # and D for any global variable.
       
 21767 -    # Also find C++ and __fastcall symbols from MSVC++,
       
 21768 -    # which start with @ or ?.
       
 21769 -    lt_cv_sys_global_symbol_pipe="$AWK ['"\
       
 21770 -"     {last_section=section; section=\$ 3};"\
       
 21771 -"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
       
 21772 -"     \$ 0!~/External *\|/{next};"\
       
 21773 -"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
       
 21774 -"     {if(hide[section]) next};"\
       
 21775 -"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
       
 21776 -"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
       
 21777 -"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
       
 21778 -"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
       
 21779 -"     ' prfx=^$ac_symprfx]"
       
 21780 -  else
       
 21781 -    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
       
 21782 -  fi
       
 21783 -
       
 21784 -  # Check to see that the pipe works correctly.
       
 21785 -  pipe_works=no
       
 21786 -
       
 21787 -  rm -f conftest*
       
 21788 -  cat > conftest.$ac_ext <<_LT_EOF
       
 21789 -#ifdef __cplusplus
       
 21790 -extern "C" {
       
 21791 -#endif
       
 21792 -char nm_test_var;
       
 21793 -void nm_test_func(void);
       
 21794 -void nm_test_func(void){}
       
 21795 -#ifdef __cplusplus
       
 21796 -}
       
 21797 -#endif
       
 21798 -int main(){nm_test_var='a';nm_test_func();return(0);}
       
 21799 -_LT_EOF
       
 21800 -
       
 21801 -  if AC_TRY_EVAL(ac_compile); then
       
 21802 -    # Now try to grab the symbols.
       
 21803 -    nlist=conftest.nm
       
 21804 -    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
       
 21805 -      # Try sorting and uniquifying the output.
       
 21806 -      if sort "$nlist" | uniq > "$nlist"T; then
       
 21807 -	mv -f "$nlist"T "$nlist"
       
 21808 -      else
       
 21809 -	rm -f "$nlist"T
       
 21810 -      fi
       
 21811 -
       
 21812 -      # Make sure that we snagged all the symbols we need.
       
 21813 -      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
       
 21814 -	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
       
 21815 -	  cat <<_LT_EOF > conftest.$ac_ext
       
 21816 -#ifdef __cplusplus
       
 21817 -extern "C" {
       
 21818 -#endif
       
 21819 -
       
 21820 -_LT_EOF
       
 21821 -	  # Now generate the symbol file.
       
 21822 -	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
       
 21823 -
       
 21824 -	  cat <<_LT_EOF >> conftest.$ac_ext
       
 21825 -
       
 21826 -/* The mapping between symbol names and symbols.  */
       
 21827 -const struct {
       
 21828 -  const char *name;
       
 21829 -  void       *address;
       
 21830 -}
       
 21831 -lt__PROGRAM__LTX_preloaded_symbols[[]] =
       
 21832 -{
       
 21833 -  { "@PROGRAM@", (void *) 0 },
       
 21834 -_LT_EOF
       
 21835 -	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
       
 21836 -	  cat <<\_LT_EOF >> conftest.$ac_ext
       
 21837 -  {0, (void *) 0}
       
 21838 -};
       
 21839 -
       
 21840 -/* This works around a problem in FreeBSD linker */
       
 21841 -#ifdef FREEBSD_WORKAROUND
       
 21842 -static const void *lt_preloaded_setup() {
       
 21843 -  return lt__PROGRAM__LTX_preloaded_symbols;
       
 21844 -}
       
 21845 -#endif
       
 21846 -
       
 21847 -#ifdef __cplusplus
       
 21848 -}
       
 21849 -#endif
       
 21850 -_LT_EOF
       
 21851 -	  # Now try linking the two files.
       
 21852 -	  mv conftest.$ac_objext conftstm.$ac_objext
       
 21853 -	  lt_save_LIBS="$LIBS"
       
 21854 -	  lt_save_CFLAGS="$CFLAGS"
       
 21855 -	  LIBS="conftstm.$ac_objext"
       
 21856 -	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
       
 21857 -	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
       
 21858 -	    pipe_works=yes
       
 21859 -	  fi
       
 21860 -	  LIBS="$lt_save_LIBS"
       
 21861 -	  CFLAGS="$lt_save_CFLAGS"
       
 21862 -	else
       
 21863 -	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
       
 21864 -	fi
       
 21865 -      else
       
 21866 -	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
       
 21867 -      fi
       
 21868 -    else
       
 21869 -      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
       
 21870 -    fi
       
 21871 -  else
       
 21872 -    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
       
 21873 -    cat conftest.$ac_ext >&5
       
 21874 -  fi
       
 21875 -  rm -rf conftest* conftst*
       
 21876 -
       
 21877 -  # Do not use the global_symbol_pipe unless it works.
       
 21878 -  if test "$pipe_works" = yes; then
       
 21879 -    break
       
 21880 -  else
       
 21881 -    lt_cv_sys_global_symbol_pipe=
       
 21882 -  fi
       
 21883 -done
       
 21884 -])
       
 21885 -if test -z "$lt_cv_sys_global_symbol_pipe"; then
       
 21886 -  lt_cv_sys_global_symbol_to_cdecl=
       
 21887 -fi
       
 21888 -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
       
 21889 -  AC_MSG_RESULT(failed)
       
 21890 -else
       
 21891 -  AC_MSG_RESULT(ok)
       
 21892 -fi
       
 21893 -
       
 21894 -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
       
 21895 -    [Take the output of nm and produce a listing of raw symbols and C names])
       
 21896 -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
       
 21897 -    [Transform the output of nm in a proper C declaration])
       
 21898 -_LT_DECL([global_symbol_to_c_name_address],
       
 21899 -    [lt_cv_sys_global_symbol_to_c_name_address], [1],
       
 21900 -    [Transform the output of nm in a C name address pair])
       
 21901 -_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
       
 21902 -    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
       
 21903 -    [Transform the output of nm in a C name address pair when lib prefix is needed])
       
 21904 -]) # _LT_CMD_GLOBAL_SYMBOLS
       
 21905 -
       
 21906 -
       
 21907 -# _LT_COMPILER_PIC([TAGNAME])
       
 21908 -# ---------------------------
       
 21909 -m4_defun([_LT_COMPILER_PIC],
       
 21910 -[m4_require([_LT_TAG_COMPILER])dnl
       
 21911 -_LT_TAGVAR(lt_prog_compiler_wl, $1)=
       
 21912 -_LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 21913 -_LT_TAGVAR(lt_prog_compiler_static, $1)=
       
 21914 -
       
 21915 -AC_MSG_CHECKING([for $compiler option to produce PIC])
       
 21916 -m4_if([$1], [CXX], [
       
 21917 -  # C++ specific cases for pic, static, wl, etc.
       
 21918 -  if test "$GXX" = yes; then
       
 21919 -    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 21920 -    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 21921 -
       
 21922 -    case $host_os in
       
 21923 -    aix*)
       
 21924 -      # All AIX code is PIC.
       
 21925 -      if test "$host_cpu" = ia64; then
       
 21926 -	# AIX 5 now supports IA64 processor
       
 21927 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 21928 -      fi
       
 21929 -      ;;
       
 21930 -
       
 21931 -    amigaos*)
       
 21932 -      case $host_cpu in
       
 21933 -      powerpc)
       
 21934 -            # see comment about AmigaOS4 .so support
       
 21935 -            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 21936 -        ;;
       
 21937 -      m68k)
       
 21938 -            # FIXME: we need at least 68020 code to build shared libraries, but
       
 21939 -            # adding the `-m68020' flag to GCC prevents building anything better,
       
 21940 -            # like `-m68040'.
       
 21941 -            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
       
 21942 -        ;;
       
 21943 -      esac
       
 21944 -      ;;
       
 21945 -
       
 21946 -    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       
 21947 -      # PIC is the default for these OSes.
       
 21948 -      ;;
       
 21949 -    mingw* | cygwin* | os2* | pw32* | cegcc*)
       
 21950 -      # This hack is so that the source file can tell whether it is being
       
 21951 -      # built for inclusion in a dll (and should export symbols for example).
       
 21952 -      # Although the cygwin gcc ignores -fPIC, still need this for old-style
       
 21953 -      # (--disable-auto-import) libraries
       
 21954 -      m4_if([$1], [GCJ], [],
       
 21955 -	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       
 21956 -      ;;
       
 21957 -    darwin* | rhapsody*)
       
 21958 -      # PIC is the default on this platform
       
 21959 -      # Common symbols not allowed in MH_DYLIB files
       
 21960 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
       
 21961 -      ;;
       
 21962 -    *djgpp*)
       
 21963 -      # DJGPP does not support shared libraries at all
       
 21964 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 21965 -      ;;
       
 21966 -    interix[[3-9]]*)
       
 21967 -      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       
 21968 -      # Instead, we relocate shared libraries at runtime.
       
 21969 -      ;;
       
 21970 -    sysv4*MP*)
       
 21971 -      if test -d /usr/nec; then
       
 21972 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
       
 21973 -      fi
       
 21974 -      ;;
       
 21975 -    hpux*)
       
 21976 -      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
       
 21977 -      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
       
 21978 -      # sets the default TLS model and affects inlining.
       
 21979 -      case $host_cpu in
       
 21980 -      hppa*64*)
       
 21981 -	;;
       
 21982 -      *)
       
 21983 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 21984 -	;;
       
 21985 -      esac
       
 21986 -      ;;
       
 21987 -    *qnx* | *nto*)
       
 21988 -      # QNX uses GNU C++, but need to define -shared option too, otherwise
       
 21989 -      # it will coredump.
       
 21990 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
       
 21991 -      ;;
       
 21992 -    *)
       
 21993 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 21994 -      ;;
       
 21995 -    esac
       
 21996 -  else
       
 21997 -    case $host_os in
       
 21998 -      aix[[4-9]]*)
       
 21999 -	# All AIX code is PIC.
       
 22000 -	if test "$host_cpu" = ia64; then
       
 22001 -	  # AIX 5 now supports IA64 processor
       
 22002 -	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22003 -	else
       
 22004 -	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
       
 22005 -	fi
       
 22006 -	;;
       
 22007 -      chorus*)
       
 22008 -	case $cc_basename in
       
 22009 -	cxch68*)
       
 22010 -	  # Green Hills C++ Compiler
       
 22011 -	  # _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"
       
 22012 -	  ;;
       
 22013 -	esac
       
 22014 -	;;
       
 22015 -      dgux*)
       
 22016 -	case $cc_basename in
       
 22017 -	  ec++*)
       
 22018 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22019 -	    ;;
       
 22020 -	  ghcx*)
       
 22021 -	    # Green Hills C++ Compiler
       
 22022 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
       
 22023 -	    ;;
       
 22024 -	  *)
       
 22025 -	    ;;
       
 22026 -	esac
       
 22027 -	;;
       
 22028 -      freebsd* | dragonfly*)
       
 22029 -	# FreeBSD uses GNU C++
       
 22030 -	;;
       
 22031 -      hpux9* | hpux10* | hpux11*)
       
 22032 -	case $cc_basename in
       
 22033 -	  CC*)
       
 22034 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22035 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
       
 22036 -	    if test "$host_cpu" != ia64; then
       
 22037 -	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
       
 22038 -	    fi
       
 22039 -	    ;;
       
 22040 -	  aCC*)
       
 22041 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22042 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
       
 22043 -	    case $host_cpu in
       
 22044 -	    hppa*64*|ia64*)
       
 22045 -	      # +Z the default
       
 22046 -	      ;;
       
 22047 -	    *)
       
 22048 -	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
       
 22049 -	      ;;
       
 22050 -	    esac
       
 22051 -	    ;;
       
 22052 -	  *)
       
 22053 -	    ;;
       
 22054 -	esac
       
 22055 -	;;
       
 22056 -      interix*)
       
 22057 -	# This is c89, which is MS Visual C++ (no shared libs)
       
 22058 -	# Anyone wants to do a port?
       
 22059 -	;;
       
 22060 -      irix5* | irix6* | nonstopux*)
       
 22061 -	case $cc_basename in
       
 22062 -	  CC*)
       
 22063 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22064 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 22065 -	    # CC pic flag -KPIC is the default.
       
 22066 -	    ;;
       
 22067 -	  *)
       
 22068 -	    ;;
       
 22069 -	esac
       
 22070 -	;;
       
 22071 -      linux* | k*bsd*-gnu)
       
 22072 -	case $cc_basename in
       
 22073 -	  KCC*)
       
 22074 -	    # KAI C++ Compiler
       
 22075 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
       
 22076 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 22077 -	    ;;
       
 22078 -	  ecpc* )
       
 22079 -	    # old Intel C++ for x86_64 which still supported -KPIC.
       
 22080 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22081 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22082 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 22083 -	    ;;
       
 22084 -	  icpc* )
       
 22085 -	    # Intel C++, used to be incompatible with GCC.
       
 22086 -	    # ICC 10 doesn't accept -KPIC any more.
       
 22087 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22088 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 22089 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 22090 -	    ;;
       
 22091 -	  pgCC* | pgcpp*)
       
 22092 -	    # Portland Group C++ compiler
       
 22093 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22094 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
       
 22095 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22096 -	    ;;
       
 22097 -	  cxx*)
       
 22098 -	    # Compaq C++
       
 22099 -	    # Make sure the PIC flag is empty.  It appears that all Alpha
       
 22100 -	    # Linux and Compaq Tru64 Unix objects are PIC.
       
 22101 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 22102 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 22103 -	    ;;
       
 22104 -	  xlc* | xlC*)
       
 22105 -	    # IBM XL 8.0 on PPC
       
 22106 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22107 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
       
 22108 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
       
 22109 -	    ;;
       
 22110 -	  *)
       
 22111 -	    case `$CC -V 2>&1 | sed 5q` in
       
 22112 -	    *Sun\ C*)
       
 22113 -	      # Sun C++ 5.9
       
 22114 -	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22115 -	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22116 -	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
       
 22117 -	      ;;
       
 22118 -	    esac
       
 22119 -	    ;;
       
 22120 -	esac
       
 22121 -	;;
       
 22122 -      lynxos*)
       
 22123 -	;;
       
 22124 -      m88k*)
       
 22125 -	;;
       
 22126 -      mvs*)
       
 22127 -	case $cc_basename in
       
 22128 -	  cxx*)
       
 22129 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
       
 22130 -	    ;;
       
 22131 -	  *)
       
 22132 -	    ;;
       
 22133 -	esac
       
 22134 -	;;
       
 22135 -      netbsd*)
       
 22136 -	;;
       
 22137 -      *qnx* | *nto*)
       
 22138 -        # QNX uses GNU C++, but need to define -shared option too, otherwise
       
 22139 -        # it will coredump.
       
 22140 -        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
       
 22141 -        ;;
       
 22142 -      osf3* | osf4* | osf5*)
       
 22143 -	case $cc_basename in
       
 22144 -	  KCC*)
       
 22145 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
       
 22146 -	    ;;
       
 22147 -	  RCC*)
       
 22148 -	    # Rational C++ 2.4.1
       
 22149 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
       
 22150 -	    ;;
       
 22151 -	  cxx*)
       
 22152 -	    # Digital/Compaq C++
       
 22153 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22154 -	    # Make sure the PIC flag is empty.  It appears that all Alpha
       
 22155 -	    # Linux and Compaq Tru64 Unix objects are PIC.
       
 22156 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 22157 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 22158 -	    ;;
       
 22159 -	  *)
       
 22160 -	    ;;
       
 22161 -	esac
       
 22162 -	;;
       
 22163 -      psos*)
       
 22164 -	;;
       
 22165 -      solaris*)
       
 22166 -	case $cc_basename in
       
 22167 -	  CC*)
       
 22168 -	    # Sun C++ 4.2, 5.x and Centerline C++
       
 22169 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22170 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22171 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
       
 22172 -	    ;;
       
 22173 -	  gcx*)
       
 22174 -	    # Green Hills C++ Compiler
       
 22175 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
       
 22176 -	    ;;
       
 22177 -	  *)
       
 22178 -	    ;;
       
 22179 -	esac
       
 22180 -	;;
       
 22181 -      sunos4*)
       
 22182 -	case $cc_basename in
       
 22183 -	  CC*)
       
 22184 -	    # Sun C++ 4.x
       
 22185 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
       
 22186 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22187 -	    ;;
       
 22188 -	  lcc*)
       
 22189 -	    # Lucid
       
 22190 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
       
 22191 -	    ;;
       
 22192 -	  *)
       
 22193 -	    ;;
       
 22194 -	esac
       
 22195 -	;;
       
 22196 -      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
       
 22197 -	case $cc_basename in
       
 22198 -	  CC*)
       
 22199 -	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22200 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22201 -	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22202 -	    ;;
       
 22203 -	esac
       
 22204 -	;;
       
 22205 -      tandem*)
       
 22206 -	case $cc_basename in
       
 22207 -	  NCC*)
       
 22208 -	    # NonStop-UX NCC 3.20
       
 22209 -	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22210 -	    ;;
       
 22211 -	  *)
       
 22212 -	    ;;
       
 22213 -	esac
       
 22214 -	;;
       
 22215 -      vxworks*)
       
 22216 -	;;
       
 22217 -      *)
       
 22218 -	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
       
 22219 -	;;
       
 22220 -    esac
       
 22221 -  fi
       
 22222 -],
       
 22223 -[
       
 22224 -  if test "$GCC" = yes; then
       
 22225 -    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22226 -    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 22227 -
       
 22228 -    case $host_os in
       
 22229 -      aix*)
       
 22230 -      # All AIX code is PIC.
       
 22231 -      if test "$host_cpu" = ia64; then
       
 22232 -	# AIX 5 now supports IA64 processor
       
 22233 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22234 -      fi
       
 22235 -      ;;
       
 22236 -
       
 22237 -    amigaos*)
       
 22238 -      case $host_cpu in
       
 22239 -      powerpc)
       
 22240 -            # see comment about AmigaOS4 .so support
       
 22241 -            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 22242 -        ;;
       
 22243 -      m68k)
       
 22244 -            # FIXME: we need at least 68020 code to build shared libraries, but
       
 22245 -            # adding the `-m68020' flag to GCC prevents building anything better,
       
 22246 -            # like `-m68040'.
       
 22247 -            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
       
 22248 -        ;;
       
 22249 -      esac
       
 22250 -      ;;
       
 22251 -
       
 22252 -    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       
 22253 -      # PIC is the default for these OSes.
       
 22254 -      ;;
       
 22255 -
       
 22256 -    mingw* | cygwin* | pw32* | os2* | cegcc*)
       
 22257 -      # This hack is so that the source file can tell whether it is being
       
 22258 -      # built for inclusion in a dll (and should export symbols for example).
       
 22259 -      # Although the cygwin gcc ignores -fPIC, still need this for old-style
       
 22260 -      # (--disable-auto-import) libraries
       
 22261 -      m4_if([$1], [GCJ], [],
       
 22262 -	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       
 22263 -      ;;
       
 22264 -
       
 22265 -    darwin* | rhapsody*)
       
 22266 -      # PIC is the default on this platform
       
 22267 -      # Common symbols not allowed in MH_DYLIB files
       
 22268 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
       
 22269 -      ;;
       
 22270 -
       
 22271 -    hpux*)
       
 22272 -      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
       
 22273 -      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
       
 22274 -      # sets the default TLS model and affects inlining.
       
 22275 -      case $host_cpu in
       
 22276 -      hppa*64*)
       
 22277 -	# +Z the default
       
 22278 -	;;
       
 22279 -      *)
       
 22280 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 22281 -	;;
       
 22282 -      esac
       
 22283 -      ;;
       
 22284 -
       
 22285 -    interix[[3-9]]*)
       
 22286 -      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       
 22287 -      # Instead, we relocate shared libraries at runtime.
       
 22288 -      ;;
       
 22289 -
       
 22290 -    msdosdjgpp*)
       
 22291 -      # Just because we use GCC doesn't mean we suddenly get shared libraries
       
 22292 -      # on systems that don't support them.
       
 22293 -      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
       
 22294 -      enable_shared=no
       
 22295 -      ;;
       
 22296 -
       
 22297 -    *nto* | *qnx*)
       
 22298 -      # QNX uses GNU C++, but need to define -shared option too, otherwise
       
 22299 -      # it will coredump.
       
 22300 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
       
 22301 -      ;;
       
 22302 -
       
 22303 -    sysv4*MP*)
       
 22304 -      if test -d /usr/nec; then
       
 22305 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
       
 22306 -      fi
       
 22307 -      ;;
       
 22308 -
       
 22309 -    *)
       
 22310 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 22311 -      ;;
       
 22312 -    esac
       
 22313 -  else
       
 22314 -    # PORTME Check for flag to pass linker flags through the system compiler.
       
 22315 -    case $host_os in
       
 22316 -    aix*)
       
 22317 -      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22318 -      if test "$host_cpu" = ia64; then
       
 22319 -	# AIX 5 now supports IA64 processor
       
 22320 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22321 -      else
       
 22322 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
       
 22323 -      fi
       
 22324 -      ;;
       
 22325 -
       
 22326 -    mingw* | cygwin* | pw32* | os2* | cegcc*)
       
 22327 -      # This hack is so that the source file can tell whether it is being
       
 22328 -      # built for inclusion in a dll (and should export symbols for example).
       
 22329 -      m4_if([$1], [GCJ], [],
       
 22330 -	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       
 22331 -      ;;
       
 22332 -
       
 22333 -    hpux9* | hpux10* | hpux11*)
       
 22334 -      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22335 -      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
       
 22336 -      # not for PA HP-UX.
       
 22337 -      case $host_cpu in
       
 22338 -      hppa*64*|ia64*)
       
 22339 -	# +Z the default
       
 22340 -	;;
       
 22341 -      *)
       
 22342 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
       
 22343 -	;;
       
 22344 -      esac
       
 22345 -      # Is there a better lt_prog_compiler_static that works with the bundled CC?
       
 22346 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
       
 22347 -      ;;
       
 22348 -
       
 22349 -    irix5* | irix6* | nonstopux*)
       
 22350 -      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22351 -      # PIC (with -KPIC) is the default.
       
 22352 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 22353 -      ;;
       
 22354 -
       
 22355 -    linux* | k*bsd*-gnu)
       
 22356 -      case $cc_basename in
       
 22357 -      # old Intel for x86_64 which still supported -KPIC.
       
 22358 -      ecc*)
       
 22359 -	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22360 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22361 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 22362 -        ;;
       
 22363 -      # icc used to be incompatible with GCC.
       
 22364 -      # ICC 10 doesn't accept -KPIC any more.
       
 22365 -      icc* | ifort*)
       
 22366 -	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22367 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 22368 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 22369 -        ;;
       
 22370 -      # Lahey Fortran 8.1.
       
 22371 -      lf95*)
       
 22372 -	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22373 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
       
 22374 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
       
 22375 -	;;
       
 22376 -      pgcc* | pgf77* | pgf90* | pgf95*)
       
 22377 -        # Portland Group compilers (*not* the Pentium gcc compiler,
       
 22378 -	# which looks to be a dead project)
       
 22379 -	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22380 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
       
 22381 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22382 -        ;;
       
 22383 -      ccc*)
       
 22384 -        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22385 -        # All Alpha code is PIC.
       
 22386 -        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 22387 -        ;;
       
 22388 -      xl*)
       
 22389 -	# IBM XL C 8.0/Fortran 10.1 on PPC
       
 22390 -	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22391 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
       
 22392 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
       
 22393 -	;;
       
 22394 -      *)
       
 22395 -	case `$CC -V 2>&1 | sed 5q` in
       
 22396 -	*Sun\ C*)
       
 22397 -	  # Sun C 5.9
       
 22398 -	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22399 -	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22400 -	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22401 -	  ;;
       
 22402 -	*Sun\ F*)
       
 22403 -	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
       
 22404 -	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22405 -	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22406 -	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
       
 22407 -	  ;;
       
 22408 -	esac
       
 22409 -	;;
       
 22410 -      esac
       
 22411 -      ;;
       
 22412 -
       
 22413 -    newsos6)
       
 22414 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22415 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22416 -      ;;
       
 22417 -
       
 22418 -    *nto* | *qnx*)
       
 22419 -      # QNX uses GNU C++, but need to define -shared option too, otherwise
       
 22420 -      # it will coredump.
       
 22421 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
       
 22422 -      ;;
       
 22423 -
       
 22424 -    osf3* | osf4* | osf5*)
       
 22425 -      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22426 -      # All OSF/1 code is PIC.
       
 22427 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 22428 -      ;;
       
 22429 -
       
 22430 -    rdos*)
       
 22431 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 22432 -      ;;
       
 22433 -
       
 22434 -    solaris*)
       
 22435 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22436 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22437 -      case $cc_basename in
       
 22438 -      f77* | f90* | f95*)
       
 22439 -	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
       
 22440 -      *)
       
 22441 -	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
       
 22442 -      esac
       
 22443 -      ;;
       
 22444 -
       
 22445 -    sunos4*)
       
 22446 -      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
       
 22447 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
       
 22448 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22449 -      ;;
       
 22450 -
       
 22451 -    sysv4 | sysv4.2uw2* | sysv4.3*)
       
 22452 -      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22453 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22454 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22455 -      ;;
       
 22456 -
       
 22457 -    sysv4*MP*)
       
 22458 -      if test -d /usr/nec ;then
       
 22459 -	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
       
 22460 -	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22461 -      fi
       
 22462 -      ;;
       
 22463 -
       
 22464 -    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
       
 22465 -      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22466 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 22467 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22468 -      ;;
       
 22469 -
       
 22470 -    unicos*)
       
 22471 -      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 22472 -      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
       
 22473 -      ;;
       
 22474 -
       
 22475 -    uts4*)
       
 22476 -      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
       
 22477 -      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 22478 -      ;;
       
 22479 -
       
 22480 -    *)
       
 22481 -      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
       
 22482 -      ;;
       
 22483 -    esac
       
 22484 -  fi
       
 22485 -])
       
 22486 -case $host_os in
       
 22487 -  # For platforms which do not support PIC, -DPIC is meaningless:
       
 22488 -  *djgpp*)
       
 22489 -    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 22490 -    ;;
       
 22491 -  *)
       
 22492 -    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
       
 22493 -    ;;
       
 22494 -esac
       
 22495 -AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
       
 22496 -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
       
 22497 -	[How to pass a linker flag through the compiler])
       
 22498 -
       
 22499 -#
       
 22500 -# Check to make sure the PIC flag actually works.
       
 22501 -#
       
 22502 -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
       
 22503 -  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
       
 22504 -    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
       
 22505 -    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
       
 22506 -    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
       
 22507 -     "" | " "*) ;;
       
 22508 -     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
       
 22509 -     esac],
       
 22510 -    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 22511 -     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
       
 22512 -fi
       
 22513 -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
       
 22514 -	[Additional compiler flags for building library objects])
       
 22515 -
       
 22516 -#
       
 22517 -# Check to make sure the static flag actually works.
       
 22518 -#
       
 22519 -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
       
 22520 -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
       
 22521 -  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
       
 22522 -  $lt_tmp_static_flag,
       
 22523 -  [],
       
 22524 -  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
       
 22525 -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
       
 22526 -	[Compiler flag to prevent dynamic linking])
       
 22527 -])# _LT_COMPILER_PIC
       
 22528 -
       
 22529 -
       
 22530 -# _LT_LINKER_SHLIBS([TAGNAME])
       
 22531 -# ----------------------------
       
 22532 -# See if the linker supports building shared libraries.
       
 22533 -m4_defun([_LT_LINKER_SHLIBS],
       
 22534 -[AC_REQUIRE([LT_PATH_LD])dnl
       
 22535 -AC_REQUIRE([LT_PATH_NM])dnl
       
 22536 -m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 22537 -m4_require([_LT_DECL_EGREP])dnl
       
 22538 -m4_require([_LT_DECL_SED])dnl
       
 22539 -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
       
 22540 -m4_require([_LT_TAG_COMPILER])dnl
       
 22541 -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
       
 22542 -m4_if([$1], [CXX], [
       
 22543 -  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
       
 22544 -  case $host_os in
       
 22545 -  aix[[4-9]]*)
       
 22546 -    # If we're using GNU nm, then we don't want the "-C" option.
       
 22547 -    # -C means demangle to AIX nm, but means don't demangle with GNU nm
       
 22548 -    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
       
 22549 -      _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'
       
 22550 -    else
       
 22551 -      _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'
       
 22552 -    fi
       
 22553 -    ;;
       
 22554 -  pw32*)
       
 22555 -    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
       
 22556 -  ;;
       
 22557 -  cygwin* | mingw* | cegcc*)
       
 22558 -    _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'
       
 22559 -  ;;
       
 22560 -  *)
       
 22561 -    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
       
 22562 -  ;;
       
 22563 -  esac
       
 22564 -  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
       
 22565 -], [
       
 22566 -  runpath_var=
       
 22567 -  _LT_TAGVAR(allow_undefined_flag, $1)=
       
 22568 -  _LT_TAGVAR(always_export_symbols, $1)=no
       
 22569 -  _LT_TAGVAR(archive_cmds, $1)=
       
 22570 -  _LT_TAGVAR(archive_expsym_cmds, $1)=
       
 22571 -  _LT_TAGVAR(compiler_needs_object, $1)=no
       
 22572 -  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
       
 22573 -  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
       
 22574 -  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
       
 22575 -  _LT_TAGVAR(hardcode_automatic, $1)=no
       
 22576 -  _LT_TAGVAR(hardcode_direct, $1)=no
       
 22577 -  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
       
 22578 -  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 22579 -  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
       
 22580 -  _LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 22581 -  _LT_TAGVAR(hardcode_minus_L, $1)=no
       
 22582 -  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
       
 22583 -  _LT_TAGVAR(inherit_rpath, $1)=no
       
 22584 -  _LT_TAGVAR(link_all_deplibs, $1)=unknown
       
 22585 -  _LT_TAGVAR(module_cmds, $1)=
       
 22586 -  _LT_TAGVAR(module_expsym_cmds, $1)=
       
 22587 -  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
       
 22588 -  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
       
 22589 -  _LT_TAGVAR(thread_safe_flag_spec, $1)=
       
 22590 -  _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 22591 -  # include_expsyms should be a list of space-separated symbols to be *always*
       
 22592 -  # included in the symbol list
       
 22593 -  _LT_TAGVAR(include_expsyms, $1)=
       
 22594 -  # exclude_expsyms can be an extended regexp of symbols to exclude
       
 22595 -  # it will be wrapped by ` (' and `)$', so one must not match beginning or
       
 22596 -  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
       
 22597 -  # as well as any symbol that contains `d'.
       
 22598 -  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
       
 22599 -  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
       
 22600 -  # platforms (ab)use it in PIC code, but their linkers get confused if
       
 22601 -  # the symbol is explicitly referenced.  Since portable code cannot
       
 22602 -  # rely on this symbol name, it's probably fine to never include it in
       
 22603 -  # preloaded symbol tables.
       
 22604 -  # Exclude shared library initialization/finalization symbols.
       
 22605 -dnl Note also adjust exclude_expsyms for C++ above.
       
 22606 -  extract_expsyms_cmds=
       
 22607 -
       
 22608 -  case $host_os in
       
 22609 -  cygwin* | mingw* | pw32* | cegcc*)
       
 22610 -    # FIXME: the MSVC++ port hasn't been tested in a loooong time
       
 22611 -    # When not using gcc, we currently assume that we are using
       
 22612 -    # Microsoft Visual C++.
       
 22613 -    if test "$GCC" != yes; then
       
 22614 -      with_gnu_ld=no
       
 22615 -    fi
       
 22616 -    ;;
       
 22617 -  interix*)
       
 22618 -    # we just hope/assume this is gcc and not c89 (= MSVC++)
       
 22619 -    with_gnu_ld=yes
       
 22620 -    ;;
       
 22621 -  openbsd*)
       
 22622 -    with_gnu_ld=no
       
 22623 -    ;;
       
 22624 -  esac
       
 22625 -
       
 22626 -  _LT_TAGVAR(ld_shlibs, $1)=yes
       
 22627 -  if test "$with_gnu_ld" = yes; then
       
 22628 -    # If archive_cmds runs LD, not CC, wlarc should be empty
       
 22629 -    wlarc='${wl}'
       
 22630 -
       
 22631 -    # Set some defaults for GNU ld with shared library support. These
       
 22632 -    # are reset later if shared libraries are not supported. Putting them
       
 22633 -    # here allows them to be overridden if necessary.
       
 22634 -    runpath_var=LD_RUN_PATH
       
 22635 -    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 22636 -    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 22637 -    # ancient GNU ld didn't support --whole-archive et. al.
       
 22638 -    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
       
 22639 -      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
       
 22640 -    else
       
 22641 -      _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 22642 -    fi
       
 22643 -    supports_anon_versioning=no
       
 22644 -    case `$LD -v 2>&1` in
       
 22645 -      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
       
 22646 -      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
       
 22647 -      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
       
 22648 -      *\ 2.11.*) ;; # other 2.11 versions
       
 22649 -      *) supports_anon_versioning=yes ;;
       
 22650 -    esac
       
 22651 -
       
 22652 -    # See if GNU ld supports shared libraries.
       
 22653 -    case $host_os in
       
 22654 -    aix[[3-9]]*)
       
 22655 -      # On AIX/PPC, the GNU linker is very broken
       
 22656 -      if test "$host_cpu" != ia64; then
       
 22657 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 22658 -	cat <<_LT_EOF 1>&2
       
 22659 -
       
 22660 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported
       
 22661 -*** to be unable to reliably create shared libraries on AIX.
       
 22662 -*** Therefore, libtool is disabling shared libraries support.  If you
       
 22663 -*** really care for shared libraries, you may want to modify your PATH
       
 22664 -*** so that a non-GNU linker is found, and then restart.
       
 22665 -
       
 22666 -_LT_EOF
       
 22667 -      fi
       
 22668 -      ;;
       
 22669 -
       
 22670 -    amigaos*)
       
 22671 -      case $host_cpu in
       
 22672 -      powerpc)
       
 22673 -            # see comment about AmigaOS4 .so support
       
 22674 -            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 22675 -            _LT_TAGVAR(archive_expsym_cmds, $1)=''
       
 22676 -        ;;
       
 22677 -      m68k)
       
 22678 -            _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)'
       
 22679 -            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 22680 -            _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 22681 -        ;;
       
 22682 -      esac
       
 22683 -      ;;
       
 22684 -
       
 22685 -    beos*)
       
 22686 -      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
       
 22687 -	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 22688 -	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
       
 22689 -	# support --undefined.  This deserves some investigation.  FIXME
       
 22690 -	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 22691 -      else
       
 22692 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 22693 -      fi
       
 22694 -      ;;
       
 22695 -
       
 22696 -    cygwin* | mingw* | pw32* | cegcc*)
       
 22697 -      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       
 22698 -      # as there is no search path for DLLs.
       
 22699 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 22700 -      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 22701 -      _LT_TAGVAR(always_export_symbols, $1)=no
       
 22702 -      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 22703 -      _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'
       
 22704 -
       
 22705 -      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
       
 22706 -        _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'
       
 22707 -	# If the export-symbols file already is a .def file (1st line
       
 22708 -	# is EXPORTS), use it as is; otherwise, prepend...
       
 22709 -	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
       
 22710 -	  cp $export_symbols $output_objdir/$soname.def;
       
 22711 -	else
       
 22712 -	  echo EXPORTS > $output_objdir/$soname.def;
       
 22713 -	  cat $export_symbols >> $output_objdir/$soname.def;
       
 22714 -	fi~
       
 22715 -	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       
 22716 -      else
       
 22717 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 22718 -      fi
       
 22719 -      ;;
       
 22720 -
       
 22721 -    interix[[3-9]]*)
       
 22722 -      _LT_TAGVAR(hardcode_direct, $1)=no
       
 22723 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 22724 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 22725 -      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 22726 -      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       
 22727 -      # Instead, shared libraries are loaded at an image base (0x10000000 by
       
 22728 -      # default) and relocated if they conflict, which is a slow very memory
       
 22729 -      # consuming and fragmenting process.  To avoid this, we pick a random,
       
 22730 -      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       
 22731 -      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
       
 22732 -      _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'
       
 22733 -      _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'
       
 22734 -      ;;
       
 22735 -
       
 22736 -    gnu* | linux* | tpf* | k*bsd*-gnu)
       
 22737 -      tmp_diet=no
       
 22738 -      if test "$host_os" = linux-dietlibc; then
       
 22739 -	case $cc_basename in
       
 22740 -	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
       
 22741 -	esac
       
 22742 -      fi
       
 22743 -      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
       
 22744 -	 && test "$tmp_diet" = no
       
 22745 -      then
       
 22746 -	tmp_addflag=
       
 22747 -	tmp_sharedflag='-shared'
       
 22748 -	case $cc_basename,$host_cpu in
       
 22749 -        pgcc*)				# Portland Group C compiler
       
 22750 -	  _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'
       
 22751 -	  tmp_addflag=' $pic_flag'
       
 22752 -	  ;;
       
 22753 -	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
       
 22754 -	  _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'
       
 22755 -	  tmp_addflag=' $pic_flag -Mnomain' ;;
       
 22756 -	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
       
 22757 -	  tmp_addflag=' -i_dynamic' ;;
       
 22758 -	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
       
 22759 -	  tmp_addflag=' -i_dynamic -nofor_main' ;;
       
 22760 -	ifc* | ifort*)			# Intel Fortran compiler
       
 22761 -	  tmp_addflag=' -nofor_main' ;;
       
 22762 -	lf95*)				# Lahey Fortran 8.1
       
 22763 -	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 22764 -	  tmp_sharedflag='--shared' ;;
       
 22765 -	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
       
 22766 -	  tmp_sharedflag='-qmkshrobj'
       
 22767 -	  tmp_addflag= ;;
       
 22768 -	esac
       
 22769 -	case `$CC -V 2>&1 | sed 5q` in
       
 22770 -	*Sun\ C*)			# Sun C 5.9
       
 22771 -	  _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'
       
 22772 -	  _LT_TAGVAR(compiler_needs_object, $1)=yes
       
 22773 -	  tmp_sharedflag='-G' ;;
       
 22774 -	*Sun\ F*)			# Sun Fortran 8.3
       
 22775 -	  tmp_sharedflag='-G' ;;
       
 22776 -	esac
       
 22777 -	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 22778 -
       
 22779 -        if test "x$supports_anon_versioning" = xyes; then
       
 22780 -          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
       
 22781 -	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
       
 22782 -	    echo "local: *; };" >> $output_objdir/$libname.ver~
       
 22783 -	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
       
 22784 -        fi
       
 22785 -
       
 22786 -	case $cc_basename in
       
 22787 -	xlf*)
       
 22788 -	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
       
 22789 -	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
       
 22790 -	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 22791 -	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
       
 22792 -	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
       
 22793 -	  if test "x$supports_anon_versioning" = xyes; then
       
 22794 -	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
       
 22795 -	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
       
 22796 -	      echo "local: *; };" >> $output_objdir/$libname.ver~
       
 22797 -	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
       
 22798 -	  fi
       
 22799 -	  ;;
       
 22800 -	esac
       
 22801 -      else
       
 22802 -        _LT_TAGVAR(ld_shlibs, $1)=no
       
 22803 -      fi
       
 22804 -      ;;
       
 22805 -
       
 22806 -    netbsd*)
       
 22807 -      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
       
 22808 -	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
       
 22809 -	wlarc=
       
 22810 -      else
       
 22811 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 22812 -	_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'
       
 22813 -      fi
       
 22814 -      ;;
       
 22815 -
       
 22816 -    solaris*)
       
 22817 -      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
       
 22818 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 22819 -	cat <<_LT_EOF 1>&2
       
 22820 -
       
 22821 -*** Warning: The releases 2.8.* of the GNU linker cannot reliably
       
 22822 -*** create shared libraries on Solaris systems.  Therefore, libtool
       
 22823 -*** is disabling shared libraries support.  We urge you to upgrade GNU
       
 22824 -*** binutils to release 2.9.1 or newer.  Another option is to modify
       
 22825 -*** your PATH or compiler configuration so that the native linker is
       
 22826 -*** used, and then restart.
       
 22827 -
       
 22828 -_LT_EOF
       
 22829 -      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
       
 22830 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 22831 -	_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'
       
 22832 -      else
       
 22833 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 22834 -      fi
       
 22835 -      ;;
       
 22836 -
       
 22837 -    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
       
 22838 -      case `$LD -v 2>&1` in
       
 22839 -        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
       
 22840 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 22841 -	cat <<_LT_EOF 1>&2
       
 22842 -
       
 22843 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
       
 22844 -*** reliably create shared libraries on SCO systems.  Therefore, libtool
       
 22845 -*** is disabling shared libraries support.  We urge you to upgrade GNU
       
 22846 -*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
       
 22847 -*** your PATH or compiler configuration so that the native linker is
       
 22848 -*** used, and then restart.
       
 22849 -
       
 22850 -_LT_EOF
       
 22851 -	;;
       
 22852 -	*)
       
 22853 -	  # For security reasons, it is highly recommended that you always
       
 22854 -	  # use absolute paths for naming shared libraries, and exclude the
       
 22855 -	  # DT_RUNPATH tag from executables and libraries.  But doing so
       
 22856 -	  # requires that you compile everything twice, which is a pain.
       
 22857 -	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
       
 22858 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 22859 -	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 22860 -	    _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'
       
 22861 -	  else
       
 22862 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 22863 -	  fi
       
 22864 -	;;
       
 22865 -      esac
       
 22866 -      ;;
       
 22867 -
       
 22868 -    sunos4*)
       
 22869 -      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       
 22870 -      wlarc=
       
 22871 -      _LT_TAGVAR(hardcode_direct, $1)=yes
       
 22872 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 22873 -      ;;
       
 22874 -
       
 22875 -    *)
       
 22876 -      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
       
 22877 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 22878 -	_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'
       
 22879 -      else
       
 22880 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 22881 -      fi
       
 22882 -      ;;
       
 22883 -    esac
       
 22884 -
       
 22885 -    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
       
 22886 -      runpath_var=
       
 22887 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 22888 -      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
       
 22889 -      _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 22890 -    fi
       
 22891 -  else
       
 22892 -    # PORTME fill in a description of your system's linker (not GNU ld)
       
 22893 -    case $host_os in
       
 22894 -    aix3*)
       
 22895 -      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 22896 -      _LT_TAGVAR(always_export_symbols, $1)=yes
       
 22897 -      _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'
       
 22898 -      # Note: this linker hardcodes the directories in LIBPATH if there
       
 22899 -      # are no directories specified by -L.
       
 22900 -      _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 22901 -      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
       
 22902 -	# Neither direct hardcoding nor static linking is supported with a
       
 22903 -	# broken collect2.
       
 22904 -	_LT_TAGVAR(hardcode_direct, $1)=unsupported
       
 22905 -      fi
       
 22906 -      ;;
       
 22907 -
       
 22908 -    aix[[4-9]]*)
       
 22909 -      if test "$host_cpu" = ia64; then
       
 22910 -	# On IA64, the linker does run time linking by default, so we don't
       
 22911 -	# have to do anything special.
       
 22912 -	aix_use_runtimelinking=no
       
 22913 -	exp_sym_flag='-Bexport'
       
 22914 -	no_entry_flag=""
       
 22915 -      else
       
 22916 -	# If we're using GNU nm, then we don't want the "-C" option.
       
 22917 -	# -C means demangle to AIX nm, but means don't demangle with GNU nm
       
 22918 -	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
       
 22919 -	  _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'
       
 22920 -	else
       
 22921 -	  _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'
       
 22922 -	fi
       
 22923 -	aix_use_runtimelinking=no
       
 22924 -
       
 22925 -	# Test if we are trying to use run time linking or normal
       
 22926 -	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
       
 22927 -	# need to do runtime linking.
       
 22928 -	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
       
 22929 -	  for ld_flag in $LDFLAGS; do
       
 22930 -	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
       
 22931 -	    aix_use_runtimelinking=yes
       
 22932 -	    break
       
 22933 -	  fi
       
 22934 -	  done
       
 22935 -	  ;;
       
 22936 -	esac
       
 22937 -
       
 22938 -	exp_sym_flag='-bexport'
       
 22939 -	no_entry_flag='-bnoentry'
       
 22940 -      fi
       
 22941 -
       
 22942 -      # When large executables or shared objects are built, AIX ld can
       
 22943 -      # have problems creating the table of contents.  If linking a library
       
 22944 -      # or program results in "error TOC overflow" add -mminimal-toc to
       
 22945 -      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
       
 22946 -      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
       
 22947 -
       
 22948 -      _LT_TAGVAR(archive_cmds, $1)=''
       
 22949 -      _LT_TAGVAR(hardcode_direct, $1)=yes
       
 22950 -      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       
 22951 -      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       
 22952 -      _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 22953 -      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
       
 22954 -
       
 22955 -      if test "$GCC" = yes; then
       
 22956 -	case $host_os in aix4.[[012]]|aix4.[[012]].*)
       
 22957 -	# We only want to do this on AIX 4.2 and lower, the check
       
 22958 -	# below for broken collect2 doesn't work under 4.3+
       
 22959 -	  collect2name=`${CC} -print-prog-name=collect2`
       
 22960 -	  if test -f "$collect2name" &&
       
 22961 -	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
       
 22962 -	  then
       
 22963 -	  # We have reworked collect2
       
 22964 -	  :
       
 22965 -	  else
       
 22966 -	  # We have old collect2
       
 22967 -	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
       
 22968 -	  # It fails to find uninstalled libraries when the uninstalled
       
 22969 -	  # path is not listed in the libpath.  Setting hardcode_minus_L
       
 22970 -	  # to unsupported forces relinking
       
 22971 -	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 22972 -	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 22973 -	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 22974 -	  fi
       
 22975 -	  ;;
       
 22976 -	esac
       
 22977 -	shared_flag='-shared'
       
 22978 -	if test "$aix_use_runtimelinking" = yes; then
       
 22979 -	  shared_flag="$shared_flag "'${wl}-G'
       
 22980 -	fi
       
 22981 -      else
       
 22982 -	# not using gcc
       
 22983 -	if test "$host_cpu" = ia64; then
       
 22984 -	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
       
 22985 -	# chokes on -Wl,-G. The following line is correct:
       
 22986 -	  shared_flag='-G'
       
 22987 -	else
       
 22988 -	  if test "$aix_use_runtimelinking" = yes; then
       
 22989 -	    shared_flag='${wl}-G'
       
 22990 -	  else
       
 22991 -	    shared_flag='${wl}-bM:SRE'
       
 22992 -	  fi
       
 22993 -	fi
       
 22994 -      fi
       
 22995 -
       
 22996 -      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
       
 22997 -      # It seems that -bexpall does not export symbols beginning with
       
 22998 -      # underscore (_), so it is better to generate a list of symbols to export.
       
 22999 -      _LT_TAGVAR(always_export_symbols, $1)=yes
       
 23000 -      if test "$aix_use_runtimelinking" = yes; then
       
 23001 -	# Warning - without using the other runtime loading flags (-brtl),
       
 23002 -	# -berok will link without error, but may produce a broken library.
       
 23003 -	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
       
 23004 -        # Determine the default libpath from the value encoded in an
       
 23005 -        # empty executable.
       
 23006 -        _LT_SYS_MODULE_PATH_AIX
       
 23007 -        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 23008 -        _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"
       
 23009 -      else
       
 23010 -	if test "$host_cpu" = ia64; then
       
 23011 -	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
       
 23012 -	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
       
 23013 -	  _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"
       
 23014 -	else
       
 23015 -	 # Determine the default libpath from the value encoded in an
       
 23016 -	 # empty executable.
       
 23017 -	 _LT_SYS_MODULE_PATH_AIX
       
 23018 -	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 23019 -	  # Warning - without using the other run time loading flags,
       
 23020 -	  # -berok will link without error, but may produce a broken library.
       
 23021 -	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
       
 23022 -	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
       
 23023 -	  # Exported symbols can be pulled into shared objects from archives
       
 23024 -	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
       
 23025 -	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
       
 23026 -	  # This is similar to how AIX traditionally builds its shared libraries.
       
 23027 -	  _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'
       
 23028 -	fi
       
 23029 -      fi
       
 23030 -      ;;
       
 23031 -
       
 23032 -    amigaos*)
       
 23033 -      case $host_cpu in
       
 23034 -      powerpc)
       
 23035 -            # see comment about AmigaOS4 .so support
       
 23036 -            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 23037 -            _LT_TAGVAR(archive_expsym_cmds, $1)=''
       
 23038 -        ;;
       
 23039 -      m68k)
       
 23040 -            _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)'
       
 23041 -            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 23042 -            _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 23043 -        ;;
       
 23044 -      esac
       
 23045 -      ;;
       
 23046 -
       
 23047 -    bsdi[[45]]*)
       
 23048 -      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
       
 23049 -      ;;
       
 23050 -
       
 23051 -    cygwin* | mingw* | pw32* | cegcc*)
       
 23052 -      # When not using gcc, we currently assume that we are using
       
 23053 -      # Microsoft Visual C++.
       
 23054 -      # hardcode_libdir_flag_spec is actually meaningless, as there is
       
 23055 -      # no search path for DLLs.
       
 23056 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
       
 23057 -      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 23058 -      # Tell ltmain to make .lib files, not .a files.
       
 23059 -      libext=lib
       
 23060 -      # Tell ltmain to make .dll files, not .so files.
       
 23061 -      shrext_cmds=".dll"
       
 23062 -      # FIXME: Setting linknames here is a bad hack.
       
 23063 -      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
       
 23064 -      # The linker will automatically build a .lib file if we build a DLL.
       
 23065 -      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
       
 23066 -      # FIXME: Should let the user specify the lib program.
       
 23067 -      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
       
 23068 -      _LT_TAGVAR(fix_srcfile_path, $1)=''
       
 23069 -      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 23070 -      ;;
       
 23071 -
       
 23072 -    darwin* | rhapsody*)
       
 23073 -      _LT_DARWIN_LINKER_FEATURES($1)
       
 23074 -      ;;
       
 23075 -
       
 23076 -    dgux*)
       
 23077 -      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 23078 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 23079 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23080 -      ;;
       
 23081 -
       
 23082 -    freebsd1*)
       
 23083 -      _LT_TAGVAR(ld_shlibs, $1)=no
       
 23084 -      ;;
       
 23085 -
       
 23086 -    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
       
 23087 -    # support.  Future versions do this automatically, but an explicit c++rt0.o
       
 23088 -    # does not break anything, and helps significantly (at the cost of a little
       
 23089 -    # extra space).
       
 23090 -    freebsd2.2*)
       
 23091 -      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
       
 23092 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 23093 -      _LT_TAGVAR(hardcode_direct, $1)=yes
       
 23094 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23095 -      ;;
       
 23096 -
       
 23097 -    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
       
 23098 -    freebsd2*)
       
 23099 -      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       
 23100 -      _LT_TAGVAR(hardcode_direct, $1)=yes
       
 23101 -      _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 23102 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23103 -      ;;
       
 23104 -
       
 23105 -    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
       
 23106 -    freebsd* | dragonfly*)
       
 23107 -      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
       
 23108 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 23109 -      _LT_TAGVAR(hardcode_direct, $1)=yes
       
 23110 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23111 -      ;;
       
 23112 -
       
 23113 -    hpux9*)
       
 23114 -      if test "$GCC" = yes; then
       
 23115 -	_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'
       
 23116 -      else
       
 23117 -	_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'
       
 23118 -      fi
       
 23119 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       
 23120 -      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 23121 -      _LT_TAGVAR(hardcode_direct, $1)=yes
       
 23122 -
       
 23123 -      # hardcode_minus_L: Not really in the search PATH,
       
 23124 -      # but as the default location of the library.
       
 23125 -      _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 23126 -      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 23127 -      ;;
       
 23128 -
       
 23129 -    hpux10*)
       
 23130 -      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
       
 23131 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 23132 -      else
       
 23133 -	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       
 23134 -      fi
       
 23135 -      if test "$with_gnu_ld" = no; then
       
 23136 -	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       
 23137 -	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
       
 23138 -	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 23139 -	_LT_TAGVAR(hardcode_direct, $1)=yes
       
 23140 -	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       
 23141 -	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 23142 -	# hardcode_minus_L: Not really in the search PATH,
       
 23143 -	# but as the default location of the library.
       
 23144 -	_LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 23145 -      fi
       
 23146 -      ;;
       
 23147 -
       
 23148 -    hpux11*)
       
 23149 -      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
       
 23150 -	case $host_cpu in
       
 23151 -	hppa*64*)
       
 23152 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23153 -	  ;;
       
 23154 -	ia64*)
       
 23155 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
       
 23156 -	  ;;
       
 23157 -	*)
       
 23158 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 23159 -	  ;;
       
 23160 -	esac
       
 23161 -      else
       
 23162 -	case $host_cpu in
       
 23163 -	hppa*64*)
       
 23164 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23165 -	  ;;
       
 23166 -	ia64*)
       
 23167 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
       
 23168 -	  ;;
       
 23169 -	*)
       
 23170 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 23171 -	  ;;
       
 23172 -	esac
       
 23173 -      fi
       
 23174 -      if test "$with_gnu_ld" = no; then
       
 23175 -	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       
 23176 -	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 23177 -
       
 23178 -	case $host_cpu in
       
 23179 -	hppa*64*|ia64*)
       
 23180 -	  _LT_TAGVAR(hardcode_direct, $1)=no
       
 23181 -	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23182 -	  ;;
       
 23183 -	*)
       
 23184 -	  _LT_TAGVAR(hardcode_direct, $1)=yes
       
 23185 -	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       
 23186 -	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 23187 -
       
 23188 -	  # hardcode_minus_L: Not really in the search PATH,
       
 23189 -	  # but as the default location of the library.
       
 23190 -	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 23191 -	  ;;
       
 23192 -	esac
       
 23193 -      fi
       
 23194 -      ;;
       
 23195 -
       
 23196 -    irix5* | irix6* | nonstopux*)
       
 23197 -      if test "$GCC" = yes; then
       
 23198 -	_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'
       
 23199 -	# Try to use the -exported_symbol ld option, if it does not
       
 23200 -	# work, assume that -exports_file does not work either and
       
 23201 -	# implicitly export all symbols.
       
 23202 -        save_LDFLAGS="$LDFLAGS"
       
 23203 -        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
       
 23204 -        AC_LINK_IFELSE(int foo(void) {},
       
 23205 -          _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'
       
 23206 -        )
       
 23207 -        LDFLAGS="$save_LDFLAGS"
       
 23208 -      else
       
 23209 -	_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'
       
 23210 -	_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'
       
 23211 -      fi
       
 23212 -      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       
 23213 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 23214 -      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 23215 -      _LT_TAGVAR(inherit_rpath, $1)=yes
       
 23216 -      _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 23217 -      ;;
       
 23218 -
       
 23219 -    netbsd*)
       
 23220 -      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
       
 23221 -	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       
 23222 -      else
       
 23223 -	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
       
 23224 -      fi
       
 23225 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 23226 -      _LT_TAGVAR(hardcode_direct, $1)=yes
       
 23227 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23228 -      ;;
       
 23229 -
       
 23230 -    newsos6)
       
 23231 -      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 23232 -      _LT_TAGVAR(hardcode_direct, $1)=yes
       
 23233 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 23234 -      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 23235 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23236 -      ;;
       
 23237 -
       
 23238 -    *nto* | *qnx*)
       
 23239 -      ;;
       
 23240 -
       
 23241 -    openbsd*)
       
 23242 -      if test -f /usr/libexec/ld.so; then
       
 23243 -	_LT_TAGVAR(hardcode_direct, $1)=yes
       
 23244 -	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23245 -	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       
 23246 -	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
       
 23247 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       
 23248 -	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
       
 23249 -	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 23250 -	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 23251 -	else
       
 23252 -	  case $host_os in
       
 23253 -	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
       
 23254 -	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       
 23255 -	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 23256 -	     ;;
       
 23257 -	   *)
       
 23258 -	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       
 23259 -	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 23260 -	     ;;
       
 23261 -	  esac
       
 23262 -	fi
       
 23263 -      else
       
 23264 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 23265 -      fi
       
 23266 -      ;;
       
 23267 -
       
 23268 -    os2*)
       
 23269 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 23270 -      _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 23271 -      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 23272 -      _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'
       
 23273 -      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
       
 23274 -      ;;
       
 23275 -
       
 23276 -    osf3*)
       
 23277 -      if test "$GCC" = yes; then
       
 23278 -	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
       
 23279 -	_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'
       
 23280 -      else
       
 23281 -	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
       
 23282 -	_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'
       
 23283 -      fi
       
 23284 -      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       
 23285 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 23286 -      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 23287 -      ;;
       
 23288 -
       
 23289 -    osf4* | osf5*)	# as osf3* with the addition of -msym flag
       
 23290 -      if test "$GCC" = yes; then
       
 23291 -	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
       
 23292 -	_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'
       
 23293 -	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 23294 -      else
       
 23295 -	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
       
 23296 -	_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'
       
 23297 -	_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~
       
 23298 -	$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'
       
 23299 -
       
 23300 -	# Both c and cxx compiler support -rpath directly
       
 23301 -	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
       
 23302 -      fi
       
 23303 -      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       
 23304 -      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 23305 -      ;;
       
 23306 -
       
 23307 -    solaris*)
       
 23308 -      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
       
 23309 -      if test "$GCC" = yes; then
       
 23310 -	wlarc='${wl}'
       
 23311 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23312 -	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 23313 -	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       
 23314 -      else
       
 23315 -	case `$CC -V 2>&1` in
       
 23316 -	*"Compilers 5.0"*)
       
 23317 -	  wlarc=''
       
 23318 -	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 23319 -	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 23320 -	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
       
 23321 -	  ;;
       
 23322 -	*)
       
 23323 -	  wlarc='${wl}'
       
 23324 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23325 -	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 23326 -	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       
 23327 -	  ;;
       
 23328 -	esac
       
 23329 -      fi
       
 23330 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 23331 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23332 -      case $host_os in
       
 23333 -      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
       
 23334 -      *)
       
 23335 -	# The compiler driver will combine and reorder linker options,
       
 23336 -	# but understands `-z linker_flag'.  GCC discards it without `$wl',
       
 23337 -	# but is careful enough not to reorder.
       
 23338 -	# Supported since Solaris 2.6 (maybe 2.5.1?)
       
 23339 -	if test "$GCC" = yes; then
       
 23340 -	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
       
 23341 -	else
       
 23342 -	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
       
 23343 -	fi
       
 23344 -	;;
       
 23345 -      esac
       
 23346 -      _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 23347 -      ;;
       
 23348 -
       
 23349 -    sunos4*)
       
 23350 -      if test "x$host_vendor" = xsequent; then
       
 23351 -	# Use $CC to link under sequent, because it throws in some extra .o
       
 23352 -	# files that make .init and .fini sections work.
       
 23353 -	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23354 -      else
       
 23355 -	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
       
 23356 -      fi
       
 23357 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 23358 -      _LT_TAGVAR(hardcode_direct, $1)=yes
       
 23359 -      _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 23360 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23361 -      ;;
       
 23362 -
       
 23363 -    sysv4)
       
 23364 -      case $host_vendor in
       
 23365 -	sni)
       
 23366 -	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 23367 -	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
       
 23368 -	;;
       
 23369 -	siemens)
       
 23370 -	  ## LD is ld it makes a PLAMLIB
       
 23371 -	  ## CC just makes a GrossModule.
       
 23372 -	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
       
 23373 -	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
       
 23374 -	  _LT_TAGVAR(hardcode_direct, $1)=no
       
 23375 -        ;;
       
 23376 -	motorola)
       
 23377 -	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 23378 -	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
       
 23379 -	;;
       
 23380 -      esac
       
 23381 -      runpath_var='LD_RUN_PATH'
       
 23382 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23383 -      ;;
       
 23384 -
       
 23385 -    sysv4.3*)
       
 23386 -      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 23387 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23388 -      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
       
 23389 -      ;;
       
 23390 -
       
 23391 -    sysv4*MP*)
       
 23392 -      if test -d /usr/nec; then
       
 23393 -	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 23394 -	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23395 -	runpath_var=LD_RUN_PATH
       
 23396 -	hardcode_runpath_var=yes
       
 23397 -	_LT_TAGVAR(ld_shlibs, $1)=yes
       
 23398 -      fi
       
 23399 -      ;;
       
 23400 -
       
 23401 -    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
       
 23402 -      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
       
 23403 -      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 23404 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23405 -      runpath_var='LD_RUN_PATH'
       
 23406 -
       
 23407 -      if test "$GCC" = yes; then
       
 23408 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23409 -	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23410 -      else
       
 23411 -	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23412 -	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23413 -      fi
       
 23414 -      ;;
       
 23415 -
       
 23416 -    sysv5* | sco3.2v5* | sco5v6*)
       
 23417 -      # Note: We can NOT use -z defs as we might desire, because we do not
       
 23418 -      # link with -lc, and that would cause any symbols used from libc to
       
 23419 -      # always be unresolved, which means just about no library would
       
 23420 -      # ever link correctly.  If we're not using GNU ld we use -z text
       
 23421 -      # though, which does catch some bad symbols but isn't as heavy-handed
       
 23422 -      # as -z defs.
       
 23423 -      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
       
 23424 -      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
       
 23425 -      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 23426 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23427 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
       
 23428 -      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       
 23429 -      _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 23430 -      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
       
 23431 -      runpath_var='LD_RUN_PATH'
       
 23432 -
       
 23433 -      if test "$GCC" = yes; then
       
 23434 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23435 -	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23436 -      else
       
 23437 -	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23438 -	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 23439 -      fi
       
 23440 -      ;;
       
 23441 -
       
 23442 -    uts4*)
       
 23443 -      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 23444 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 23445 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 23446 -      ;;
       
 23447 -
       
 23448 -    *)
       
 23449 -      _LT_TAGVAR(ld_shlibs, $1)=no
       
 23450 -      ;;
       
 23451 -    esac
       
 23452 -
       
 23453 -    if test x$host_vendor = xsni; then
       
 23454 -      case $host in
       
 23455 -      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
       
 23456 -	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
       
 23457 -	;;
       
 23458 -      esac
       
 23459 -    fi
       
 23460 -  fi
       
 23461 -])
       
 23462 -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
       
 23463 -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
       
 23464 -
       
 23465 -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
       
 23466 -
       
 23467 -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
       
 23468 -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
       
 23469 -_LT_DECL([], [extract_expsyms_cmds], [2],
       
 23470 -    [The commands to extract the exported symbol list from a shared archive])
       
 23471 -
       
 23472 -#
       
 23473 -# Do we need to explicitly link libc?
       
 23474 -#
       
 23475 -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
       
 23476 -x|xyes)
       
 23477 -  # Assume -lc should be added
       
 23478 -  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
       
 23479 -
       
 23480 -  if test "$enable_shared" = yes && test "$GCC" = yes; then
       
 23481 -    case $_LT_TAGVAR(archive_cmds, $1) in
       
 23482 -    *'~'*)
       
 23483 -      # FIXME: we may have to deal with multi-command sequences.
       
 23484 -      ;;
       
 23485 -    '$CC '*)
       
 23486 -      # Test whether the compiler implicitly links with -lc since on some
       
 23487 -      # systems, -lgcc has to come before -lc. If gcc already passes -lc
       
 23488 -      # to ld, don't add -lc before -lgcc.
       
 23489 -      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
       
 23490 -      $RM conftest*
       
 23491 -      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 23492 -
       
 23493 -      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
       
 23494 -        soname=conftest
       
 23495 -        lib=conftest
       
 23496 -        libobjs=conftest.$ac_objext
       
 23497 -        deplibs=
       
 23498 -        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
       
 23499 -	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
       
 23500 -        compiler_flags=-v
       
 23501 -        linker_flags=-v
       
 23502 -        verstring=
       
 23503 -        output_objdir=.
       
 23504 -        libname=conftest
       
 23505 -        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
       
 23506 -        _LT_TAGVAR(allow_undefined_flag, $1)=
       
 23507 -        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
       
 23508 -        then
       
 23509 -	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 23510 -        else
       
 23511 -	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
       
 23512 -        fi
       
 23513 -        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
       
 23514 -      else
       
 23515 -        cat conftest.err 1>&5
       
 23516 -      fi
       
 23517 -      $RM conftest*
       
 23518 -      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
       
 23519 -      ;;
       
 23520 -    esac
       
 23521 -  fi
       
 23522 -  ;;
       
 23523 -esac
       
 23524 -
       
 23525 -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
       
 23526 -    [Whether or not to add -lc for building shared libraries])
       
 23527 -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
       
 23528 -    [enable_shared_with_static_runtimes], [0],
       
 23529 -    [Whether or not to disallow shared libs when runtime libs are static])
       
 23530 -_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
       
 23531 -    [Compiler flag to allow reflexive dlopens])
       
 23532 -_LT_TAGDECL([], [whole_archive_flag_spec], [1],
       
 23533 -    [Compiler flag to generate shared objects directly from archives])
       
 23534 -_LT_TAGDECL([], [compiler_needs_object], [1],
       
 23535 -    [Whether the compiler copes with passing no objects directly])
       
 23536 -_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
       
 23537 -    [Create an old-style archive from a shared archive])
       
 23538 -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
       
 23539 -    [Create a temporary old-style archive to link instead of a shared archive])
       
 23540 -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
       
 23541 -_LT_TAGDECL([], [archive_expsym_cmds], [2])
       
 23542 -_LT_TAGDECL([], [module_cmds], [2],
       
 23543 -    [Commands used to build a loadable module if different from building
       
 23544 -    a shared archive.])
       
 23545 -_LT_TAGDECL([], [module_expsym_cmds], [2])
       
 23546 -_LT_TAGDECL([], [with_gnu_ld], [1],
       
 23547 -    [Whether we are building with GNU ld or not])
       
 23548 -_LT_TAGDECL([], [allow_undefined_flag], [1],
       
 23549 -    [Flag that allows shared libraries with undefined symbols to be built])
       
 23550 -_LT_TAGDECL([], [no_undefined_flag], [1],
       
 23551 -    [Flag that enforces no undefined symbols])
       
 23552 -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
       
 23553 -    [Flag to hardcode $libdir into a binary during linking.
       
 23554 -    This must work even if $libdir does not exist])
       
 23555 -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
       
 23556 -    [[If ld is used when linking, flag to hardcode $libdir into a binary
       
 23557 -    during linking.  This must work even if $libdir does not exist]])
       
 23558 -_LT_TAGDECL([], [hardcode_libdir_separator], [1],
       
 23559 -    [Whether we need a single "-rpath" flag with a separated argument])
       
 23560 -_LT_TAGDECL([], [hardcode_direct], [0],
       
 23561 -    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
       
 23562 -    DIR into the resulting binary])
       
 23563 -_LT_TAGDECL([], [hardcode_direct_absolute], [0],
       
 23564 -    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
       
 23565 -    DIR into the resulting binary and the resulting library dependency is
       
 23566 -    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
       
 23567 -    library is relocated])
       
 23568 -_LT_TAGDECL([], [hardcode_minus_L], [0],
       
 23569 -    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
       
 23570 -    into the resulting binary])
       
 23571 -_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
       
 23572 -    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
       
 23573 -    into the resulting binary])
       
 23574 -_LT_TAGDECL([], [hardcode_automatic], [0],
       
 23575 -    [Set to "yes" if building a shared library automatically hardcodes DIR
       
 23576 -    into the library and all subsequent libraries and executables linked
       
 23577 -    against it])
       
 23578 -_LT_TAGDECL([], [inherit_rpath], [0],
       
 23579 -    [Set to yes if linker adds runtime paths of dependent libraries
       
 23580 -    to runtime path list])
       
 23581 -_LT_TAGDECL([], [link_all_deplibs], [0],
       
 23582 -    [Whether libtool must link a program against all its dependency libraries])
       
 23583 -_LT_TAGDECL([], [fix_srcfile_path], [1],
       
 23584 -    [Fix the shell variable $srcfile for the compiler])
       
 23585 -_LT_TAGDECL([], [always_export_symbols], [0],
       
 23586 -    [Set to "yes" if exported symbols are required])
       
 23587 -_LT_TAGDECL([], [export_symbols_cmds], [2],
       
 23588 -    [The commands to list exported symbols])
       
 23589 -_LT_TAGDECL([], [exclude_expsyms], [1],
       
 23590 -    [Symbols that should not be listed in the preloaded symbols])
       
 23591 -_LT_TAGDECL([], [include_expsyms], [1],
       
 23592 -    [Symbols that must always be exported])
       
 23593 -_LT_TAGDECL([], [prelink_cmds], [2],
       
 23594 -    [Commands necessary for linking programs (against libraries) with templates])
       
 23595 -_LT_TAGDECL([], [file_list_spec], [1],
       
 23596 -    [Specify filename containing input files])
       
 23597 -dnl FIXME: Not yet implemented
       
 23598 -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
       
 23599 -dnl    [Compiler flag to generate thread safe objects])
       
 23600 -])# _LT_LINKER_SHLIBS
       
 23601 -
       
 23602 -
       
 23603 -# _LT_LANG_C_CONFIG([TAG])
       
 23604 -# ------------------------
       
 23605 -# Ensure that the configuration variables for a C compiler are suitably
       
 23606 -# defined.  These variables are subsequently used by _LT_CONFIG to write
       
 23607 -# the compiler configuration to `libtool'.
       
 23608 -m4_defun([_LT_LANG_C_CONFIG],
       
 23609 -[m4_require([_LT_DECL_EGREP])dnl
       
 23610 -lt_save_CC="$CC"
       
 23611 -AC_LANG_PUSH(C)
       
 23612 -
       
 23613 -# Source file extension for C test sources.
       
 23614 -ac_ext=c
       
 23615 -
       
 23616 -# Object file extension for compiled C test sources.
       
 23617 -objext=o
       
 23618 -_LT_TAGVAR(objext, $1)=$objext
       
 23619 -
       
 23620 -# Code to be used in simple compile tests
       
 23621 -lt_simple_compile_test_code="int some_variable = 0;"
       
 23622 -
       
 23623 -# Code to be used in simple link tests
       
 23624 -lt_simple_link_test_code='int main(){return(0);}'
       
 23625 -
       
 23626 -_LT_TAG_COMPILER
       
 23627 -# Save the default compiler, since it gets overwritten when the other
       
 23628 -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
       
 23629 -compiler_DEFAULT=$CC
       
 23630 -
       
 23631 -# save warnings/boilerplate of simple test code
       
 23632 -_LT_COMPILER_BOILERPLATE
       
 23633 -_LT_LINKER_BOILERPLATE
       
 23634 -
       
 23635 -if test -n "$compiler"; then
       
 23636 -  _LT_COMPILER_NO_RTTI($1)
       
 23637 -  _LT_COMPILER_PIC($1)
       
 23638 -  _LT_COMPILER_C_O($1)
       
 23639 -  _LT_COMPILER_FILE_LOCKS($1)
       
 23640 -  _LT_LINKER_SHLIBS($1)
       
 23641 -  _LT_SYS_DYNAMIC_LINKER($1)
       
 23642 -  _LT_LINKER_HARDCODE_LIBPATH($1)
       
 23643 -  LT_SYS_DLOPEN_SELF
       
 23644 -  _LT_CMD_STRIPLIB
       
 23645 -
       
 23646 -  # Report which library types will actually be built
       
 23647 -  AC_MSG_CHECKING([if libtool supports shared libraries])
       
 23648 -  AC_MSG_RESULT([$can_build_shared])
       
 23649 -
       
 23650 -  AC_MSG_CHECKING([whether to build shared libraries])
       
 23651 -  test "$can_build_shared" = "no" && enable_shared=no
       
 23652 -
       
 23653 -  # On AIX, shared libraries and static libraries use the same namespace, and
       
 23654 -  # are all built from PIC.
       
 23655 -  case $host_os in
       
 23656 -  aix3*)
       
 23657 -    test "$enable_shared" = yes && enable_static=no
       
 23658 -    if test -n "$RANLIB"; then
       
 23659 -      archive_cmds="$archive_cmds~\$RANLIB \$lib"
       
 23660 -      postinstall_cmds='$RANLIB $lib'
       
 23661 -    fi
       
 23662 -    ;;
       
 23663 -
       
 23664 -  aix[[4-9]]*)
       
 23665 -    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
       
 23666 -      test "$enable_shared" = yes && enable_static=no
       
 23667 -    fi
       
 23668 -    ;;
       
 23669 -  esac
       
 23670 -  AC_MSG_RESULT([$enable_shared])
       
 23671 -
       
 23672 -  AC_MSG_CHECKING([whether to build static libraries])
       
 23673 -  # Make sure either enable_shared or enable_static is yes.
       
 23674 -  test "$enable_shared" = yes || enable_static=yes
       
 23675 -  AC_MSG_RESULT([$enable_static])
       
 23676 -
       
 23677 -  _LT_CONFIG($1)
       
 23678 -fi
       
 23679 -AC_LANG_POP
       
 23680 -CC="$lt_save_CC"
       
 23681 -])# _LT_LANG_C_CONFIG
       
 23682 -
       
 23683 -
       
 23684 -# _LT_PROG_CXX
       
 23685 -# ------------
       
 23686 -# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
       
 23687 -# compiler, we have our own version here.
       
 23688 -m4_defun([_LT_PROG_CXX],
       
 23689 -[
       
 23690 -pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
       
 23691 -AC_PROG_CXX
       
 23692 -if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
       
 23693 -    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
       
 23694 -    (test "X$CXX" != "Xg++"))) ; then
       
 23695 -  AC_PROG_CXXCPP
       
 23696 -else
       
 23697 -  _lt_caught_CXX_error=yes
       
 23698 -fi
       
 23699 -popdef([AC_MSG_ERROR])
       
 23700 -])# _LT_PROG_CXX
       
 23701 -
       
 23702 -dnl aclocal-1.4 backwards compatibility:
       
 23703 -dnl AC_DEFUN([_LT_PROG_CXX], [])
       
 23704 -
       
 23705 -
       
 23706 -# _LT_LANG_CXX_CONFIG([TAG])
       
 23707 -# --------------------------
       
 23708 -# Ensure that the configuration variables for a C++ compiler are suitably
       
 23709 -# defined.  These variables are subsequently used by _LT_CONFIG to write
       
 23710 -# the compiler configuration to `libtool'.
       
 23711 -m4_defun([_LT_LANG_CXX_CONFIG],
       
 23712 -[AC_REQUIRE([_LT_PROG_CXX])dnl
       
 23713 -m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 23714 -m4_require([_LT_DECL_EGREP])dnl
       
 23715 -
       
 23716 -AC_LANG_PUSH(C++)
       
 23717 -_LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 23718 -_LT_TAGVAR(allow_undefined_flag, $1)=
       
 23719 -_LT_TAGVAR(always_export_symbols, $1)=no
       
 23720 -_LT_TAGVAR(archive_expsym_cmds, $1)=
       
 23721 -_LT_TAGVAR(compiler_needs_object, $1)=no
       
 23722 -_LT_TAGVAR(export_dynamic_flag_spec, $1)=
       
 23723 -_LT_TAGVAR(hardcode_direct, $1)=no
       
 23724 -_LT_TAGVAR(hardcode_direct_absolute, $1)=no
       
 23725 -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 23726 -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
       
 23727 -_LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 23728 -_LT_TAGVAR(hardcode_minus_L, $1)=no
       
 23729 -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
       
 23730 -_LT_TAGVAR(hardcode_automatic, $1)=no
       
 23731 -_LT_TAGVAR(inherit_rpath, $1)=no
       
 23732 -_LT_TAGVAR(module_cmds, $1)=
       
 23733 -_LT_TAGVAR(module_expsym_cmds, $1)=
       
 23734 -_LT_TAGVAR(link_all_deplibs, $1)=unknown
       
 23735 -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
       
 23736 -_LT_TAGVAR(no_undefined_flag, $1)=
       
 23737 -_LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 23738 -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
       
 23739 -
       
 23740 -# Source file extension for C++ test sources.
       
 23741 -ac_ext=cpp
       
 23742 -
       
 23743 -# Object file extension for compiled C++ test sources.
       
 23744 -objext=o
       
 23745 -_LT_TAGVAR(objext, $1)=$objext
       
 23746 -
       
 23747 -# No sense in running all these tests if we already determined that
       
 23748 -# the CXX compiler isn't working.  Some variables (like enable_shared)
       
 23749 -# are currently assumed to apply to all compilers on this platform,
       
 23750 -# and will be corrupted by setting them based on a non-working compiler.
       
 23751 -if test "$_lt_caught_CXX_error" != yes; then
       
 23752 -  # Code to be used in simple compile tests
       
 23753 -  lt_simple_compile_test_code="int some_variable = 0;"
       
 23754 -
       
 23755 -  # Code to be used in simple link tests
       
 23756 -  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
       
 23757 -
       
 23758 -  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
       
 23759 -  _LT_TAG_COMPILER
       
 23760 -
       
 23761 -  # save warnings/boilerplate of simple test code
       
 23762 -  _LT_COMPILER_BOILERPLATE
       
 23763 -  _LT_LINKER_BOILERPLATE
       
 23764 -
       
 23765 -  # Allow CC to be a program name with arguments.
       
 23766 -  lt_save_CC=$CC
       
 23767 -  lt_save_LD=$LD
       
 23768 -  lt_save_GCC=$GCC
       
 23769 -  GCC=$GXX
       
 23770 -  lt_save_with_gnu_ld=$with_gnu_ld
       
 23771 -  lt_save_path_LD=$lt_cv_path_LD
       
 23772 -  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
       
 23773 -    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
       
 23774 -  else
       
 23775 -    $as_unset lt_cv_prog_gnu_ld
       
 23776 -  fi
       
 23777 -  if test -n "${lt_cv_path_LDCXX+set}"; then
       
 23778 -    lt_cv_path_LD=$lt_cv_path_LDCXX
       
 23779 -  else
       
 23780 -    $as_unset lt_cv_path_LD
       
 23781 -  fi
       
 23782 -  test -z "${LDCXX+set}" || LD=$LDCXX
       
 23783 -  CC=${CXX-"c++"}
       
 23784 -  compiler=$CC
       
 23785 -  _LT_TAGVAR(compiler, $1)=$CC
       
 23786 -  _LT_CC_BASENAME([$compiler])
       
 23787 -
       
 23788 -  if test -n "$compiler"; then
       
 23789 -    # We don't want -fno-exception when compiling C++ code, so set the
       
 23790 -    # no_builtin_flag separately
       
 23791 -    if test "$GXX" = yes; then
       
 23792 -      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
       
 23793 -    else
       
 23794 -      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
       
 23795 -    fi
       
 23796 -
       
 23797 -    if test "$GXX" = yes; then
       
 23798 -      # Set up default GNU C++ configuration
       
 23799 -
       
 23800 -      LT_PATH_LD
       
 23801 -
       
 23802 -      # Check if GNU C++ uses GNU ld as the underlying linker, since the
       
 23803 -      # archiving commands below assume that GNU ld is being used.
       
 23804 -      if test "$with_gnu_ld" = yes; then
       
 23805 -        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 23806 -        _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'
       
 23807 -
       
 23808 -        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 23809 -        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 23810 -
       
 23811 -        # If archive_cmds runs LD, not CC, wlarc should be empty
       
 23812 -        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
       
 23813 -        #     investigate it a little bit more. (MM)
       
 23814 -        wlarc='${wl}'
       
 23815 -
       
 23816 -        # ancient GNU ld didn't support --whole-archive et. al.
       
 23817 -        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
       
 23818 -	  $GREP 'no-whole-archive' > /dev/null; then
       
 23819 -          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
       
 23820 -        else
       
 23821 -          _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 23822 -        fi
       
 23823 -      else
       
 23824 -        with_gnu_ld=no
       
 23825 -        wlarc=
       
 23826 -
       
 23827 -        # A generic and very simple default shared library creation
       
 23828 -        # command for GNU C++ for the case where it uses the native
       
 23829 -        # linker, instead of GNU ld.  If possible, this setting should
       
 23830 -        # overridden to take advantage of the native linker features on
       
 23831 -        # the platform it is being used on.
       
 23832 -        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
       
 23833 -      fi
       
 23834 -
       
 23835 -      # Commands to make compiler produce verbose output that lists
       
 23836 -      # what "hidden" libraries, object files and flags are used when
       
 23837 -      # linking a shared library.
       
 23838 -      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
       
 23839 -
       
 23840 -    else
       
 23841 -      GXX=no
       
 23842 -      with_gnu_ld=no
       
 23843 -      wlarc=
       
 23844 -    fi
       
 23845 -
       
 23846 -    # PORTME: fill in a description of your system's C++ link characteristics
       
 23847 -    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
       
 23848 -    _LT_TAGVAR(ld_shlibs, $1)=yes
       
 23849 -    case $host_os in
       
 23850 -      aix3*)
       
 23851 -        # FIXME: insert proper C++ library support
       
 23852 -        _LT_TAGVAR(ld_shlibs, $1)=no
       
 23853 -        ;;
       
 23854 -      aix[[4-9]]*)
       
 23855 -        if test "$host_cpu" = ia64; then
       
 23856 -          # On IA64, the linker does run time linking by default, so we don't
       
 23857 -          # have to do anything special.
       
 23858 -          aix_use_runtimelinking=no
       
 23859 -          exp_sym_flag='-Bexport'
       
 23860 -          no_entry_flag=""
       
 23861 -        else
       
 23862 -          aix_use_runtimelinking=no
       
 23863 -
       
 23864 -          # Test if we are trying to use run time linking or normal
       
 23865 -          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
       
 23866 -          # need to do runtime linking.
       
 23867 -          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
       
 23868 -	    for ld_flag in $LDFLAGS; do
       
 23869 -	      case $ld_flag in
       
 23870 -	      *-brtl*)
       
 23871 -	        aix_use_runtimelinking=yes
       
 23872 -	        break
       
 23873 -	        ;;
       
 23874 -	      esac
       
 23875 -	    done
       
 23876 -	    ;;
       
 23877 -          esac
       
 23878 -
       
 23879 -          exp_sym_flag='-bexport'
       
 23880 -          no_entry_flag='-bnoentry'
       
 23881 -        fi
       
 23882 -
       
 23883 -        # When large executables or shared objects are built, AIX ld can
       
 23884 -        # have problems creating the table of contents.  If linking a library
       
 23885 -        # or program results in "error TOC overflow" add -mminimal-toc to
       
 23886 -        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
       
 23887 -        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
       
 23888 -
       
 23889 -        _LT_TAGVAR(archive_cmds, $1)=''
       
 23890 -        _LT_TAGVAR(hardcode_direct, $1)=yes
       
 23891 -        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       
 23892 -        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       
 23893 -        _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 23894 -        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
       
 23895 -
       
 23896 -        if test "$GXX" = yes; then
       
 23897 -          case $host_os in aix4.[[012]]|aix4.[[012]].*)
       
 23898 -          # We only want to do this on AIX 4.2 and lower, the check
       
 23899 -          # below for broken collect2 doesn't work under 4.3+
       
 23900 -	  collect2name=`${CC} -print-prog-name=collect2`
       
 23901 -	  if test -f "$collect2name" &&
       
 23902 -	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
       
 23903 -	  then
       
 23904 -	    # We have reworked collect2
       
 23905 -	    :
       
 23906 -	  else
       
 23907 -	    # We have old collect2
       
 23908 -	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
       
 23909 -	    # It fails to find uninstalled libraries when the uninstalled
       
 23910 -	    # path is not listed in the libpath.  Setting hardcode_minus_L
       
 23911 -	    # to unsupported forces relinking
       
 23912 -	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 23913 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 23914 -	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 23915 -	  fi
       
 23916 -          esac
       
 23917 -          shared_flag='-shared'
       
 23918 -	  if test "$aix_use_runtimelinking" = yes; then
       
 23919 -	    shared_flag="$shared_flag "'${wl}-G'
       
 23920 -	  fi
       
 23921 -        else
       
 23922 -          # not using gcc
       
 23923 -          if test "$host_cpu" = ia64; then
       
 23924 -	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
       
 23925 -	  # chokes on -Wl,-G. The following line is correct:
       
 23926 -	  shared_flag='-G'
       
 23927 -          else
       
 23928 -	    if test "$aix_use_runtimelinking" = yes; then
       
 23929 -	      shared_flag='${wl}-G'
       
 23930 -	    else
       
 23931 -	      shared_flag='${wl}-bM:SRE'
       
 23932 -	    fi
       
 23933 -          fi
       
 23934 -        fi
       
 23935 -
       
 23936 -        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
       
 23937 -        # It seems that -bexpall does not export symbols beginning with
       
 23938 -        # underscore (_), so it is better to generate a list of symbols to
       
 23939 -	# export.
       
 23940 -        _LT_TAGVAR(always_export_symbols, $1)=yes
       
 23941 -        if test "$aix_use_runtimelinking" = yes; then
       
 23942 -          # Warning - without using the other runtime loading flags (-brtl),
       
 23943 -          # -berok will link without error, but may produce a broken library.
       
 23944 -          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
       
 23945 -          # Determine the default libpath from the value encoded in an empty
       
 23946 -          # executable.
       
 23947 -          _LT_SYS_MODULE_PATH_AIX
       
 23948 -          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 23949 -
       
 23950 -          _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"
       
 23951 -        else
       
 23952 -          if test "$host_cpu" = ia64; then
       
 23953 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
       
 23954 -	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
       
 23955 -	    _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"
       
 23956 -          else
       
 23957 -	    # Determine the default libpath from the value encoded in an
       
 23958 -	    # empty executable.
       
 23959 -	    _LT_SYS_MODULE_PATH_AIX
       
 23960 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 23961 -	    # Warning - without using the other run time loading flags,
       
 23962 -	    # -berok will link without error, but may produce a broken library.
       
 23963 -	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
       
 23964 -	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
       
 23965 -	    # Exported symbols can be pulled into shared objects from archives
       
 23966 -	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
       
 23967 -	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
       
 23968 -	    # This is similar to how AIX traditionally builds its shared
       
 23969 -	    # libraries.
       
 23970 -	    _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'
       
 23971 -          fi
       
 23972 -        fi
       
 23973 -        ;;
       
 23974 -
       
 23975 -      beos*)
       
 23976 -	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
       
 23977 -	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 23978 -	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
       
 23979 -	  # support --undefined.  This deserves some investigation.  FIXME
       
 23980 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 23981 -	else
       
 23982 -	  _LT_TAGVAR(ld_shlibs, $1)=no
       
 23983 -	fi
       
 23984 -	;;
       
 23985 -
       
 23986 -      chorus*)
       
 23987 -        case $cc_basename in
       
 23988 -          *)
       
 23989 -	  # FIXME: insert proper C++ library support
       
 23990 -	  _LT_TAGVAR(ld_shlibs, $1)=no
       
 23991 -	  ;;
       
 23992 -        esac
       
 23993 -        ;;
       
 23994 -
       
 23995 -      cygwin* | mingw* | pw32* | cegcc*)
       
 23996 -        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       
 23997 -        # as there is no search path for DLLs.
       
 23998 -        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 23999 -        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 24000 -        _LT_TAGVAR(always_export_symbols, $1)=no
       
 24001 -        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 24002 -
       
 24003 -        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
       
 24004 -          _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'
       
 24005 -          # If the export-symbols file already is a .def file (1st line
       
 24006 -          # is EXPORTS), use it as is; otherwise, prepend...
       
 24007 -          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
       
 24008 -	    cp $export_symbols $output_objdir/$soname.def;
       
 24009 -          else
       
 24010 -	    echo EXPORTS > $output_objdir/$soname.def;
       
 24011 -	    cat $export_symbols >> $output_objdir/$soname.def;
       
 24012 -          fi~
       
 24013 -          $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'
       
 24014 -        else
       
 24015 -          _LT_TAGVAR(ld_shlibs, $1)=no
       
 24016 -        fi
       
 24017 -        ;;
       
 24018 -      darwin* | rhapsody*)
       
 24019 -        _LT_DARWIN_LINKER_FEATURES($1)
       
 24020 -	;;
       
 24021 -
       
 24022 -      dgux*)
       
 24023 -        case $cc_basename in
       
 24024 -          ec++*)
       
 24025 -	    # FIXME: insert proper C++ library support
       
 24026 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24027 -	    ;;
       
 24028 -          ghcx*)
       
 24029 -	    # Green Hills C++ Compiler
       
 24030 -	    # FIXME: insert proper C++ library support
       
 24031 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24032 -	    ;;
       
 24033 -          *)
       
 24034 -	    # FIXME: insert proper C++ library support
       
 24035 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24036 -	    ;;
       
 24037 -        esac
       
 24038 -        ;;
       
 24039 -
       
 24040 -      freebsd[[12]]*)
       
 24041 -        # C++ shared libraries reported to be fairly broken before
       
 24042 -	# switch to ELF
       
 24043 -        _LT_TAGVAR(ld_shlibs, $1)=no
       
 24044 -        ;;
       
 24045 -
       
 24046 -      freebsd-elf*)
       
 24047 -        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 24048 -        ;;
       
 24049 -
       
 24050 -      freebsd* | dragonfly*)
       
 24051 -        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
       
 24052 -        # conventions
       
 24053 -        _LT_TAGVAR(ld_shlibs, $1)=yes
       
 24054 -        ;;
       
 24055 -
       
 24056 -      gnu*)
       
 24057 -        ;;
       
 24058 -
       
 24059 -      hpux9*)
       
 24060 -        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       
 24061 -        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 24062 -        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 24063 -        _LT_TAGVAR(hardcode_direct, $1)=yes
       
 24064 -        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
       
 24065 -				             # but as the default
       
 24066 -				             # location of the library.
       
 24067 -
       
 24068 -        case $cc_basename in
       
 24069 -          CC*)
       
 24070 -            # FIXME: insert proper C++ library support
       
 24071 -            _LT_TAGVAR(ld_shlibs, $1)=no
       
 24072 -            ;;
       
 24073 -          aCC*)
       
 24074 -            _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'
       
 24075 -            # Commands to make compiler produce verbose output that lists
       
 24076 -            # what "hidden" libraries, object files and flags are used when
       
 24077 -            # linking a shared library.
       
 24078 -            #
       
 24079 -            # There doesn't appear to be a way to prevent this compiler from
       
 24080 -            # explicitly linking system object files so we need to strip them
       
 24081 -            # from the output so that they don't get included in the library
       
 24082 -            # dependencies.
       
 24083 -            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'
       
 24084 -            ;;
       
 24085 -          *)
       
 24086 -            if test "$GXX" = yes; then
       
 24087 -              _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'
       
 24088 -            else
       
 24089 -              # FIXME: insert proper C++ library support
       
 24090 -              _LT_TAGVAR(ld_shlibs, $1)=no
       
 24091 -            fi
       
 24092 -            ;;
       
 24093 -        esac
       
 24094 -        ;;
       
 24095 -
       
 24096 -      hpux10*|hpux11*)
       
 24097 -        if test $with_gnu_ld = no; then
       
 24098 -	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       
 24099 -	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 24100 -
       
 24101 -          case $host_cpu in
       
 24102 -            hppa*64*|ia64*)
       
 24103 -              ;;
       
 24104 -            *)
       
 24105 -	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 24106 -              ;;
       
 24107 -          esac
       
 24108 -        fi
       
 24109 -        case $host_cpu in
       
 24110 -          hppa*64*|ia64*)
       
 24111 -            _LT_TAGVAR(hardcode_direct, $1)=no
       
 24112 -            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 24113 -            ;;
       
 24114 -          *)
       
 24115 -            _LT_TAGVAR(hardcode_direct, $1)=yes
       
 24116 -            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       
 24117 -            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
       
 24118 -					         # but as the default
       
 24119 -					         # location of the library.
       
 24120 -            ;;
       
 24121 -        esac
       
 24122 -
       
 24123 -        case $cc_basename in
       
 24124 -          CC*)
       
 24125 -	    # FIXME: insert proper C++ library support
       
 24126 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24127 -	    ;;
       
 24128 -          aCC*)
       
 24129 -	    case $host_cpu in
       
 24130 -	      hppa*64*)
       
 24131 -	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
       
 24132 -	        ;;
       
 24133 -	      ia64*)
       
 24134 -	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
       
 24135 -	        ;;
       
 24136 -	      *)
       
 24137 -	        _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'
       
 24138 -	        ;;
       
 24139 -	    esac
       
 24140 -	    # Commands to make compiler produce verbose output that lists
       
 24141 -	    # what "hidden" libraries, object files and flags are used when
       
 24142 -	    # linking a shared library.
       
 24143 -	    #
       
 24144 -	    # There doesn't appear to be a way to prevent this compiler from
       
 24145 -	    # explicitly linking system object files so we need to strip them
       
 24146 -	    # from the output so that they don't get included in the library
       
 24147 -	    # dependencies.
       
 24148 -	    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'
       
 24149 -	    ;;
       
 24150 -          *)
       
 24151 -	    if test "$GXX" = yes; then
       
 24152 -	      if test $with_gnu_ld = no; then
       
 24153 -	        case $host_cpu in
       
 24154 -	          hppa*64*)
       
 24155 -	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
       
 24156 -	            ;;
       
 24157 -	          ia64*)
       
 24158 -	            _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'
       
 24159 -	            ;;
       
 24160 -	          *)
       
 24161 -	            _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'
       
 24162 -	            ;;
       
 24163 -	        esac
       
 24164 -	      fi
       
 24165 -	    else
       
 24166 -	      # FIXME: insert proper C++ library support
       
 24167 -	      _LT_TAGVAR(ld_shlibs, $1)=no
       
 24168 -	    fi
       
 24169 -	    ;;
       
 24170 -        esac
       
 24171 -        ;;
       
 24172 -
       
 24173 -      interix[[3-9]]*)
       
 24174 -	_LT_TAGVAR(hardcode_direct, $1)=no
       
 24175 -	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 24176 -	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 24177 -	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 24178 -	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       
 24179 -	# Instead, shared libraries are loaded at an image base (0x10000000 by
       
 24180 -	# default) and relocated if they conflict, which is a slow very memory
       
 24181 -	# consuming and fragmenting process.  To avoid this, we pick a random,
       
 24182 -	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       
 24183 -	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
       
 24184 -	_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'
       
 24185 -	_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'
       
 24186 -	;;
       
 24187 -      irix5* | irix6*)
       
 24188 -        case $cc_basename in
       
 24189 -          CC*)
       
 24190 -	    # SGI C++
       
 24191 -	    _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'
       
 24192 -
       
 24193 -	    # Archives containing C++ object files must be created using
       
 24194 -	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
       
 24195 -	    # necessary to make sure instantiated templates are included
       
 24196 -	    # in the archive.
       
 24197 -	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
       
 24198 -	    ;;
       
 24199 -          *)
       
 24200 -	    if test "$GXX" = yes; then
       
 24201 -	      if test "$with_gnu_ld" = no; then
       
 24202 -	        _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'
       
 24203 -	      else
       
 24204 -	        _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'
       
 24205 -	      fi
       
 24206 -	    fi
       
 24207 -	    _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 24208 -	    ;;
       
 24209 -        esac
       
 24210 -        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 24211 -        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 24212 -        _LT_TAGVAR(inherit_rpath, $1)=yes
       
 24213 -        ;;
       
 24214 -
       
 24215 -      linux* | k*bsd*-gnu)
       
 24216 -        case $cc_basename in
       
 24217 -          KCC*)
       
 24218 -	    # Kuck and Associates, Inc. (KAI) C++ Compiler
       
 24219 -
       
 24220 -	    # KCC will only create a shared library if the output file
       
 24221 -	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
       
 24222 -	    # to its proper name (with version) after linking.
       
 24223 -	    _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'
       
 24224 -	    _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'
       
 24225 -	    # Commands to make compiler produce verbose output that lists
       
 24226 -	    # what "hidden" libraries, object files and flags are used when
       
 24227 -	    # linking a shared library.
       
 24228 -	    #
       
 24229 -	    # There doesn't appear to be a way to prevent this compiler from
       
 24230 -	    # explicitly linking system object files so we need to strip them
       
 24231 -	    # from the output so that they don't get included in the library
       
 24232 -	    # dependencies.
       
 24233 -	    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'
       
 24234 -
       
 24235 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 24236 -	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 24237 -
       
 24238 -	    # Archives containing C++ object files must be created using
       
 24239 -	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
       
 24240 -	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
       
 24241 -	    ;;
       
 24242 -	  icpc* | ecpc* )
       
 24243 -	    # Intel C++
       
 24244 -	    with_gnu_ld=yes
       
 24245 -	    # version 8.0 and above of icpc choke on multiply defined symbols
       
 24246 -	    # if we add $predep_objects and $postdep_objects, however 7.1 and
       
 24247 -	    # earlier do not add the objects themselves.
       
 24248 -	    case `$CC -V 2>&1` in
       
 24249 -	      *"Version 7."*)
       
 24250 -	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 24251 -		_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'
       
 24252 -		;;
       
 24253 -	      *)  # Version 8.0 or newer
       
 24254 -	        tmp_idyn=
       
 24255 -	        case $host_cpu in
       
 24256 -		  ia64*) tmp_idyn=' -i_dynamic';;
       
 24257 -		esac
       
 24258 -	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 24259 -		_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'
       
 24260 -		;;
       
 24261 -	    esac
       
 24262 -	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 24263 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 24264 -	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 24265 -	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
       
 24266 -	    ;;
       
 24267 -          pgCC* | pgcpp*)
       
 24268 -            # Portland Group C++ compiler
       
 24269 -	    case `$CC -V` in
       
 24270 -	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
       
 24271 -	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
       
 24272 -		rm -rf $tpldir~
       
 24273 -		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
       
 24274 -		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
       
 24275 -	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
       
 24276 -		rm -rf $tpldir~
       
 24277 -		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
       
 24278 -		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
       
 24279 -		$RANLIB $oldlib'
       
 24280 -	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
       
 24281 -		rm -rf $tpldir~
       
 24282 -		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
       
 24283 -		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
       
 24284 -	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
       
 24285 -		rm -rf $tpldir~
       
 24286 -		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
       
 24287 -		$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'
       
 24288 -	      ;;
       
 24289 -	    *) # Version 6 will use weak symbols
       
 24290 -	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
       
 24291 -	      _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'
       
 24292 -	      ;;
       
 24293 -	    esac
       
 24294 -
       
 24295 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
       
 24296 -	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 24297 -	    _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'
       
 24298 -            ;;
       
 24299 -	  cxx*)
       
 24300 -	    # Compaq C++
       
 24301 -	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 24302 -	    _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'
       
 24303 -
       
 24304 -	    runpath_var=LD_RUN_PATH
       
 24305 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
       
 24306 -	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 24307 -
       
 24308 -	    # Commands to make compiler produce verbose output that lists
       
 24309 -	    # what "hidden" libraries, object files and flags are used when
       
 24310 -	    # linking a shared library.
       
 24311 -	    #
       
 24312 -	    # There doesn't appear to be a way to prevent this compiler from
       
 24313 -	    # explicitly linking system object files so we need to strip them
       
 24314 -	    # from the output so that they don't get included in the library
       
 24315 -	    # dependencies.
       
 24316 -	    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'
       
 24317 -	    ;;
       
 24318 -	  xl*)
       
 24319 -	    # IBM XL 8.0 on PPC, with GNU ld
       
 24320 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 24321 -	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 24322 -	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 24323 -	    if test "x$supports_anon_versioning" = xyes; then
       
 24324 -	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
       
 24325 -		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
       
 24326 -		echo "local: *; };" >> $output_objdir/$libname.ver~
       
 24327 -		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
       
 24328 -	    fi
       
 24329 -	    ;;
       
 24330 -	  *)
       
 24331 -	    case `$CC -V 2>&1 | sed 5q` in
       
 24332 -	    *Sun\ C*)
       
 24333 -	      # Sun C++ 5.9
       
 24334 -	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
       
 24335 -	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
       
 24336 -	      _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'
       
 24337 -	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 24338 -	      _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'
       
 24339 -	      _LT_TAGVAR(compiler_needs_object, $1)=yes
       
 24340 -
       
 24341 -	      # Not sure whether something based on
       
 24342 -	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
       
 24343 -	      # would be better.
       
 24344 -	      output_verbose_link_cmd='echo'
       
 24345 -
       
 24346 -	      # Archives containing C++ object files must be created using
       
 24347 -	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
       
 24348 -	      # necessary to make sure instantiated templates are included
       
 24349 -	      # in the archive.
       
 24350 -	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
       
 24351 -	      ;;
       
 24352 -	    esac
       
 24353 -	    ;;
       
 24354 -	esac
       
 24355 -	;;
       
 24356 -
       
 24357 -      lynxos*)
       
 24358 -        # FIXME: insert proper C++ library support
       
 24359 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 24360 -	;;
       
 24361 -
       
 24362 -      m88k*)
       
 24363 -        # FIXME: insert proper C++ library support
       
 24364 -        _LT_TAGVAR(ld_shlibs, $1)=no
       
 24365 -	;;
       
 24366 -
       
 24367 -      mvs*)
       
 24368 -        case $cc_basename in
       
 24369 -          cxx*)
       
 24370 -	    # FIXME: insert proper C++ library support
       
 24371 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24372 -	    ;;
       
 24373 -	  *)
       
 24374 -	    # FIXME: insert proper C++ library support
       
 24375 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24376 -	    ;;
       
 24377 -	esac
       
 24378 -	;;
       
 24379 -
       
 24380 -      netbsd*)
       
 24381 -        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
       
 24382 -	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
       
 24383 -	  wlarc=
       
 24384 -	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 24385 -	  _LT_TAGVAR(hardcode_direct, $1)=yes
       
 24386 -	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 24387 -	fi
       
 24388 -	# Workaround some broken pre-1.5 toolchains
       
 24389 -	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
       
 24390 -	;;
       
 24391 -
       
 24392 -      *nto* | *qnx*)
       
 24393 -        _LT_TAGVAR(ld_shlibs, $1)=yes
       
 24394 -	;;
       
 24395 -
       
 24396 -      openbsd2*)
       
 24397 -        # C++ shared libraries are fairly broken
       
 24398 -	_LT_TAGVAR(ld_shlibs, $1)=no
       
 24399 -	;;
       
 24400 -
       
 24401 -      openbsd*)
       
 24402 -	if test -f /usr/libexec/ld.so; then
       
 24403 -	  _LT_TAGVAR(hardcode_direct, $1)=yes
       
 24404 -	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 24405 -	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       
 24406 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
       
 24407 -	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 24408 -	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
       
 24409 -	    _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'
       
 24410 -	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 24411 -	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
       
 24412 -	  fi
       
 24413 -	  output_verbose_link_cmd=echo
       
 24414 -	else
       
 24415 -	  _LT_TAGVAR(ld_shlibs, $1)=no
       
 24416 -	fi
       
 24417 -	;;
       
 24418 -
       
 24419 -      osf3* | osf4* | osf5*)
       
 24420 -        case $cc_basename in
       
 24421 -          KCC*)
       
 24422 -	    # Kuck and Associates, Inc. (KAI) C++ Compiler
       
 24423 -
       
 24424 -	    # KCC will only create a shared library if the output file
       
 24425 -	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
       
 24426 -	    # to its proper name (with version) after linking.
       
 24427 -	    _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'
       
 24428 -
       
 24429 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 24430 -	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 24431 -
       
 24432 -	    # Archives containing C++ object files must be created using
       
 24433 -	    # the KAI C++ compiler.
       
 24434 -	    case $host in
       
 24435 -	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
       
 24436 -	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
       
 24437 -	    esac
       
 24438 -	    ;;
       
 24439 -          RCC*)
       
 24440 -	    # Rational C++ 2.4.1
       
 24441 -	    # FIXME: insert proper C++ library support
       
 24442 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24443 -	    ;;
       
 24444 -          cxx*)
       
 24445 -	    case $host in
       
 24446 -	      osf3*)
       
 24447 -	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
       
 24448 -	        _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'
       
 24449 -	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 24450 -		;;
       
 24451 -	      *)
       
 24452 -	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
       
 24453 -	        _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'
       
 24454 -	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
       
 24455 -	          echo "-hidden">> $lib.exp~
       
 24456 -	          $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~
       
 24457 -	          $RM $lib.exp'
       
 24458 -	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
       
 24459 -		;;
       
 24460 -	    esac
       
 24461 -
       
 24462 -	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 24463 -
       
 24464 -	    # Commands to make compiler produce verbose output that lists
       
 24465 -	    # what "hidden" libraries, object files and flags are used when
       
 24466 -	    # linking a shared library.
       
 24467 -	    #
       
 24468 -	    # There doesn't appear to be a way to prevent this compiler from
       
 24469 -	    # explicitly linking system object files so we need to strip them
       
 24470 -	    # from the output so that they don't get included in the library
       
 24471 -	    # dependencies.
       
 24472 -	    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'
       
 24473 -	    ;;
       
 24474 -	  *)
       
 24475 -	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
       
 24476 -	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
       
 24477 -	      case $host in
       
 24478 -	        osf3*)
       
 24479 -	          _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'
       
 24480 -		  ;;
       
 24481 -	        *)
       
 24482 -	          _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'
       
 24483 -		  ;;
       
 24484 -	      esac
       
 24485 -
       
 24486 -	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 24487 -	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 24488 -
       
 24489 -	      # Commands to make compiler produce verbose output that lists
       
 24490 -	      # what "hidden" libraries, object files and flags are used when
       
 24491 -	      # linking a shared library.
       
 24492 -	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
       
 24493 -
       
 24494 -	    else
       
 24495 -	      # FIXME: insert proper C++ library support
       
 24496 -	      _LT_TAGVAR(ld_shlibs, $1)=no
       
 24497 -	    fi
       
 24498 -	    ;;
       
 24499 -        esac
       
 24500 -        ;;
       
 24501 -
       
 24502 -      psos*)
       
 24503 -        # FIXME: insert proper C++ library support
       
 24504 -        _LT_TAGVAR(ld_shlibs, $1)=no
       
 24505 -        ;;
       
 24506 -
       
 24507 -      sunos4*)
       
 24508 -        case $cc_basename in
       
 24509 -          CC*)
       
 24510 -	    # Sun C++ 4.x
       
 24511 -	    # FIXME: insert proper C++ library support
       
 24512 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24513 -	    ;;
       
 24514 -          lcc*)
       
 24515 -	    # Lucid
       
 24516 -	    # FIXME: insert proper C++ library support
       
 24517 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24518 -	    ;;
       
 24519 -          *)
       
 24520 -	    # FIXME: insert proper C++ library support
       
 24521 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24522 -	    ;;
       
 24523 -        esac
       
 24524 -        ;;
       
 24525 -
       
 24526 -      solaris*)
       
 24527 -        case $cc_basename in
       
 24528 -          CC*)
       
 24529 -	    # Sun C++ 4.2, 5.x and Centerline C++
       
 24530 -            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
       
 24531 -	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
       
 24532 -	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
       
 24533 -	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 24534 -	      $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'
       
 24535 -
       
 24536 -	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 24537 -	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 24538 -	    case $host_os in
       
 24539 -	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
       
 24540 -	      *)
       
 24541 -		# The compiler driver will combine and reorder linker options,
       
 24542 -		# but understands `-z linker_flag'.
       
 24543 -	        # Supported since Solaris 2.6 (maybe 2.5.1?)
       
 24544 -		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
       
 24545 -	        ;;
       
 24546 -	    esac
       
 24547 -	    _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 24548 -
       
 24549 -	    output_verbose_link_cmd='echo'
       
 24550 -
       
 24551 -	    # Archives containing C++ object files must be created using
       
 24552 -	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
       
 24553 -	    # necessary to make sure instantiated templates are included
       
 24554 -	    # in the archive.
       
 24555 -	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
       
 24556 -	    ;;
       
 24557 -          gcx*)
       
 24558 -	    # Green Hills C++ Compiler
       
 24559 -	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
       
 24560 -
       
 24561 -	    # The C++ compiler must be used to create the archive.
       
 24562 -	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
       
 24563 -	    ;;
       
 24564 -          *)
       
 24565 -	    # GNU C++ compiler with Solaris linker
       
 24566 -	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
       
 24567 -	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
       
 24568 -	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
       
 24569 -	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
       
 24570 -	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 24571 -		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
       
 24572 -
       
 24573 -	        # Commands to make compiler produce verbose output that lists
       
 24574 -	        # what "hidden" libraries, object files and flags are used when
       
 24575 -	        # linking a shared library.
       
 24576 -	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
       
 24577 -	      else
       
 24578 -	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
       
 24579 -	        # platform.
       
 24580 -	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
       
 24581 -	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 24582 -		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
       
 24583 -
       
 24584 -	        # Commands to make compiler produce verbose output that lists
       
 24585 -	        # what "hidden" libraries, object files and flags are used when
       
 24586 -	        # linking a shared library.
       
 24587 -	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
       
 24588 -	      fi
       
 24589 -
       
 24590 -	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
       
 24591 -	      case $host_os in
       
 24592 -		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
       
 24593 -		*)
       
 24594 -		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
       
 24595 -		  ;;
       
 24596 -	      esac
       
 24597 -	    fi
       
 24598 -	    ;;
       
 24599 -        esac
       
 24600 -        ;;
       
 24601 -
       
 24602 -    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
       
 24603 -      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
       
 24604 -      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 24605 -      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 24606 -      runpath_var='LD_RUN_PATH'
       
 24607 -
       
 24608 -      case $cc_basename in
       
 24609 -        CC*)
       
 24610 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 24611 -	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 24612 -	  ;;
       
 24613 -	*)
       
 24614 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 24615 -	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 24616 -	  ;;
       
 24617 -      esac
       
 24618 -      ;;
       
 24619 -
       
 24620 -      sysv5* | sco3.2v5* | sco5v6*)
       
 24621 -	# Note: We can NOT use -z defs as we might desire, because we do not
       
 24622 -	# link with -lc, and that would cause any symbols used from libc to
       
 24623 -	# always be unresolved, which means just about no library would
       
 24624 -	# ever link correctly.  If we're not using GNU ld we use -z text
       
 24625 -	# though, which does catch some bad symbols but isn't as heavy-handed
       
 24626 -	# as -z defs.
       
 24627 -	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
       
 24628 -	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
       
 24629 -	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 24630 -	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 24631 -	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
       
 24632 -	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       
 24633 -	_LT_TAGVAR(link_all_deplibs, $1)=yes
       
 24634 -	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
       
 24635 -	runpath_var='LD_RUN_PATH'
       
 24636 -
       
 24637 -	case $cc_basename in
       
 24638 -          CC*)
       
 24639 -	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 24640 -	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 24641 -	    ;;
       
 24642 -	  *)
       
 24643 -	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 24644 -	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 24645 -	    ;;
       
 24646 -	esac
       
 24647 -      ;;
       
 24648 -
       
 24649 -      tandem*)
       
 24650 -        case $cc_basename in
       
 24651 -          NCC*)
       
 24652 -	    # NonStop-UX NCC 3.20
       
 24653 -	    # FIXME: insert proper C++ library support
       
 24654 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24655 -	    ;;
       
 24656 -          *)
       
 24657 -	    # FIXME: insert proper C++ library support
       
 24658 -	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 24659 -	    ;;
       
 24660 -        esac
       
 24661 -        ;;
       
 24662 -
       
 24663 -      vxworks*)
       
 24664 -        # FIXME: insert proper C++ library support
       
 24665 -        _LT_TAGVAR(ld_shlibs, $1)=no
       
 24666 -        ;;
       
 24667 -
       
 24668 -      *)
       
 24669 -        # FIXME: insert proper C++ library support
       
 24670 -        _LT_TAGVAR(ld_shlibs, $1)=no
       
 24671 -        ;;
       
 24672 -    esac
       
 24673 -
       
 24674 -    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
       
 24675 -    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
       
 24676 -
       
 24677 -    _LT_TAGVAR(GCC, $1)="$GXX"
       
 24678 -    _LT_TAGVAR(LD, $1)="$LD"
       
 24679 -
       
 24680 -    ## CAVEAT EMPTOR:
       
 24681 -    ## There is no encapsulation within the following macros, do not change
       
 24682 -    ## the running order or otherwise move them around unless you know exactly
       
 24683 -    ## what you are doing...
       
 24684 -    _LT_SYS_HIDDEN_LIBDEPS($1)
       
 24685 -    _LT_COMPILER_PIC($1)
       
 24686 -    _LT_COMPILER_C_O($1)
       
 24687 -    _LT_COMPILER_FILE_LOCKS($1)
       
 24688 -    _LT_LINKER_SHLIBS($1)
       
 24689 -    _LT_SYS_DYNAMIC_LINKER($1)
       
 24690 -    _LT_LINKER_HARDCODE_LIBPATH($1)
       
 24691 -
       
 24692 -    _LT_CONFIG($1)
       
 24693 -  fi # test -n "$compiler"
       
 24694 -
       
 24695 -  CC=$lt_save_CC
       
 24696 -  LDCXX=$LD
       
 24697 -  LD=$lt_save_LD
       
 24698 -  GCC=$lt_save_GCC
       
 24699 -  with_gnu_ld=$lt_save_with_gnu_ld
       
 24700 -  lt_cv_path_LDCXX=$lt_cv_path_LD
       
 24701 -  lt_cv_path_LD=$lt_save_path_LD
       
 24702 -  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
       
 24703 -  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
       
 24704 -fi # test "$_lt_caught_CXX_error" != yes
       
 24705 -
       
 24706 -AC_LANG_POP
       
 24707 -])# _LT_LANG_CXX_CONFIG
       
 24708 -
       
 24709 -
       
 24710 -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
       
 24711 -# ---------------------------------
       
 24712 -# Figure out "hidden" library dependencies from verbose
       
 24713 -# compiler output when linking a shared library.
       
 24714 -# Parse the compiler output and extract the necessary
       
 24715 -# objects, libraries and library flags.
       
 24716 -m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
       
 24717 -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 24718 -# Dependencies to place before and after the object being linked:
       
 24719 -_LT_TAGVAR(predep_objects, $1)=
       
 24720 -_LT_TAGVAR(postdep_objects, $1)=
       
 24721 -_LT_TAGVAR(predeps, $1)=
       
 24722 -_LT_TAGVAR(postdeps, $1)=
       
 24723 -_LT_TAGVAR(compiler_lib_search_path, $1)=
       
 24724 -
       
 24725 -dnl we can't use the lt_simple_compile_test_code here,
       
 24726 -dnl because it contains code intended for an executable,
       
 24727 -dnl not a library.  It's possible we should let each
       
 24728 -dnl tag define a new lt_????_link_test_code variable,
       
 24729 -dnl but it's only used here...
       
 24730 -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
       
 24731 -int a;
       
 24732 -void foo (void) { a = 0; }
       
 24733 -_LT_EOF
       
 24734 -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
       
 24735 -class Foo
       
 24736 -{
       
 24737 -public:
       
 24738 -  Foo (void) { a = 0; }
       
 24739 -private:
       
 24740 -  int a;
       
 24741 -};
       
 24742 -_LT_EOF
       
 24743 -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
       
 24744 -      subroutine foo
       
 24745 -      implicit none
       
 24746 -      integer*4 a
       
 24747 -      a=0
       
 24748 -      return
       
 24749 -      end
       
 24750 -_LT_EOF
       
 24751 -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
       
 24752 -      subroutine foo
       
 24753 -      implicit none
       
 24754 -      integer a
       
 24755 -      a=0
       
 24756 -      return
       
 24757 -      end
       
 24758 -_LT_EOF
       
 24759 -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
       
 24760 -public class foo {
       
 24761 -  private int a;
       
 24762 -  public void bar (void) {
       
 24763 -    a = 0;
       
 24764 -  }
       
 24765 -};
       
 24766 -_LT_EOF
       
 24767 -])
       
 24768 -dnl Parse the compiler output and extract the necessary
       
 24769 -dnl objects, libraries and library flags.
       
 24770 -if AC_TRY_EVAL(ac_compile); then
       
 24771 -  # Parse the compiler output and extract the necessary
       
 24772 -  # objects, libraries and library flags.
       
 24773 -
       
 24774 -  # Sentinel used to keep track of whether or not we are before
       
 24775 -  # the conftest object file.
       
 24776 -  pre_test_object_deps_done=no
       
 24777 -
       
 24778 -  for p in `eval "$output_verbose_link_cmd"`; do
       
 24779 -    case $p in
       
 24780 -
       
 24781 -    -L* | -R* | -l*)
       
 24782 -       # Some compilers place space between "-{L,R}" and the path.
       
 24783 -       # Remove the space.
       
 24784 -       if test $p = "-L" ||
       
 24785 -          test $p = "-R"; then
       
 24786 -	 prev=$p
       
 24787 -	 continue
       
 24788 -       else
       
 24789 -	 prev=
       
 24790 -       fi
       
 24791 -
       
 24792 -       if test "$pre_test_object_deps_done" = no; then
       
 24793 -	 case $p in
       
 24794 -	 -L* | -R*)
       
 24795 -	   # Internal compiler library paths should come after those
       
 24796 -	   # provided the user.  The postdeps already come after the
       
 24797 -	   # user supplied libs so there is no need to process them.
       
 24798 -	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
       
 24799 -	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
       
 24800 -	   else
       
 24801 -	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
       
 24802 -	   fi
       
 24803 -	   ;;
       
 24804 -	 # The "-l" case would never come before the object being
       
 24805 -	 # linked, so don't bother handling this case.
       
 24806 -	 esac
       
 24807 -       else
       
 24808 -	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
       
 24809 -	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
       
 24810 -	 else
       
 24811 -	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
       
 24812 -	 fi
       
 24813 -       fi
       
 24814 -       ;;
       
 24815 -
       
 24816 -    *.$objext)
       
 24817 -       # This assumes that the test object file only shows up
       
 24818 -       # once in the compiler output.
       
 24819 -       if test "$p" = "conftest.$objext"; then
       
 24820 -	 pre_test_object_deps_done=yes
       
 24821 -	 continue
       
 24822 -       fi
       
 24823 -
       
 24824 -       if test "$pre_test_object_deps_done" = no; then
       
 24825 -	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
       
 24826 -	   _LT_TAGVAR(predep_objects, $1)="$p"
       
 24827 -	 else
       
 24828 -	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
       
 24829 -	 fi
       
 24830 -       else
       
 24831 -	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
       
 24832 -	   _LT_TAGVAR(postdep_objects, $1)="$p"
       
 24833 -	 else
       
 24834 -	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
       
 24835 -	 fi
       
 24836 -       fi
       
 24837 -       ;;
       
 24838 -
       
 24839 -    *) ;; # Ignore the rest.
       
 24840 -
       
 24841 -    esac
       
 24842 -  done
       
 24843 -
       
 24844 -  # Clean up.
       
 24845 -  rm -f a.out a.exe
       
 24846 -else
       
 24847 -  echo "libtool.m4: error: problem compiling $1 test program"
       
 24848 -fi
       
 24849 -
       
 24850 -$RM -f confest.$objext
       
 24851 -
       
 24852 -# PORTME: override above test on systems where it is broken
       
 24853 -m4_if([$1], [CXX],
       
 24854 -[case $host_os in
       
 24855 -interix[[3-9]]*)
       
 24856 -  # Interix 3.5 installs completely hosed .la files for C++, so rather than
       
 24857 -  # hack all around it, let's just trust "g++" to DTRT.
       
 24858 -  _LT_TAGVAR(predep_objects,$1)=
       
 24859 -  _LT_TAGVAR(postdep_objects,$1)=
       
 24860 -  _LT_TAGVAR(postdeps,$1)=
       
 24861 -  ;;
       
 24862 -
       
 24863 -linux*)
       
 24864 -  case `$CC -V 2>&1 | sed 5q` in
       
 24865 -  *Sun\ C*)
       
 24866 -    # Sun C++ 5.9
       
 24867 -
       
 24868 -    # The more standards-conforming stlport4 library is
       
 24869 -    # incompatible with the Cstd library. Avoid specifying
       
 24870 -    # it if it's in CXXFLAGS. Ignore libCrun as
       
 24871 -    # -library=stlport4 depends on it.
       
 24872 -    case " $CXX $CXXFLAGS " in
       
 24873 -    *" -library=stlport4 "*)
       
 24874 -      solaris_use_stlport4=yes
       
 24875 -      ;;
       
 24876 -    esac
       
 24877 -
       
 24878 -    if test "$solaris_use_stlport4" != yes; then
       
 24879 -      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
       
 24880 -    fi
       
 24881 -    ;;
       
 24882 -  esac
       
 24883 -  ;;
       
 24884 -
       
 24885 -solaris*)
       
 24886 -  case $cc_basename in
       
 24887 -  CC*)
       
 24888 -    # The more standards-conforming stlport4 library is
       
 24889 -    # incompatible with the Cstd library. Avoid specifying
       
 24890 -    # it if it's in CXXFLAGS. Ignore libCrun as
       
 24891 -    # -library=stlport4 depends on it.
       
 24892 -    case " $CXX $CXXFLAGS " in
       
 24893 -    *" -library=stlport4 "*)
       
 24894 -      solaris_use_stlport4=yes
       
 24895 -      ;;
       
 24896 -    esac
       
 24897 -
       
 24898 -    # Adding this requires a known-good setup of shared libraries for
       
 24899 -    # Sun compiler versions before 5.6, else PIC objects from an old
       
 24900 -    # archive will be linked into the output, leading to subtle bugs.
       
 24901 -    if test "$solaris_use_stlport4" != yes; then
       
 24902 -      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
       
 24903 -    fi
       
 24904 -    ;;
       
 24905 -  esac
       
 24906 -  ;;
       
 24907 -esac
       
 24908 -])
       
 24909 -
       
 24910 -case " $_LT_TAGVAR(postdeps, $1) " in
       
 24911 -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
       
 24912 -esac
       
 24913 - _LT_TAGVAR(compiler_lib_search_dirs, $1)=
       
 24914 -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
       
 24915 - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
       
 24916 -fi
       
 24917 -_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
       
 24918 -    [The directories searched by this compiler when creating a shared library])
       
 24919 -_LT_TAGDECL([], [predep_objects], [1],
       
 24920 -    [Dependencies to place before and after the objects being linked to
       
 24921 -    create a shared library])
       
 24922 -_LT_TAGDECL([], [postdep_objects], [1])
       
 24923 -_LT_TAGDECL([], [predeps], [1])
       
 24924 -_LT_TAGDECL([], [postdeps], [1])
       
 24925 -_LT_TAGDECL([], [compiler_lib_search_path], [1],
       
 24926 -    [The library search path used internally by the compiler when linking
       
 24927 -    a shared library])
       
 24928 -])# _LT_SYS_HIDDEN_LIBDEPS
       
 24929 -
       
 24930 -
       
 24931 -# _LT_PROG_F77
       
 24932 -# ------------
       
 24933 -# Since AC_PROG_F77 is broken, in that it returns the empty string
       
 24934 -# if there is no fortran compiler, we have our own version here.
       
 24935 -m4_defun([_LT_PROG_F77],
       
 24936 -[
       
 24937 -pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
       
 24938 -AC_PROG_F77
       
 24939 -if test -z "$F77" || test "X$F77" = "Xno"; then
       
 24940 -  _lt_disable_F77=yes
       
 24941 -fi
       
 24942 -popdef([AC_MSG_ERROR])
       
 24943 -])# _LT_PROG_F77
       
 24944 -
       
 24945 -dnl aclocal-1.4 backwards compatibility:
       
 24946 -dnl AC_DEFUN([_LT_PROG_F77], [])
       
 24947 -
       
 24948 -
       
 24949 -# _LT_LANG_F77_CONFIG([TAG])
       
 24950 -# --------------------------
       
 24951 -# Ensure that the configuration variables for a Fortran 77 compiler are
       
 24952 -# suitably defined.  These variables are subsequently used by _LT_CONFIG
       
 24953 -# to write the compiler configuration to `libtool'.
       
 24954 -m4_defun([_LT_LANG_F77_CONFIG],
       
 24955 -[AC_REQUIRE([_LT_PROG_F77])dnl
       
 24956 -AC_LANG_PUSH(Fortran 77)
       
 24957 -
       
 24958 -_LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 24959 -_LT_TAGVAR(allow_undefined_flag, $1)=
       
 24960 -_LT_TAGVAR(always_export_symbols, $1)=no
       
 24961 -_LT_TAGVAR(archive_expsym_cmds, $1)=
       
 24962 -_LT_TAGVAR(export_dynamic_flag_spec, $1)=
       
 24963 -_LT_TAGVAR(hardcode_direct, $1)=no
       
 24964 -_LT_TAGVAR(hardcode_direct_absolute, $1)=no
       
 24965 -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 24966 -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
       
 24967 -_LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 24968 -_LT_TAGVAR(hardcode_minus_L, $1)=no
       
 24969 -_LT_TAGVAR(hardcode_automatic, $1)=no
       
 24970 -_LT_TAGVAR(inherit_rpath, $1)=no
       
 24971 -_LT_TAGVAR(module_cmds, $1)=
       
 24972 -_LT_TAGVAR(module_expsym_cmds, $1)=
       
 24973 -_LT_TAGVAR(link_all_deplibs, $1)=unknown
       
 24974 -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
       
 24975 -_LT_TAGVAR(no_undefined_flag, $1)=
       
 24976 -_LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 24977 -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
       
 24978 -
       
 24979 -# Source file extension for f77 test sources.
       
 24980 -ac_ext=f
       
 24981 -
       
 24982 -# Object file extension for compiled f77 test sources.
       
 24983 -objext=o
       
 24984 -_LT_TAGVAR(objext, $1)=$objext
       
 24985 -
       
 24986 -# No sense in running all these tests if we already determined that
       
 24987 -# the F77 compiler isn't working.  Some variables (like enable_shared)
       
 24988 -# are currently assumed to apply to all compilers on this platform,
       
 24989 -# and will be corrupted by setting them based on a non-working compiler.
       
 24990 -if test "$_lt_disable_F77" != yes; then
       
 24991 -  # Code to be used in simple compile tests
       
 24992 -  lt_simple_compile_test_code="\
       
 24993 -      subroutine t
       
 24994 -      return
       
 24995 -      end
       
 24996 -"
       
 24997 -
       
 24998 -  # Code to be used in simple link tests
       
 24999 -  lt_simple_link_test_code="\
       
 25000 -      program t
       
 25001 -      end
       
 25002 -"
       
 25003 -
       
 25004 -  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
       
 25005 -  _LT_TAG_COMPILER
       
 25006 -
       
 25007 -  # save warnings/boilerplate of simple test code
       
 25008 -  _LT_COMPILER_BOILERPLATE
       
 25009 -  _LT_LINKER_BOILERPLATE
       
 25010 -
       
 25011 -  # Allow CC to be a program name with arguments.
       
 25012 -  lt_save_CC="$CC"
       
 25013 -  lt_save_GCC=$GCC
       
 25014 -  CC=${F77-"f77"}
       
 25015 -  compiler=$CC
       
 25016 -  _LT_TAGVAR(compiler, $1)=$CC
       
 25017 -  _LT_CC_BASENAME([$compiler])
       
 25018 -  GCC=$G77
       
 25019 -  if test -n "$compiler"; then
       
 25020 -    AC_MSG_CHECKING([if libtool supports shared libraries])
       
 25021 -    AC_MSG_RESULT([$can_build_shared])
       
 25022 -
       
 25023 -    AC_MSG_CHECKING([whether to build shared libraries])
       
 25024 -    test "$can_build_shared" = "no" && enable_shared=no
       
 25025 -
       
 25026 -    # On AIX, shared libraries and static libraries use the same namespace, and
       
 25027 -    # are all built from PIC.
       
 25028 -    case $host_os in
       
 25029 -      aix3*)
       
 25030 -        test "$enable_shared" = yes && enable_static=no
       
 25031 -        if test -n "$RANLIB"; then
       
 25032 -          archive_cmds="$archive_cmds~\$RANLIB \$lib"
       
 25033 -          postinstall_cmds='$RANLIB $lib'
       
 25034 -        fi
       
 25035 -        ;;
       
 25036 -      aix[[4-9]]*)
       
 25037 -	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
       
 25038 -	  test "$enable_shared" = yes && enable_static=no
       
 25039 -	fi
       
 25040 -        ;;
       
 25041 -    esac
       
 25042 -    AC_MSG_RESULT([$enable_shared])
       
 25043 -
       
 25044 -    AC_MSG_CHECKING([whether to build static libraries])
       
 25045 -    # Make sure either enable_shared or enable_static is yes.
       
 25046 -    test "$enable_shared" = yes || enable_static=yes
       
 25047 -    AC_MSG_RESULT([$enable_static])
       
 25048 -
       
 25049 -    _LT_TAGVAR(GCC, $1)="$G77"
       
 25050 -    _LT_TAGVAR(LD, $1)="$LD"
       
 25051 -
       
 25052 -    ## CAVEAT EMPTOR:
       
 25053 -    ## There is no encapsulation within the following macros, do not change
       
 25054 -    ## the running order or otherwise move them around unless you know exactly
       
 25055 -    ## what you are doing...
       
 25056 -    _LT_COMPILER_PIC($1)
       
 25057 -    _LT_COMPILER_C_O($1)
       
 25058 -    _LT_COMPILER_FILE_LOCKS($1)
       
 25059 -    _LT_LINKER_SHLIBS($1)
       
 25060 -    _LT_SYS_DYNAMIC_LINKER($1)
       
 25061 -    _LT_LINKER_HARDCODE_LIBPATH($1)
       
 25062 -
       
 25063 -    _LT_CONFIG($1)
       
 25064 -  fi # test -n "$compiler"
       
 25065 -
       
 25066 -  GCC=$lt_save_GCC
       
 25067 -  CC="$lt_save_CC"
       
 25068 -fi # test "$_lt_disable_F77" != yes
       
 25069 -
       
 25070 -AC_LANG_POP
       
 25071 -])# _LT_LANG_F77_CONFIG
       
 25072 -
       
 25073 -
       
 25074 -# _LT_PROG_FC
       
 25075 -# -----------
       
 25076 -# Since AC_PROG_FC is broken, in that it returns the empty string
       
 25077 -# if there is no fortran compiler, we have our own version here.
       
 25078 -m4_defun([_LT_PROG_FC],
       
 25079 -[
       
 25080 -pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
       
 25081 -AC_PROG_FC
       
 25082 -if test -z "$FC" || test "X$FC" = "Xno"; then
       
 25083 -  _lt_disable_FC=yes
       
 25084 -fi
       
 25085 -popdef([AC_MSG_ERROR])
       
 25086 -])# _LT_PROG_FC
       
 25087 -
       
 25088 -dnl aclocal-1.4 backwards compatibility:
       
 25089 -dnl AC_DEFUN([_LT_PROG_FC], [])
       
 25090 -
       
 25091 -
       
 25092 -# _LT_LANG_FC_CONFIG([TAG])
       
 25093 -# -------------------------
       
 25094 -# Ensure that the configuration variables for a Fortran compiler are
       
 25095 -# suitably defined.  These variables are subsequently used by _LT_CONFIG
       
 25096 -# to write the compiler configuration to `libtool'.
       
 25097 -m4_defun([_LT_LANG_FC_CONFIG],
       
 25098 -[AC_REQUIRE([_LT_PROG_FC])dnl
       
 25099 -AC_LANG_PUSH(Fortran)
       
 25100 -
       
 25101 -_LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 25102 -_LT_TAGVAR(allow_undefined_flag, $1)=
       
 25103 -_LT_TAGVAR(always_export_symbols, $1)=no
       
 25104 -_LT_TAGVAR(archive_expsym_cmds, $1)=
       
 25105 -_LT_TAGVAR(export_dynamic_flag_spec, $1)=
       
 25106 -_LT_TAGVAR(hardcode_direct, $1)=no
       
 25107 -_LT_TAGVAR(hardcode_direct_absolute, $1)=no
       
 25108 -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 25109 -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
       
 25110 -_LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 25111 -_LT_TAGVAR(hardcode_minus_L, $1)=no
       
 25112 -_LT_TAGVAR(hardcode_automatic, $1)=no
       
 25113 -_LT_TAGVAR(inherit_rpath, $1)=no
       
 25114 -_LT_TAGVAR(module_cmds, $1)=
       
 25115 -_LT_TAGVAR(module_expsym_cmds, $1)=
       
 25116 -_LT_TAGVAR(link_all_deplibs, $1)=unknown
       
 25117 -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
       
 25118 -_LT_TAGVAR(no_undefined_flag, $1)=
       
 25119 -_LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 25120 -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
       
 25121 -
       
 25122 -# Source file extension for fc test sources.
       
 25123 -ac_ext=${ac_fc_srcext-f}
       
 25124 -
       
 25125 -# Object file extension for compiled fc test sources.
       
 25126 -objext=o
       
 25127 -_LT_TAGVAR(objext, $1)=$objext
       
 25128 -
       
 25129 -# No sense in running all these tests if we already determined that
       
 25130 -# the FC compiler isn't working.  Some variables (like enable_shared)
       
 25131 -# are currently assumed to apply to all compilers on this platform,
       
 25132 -# and will be corrupted by setting them based on a non-working compiler.
       
 25133 -if test "$_lt_disable_FC" != yes; then
       
 25134 -  # Code to be used in simple compile tests
       
 25135 -  lt_simple_compile_test_code="\
       
 25136 -      subroutine t
       
 25137 -      return
       
 25138 -      end
       
 25139 -"
       
 25140 -
       
 25141 -  # Code to be used in simple link tests
       
 25142 -  lt_simple_link_test_code="\
       
 25143 -      program t
       
 25144 -      end
       
 25145 -"
       
 25146 -
       
 25147 -  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
       
 25148 -  _LT_TAG_COMPILER
       
 25149 -
       
 25150 -  # save warnings/boilerplate of simple test code
       
 25151 -  _LT_COMPILER_BOILERPLATE
       
 25152 -  _LT_LINKER_BOILERPLATE
       
 25153 -
       
 25154 -  # Allow CC to be a program name with arguments.
       
 25155 -  lt_save_CC="$CC"
       
 25156 -  lt_save_GCC=$GCC
       
 25157 -  CC=${FC-"f95"}
       
 25158 -  compiler=$CC
       
 25159 -  GCC=$ac_cv_fc_compiler_gnu
       
 25160 -
       
 25161 -  _LT_TAGVAR(compiler, $1)=$CC
       
 25162 -  _LT_CC_BASENAME([$compiler])
       
 25163 -
       
 25164 -  if test -n "$compiler"; then
       
 25165 -    AC_MSG_CHECKING([if libtool supports shared libraries])
       
 25166 -    AC_MSG_RESULT([$can_build_shared])
       
 25167 -
       
 25168 -    AC_MSG_CHECKING([whether to build shared libraries])
       
 25169 -    test "$can_build_shared" = "no" && enable_shared=no
       
 25170 -
       
 25171 -    # On AIX, shared libraries and static libraries use the same namespace, and
       
 25172 -    # are all built from PIC.
       
 25173 -    case $host_os in
       
 25174 -      aix3*)
       
 25175 -        test "$enable_shared" = yes && enable_static=no
       
 25176 -        if test -n "$RANLIB"; then
       
 25177 -          archive_cmds="$archive_cmds~\$RANLIB \$lib"
       
 25178 -          postinstall_cmds='$RANLIB $lib'
       
 25179 -        fi
       
 25180 -        ;;
       
 25181 -      aix[[4-9]]*)
       
 25182 -	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
       
 25183 -	  test "$enable_shared" = yes && enable_static=no
       
 25184 -	fi
       
 25185 -        ;;
       
 25186 -    esac
       
 25187 -    AC_MSG_RESULT([$enable_shared])
       
 25188 -
       
 25189 -    AC_MSG_CHECKING([whether to build static libraries])
       
 25190 -    # Make sure either enable_shared or enable_static is yes.
       
 25191 -    test "$enable_shared" = yes || enable_static=yes
       
 25192 -    AC_MSG_RESULT([$enable_static])
       
 25193 -
       
 25194 -    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
       
 25195 -    _LT_TAGVAR(LD, $1)="$LD"
       
 25196 -
       
 25197 -    ## CAVEAT EMPTOR:
       
 25198 -    ## There is no encapsulation within the following macros, do not change
       
 25199 -    ## the running order or otherwise move them around unless you know exactly
       
 25200 -    ## what you are doing...
       
 25201 -    _LT_SYS_HIDDEN_LIBDEPS($1)
       
 25202 -    _LT_COMPILER_PIC($1)
       
 25203 -    _LT_COMPILER_C_O($1)
       
 25204 -    _LT_COMPILER_FILE_LOCKS($1)
       
 25205 -    _LT_LINKER_SHLIBS($1)
       
 25206 -    _LT_SYS_DYNAMIC_LINKER($1)
       
 25207 -    _LT_LINKER_HARDCODE_LIBPATH($1)
       
 25208 -
       
 25209 -    _LT_CONFIG($1)
       
 25210 -  fi # test -n "$compiler"
       
 25211 -
       
 25212 -  GCC=$lt_save_GCC
       
 25213 -  CC="$lt_save_CC"
       
 25214 -fi # test "$_lt_disable_FC" != yes
       
 25215 -
       
 25216 -AC_LANG_POP
       
 25217 -])# _LT_LANG_FC_CONFIG
       
 25218 -
       
 25219 -
       
 25220 -# _LT_LANG_GCJ_CONFIG([TAG])
       
 25221 -# --------------------------
       
 25222 -# Ensure that the configuration variables for the GNU Java Compiler compiler
       
 25223 -# are suitably defined.  These variables are subsequently used by _LT_CONFIG
       
 25224 -# to write the compiler configuration to `libtool'.
       
 25225 -m4_defun([_LT_LANG_GCJ_CONFIG],
       
 25226 -[AC_REQUIRE([LT_PROG_GCJ])dnl
       
 25227 -AC_LANG_SAVE
       
 25228 -
       
 25229 -# Source file extension for Java test sources.
       
 25230 -ac_ext=java
       
 25231 -
       
 25232 -# Object file extension for compiled Java test sources.
       
 25233 -objext=o
       
 25234 -_LT_TAGVAR(objext, $1)=$objext
       
 25235 -
       
 25236 -# Code to be used in simple compile tests
       
 25237 -lt_simple_compile_test_code="class foo {}"
       
 25238 -
       
 25239 -# Code to be used in simple link tests
       
 25240 -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
       
 25241 -
       
 25242 -# ltmain only uses $CC for tagged configurations so make sure $CC is set.
       
 25243 -_LT_TAG_COMPILER
       
 25244 -
       
 25245 -# save warnings/boilerplate of simple test code
       
 25246 -_LT_COMPILER_BOILERPLATE
       
 25247 -_LT_LINKER_BOILERPLATE
       
 25248 -
       
 25249 -# Allow CC to be a program name with arguments.
       
 25250 -lt_save_CC="$CC"
       
 25251 -lt_save_GCC=$GCC
       
 25252 -GCC=yes
       
 25253 -CC=${GCJ-"gcj"}
       
 25254 -compiler=$CC
       
 25255 -_LT_TAGVAR(compiler, $1)=$CC
       
 25256 -_LT_TAGVAR(LD, $1)="$LD"
       
 25257 -_LT_CC_BASENAME([$compiler])
       
 25258 -
       
 25259 -# GCJ did not exist at the time GCC didn't implicitly link libc in.
       
 25260 -_LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 25261 -
       
 25262 -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
       
 25263 -
       
 25264 -if test -n "$compiler"; then
       
 25265 -  _LT_COMPILER_NO_RTTI($1)
       
 25266 -  _LT_COMPILER_PIC($1)
       
 25267 -  _LT_COMPILER_C_O($1)
       
 25268 -  _LT_COMPILER_FILE_LOCKS($1)
       
 25269 -  _LT_LINKER_SHLIBS($1)
       
 25270 -  _LT_LINKER_HARDCODE_LIBPATH($1)
       
 25271 -
       
 25272 -  _LT_CONFIG($1)
       
 25273 -fi
       
 25274 -
       
 25275 -AC_LANG_RESTORE
       
 25276 -
       
 25277 -GCC=$lt_save_GCC
       
 25278 -CC="$lt_save_CC"
       
 25279 -])# _LT_LANG_GCJ_CONFIG
       
 25280 -
       
 25281 -
       
 25282 -# _LT_LANG_RC_CONFIG([TAG])
       
 25283 -# -------------------------
       
 25284 -# Ensure that the configuration variables for the Windows resource compiler
       
 25285 -# are suitably defined.  These variables are subsequently used by _LT_CONFIG
       
 25286 -# to write the compiler configuration to `libtool'.
       
 25287 -m4_defun([_LT_LANG_RC_CONFIG],
       
 25288 -[AC_REQUIRE([LT_PROG_RC])dnl
       
 25289 -AC_LANG_SAVE
       
 25290 -
       
 25291 -# Source file extension for RC test sources.
       
 25292 -ac_ext=rc
       
 25293 -
       
 25294 -# Object file extension for compiled RC test sources.
       
 25295 -objext=o
       
 25296 -_LT_TAGVAR(objext, $1)=$objext
       
 25297 -
       
 25298 -# Code to be used in simple compile tests
       
 25299 -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
       
 25300 -
       
 25301 -# Code to be used in simple link tests
       
 25302 -lt_simple_link_test_code="$lt_simple_compile_test_code"
       
 25303 -
       
 25304 -# ltmain only uses $CC for tagged configurations so make sure $CC is set.
       
 25305 -_LT_TAG_COMPILER
       
 25306 -
       
 25307 -# save warnings/boilerplate of simple test code
       
 25308 -_LT_COMPILER_BOILERPLATE
       
 25309 -_LT_LINKER_BOILERPLATE
       
 25310 -
       
 25311 -# Allow CC to be a program name with arguments.
       
 25312 -lt_save_CC="$CC"
       
 25313 -lt_save_GCC=$GCC
       
 25314 -GCC=
       
 25315 -CC=${RC-"windres"}
       
 25316 -compiler=$CC
       
 25317 -_LT_TAGVAR(compiler, $1)=$CC
       
 25318 -_LT_CC_BASENAME([$compiler])
       
 25319 -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
       
 25320 -
       
 25321 -if test -n "$compiler"; then
       
 25322 -  :
       
 25323 -  _LT_CONFIG($1)
       
 25324 -fi
       
 25325 -
       
 25326 -GCC=$lt_save_GCC
       
 25327 -AC_LANG_RESTORE
       
 25328 -CC="$lt_save_CC"
       
 25329 -])# _LT_LANG_RC_CONFIG
       
 25330 -
       
 25331 -
       
 25332 -# LT_PROG_GCJ
       
 25333 -# -----------
       
 25334 -AC_DEFUN([LT_PROG_GCJ],
       
 25335 -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
       
 25336 -  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
       
 25337 -    [AC_CHECK_TOOL(GCJ, gcj,)
       
 25338 -      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
       
 25339 -      AC_SUBST(GCJFLAGS)])])[]dnl
       
 25340 -])
       
 25341 -
       
 25342 -# Old name:
       
 25343 -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
       
 25344 -dnl aclocal-1.4 backwards compatibility:
       
 25345 -dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
       
 25346 -
       
 25347 -
       
 25348 -# LT_PROG_RC
       
 25349 -# ----------
       
 25350 -AC_DEFUN([LT_PROG_RC],
       
 25351 -[AC_CHECK_TOOL(RC, windres,)
       
 25352 -])
       
 25353 -
       
 25354 -# Old name:
       
 25355 -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
       
 25356 -dnl aclocal-1.4 backwards compatibility:
       
 25357 -dnl AC_DEFUN([LT_AC_PROG_RC], [])
       
 25358 -
       
 25359 -
       
 25360 -# _LT_DECL_EGREP
       
 25361 -# --------------
       
 25362 -# If we don't have a new enough Autoconf to choose the best grep
       
 25363 -# available, choose the one first in the user's PATH.
       
 25364 -m4_defun([_LT_DECL_EGREP],
       
 25365 -[AC_REQUIRE([AC_PROG_EGREP])dnl
       
 25366 -AC_REQUIRE([AC_PROG_FGREP])dnl
       
 25367 -test -z "$GREP" && GREP=grep
       
 25368 -_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
       
 25369 -_LT_DECL([], [EGREP], [1], [An ERE matcher])
       
 25370 -_LT_DECL([], [FGREP], [1], [A literal string matcher])
       
 25371 -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
       
 25372 -AC_SUBST([GREP])
       
 25373 -])
       
 25374 -
       
 25375 -
       
 25376 -# _LT_DECL_OBJDUMP
       
 25377 -# --------------
       
 25378 -# If we don't have a new enough Autoconf to choose the best objdump
       
 25379 -# available, choose the one first in the user's PATH.
       
 25380 -m4_defun([_LT_DECL_OBJDUMP],
       
 25381 -[AC_CHECK_TOOL(OBJDUMP, objdump, false)
       
 25382 -test -z "$OBJDUMP" && OBJDUMP=objdump
       
 25383 -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
       
 25384 -AC_SUBST([OBJDUMP])
       
 25385 -])
       
 25386 -
       
 25387 -
       
 25388 -# _LT_DECL_SED
       
 25389 -# ------------
       
 25390 -# Check for a fully-functional sed program, that truncates
       
 25391 -# as few characters as possible.  Prefer GNU sed if found.
       
 25392 -m4_defun([_LT_DECL_SED],
       
 25393 -[AC_PROG_SED
       
 25394 -test -z "$SED" && SED=sed
       
 25395 -Xsed="$SED -e 1s/^X//"
       
 25396 -_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
       
 25397 -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
       
 25398 -    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
       
 25399 -])# _LT_DECL_SED
       
 25400 -
       
 25401 -m4_ifndef([AC_PROG_SED], [
       
 25402 -# NOTE: This macro has been submitted for inclusion into   #
       
 25403 -#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
       
 25404 -#  a released version of Autoconf we should remove this    #
       
 25405 -#  macro and use it instead.                               #
       
 25406 -
       
 25407 -m4_defun([AC_PROG_SED],
       
 25408 -[AC_MSG_CHECKING([for a sed that does not truncate output])
       
 25409 -AC_CACHE_VAL(lt_cv_path_SED,
       
 25410 -[# Loop through the user's path and test for sed and gsed.
       
 25411 -# Then use that list of sed's as ones to test for truncation.
       
 25412 -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 25413 -for as_dir in $PATH
       
 25414 -do
       
 25415 -  IFS=$as_save_IFS
       
 25416 -  test -z "$as_dir" && as_dir=.
       
 25417 -  for lt_ac_prog in sed gsed; do
       
 25418 -    for ac_exec_ext in '' $ac_executable_extensions; do
       
 25419 -      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
       
 25420 -        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
       
 25421 -      fi
       
 25422 -    done
       
 25423 -  done
       
 25424 -done
       
 25425 -IFS=$as_save_IFS
       
 25426 -lt_ac_max=0
       
 25427 -lt_ac_count=0
       
 25428 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris
       
 25429 -# along with /bin/sed that truncates output.
       
 25430 -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
       
 25431 -  test ! -f $lt_ac_sed && continue
       
 25432 -  cat /dev/null > conftest.in
       
 25433 -  lt_ac_count=0
       
 25434 -  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
       
 25435 -  # Check for GNU sed and select it if it is found.
       
 25436 -  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
       
 25437 -    lt_cv_path_SED=$lt_ac_sed
       
 25438 -    break
       
 25439 -  fi
       
 25440 -  while true; do
       
 25441 -    cat conftest.in conftest.in >conftest.tmp
       
 25442 -    mv conftest.tmp conftest.in
       
 25443 -    cp conftest.in conftest.nl
       
 25444 -    echo >>conftest.nl
       
 25445 -    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
       
 25446 -    cmp -s conftest.out conftest.nl || break
       
 25447 -    # 10000 chars as input seems more than enough
       
 25448 -    test $lt_ac_count -gt 10 && break
       
 25449 -    lt_ac_count=`expr $lt_ac_count + 1`
       
 25450 -    if test $lt_ac_count -gt $lt_ac_max; then
       
 25451 -      lt_ac_max=$lt_ac_count
       
 25452 -      lt_cv_path_SED=$lt_ac_sed
       
 25453 -    fi
       
 25454 -  done
       
 25455 -done
       
 25456 -])
       
 25457 -SED=$lt_cv_path_SED
       
 25458 -AC_SUBST([SED])
       
 25459 -AC_MSG_RESULT([$SED])
       
 25460 -])#AC_PROG_SED
       
 25461 -])#m4_ifndef
       
 25462 -
       
 25463 -# Old name:
       
 25464 -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
       
 25465 -dnl aclocal-1.4 backwards compatibility:
       
 25466 -dnl AC_DEFUN([LT_AC_PROG_SED], [])
       
 25467 -
       
 25468 -
       
 25469 -# _LT_CHECK_SHELL_FEATURES
       
 25470 -# ------------------------
       
 25471 -# Find out whether the shell is Bourne or XSI compatible,
       
 25472 -# or has some other useful features.
       
 25473 -m4_defun([_LT_CHECK_SHELL_FEATURES],
       
 25474 -[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
       
 25475 -# Try some XSI features
       
 25476 -xsi_shell=no
       
 25477 -( _lt_dummy="a/b/c"
       
 25478 -  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
       
 25479 -      = c,a/b,, \
       
 25480 -    && eval 'test $(( 1 + 1 )) -eq 2 \
       
 25481 -    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
       
 25482 -  && xsi_shell=yes
       
 25483 -AC_MSG_RESULT([$xsi_shell])
       
 25484 -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
       
 25485 -
       
 25486 -AC_MSG_CHECKING([whether the shell understands "+="])
       
 25487 -lt_shell_append=no
       
 25488 -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
       
 25489 -    >/dev/null 2>&1 \
       
 25490 -  && lt_shell_append=yes
       
 25491 -AC_MSG_RESULT([$lt_shell_append])
       
 25492 -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
       
 25493 -
       
 25494 -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
       
 25495 -  lt_unset=unset
       
 25496 -else
       
 25497 -  lt_unset=false
       
 25498 -fi
       
 25499 -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
       
 25500 -
       
 25501 -# test EBCDIC or ASCII
       
 25502 -case `echo X|tr X '\101'` in
       
 25503 - A) # ASCII based system
       
 25504 -    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
       
 25505 -  lt_SP2NL='tr \040 \012'
       
 25506 -  lt_NL2SP='tr \015\012 \040\040'
       
 25507 -  ;;
       
 25508 - *) # EBCDIC based system
       
 25509 -  lt_SP2NL='tr \100 \n'
       
 25510 -  lt_NL2SP='tr \r\n \100\100'
       
 25511 -  ;;
       
 25512 -esac
       
 25513 -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
       
 25514 -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
       
 25515 -])# _LT_CHECK_SHELL_FEATURES
       
 25516 -
       
 25517 -
       
 25518 -# _LT_PROG_XSI_SHELLFNS
       
 25519 -# ---------------------
       
 25520 -# Bourne and XSI compatible variants of some useful shell functions.
       
 25521 -m4_defun([_LT_PROG_XSI_SHELLFNS],
       
 25522 -[case $xsi_shell in
       
 25523 -  yes)
       
 25524 -    cat << \_LT_EOF >> "$cfgfile"
       
 25525 -
       
 25526 -# func_dirname file append nondir_replacement
       
 25527 -# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
       
 25528 -# otherwise set result to NONDIR_REPLACEMENT.
       
 25529 -func_dirname ()
       
 25530 -{
       
 25531 -  case ${1} in
       
 25532 -    */*) func_dirname_result="${1%/*}${2}" ;;
       
 25533 -    *  ) func_dirname_result="${3}" ;;
       
 25534 -  esac
       
 25535 -}
       
 25536 -
       
 25537 -# func_basename file
       
 25538 -func_basename ()
       
 25539 -{
       
 25540 -  func_basename_result="${1##*/}"
       
 25541 -}
       
 25542 -
       
 25543 -# func_dirname_and_basename file append nondir_replacement
       
 25544 -# perform func_basename and func_dirname in a single function
       
 25545 -# call:
       
 25546 -#   dirname:  Compute the dirname of FILE.  If nonempty,
       
 25547 -#             add APPEND to the result, otherwise set result
       
 25548 -#             to NONDIR_REPLACEMENT.
       
 25549 -#             value returned in "$func_dirname_result"
       
 25550 -#   basename: Compute filename of FILE.
       
 25551 -#             value retuned in "$func_basename_result"
       
 25552 -# Implementation must be kept synchronized with func_dirname
       
 25553 -# and func_basename. For efficiency, we do not delegate to
       
 25554 -# those functions but instead duplicate the functionality here.
       
 25555 -func_dirname_and_basename ()
       
 25556 -{
       
 25557 -  case ${1} in
       
 25558 -    */*) func_dirname_result="${1%/*}${2}" ;;
       
 25559 -    *  ) func_dirname_result="${3}" ;;
       
 25560 -  esac
       
 25561 -  func_basename_result="${1##*/}"
       
 25562 -}
       
 25563 -
       
 25564 -# func_stripname prefix suffix name
       
 25565 -# strip PREFIX and SUFFIX off of NAME.
       
 25566 -# PREFIX and SUFFIX must not contain globbing or regex special
       
 25567 -# characters, hashes, percent signs, but SUFFIX may contain a leading
       
 25568 -# dot (in which case that matches only a dot).
       
 25569 -func_stripname ()
       
 25570 -{
       
 25571 -  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
       
 25572 -  # positional parameters, so assign one to ordinary parameter first.
       
 25573 -  func_stripname_result=${3}
       
 25574 -  func_stripname_result=${func_stripname_result#"${1}"}
       
 25575 -  func_stripname_result=${func_stripname_result%"${2}"}
       
 25576 -}
       
 25577 -
       
 25578 -# func_opt_split
       
 25579 -func_opt_split ()
       
 25580 -{
       
 25581 -  func_opt_split_opt=${1%%=*}
       
 25582 -  func_opt_split_arg=${1#*=}
       
 25583 -}
       
 25584 -
       
 25585 -# func_lo2o object
       
 25586 -func_lo2o ()
       
 25587 -{
       
 25588 -  case ${1} in
       
 25589 -    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
       
 25590 -    *)    func_lo2o_result=${1} ;;
       
 25591 -  esac
       
 25592 -}
       
 25593 -
       
 25594 -# func_xform libobj-or-source
       
 25595 -func_xform ()
       
 25596 -{
       
 25597 -  func_xform_result=${1%.*}.lo
       
 25598 -}
       
 25599 -
       
 25600 -# func_arith arithmetic-term...
       
 25601 -func_arith ()
       
 25602 -{
       
 25603 -  func_arith_result=$(( $[*] ))
       
 25604 -}
       
 25605 -
       
 25606 -# func_len string
       
 25607 -# STRING may not start with a hyphen.
       
 25608 -func_len ()
       
 25609 -{
       
 25610 -  func_len_result=${#1}
       
 25611 -}
       
 25612 -
       
 25613 -_LT_EOF
       
 25614 -    ;;
       
 25615 -  *) # Bourne compatible functions.
       
 25616 -    cat << \_LT_EOF >> "$cfgfile"
       
 25617 -
       
 25618 -# func_dirname file append nondir_replacement
       
 25619 -# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
       
 25620 -# otherwise set result to NONDIR_REPLACEMENT.
       
 25621 -func_dirname ()
       
 25622 -{
       
 25623 -  # Extract subdirectory from the argument.
       
 25624 -  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
       
 25625 -  if test "X$func_dirname_result" = "X${1}"; then
       
 25626 -    func_dirname_result="${3}"
       
 25627 -  else
       
 25628 -    func_dirname_result="$func_dirname_result${2}"
       
 25629 -  fi
       
 25630 -}
       
 25631 -
       
 25632 -# func_basename file
       
 25633 -func_basename ()
       
 25634 -{
       
 25635 -  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
       
 25636 -}
       
 25637 -
       
 25638 -dnl func_dirname_and_basename
       
 25639 -dnl A portable version of this function is already defined in general.m4sh
       
 25640 -dnl so there is no need for it here.
       
 25641 -
       
 25642 -# func_stripname prefix suffix name
       
 25643 -# strip PREFIX and SUFFIX off of NAME.
       
 25644 -# PREFIX and SUFFIX must not contain globbing or regex special
       
 25645 -# characters, hashes, percent signs, but SUFFIX may contain a leading
       
 25646 -# dot (in which case that matches only a dot).
       
 25647 -# func_strip_suffix prefix name
       
 25648 -func_stripname ()
       
 25649 -{
       
 25650 -  case ${2} in
       
 25651 -    .*) func_stripname_result=`$ECHO "X${3}" \
       
 25652 -           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
       
 25653 -    *)  func_stripname_result=`$ECHO "X${3}" \
       
 25654 -           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
       
 25655 -  esac
       
 25656 -}
       
 25657 -
       
 25658 -# sed scripts:
       
 25659 -my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
       
 25660 -my_sed_long_arg='1s/^-[[^=]]*=//'
       
 25661 -
       
 25662 -# func_opt_split
       
 25663 -func_opt_split ()
       
 25664 -{
       
 25665 -  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
       
 25666 -  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
       
 25667 -}
       
 25668 -
       
 25669 -# func_lo2o object
       
 25670 -func_lo2o ()
       
 25671 -{
       
 25672 -  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
       
 25673 -}
       
 25674 -
       
 25675 -# func_xform libobj-or-source
       
 25676 -func_xform ()
       
 25677 -{
       
 25678 -  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
       
 25679 -}
       
 25680 -
       
 25681 -# func_arith arithmetic-term...
       
 25682 -func_arith ()
       
 25683 -{
       
 25684 -  func_arith_result=`expr "$[@]"`
       
 25685 -}
       
 25686 -
       
 25687 -# func_len string
       
 25688 -# STRING may not start with a hyphen.
       
 25689 -func_len ()
       
 25690 -{
       
 25691 -  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
       
 25692 -}
       
 25693 -
       
 25694 -_LT_EOF
       
 25695 -esac
       
 25696 -
       
 25697 -case $lt_shell_append in
       
 25698 -  yes)
       
 25699 -    cat << \_LT_EOF >> "$cfgfile"
       
 25700 -
       
 25701 -# func_append var value
       
 25702 -# Append VALUE to the end of shell variable VAR.
       
 25703 -func_append ()
       
 25704 -{
       
 25705 -  eval "$[1]+=\$[2]"
       
 25706 -}
       
 25707 -_LT_EOF
       
 25708 -    ;;
       
 25709 -  *)
       
 25710 -    cat << \_LT_EOF >> "$cfgfile"
       
 25711 -
       
 25712 -# func_append var value
       
 25713 -# Append VALUE to the end of shell variable VAR.
       
 25714 -func_append ()
       
 25715 -{
       
 25716 -  eval "$[1]=\$$[1]\$[2]"
       
 25717 -}
       
 25718 -
       
 25719 -_LT_EOF
       
 25720 -    ;;
       
 25721 -  esac
       
 25722 -])
       
 25723 +To do so, use the procedure documented by the package, typically 'autoreconf'.])])
       
 25724  
       
 25725  # ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*-
       
 25726  #
       
 25727 -#   Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc.
       
 25728 +#   Copyright (C) 1999-2006, 2007, 2008, 2011 Free Software Foundation, Inc.
       
 25729  #   Written by Thomas Tanner, 1999
       
 25730  #
       
 25731  # This file is free software; the Free Software Foundation gives
       
 25732  # unlimited permission to copy and/or distribute it, with or without
       
 25733  # modifications, as long as this notice is preserved.
       
 25734  
       
 25735 -# serial 17 LTDL_INIT
       
 25736 +# serial 18 LTDL_INIT
       
 25737  
       
 25738  # LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE])
       
 25739  # ------------------------------------------
       
 25740  # DIRECTORY contains the libltdl sources.  It is okay to call this
       
 25741  # function multiple times, as long as the same DIRECTORY is always given.
       
 25742  AC_DEFUN([LT_CONFIG_LTDL_DIR],
       
 25743  [AC_BEFORE([$0], [LTDL_INIT])
       
 25744  _$0($*)
       
 25745 @@ -7774,20 +424,26 @@ m4_ifset([AH_HEADER],
       
 25746  AC_SUBST([LT_CONFIG_H])
       
 25747  
       
 25748  AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
       
 25749  	[], [], [AC_INCLUDES_DEFAULT])
       
 25750  
       
 25751  AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
       
 25752  AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
       
 25753  
       
 25754 +m4_pattern_allow([LT_LIBEXT])dnl
       
 25755  AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
       
 25756  
       
 25757 +name=
       
 25758 +eval "lt_libprefix=\"$libname_spec\""
       
 25759 +m4_pattern_allow([LT_LIBPREFIX])dnl
       
 25760 +AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
       
 25761 +
       
 25762  name=ltdl
       
 25763 -LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""`
       
 25764 +eval "LTDLOPEN=\"$libname_spec\""
       
 25765  AC_SUBST([LTDLOPEN])
       
 25766  ])# _LTDL_SETUP
       
 25767  
       
 25768  
       
 25769  # _LT_ENABLE_INSTALL
       
 25770  # ------------------
       
 25771  m4_define([_LT_ENABLE_INSTALL],
       
 25772  [AC_ARG_ENABLE([ltdl-install],
       
 25773 @@ -7834,17 +490,17 @@ AC_CACHE_CHECK([whether deplibs are load
       
 25774    darwin*)
       
 25775      # Assuming the user has installed a libdl from somewhere, this is true
       
 25776      # If you are looking for one http://www.opendarwin.org/projects/dlcompat
       
 25777      lt_cv_sys_dlopen_deplibs=yes
       
 25778      ;;
       
 25779    freebsd* | dragonfly*)
       
 25780      lt_cv_sys_dlopen_deplibs=yes
       
 25781      ;;
       
 25782 -  gnu* | linux* | k*bsd*-gnu)
       
 25783 +  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
       
 25784      # GNU and its variants, using gnu ld.so (Glibc)
       
 25785      lt_cv_sys_dlopen_deplibs=yes
       
 25786      ;;
       
 25787    hpux10*|hpux11*)
       
 25788      lt_cv_sys_dlopen_deplibs=yes
       
 25789      ;;
       
 25790    interix*)
       
 25791      lt_cv_sys_dlopen_deplibs=yes
       
 25792 @@ -7914,22 +570,29 @@ dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS
       
 25793  # -----------------
       
 25794  AC_DEFUN([LT_SYS_MODULE_EXT],
       
 25795  [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
       
 25796  AC_CACHE_CHECK([which extension is used for runtime loadable modules],
       
 25797    [libltdl_cv_shlibext],
       
 25798  [
       
 25799  module=yes
       
 25800  eval libltdl_cv_shlibext=$shrext_cmds
       
 25801 +module=no
       
 25802 +eval libltdl_cv_shrext=$shrext_cmds
       
 25803    ])
       
 25804  if test -n "$libltdl_cv_shlibext"; then
       
 25805    m4_pattern_allow([LT_MODULE_EXT])dnl
       
 25806    AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
       
 25807      [Define to the extension used for runtime loadable modules, say, ".so".])
       
 25808  fi
       
 25809 +if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
       
 25810 +  m4_pattern_allow([LT_SHARED_EXT])dnl
       
 25811 +  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
       
 25812 +    [Define to the shared library suffix, say, ".dylib".])
       
 25813 +fi
       
 25814  ])# LT_SYS_MODULE_EXT
       
 25815  
       
 25816  # Old name:
       
 25817  AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT])
       
 25818  dnl aclocal-1.4 backwards compatibility:
       
 25819  dnl AC_DEFUN([AC_LTDL_SHLIBEXT], [])
       
 25820  
       
 25821  
       
 25822 @@ -8170,689 +833,83 @@ if test x"$libltdl_cv_need_uscore" = xye
       
 25823  fi
       
 25824  ])# LT_FUNC_DLSYM_USCORE
       
 25825  
       
 25826  # Old name:
       
 25827  AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE])
       
 25828  dnl aclocal-1.4 backwards compatibility:
       
 25829  dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], [])
       
 25830  
       
 25831 -# Helper functions for option handling.                    -*- Autoconf -*-
       
 25832 -#
       
 25833 -#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
       
 25834 -#   Written by Gary V. Vaughan, 2004
       
 25835 -#
       
 25836 -# This file is free software; the Free Software Foundation gives
       
 25837 -# unlimited permission to copy and/or distribute it, with or without
       
 25838 -# modifications, as long as this notice is preserved.
       
 25839 -
       
 25840 -# serial 6 ltoptions.m4
       
 25841 -
       
 25842 -# This is to help aclocal find these macros, as it can't see m4_define.
       
 25843 -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
       
 25844 -
       
 25845 -
       
 25846 -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
       
 25847 -# ------------------------------------------
       
 25848 -m4_define([_LT_MANGLE_OPTION],
       
 25849 -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
       
 25850 -
       
 25851 -
       
 25852 -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
       
 25853 -# ---------------------------------------
       
 25854 -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
       
 25855 -# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
       
 25856 -# saved as a flag.
       
 25857 -m4_define([_LT_SET_OPTION],
       
 25858 -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
       
 25859 -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
       
 25860 -        _LT_MANGLE_DEFUN([$1], [$2]),
       
 25861 -    [m4_warning([Unknown $1 option `$2'])])[]dnl
       
 25862 -])
       
 25863 -
       
 25864 -
       
 25865 -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
       
 25866 -# ------------------------------------------------------------
       
 25867 -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
       
 25868 -m4_define([_LT_IF_OPTION],
       
 25869 -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
       
 25870 -
       
 25871 -
       
 25872 -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
       
 25873 -# -------------------------------------------------------
       
 25874 -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
       
 25875 -# are set.
       
 25876 -m4_define([_LT_UNLESS_OPTIONS],
       
 25877 -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
       
 25878 -	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
       
 25879 -		      [m4_define([$0_found])])])[]dnl
       
 25880 -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
       
 25881 -])[]dnl
       
 25882 -])
       
 25883 -
       
 25884 -
       
 25885 -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
       
 25886 -# ----------------------------------------
       
 25887 -# OPTION-LIST is a space-separated list of Libtool options associated
       
 25888 -# with MACRO-NAME.  If any OPTION has a matching handler declared with
       
 25889 -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
       
 25890 -# the unknown option and exit.
       
 25891 -m4_defun([_LT_SET_OPTIONS],
       
 25892 -[# Set options
       
 25893 -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
       
 25894 -    [_LT_SET_OPTION([$1], _LT_Option)])
       
 25895 -
       
 25896 -m4_if([$1],[LT_INIT],[
       
 25897 -  dnl
       
 25898 -  dnl Simply set some default values (i.e off) if boolean options were not
       
 25899 -  dnl specified:
       
 25900 -  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
       
 25901 -  ])
       
 25902 -  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
       
 25903 -  ])
       
 25904 -  dnl
       
 25905 -  dnl If no reference was made to various pairs of opposing options, then
       
 25906 -  dnl we run the default mode handler for the pair.  For example, if neither
       
 25907 -  dnl `shared' nor `disable-shared' was passed, we enable building of shared
       
 25908 -  dnl archives by default:
       
 25909 -  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
       
 25910 -  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
       
 25911 -  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
       
 25912 -  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
       
 25913 -  		   [_LT_ENABLE_FAST_INSTALL])
       
 25914 -  ])
       
 25915 -])# _LT_SET_OPTIONS
       
 25916 -
       
 25917 -
       
 25918 -
       
 25919 -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
       
 25920 -# -----------------------------------------
       
 25921 -m4_define([_LT_MANGLE_DEFUN],
       
 25922 -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
       
 25923 -
       
 25924 -
       
 25925 -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
       
 25926 -# -----------------------------------------------
       
 25927 -m4_define([LT_OPTION_DEFINE],
       
 25928 -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
       
 25929 -])# LT_OPTION_DEFINE
       
 25930 -
       
 25931 -
       
 25932 -# dlopen
       
 25933 -# ------
       
 25934 -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
       
 25935 -])
       
 25936 -
       
 25937 -AU_DEFUN([AC_LIBTOOL_DLOPEN],
       
 25938 -[_LT_SET_OPTION([LT_INIT], [dlopen])
       
 25939 -AC_DIAGNOSE([obsolete],
       
 25940 -[$0: Remove this warning and the call to _LT_SET_OPTION when you
       
 25941 -put the `dlopen' option into LT_INIT's first parameter.])
       
 25942 -])
       
 25943 -
       
 25944 -dnl aclocal-1.4 backwards compatibility:
       
 25945 -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
       
 25946 -
       
 25947 -
       
 25948 -# win32-dll
       
 25949 -# ---------
       
 25950 -# Declare package support for building win32 dll's.
       
 25951 -LT_OPTION_DEFINE([LT_INIT], [win32-dll],
       
 25952 -[enable_win32_dll=yes
       
 25953 -
       
 25954 -case $host in
       
 25955 -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
       
 25956 -  AC_CHECK_TOOL(AS, as, false)
       
 25957 -  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
       
 25958 -  AC_CHECK_TOOL(OBJDUMP, objdump, false)
       
 25959 -  ;;
       
 25960 -esac
       
 25961 -
       
 25962 -test -z "$AS" && AS=as
       
 25963 -_LT_DECL([], [AS],      [0], [Assembler program])dnl
       
 25964 -
       
 25965 -test -z "$DLLTOOL" && DLLTOOL=dlltool
       
 25966 -_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
       
 25967 -
       
 25968 -test -z "$OBJDUMP" && OBJDUMP=objdump
       
 25969 -_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
       
 25970 -])# win32-dll
       
 25971 -
       
 25972 -AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
       
 25973 -[AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 25974 -_LT_SET_OPTION([LT_INIT], [win32-dll])
       
 25975 -AC_DIAGNOSE([obsolete],
       
 25976 -[$0: Remove this warning and the call to _LT_SET_OPTION when you
       
 25977 -put the `win32-dll' option into LT_INIT's first parameter.])
       
 25978 -])
       
 25979 -
       
 25980 -dnl aclocal-1.4 backwards compatibility:
       
 25981 -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
       
 25982 -
       
 25983 -
       
 25984 -# _LT_ENABLE_SHARED([DEFAULT])
       
 25985 -# ----------------------------
       
 25986 -# implement the --enable-shared flag, and supports the `shared' and
       
 25987 -# `disable-shared' LT_INIT options.
       
 25988 -# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
       
 25989 -m4_define([_LT_ENABLE_SHARED],
       
 25990 -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
       
 25991 -AC_ARG_ENABLE([shared],
       
 25992 -    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
       
 25993 -	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
       
 25994 -    [p=${PACKAGE-default}
       
 25995 -    case $enableval in
       
 25996 -    yes) enable_shared=yes ;;
       
 25997 -    no) enable_shared=no ;;
       
 25998 -    *)
       
 25999 -      enable_shared=no
       
 26000 -      # Look at the argument we got.  We use all the common list separators.
       
 26001 -      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
       
 26002 -      for pkg in $enableval; do
       
 26003 -	IFS="$lt_save_ifs"
       
 26004 -	if test "X$pkg" = "X$p"; then
       
 26005 -	  enable_shared=yes
       
 26006 -	fi
       
 26007 -      done
       
 26008 -      IFS="$lt_save_ifs"
       
 26009 -      ;;
       
 26010 -    esac],
       
 26011 -    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
       
 26012 -
       
 26013 -    _LT_DECL([build_libtool_libs], [enable_shared], [0],
       
 26014 -	[Whether or not to build shared libraries])
       
 26015 -])# _LT_ENABLE_SHARED
       
 26016 -
       
 26017 -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
       
 26018 -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
       
 26019 -
       
 26020 -# Old names:
       
 26021 -AC_DEFUN([AC_ENABLE_SHARED],
       
 26022 -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
       
 26023 -])
       
 26024 -
       
 26025 -AC_DEFUN([AC_DISABLE_SHARED],
       
 26026 -[_LT_SET_OPTION([LT_INIT], [disable-shared])
       
 26027 -])
       
 26028 -
       
 26029 -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
       
 26030 -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
       
 26031 -
       
 26032 -dnl aclocal-1.4 backwards compatibility:
       
 26033 -dnl AC_DEFUN([AM_ENABLE_SHARED], [])
       
 26034 -dnl AC_DEFUN([AM_DISABLE_SHARED], [])
       
 26035 -
       
 26036 -
       
 26037 -
       
 26038 -# _LT_ENABLE_STATIC([DEFAULT])
       
 26039 -# ----------------------------
       
 26040 -# implement the --enable-static flag, and support the `static' and
       
 26041 -# `disable-static' LT_INIT options.
       
 26042 -# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
       
 26043 -m4_define([_LT_ENABLE_STATIC],
       
 26044 -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
       
 26045 -AC_ARG_ENABLE([static],
       
 26046 -    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
       
 26047 -	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
       
 26048 -    [p=${PACKAGE-default}
       
 26049 -    case $enableval in
       
 26050 -    yes) enable_static=yes ;;
       
 26051 -    no) enable_static=no ;;
       
 26052 -    *)
       
 26053 -     enable_static=no
       
 26054 -      # Look at the argument we got.  We use all the common list separators.
       
 26055 -      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
       
 26056 -      for pkg in $enableval; do
       
 26057 -	IFS="$lt_save_ifs"
       
 26058 -	if test "X$pkg" = "X$p"; then
       
 26059 -	  enable_static=yes
       
 26060 -	fi
       
 26061 -      done
       
 26062 -      IFS="$lt_save_ifs"
       
 26063 -      ;;
       
 26064 -    esac],
       
 26065 -    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
       
 26066 -
       
 26067 -    _LT_DECL([build_old_libs], [enable_static], [0],
       
 26068 -	[Whether or not to build static libraries])
       
 26069 -])# _LT_ENABLE_STATIC
       
 26070 -
       
 26071 -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
       
 26072 -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
       
 26073 -
       
 26074 -# Old names:
       
 26075 -AC_DEFUN([AC_ENABLE_STATIC],
       
 26076 -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
       
 26077 -])
       
 26078 -
       
 26079 -AC_DEFUN([AC_DISABLE_STATIC],
       
 26080 -[_LT_SET_OPTION([LT_INIT], [disable-static])
       
 26081 -])
       
 26082 -
       
 26083 -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
       
 26084 -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
       
 26085 -
       
 26086 -dnl aclocal-1.4 backwards compatibility:
       
 26087 -dnl AC_DEFUN([AM_ENABLE_STATIC], [])
       
 26088 -dnl AC_DEFUN([AM_DISABLE_STATIC], [])
       
 26089 -
       
 26090 -
       
 26091 -
       
 26092 -# _LT_ENABLE_FAST_INSTALL([DEFAULT])
       
 26093 -# ----------------------------------
       
 26094 -# implement the --enable-fast-install flag, and support the `fast-install'
       
 26095 -# and `disable-fast-install' LT_INIT options.
       
 26096 -# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
       
 26097 -m4_define([_LT_ENABLE_FAST_INSTALL],
       
 26098 -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
       
 26099 -AC_ARG_ENABLE([fast-install],
       
 26100 -    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
       
 26101 -    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
       
 26102 -    [p=${PACKAGE-default}
       
 26103 -    case $enableval in
       
 26104 -    yes) enable_fast_install=yes ;;
       
 26105 -    no) enable_fast_install=no ;;
       
 26106 -    *)
       
 26107 -      enable_fast_install=no
       
 26108 -      # Look at the argument we got.  We use all the common list separators.
       
 26109 -      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
       
 26110 -      for pkg in $enableval; do
       
 26111 -	IFS="$lt_save_ifs"
       
 26112 -	if test "X$pkg" = "X$p"; then
       
 26113 -	  enable_fast_install=yes
       
 26114 -	fi
       
 26115 -      done
       
 26116 -      IFS="$lt_save_ifs"
       
 26117 -      ;;
       
 26118 -    esac],
       
 26119 -    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
       
 26120 -
       
 26121 -_LT_DECL([fast_install], [enable_fast_install], [0],
       
 26122 -	 [Whether or not to optimize for fast installation])dnl
       
 26123 -])# _LT_ENABLE_FAST_INSTALL
       
 26124 -
       
 26125 -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
       
 26126 -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
       
 26127 -
       
 26128 -# Old names:
       
 26129 -AU_DEFUN([AC_ENABLE_FAST_INSTALL],
       
 26130 -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
       
 26131 -AC_DIAGNOSE([obsolete],
       
 26132 -[$0: Remove this warning and the call to _LT_SET_OPTION when you put
       
 26133 -the `fast-install' option into LT_INIT's first parameter.])
       
 26134 -])
       
 26135 -
       
 26136 -AU_DEFUN([AC_DISABLE_FAST_INSTALL],
       
 26137 -[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
       
 26138 -AC_DIAGNOSE([obsolete],
       
 26139 -[$0: Remove this warning and the call to _LT_SET_OPTION when you put
       
 26140 -the `disable-fast-install' option into LT_INIT's first parameter.])
       
 26141 -])
       
 26142 -
       
 26143 -dnl aclocal-1.4 backwards compatibility:
       
 26144 -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
       
 26145 -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
       
 26146 -
       
 26147 -
       
 26148 -# _LT_WITH_PIC([MODE])
       
 26149 -# --------------------
       
 26150 -# implement the --with-pic flag, and support the `pic-only' and `no-pic'
       
 26151 -# LT_INIT options.
       
 26152 -# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
       
 26153 -m4_define([_LT_WITH_PIC],
       
 26154 -[AC_ARG_WITH([pic],
       
 26155 -    [AS_HELP_STRING([--with-pic],
       
 26156 -	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
       
 26157 -    [pic_mode="$withval"],
       
 26158 -    [pic_mode=default])
       
 26159 -
       
 26160 -test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
       
 26161 -
       
 26162 -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
       
 26163 -])# _LT_WITH_PIC
       
 26164 -
       
 26165 -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
       
 26166 -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
       
 26167 -
       
 26168 -# Old name:
       
 26169 -AU_DEFUN([AC_LIBTOOL_PICMODE],
       
 26170 -[_LT_SET_OPTION([LT_INIT], [pic-only])
       
 26171 -AC_DIAGNOSE([obsolete],
       
 26172 -[$0: Remove this warning and the call to _LT_SET_OPTION when you
       
 26173 -put the `pic-only' option into LT_INIT's first parameter.])
       
 26174 -])
       
 26175 -
       
 26176 -dnl aclocal-1.4 backwards compatibility:
       
 26177 -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
       
 26178 -
       
 26179 -
       
 26180 -m4_define([_LTDL_MODE], [])
       
 26181 -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
       
 26182 -		 [m4_define([_LTDL_MODE], [nonrecursive])])
       
 26183 -LT_OPTION_DEFINE([LTDL_INIT], [recursive],
       
 26184 -		 [m4_define([_LTDL_MODE], [recursive])])
       
 26185 -LT_OPTION_DEFINE([LTDL_INIT], [subproject],
       
 26186 -		 [m4_define([_LTDL_MODE], [subproject])])
       
 26187 -
       
 26188 -m4_define([_LTDL_TYPE], [])
       
 26189 -LT_OPTION_DEFINE([LTDL_INIT], [installable],
       
 26190 -		 [m4_define([_LTDL_TYPE], [installable])])
       
 26191 -LT_OPTION_DEFINE([LTDL_INIT], [convenience],
       
 26192 -		 [m4_define([_LTDL_TYPE], [convenience])])
       
 26193 -
       
 26194 -# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
       
 26195 -#
       
 26196 -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
       
 26197 -# Written by Gary V. Vaughan, 2004
       
 26198 -#
       
 26199 -# This file is free software; the Free Software Foundation gives
       
 26200 -# unlimited permission to copy and/or distribute it, with or without
       
 26201 -# modifications, as long as this notice is preserved.
       
 26202 -
       
 26203 -# serial 6 ltsugar.m4
       
 26204 -
       
 26205 -# This is to help aclocal find these macros, as it can't see m4_define.
       
 26206 -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
       
 26207 -
       
 26208 -
       
 26209 -# lt_join(SEP, ARG1, [ARG2...])
       
 26210 -# -----------------------------
       
 26211 -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
       
 26212 -# associated separator.
       
 26213 -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
       
 26214 -# versions in m4sugar had bugs.
       
 26215 -m4_define([lt_join],
       
 26216 -[m4_if([$#], [1], [],
       
 26217 -       [$#], [2], [[$2]],
       
 26218 -       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
       
 26219 -m4_define([_lt_join],
       
 26220 -[m4_if([$#$2], [2], [],
       
 26221 -       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
       
 26222 -
       
 26223 -
       
 26224 -# lt_car(LIST)
       
 26225 -# lt_cdr(LIST)
       
 26226 -# ------------
       
 26227 -# Manipulate m4 lists.
       
 26228 -# These macros are necessary as long as will still need to support
       
 26229 -# Autoconf-2.59 which quotes differently.
       
 26230 -m4_define([lt_car], [[$1]])
       
 26231 -m4_define([lt_cdr],
       
 26232 -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
       
 26233 -       [$#], 1, [],
       
 26234 -       [m4_dquote(m4_shift($@))])])
       
 26235 -m4_define([lt_unquote], $1)
       
 26236 -
       
 26237 -
       
 26238 -# lt_append(MACRO-NAME, STRING, [SEPARATOR])
       
 26239 -# ------------------------------------------
       
 26240 -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
       
 26241 -# Note that neither SEPARATOR nor STRING are expanded; they are appended
       
 26242 -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
       
 26243 -# No SEPARATOR is output if MACRO-NAME was previously undefined (different
       
 26244 -# than defined and empty).
       
 26245 -#
       
 26246 -# This macro is needed until we can rely on Autoconf 2.62, since earlier
       
 26247 -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
       
 26248 -m4_define([lt_append],
       
 26249 -[m4_define([$1],
       
 26250 -	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
       
 26251 -
       
 26252 -
       
 26253 -
       
 26254 -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
       
 26255 -# ----------------------------------------------------------
       
 26256 -# Produce a SEP delimited list of all paired combinations of elements of
       
 26257 -# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
       
 26258 -# has the form PREFIXmINFIXSUFFIXn.
       
 26259 -# Needed until we can rely on m4_combine added in Autoconf 2.62.
       
 26260 -m4_define([lt_combine],
       
 26261 -[m4_if(m4_eval([$# > 3]), [1],
       
 26262 -       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
       
 26263 -[[m4_foreach([_Lt_prefix], [$2],
       
 26264 -	     [m4_foreach([_Lt_suffix],
       
 26265 -		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
       
 26266 -	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
       
 26267 -
       
 26268 -
       
 26269 -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
       
 26270 -# -----------------------------------------------------------------------
       
 26271 -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
       
 26272 -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
       
 26273 -m4_define([lt_if_append_uniq],
       
 26274 -[m4_ifdef([$1],
       
 26275 -	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
       
 26276 -		 [lt_append([$1], [$2], [$3])$4],
       
 26277 -		 [$5])],
       
 26278 -	  [lt_append([$1], [$2], [$3])$4])])
       
 26279 -
       
 26280 -
       
 26281 -# lt_dict_add(DICT, KEY, VALUE)
       
 26282 -# -----------------------------
       
 26283 -m4_define([lt_dict_add],
       
 26284 -[m4_define([$1($2)], [$3])])
       
 26285 -
       
 26286 -
       
 26287 -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
       
 26288 -# --------------------------------------------
       
 26289 -m4_define([lt_dict_add_subkey],
       
 26290 -[m4_define([$1($2:$3)], [$4])])
       
 26291 -
       
 26292 -
       
 26293 -# lt_dict_fetch(DICT, KEY, [SUBKEY])
       
 26294 -# ----------------------------------
       
 26295 -m4_define([lt_dict_fetch],
       
 26296 -[m4_ifval([$3],
       
 26297 -	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
       
 26298 -    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
       
 26299 -
       
 26300 -
       
 26301 -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
       
 26302 -# -----------------------------------------------------------------
       
 26303 -m4_define([lt_if_dict_fetch],
       
 26304 -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
       
 26305 -	[$5],
       
 26306 -    [$6])])
       
 26307 -
       
 26308 -
       
 26309 -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
       
 26310 -# --------------------------------------------------------------
       
 26311 -m4_define([lt_dict_filter],
       
 26312 -[m4_if([$5], [], [],
       
 26313 -  [lt_join(m4_quote(m4_default([$4], [[, ]])),
       
 26314 -           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
       
 26315 -		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
       
 26316 -])
       
 26317 -
       
 26318 -# ltversion.m4 -- version numbers			-*- Autoconf -*-
       
 26319 -#
       
 26320 -#   Copyright (C) 2004 Free Software Foundation, Inc.
       
 26321 -#   Written by Scott James Remnant, 2004
       
 26322 -#
       
 26323 -# This file is free software; the Free Software Foundation gives
       
 26324 -# unlimited permission to copy and/or distribute it, with or without
       
 26325 -# modifications, as long as this notice is preserved.
       
 26326 -
       
 26327 -# Generated from ltversion.in.
       
 26328 -
       
 26329 -# serial 3017 ltversion.m4
       
 26330 -# This file is part of GNU Libtool
       
 26331 -
       
 26332 -m4_define([LT_PACKAGE_VERSION], [2.2.6b])
       
 26333 -m4_define([LT_PACKAGE_REVISION], [1.3017])
       
 26334 -
       
 26335 -AC_DEFUN([LTVERSION_VERSION],
       
 26336 -[macro_version='2.2.6b'
       
 26337 -macro_revision='1.3017'
       
 26338 -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
       
 26339 -_LT_DECL(, macro_revision, 0)
       
 26340 -])
       
 26341 -
       
 26342 -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
       
 26343 -#
       
 26344 -#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
       
 26345 -#   Written by Scott James Remnant, 2004.
       
 26346 -#
       
 26347 -# This file is free software; the Free Software Foundation gives
       
 26348 -# unlimited permission to copy and/or distribute it, with or without
       
 26349 -# modifications, as long as this notice is preserved.
       
 26350 -
       
 26351 -# serial 4 lt~obsolete.m4
       
 26352 -
       
 26353 -# These exist entirely to fool aclocal when bootstrapping libtool.
       
 26354 -#
       
 26355 -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
       
 26356 -# which have later been changed to m4_define as they aren't part of the
       
 26357 -# exported API, or moved to Autoconf or Automake where they belong.
       
 26358 -#
       
 26359 -# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
       
 26360 -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
       
 26361 -# using a macro with the same name in our local m4/libtool.m4 it'll
       
 26362 -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
       
 26363 -# and doesn't know about Autoconf macros at all.)
       
 26364 -#
       
 26365 -# So we provide this file, which has a silly filename so it's always
       
 26366 -# included after everything else.  This provides aclocal with the
       
 26367 -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
       
 26368 -# because those macros already exist, or will be overwritten later.
       
 26369 -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
       
 26370 -#
       
 26371 -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
       
 26372 -# Yes, that means every name once taken will need to remain here until
       
 26373 -# we give up compatibility with versions before 1.7, at which point
       
 26374 -# we need to keep only those names which we still refer to.
       
 26375 -
       
 26376 -# This is to help aclocal find these macros, as it can't see m4_define.
       
 26377 -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
       
 26378 -
       
 26379 -m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
       
 26380 -m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
       
 26381 -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
       
 26382 -m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
       
 26383 -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
       
 26384 -m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
       
 26385 -m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
       
 26386 -m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
       
 26387 -m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
       
 26388 -m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
       
 26389 -m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
       
 26390 -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
       
 26391 -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
       
 26392 -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
       
 26393 -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
       
 26394 -m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
       
 26395 -m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
       
 26396 -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
       
 26397 -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
       
 26398 -m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
       
 26399 -m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
       
 26400 -m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
       
 26401 -m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
       
 26402 -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
       
 26403 -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
       
 26404 -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
       
 26405 -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
       
 26406 -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
       
 26407 -m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
       
 26408 -m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
       
 26409 -m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
       
 26410 -m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
       
 26411 -m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
       
 26412 -m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
       
 26413 -m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
       
 26414 -m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
       
 26415 -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
       
 26416 -m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
       
 26417 -m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
       
 26418 -m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
       
 26419 -m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
       
 26420 -m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
       
 26421 -m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
       
 26422 -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
       
 26423 -m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
       
 26424 -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
       
 26425 -m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
       
 26426 -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
       
 26427 -m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
       
 26428 -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
       
 26429 -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
       
 26430 -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
       
 26431 -m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
       
 26432 -m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
       
 26433 -m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
       
 26434 -
       
 26435 -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
       
 26436 +# Copyright (C) 2002-2013 Free Software Foundation, Inc.
       
 26437  #
       
 26438  # This file is free software; the Free Software Foundation
       
 26439  # gives unlimited permission to copy and/or distribute it,
       
 26440  # with or without modifications, as long as this notice is preserved.
       
 26441  
       
 26442  # AM_AUTOMAKE_VERSION(VERSION)
       
 26443  # ----------------------------
       
 26444  # Automake X.Y traces this macro to ensure aclocal.m4 has been
       
 26445  # generated from the m4 files accompanying Automake X.Y.
       
 26446  # (This private macro should not be called outside this file.)
       
 26447  AC_DEFUN([AM_AUTOMAKE_VERSION],
       
 26448 -[am__api_version='1.11'
       
 26449 +[am__api_version='1.13'
       
 26450  dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
       
 26451  dnl require some minimum version.  Point them to the right macro.
       
 26452 -m4_if([$1], [1.11.1], [],
       
 26453 +m4_if([$1], [1.13.4], [],
       
 26454        [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
       
 26455  ])
       
 26456  
       
 26457  # _AM_AUTOCONF_VERSION(VERSION)
       
 26458  # -----------------------------
       
 26459  # aclocal traces this macro to find the Autoconf version.
       
 26460  # This is a private macro too.  Using m4_define simplifies
       
 26461  # the logic in aclocal, which can simply ignore this definition.
       
 26462  m4_define([_AM_AUTOCONF_VERSION], [])
       
 26463  
       
 26464  # AM_SET_CURRENT_AUTOMAKE_VERSION
       
 26465  # -------------------------------
       
 26466  # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
       
 26467  # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
       
 26468  AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
       
 26469 -[AM_AUTOMAKE_VERSION([1.11.1])dnl
       
 26470 +[AM_AUTOMAKE_VERSION([1.13.4])dnl
       
 26471  m4_ifndef([AC_AUTOCONF_VERSION],
       
 26472    [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
       
 26473  _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
       
 26474  
       
 26475  # Figure out how to run the assembler.                      -*- Autoconf -*-
       
 26476  
       
 26477 -# Copyright (C) 2001, 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
       
 26478 +# Copyright (C) 2001-2013 Free Software Foundation, Inc.
       
 26479  #
       
 26480  # This file is free software; the Free Software Foundation
       
 26481  # gives unlimited permission to copy and/or distribute it,
       
 26482  # with or without modifications, as long as this notice is preserved.
       
 26483  
       
 26484 -# serial 5
       
 26485 -
       
 26486  # AM_PROG_AS
       
 26487  # ----------
       
 26488  AC_DEFUN([AM_PROG_AS],
       
 26489  [# By default we simply use the C compiler to build assembly code.
       
 26490  AC_REQUIRE([AC_PROG_CC])
       
 26491  test "${CCAS+set}" = set || CCAS=$CC
       
 26492  test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
       
 26493  AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
       
 26494  AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
       
 26495  _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
       
 26496  ])
       
 26497  
       
 26498  # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
       
 26499  
       
 26500 -# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
       
 26501 +# Copyright (C) 2001-2013 Free Software Foundation, Inc.
       
 26502  #
       
 26503  # This file is free software; the Free Software Foundation
       
 26504  # gives unlimited permission to copy and/or distribute it,
       
 26505  # with or without modifications, as long as this notice is preserved.
       
 26506  
       
 26507  # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
       
 26508 -# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
       
 26509 -# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
       
 26510 +# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
       
 26511 +# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
       
 26512  #
       
 26513  # Of course, Automake must honor this variable whenever it calls a
       
 26514  # tool from the auxiliary directory.  The problem is that $srcdir (and
       
 26515  # therefore $ac_aux_dir as well) can be either absolute or relative,
       
 26516  # depending on how configure is run.  This is pretty annoying, since
       
 26517  # it makes $ac_aux_dir quite unusable in subdirectories: in the top
       
 26518  # source directory, any form will work fine, but in subdirectories a
       
 26519  # relative path needs to be adjusted first.
       
 26520 @@ -8861,17 +918,17 @@ AC_ARG_VAR([CCASFLAGS], [assembler compi
       
 26521  #    fails when called from a subdirectory if $ac_aux_dir is relative
       
 26522  # $top_srcdir/$ac_aux_dir/missing
       
 26523  #    fails if $ac_aux_dir is absolute,
       
 26524  #    fails when called from a subdirectory in a VPATH build with
       
 26525  #          a relative $ac_aux_dir
       
 26526  #
       
 26527  # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
       
 26528  # are both prefixed by $srcdir.  In an in-source build this is usually
       
 26529 -# harmless because $srcdir is `.', but things will broke when you
       
 26530 +# harmless because $srcdir is '.', but things will broke when you
       
 26531  # start a VPATH build or use an absolute $srcdir.
       
 26532  #
       
 26533  # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
       
 26534  # iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
       
 26535  #   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
       
 26536  # and then we would define $MISSING as
       
 26537  #   MISSING="\${SHELL} $am_aux_dir/missing"
       
 26538  # This will work as long as MISSING is not called from configure, because
       
 26539 @@ -8887,32 +944,29 @@ AC_DEFUN([AM_AUX_DIR_EXPAND],
       
 26540  [dnl Rely on autoconf to set up CDPATH properly.
       
 26541  AC_PREREQ([2.50])dnl
       
 26542  # expand $ac_aux_dir to an absolute path
       
 26543  am_aux_dir=`cd $ac_aux_dir && pwd`
       
 26544  ])
       
 26545  
       
 26546  # AM_CONDITIONAL                                            -*- Autoconf -*-
       
 26547  
       
 26548 -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
       
 26549 -# Free Software Foundation, Inc.
       
 26550 +# Copyright (C) 1997-2013 Free Software Foundation, Inc.
       
 26551  #
       
 26552  # This file is free software; the Free Software Foundation
       
 26553  # gives unlimited permission to copy and/or distribute it,
       
 26554  # with or without modifications, as long as this notice is preserved.
       
 26555  
       
 26556 -# serial 9
       
 26557 -
       
 26558  # AM_CONDITIONAL(NAME, SHELL-CONDITION)
       
 26559  # -------------------------------------
       
 26560  # Define a conditional.
       
 26561  AC_DEFUN([AM_CONDITIONAL],
       
 26562 -[AC_PREREQ(2.52)dnl
       
 26563 - ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
       
 26564 -	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
       
 26565 +[AC_PREREQ([2.52])dnl
       
 26566 + m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
       
 26567 +       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
       
 26568  AC_SUBST([$1_TRUE])dnl
       
 26569  AC_SUBST([$1_FALSE])dnl
       
 26570  _AM_SUBST_NOTMAKE([$1_TRUE])dnl
       
 26571  _AM_SUBST_NOTMAKE([$1_FALSE])dnl
       
 26572  m4_define([_AM_COND_VALUE_$1], [$2])dnl
       
 26573  if $2; then
       
 26574    $1_TRUE=
       
 26575    $1_FALSE='#'
       
 26576 @@ -8921,63 +975,63 @@ else
       
 26577    $1_FALSE=
       
 26578  fi
       
 26579  AC_CONFIG_COMMANDS_PRE(
       
 26580  [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
       
 26581    AC_MSG_ERROR([[conditional "$1" was never defined.
       
 26582  Usually this means the macro was only invoked conditionally.]])
       
 26583  fi])])
       
 26584  
       
 26585 -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
       
 26586 -# Free Software Foundation, Inc.
       
 26587 +# Copyright (C) 1999-2013 Free Software Foundation, Inc.
       
 26588  #
       
 26589  # This file is free software; the Free Software Foundation
       
 26590  # gives unlimited permission to copy and/or distribute it,
       
 26591  # with or without modifications, as long as this notice is preserved.
       
 26592  
       
 26593 -# serial 10
       
 26594  
       
 26595 -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
       
 26596 +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
       
 26597  # written in clear, in which case automake, when reading aclocal.m4,
       
 26598  # will think it sees a *use*, and therefore will trigger all it's
       
 26599  # C support machinery.  Also note that it means that autoscan, seeing
       
 26600  # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
       
 26601  
       
 26602  
       
 26603  # _AM_DEPENDENCIES(NAME)
       
 26604  # ----------------------
       
 26605  # See how the compiler implements dependency checking.
       
 26606 -# NAME is "CC", "CXX", "GCJ", or "OBJC".
       
 26607 +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
       
 26608  # We try a few techniques and use that to set a single cache variable.
       
 26609  #
       
 26610  # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
       
 26611  # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
       
 26612  # dependency, and given that the user is not expected to run this macro,
       
 26613  # just rely on AC_PROG_CC.
       
 26614  AC_DEFUN([_AM_DEPENDENCIES],
       
 26615  [AC_REQUIRE([AM_SET_DEPDIR])dnl
       
 26616  AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
       
 26617  AC_REQUIRE([AM_MAKE_INCLUDE])dnl
       
 26618  AC_REQUIRE([AM_DEP_TRACK])dnl
       
 26619  
       
 26620 -ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
       
 26621 -       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
       
 26622 -       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
       
 26623 -       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
       
 26624 -       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
       
 26625 -                   [depcc="$$1"   am_compiler_list=])
       
 26626 +m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
       
 26627 +      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
       
 26628 +      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
       
 26629 +      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
       
 26630 +      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
       
 26631 +      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
       
 26632 +                    [depcc="$$1"   am_compiler_list=])
       
 26633  
       
 26634  AC_CACHE_CHECK([dependency style of $depcc],
       
 26635                 [am_cv_$1_dependencies_compiler_type],
       
 26636  [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
       
 26637    # We make a subdir and do the tests there.  Otherwise we can end up
       
 26638    # making bogus files that we don't know about and never remove.  For
       
 26639    # instance it was reported that on HP-UX the gcc test will end up
       
 26640 -  # making a dummy file named `D' -- because `-MD' means `put the output
       
 26641 -  # in D'.
       
 26642 +  # making a dummy file named 'D' -- because '-MD' means "put the output
       
 26643 +  # in D".
       
 26644 +  rm -rf conftest.dir
       
 26645    mkdir conftest.dir
       
 26646    # Copy depcomp to subdir because otherwise we won't find it if we're
       
 26647    # using a relative directory.
       
 26648    cp "$am_depcomp" conftest.dir
       
 26649    cd conftest.dir
       
 26650    # We will build objects and dependencies in a subdirectory because
       
 26651    # it helps to detect inapplicable dependency modes.  For instance
       
 26652    # both Tru64's cc and ICC support -MD to output dependencies as a
       
 26653 @@ -9006,44 +1060,44 @@ AC_CACHE_CHECK([dependency style of $dep
       
 26654      # we should not choose a depcomp mode which is confused by this.
       
 26655      #
       
 26656      # We need to recreate these files for each test, as the compiler may
       
 26657      # overwrite some of them when testing with obscure command lines.
       
 26658      # This happens at least with the AIX C compiler.
       
 26659      : > sub/conftest.c
       
 26660      for i in 1 2 3 4 5 6; do
       
 26661        echo '#include "conftst'$i'.h"' >> sub/conftest.c
       
 26662 -      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
       
 26663 -      # Solaris 8's {/usr,}/bin/sh.
       
 26664 -      touch sub/conftst$i.h
       
 26665 +      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
       
 26666 +      # Solaris 10 /bin/sh.
       
 26667 +      echo '/* dummy */' > sub/conftst$i.h
       
 26668      done
       
 26669      echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
       
 26670  
       
 26671 -    # We check with `-c' and `-o' for the sake of the "dashmstdout"
       
 26672 +    # We check with '-c' and '-o' for the sake of the "dashmstdout"
       
 26673      # mode.  It turns out that the SunPro C++ compiler does not properly
       
 26674 -    # handle `-M -o', and we need to detect this.  Also, some Intel
       
 26675 -    # versions had trouble with output in subdirs
       
 26676 +    # handle '-M -o', and we need to detect this.  Also, some Intel
       
 26677 +    # versions had trouble with output in subdirs.
       
 26678      am__obj=sub/conftest.${OBJEXT-o}
       
 26679      am__minus_obj="-o $am__obj"
       
 26680      case $depmode in
       
 26681      gcc)
       
 26682        # This depmode causes a compiler race in universal mode.
       
 26683        test "$am__universal" = false || continue
       
 26684        ;;
       
 26685      nosideeffect)
       
 26686 -      # after this tag, mechanisms are not by side-effect, so they'll
       
 26687 -      # only be used when explicitly requested
       
 26688 +      # After this tag, mechanisms are not by side-effect, so they'll
       
 26689 +      # only be used when explicitly requested.
       
 26690        if test "x$enable_dependency_tracking" = xyes; then
       
 26691  	continue
       
 26692        else
       
 26693  	break
       
 26694        fi
       
 26695        ;;
       
 26696 -    msvisualcpp | msvcmsys)
       
 26697 -      # This compiler won't grok `-c -o', but also, the minuso test has
       
 26698 +    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
       
 26699 +      # This compiler won't grok '-c -o', but also, the minuso test has
       
 26700        # not run yet.  These depmodes are late enough in the game, and
       
 26701        # so weak that their functioning should not be impacted.
       
 26702        am__obj=conftest.${OBJEXT-o}
       
 26703        am__minus_obj=
       
 26704        ;;
       
 26705      none) break ;;
       
 26706      esac
       
 26707      if depmode=$depmode \
       
 26708 @@ -9081,93 +1135,96 @@ AM_CONDITIONAL([am__fastdep$1], [
       
 26709    test "x$enable_dependency_tracking" != xno \
       
 26710    && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
       
 26711  ])
       
 26712  
       
 26713  
       
 26714  # AM_SET_DEPDIR
       
 26715  # -------------
       
 26716  # Choose a directory name for dependency files.
       
 26717 -# This macro is AC_REQUIREd in _AM_DEPENDENCIES
       
 26718 +# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
       
 26719  AC_DEFUN([AM_SET_DEPDIR],
       
 26720  [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
       
 26721  AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
       
 26722  ])
       
 26723  
       
 26724  
       
 26725  # AM_DEP_TRACK
       
 26726  # ------------
       
 26727  AC_DEFUN([AM_DEP_TRACK],
       
 26728 -[AC_ARG_ENABLE(dependency-tracking,
       
 26729 -[  --disable-dependency-tracking  speeds up one-time build
       
 26730 -  --enable-dependency-tracking   do not reject slow dependency extractors])
       
 26731 +[AC_ARG_ENABLE([dependency-tracking], [dnl
       
 26732 +AS_HELP_STRING(
       
 26733 +  [--enable-dependency-tracking],
       
 26734 +  [do not reject slow dependency extractors])
       
 26735 +AS_HELP_STRING(
       
 26736 +  [--disable-dependency-tracking],
       
 26737 +  [speeds up one-time build])])
       
 26738  if test "x$enable_dependency_tracking" != xno; then
       
 26739    am_depcomp="$ac_aux_dir/depcomp"
       
 26740    AMDEPBACKSLASH='\'
       
 26741 +  am__nodep='_no'
       
 26742  fi
       
 26743  AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
       
 26744  AC_SUBST([AMDEPBACKSLASH])dnl
       
 26745  _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
       
 26746 +AC_SUBST([am__nodep])dnl
       
 26747 +_AM_SUBST_NOTMAKE([am__nodep])dnl
       
 26748  ])
       
 26749  
       
 26750  # Generate code to set up dependency tracking.              -*- Autoconf -*-
       
 26751  
       
 26752 -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
       
 26753 -# Free Software Foundation, Inc.
       
 26754 +# Copyright (C) 1999-2013 Free Software Foundation, Inc.
       
 26755  #
       
 26756  # This file is free software; the Free Software Foundation
       
 26757  # gives unlimited permission to copy and/or distribute it,
       
 26758  # with or without modifications, as long as this notice is preserved.
       
 26759  
       
 26760 -#serial 5
       
 26761  
       
 26762  # _AM_OUTPUT_DEPENDENCY_COMMANDS
       
 26763  # ------------------------------
       
 26764  AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
       
 26765  [{
       
 26766 -  # Autoconf 2.62 quotes --file arguments for eval, but not when files
       
 26767 +  # Older Autoconf quotes --file arguments for eval, but not when files
       
 26768    # are listed without --file.  Let's play safe and only enable the eval
       
 26769    # if we detect the quoting.
       
 26770    case $CONFIG_FILES in
       
 26771    *\'*) eval set x "$CONFIG_FILES" ;;
       
 26772    *)   set x $CONFIG_FILES ;;
       
 26773    esac
       
 26774    shift
       
 26775    for mf
       
 26776    do
       
 26777      # Strip MF so we end up with the name of the file.
       
 26778      mf=`echo "$mf" | sed -e 's/:.*$//'`
       
 26779      # Check whether this is an Automake generated Makefile or not.
       
 26780 -    # We used to match only the files named `Makefile.in', but
       
 26781 +    # We used to match only the files named 'Makefile.in', but
       
 26782      # some people rename them; so instead we look at the file content.
       
 26783      # Grep'ing the first line is not enough: some people post-process
       
 26784      # each Makefile.in and add a new line on top of each file to say so.
       
 26785      # Grep'ing the whole file is not good either: AIX grep has a line
       
 26786      # limit of 2048, but all sed's we know have understand at least 4000.
       
 26787      if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
       
 26788        dirpart=`AS_DIRNAME("$mf")`
       
 26789      else
       
 26790        continue
       
 26791      fi
       
 26792      # Extract the definition of DEPDIR, am__include, and am__quote
       
 26793 -    # from the Makefile without running `make'.
       
 26794 +    # from the Makefile without running 'make'.
       
 26795      DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
       
 26796      test -z "$DEPDIR" && continue
       
 26797      am__include=`sed -n 's/^am__include = //p' < "$mf"`
       
 26798 -    test -z "am__include" && continue
       
 26799 +    test -z "$am__include" && continue
       
 26800      am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
       
 26801 -    # When using ansi2knr, U may be empty or an underscore; expand it
       
 26802 -    U=`sed -n 's/^U = //p' < "$mf"`
       
 26803      # Find all dependency output files, they are included files with
       
 26804      # $(DEPDIR) in their names.  We invoke sed twice because it is the
       
 26805      # simplest approach to changing $(DEPDIR) to its actual value in the
       
 26806      # expansion.
       
 26807      for file in `sed -n "
       
 26808        s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
       
 26809 -	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
       
 26810 +	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       
 26811        # Make sure the directory exists.
       
 26812        test -f "$dirpart/$file" && continue
       
 26813        fdir=`AS_DIRNAME(["$file"])`
       
 26814        AS_MKDIR_P([$dirpart/$fdir])
       
 26815        # echo "creating $dirpart/$file"
       
 26816        echo '# dummy' > "$dirpart/$file"
       
 26817      done
       
 26818    done
       
 26819 @@ -9175,51 +1232,48 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS
       
 26820  ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
       
 26821  
       
 26822  
       
 26823  # AM_OUTPUT_DEPENDENCY_COMMANDS
       
 26824  # -----------------------------
       
 26825  # This macro should only be invoked once -- use via AC_REQUIRE.
       
 26826  #
       
 26827  # This code is only required when automatic dependency tracking
       
 26828 -# is enabled.  FIXME.  This creates each `.P' file that we will
       
 26829 +# is enabled.  FIXME.  This creates each '.P' file that we will
       
 26830  # need in order to bootstrap the dependency handling code.
       
 26831  AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
       
 26832  [AC_CONFIG_COMMANDS([depfiles],
       
 26833       [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
       
 26834       [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
       
 26835  ])
       
 26836  
       
 26837  # Do all the work for Automake.                             -*- Autoconf -*-
       
 26838  
       
 26839 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
       
 26840 -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
       
 26841 +# Copyright (C) 1996-2013 Free Software Foundation, Inc.
       
 26842  #
       
 26843  # This file is free software; the Free Software Foundation
       
 26844  # gives unlimited permission to copy and/or distribute it,
       
 26845  # with or without modifications, as long as this notice is preserved.
       
 26846  
       
 26847 -# serial 16
       
 26848 -
       
 26849  # This macro actually does too much.  Some checks are only needed if
       
 26850  # your package does certain things.  But this isn't really a big deal.
       
 26851  
       
 26852  # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
       
 26853  # AM_INIT_AUTOMAKE([OPTIONS])
       
 26854  # -----------------------------------------------
       
 26855  # The call with PACKAGE and VERSION arguments is the old style
       
 26856  # call (pre autoconf-2.50), which is being phased out.  PACKAGE
       
 26857  # and VERSION should now be passed to AC_INIT and removed from
       
 26858  # the call to AM_INIT_AUTOMAKE.
       
 26859  # We support both call styles for the transition.  After
       
 26860  # the next Automake release, Autoconf can make the AC_INIT
       
 26861  # arguments mandatory, and then we can depend on a new Autoconf
       
 26862  # release and drop the old call support.
       
 26863  AC_DEFUN([AM_INIT_AUTOMAKE],
       
 26864 -[AC_PREREQ([2.62])dnl
       
 26865 +[AC_PREREQ([2.65])dnl
       
 26866  dnl Autoconf wants to disallow AM_ names.  We explicitly allow
       
 26867  dnl the ones we care about.
       
 26868  m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
       
 26869  AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
       
 26870  AC_REQUIRE([AC_PROG_INSTALL])dnl
       
 26871  if test "`cd $srcdir && pwd`" != "`pwd`"; then
       
 26872    # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
       
 26873    # is not polluted with repeated "-I."
       
 26874 @@ -9238,73 +1292,86 @@ if test -z "$CYGPATH_W"; then
       
 26875      CYGPATH_W=echo
       
 26876    fi
       
 26877  fi
       
 26878  AC_SUBST([CYGPATH_W])
       
 26879  
       
 26880  # Define the identity of the package.
       
 26881  dnl Distinguish between old-style and new-style calls.
       
 26882  m4_ifval([$2],
       
 26883 -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
       
 26884 +[AC_DIAGNOSE([obsolete],
       
 26885 +             [$0: two- and three-arguments forms are deprecated.])
       
 26886 +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
       
 26887   AC_SUBST([PACKAGE], [$1])dnl
       
 26888   AC_SUBST([VERSION], [$2])],
       
 26889  [_AM_SET_OPTIONS([$1])dnl
       
 26890  dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
       
 26891 -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
       
 26892 +m4_if(
       
 26893 +  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
       
 26894 +  [ok:ok],,
       
 26895    [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
       
 26896   AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
       
 26897   AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
       
 26898  
       
 26899  _AM_IF_OPTION([no-define],,
       
 26900 -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
       
 26901 - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
       
 26902 +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
       
 26903 + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
       
 26904  
       
 26905  # Some tools Automake needs.
       
 26906  AC_REQUIRE([AM_SANITY_CHECK])dnl
       
 26907  AC_REQUIRE([AC_ARG_PROGRAM])dnl
       
 26908 -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
       
 26909 -AM_MISSING_PROG(AUTOCONF, autoconf)
       
 26910 -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
       
 26911 -AM_MISSING_PROG(AUTOHEADER, autoheader)
       
 26912 -AM_MISSING_PROG(MAKEINFO, makeinfo)
       
 26913 +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
       
 26914 +AM_MISSING_PROG([AUTOCONF], [autoconf])
       
 26915 +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
       
 26916 +AM_MISSING_PROG([AUTOHEADER], [autoheader])
       
 26917 +AM_MISSING_PROG([MAKEINFO], [makeinfo])
       
 26918  AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
       
 26919  AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
       
 26920 -AC_REQUIRE([AM_PROG_MKDIR_P])dnl
       
 26921 +AC_REQUIRE([AC_PROG_MKDIR_P])dnl
       
 26922 +# For better backward compatibility.  To be removed once Automake 1.9.x
       
 26923 +# dies out for good.  For more background, see:
       
 26924 +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
       
 26925 +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
       
 26926 +AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
       
 26927  # We need awk for the "check" target.  The system "awk" is bad on
       
 26928  # some platforms.
       
 26929  AC_REQUIRE([AC_PROG_AWK])dnl
       
 26930  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
       
 26931  AC_REQUIRE([AM_SET_LEADING_DOT])dnl
       
 26932  _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
       
 26933  	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
       
 26934  			     [_AM_PROG_TAR([v7])])])
       
 26935  _AM_IF_OPTION([no-dependencies],,
       
 26936  [AC_PROVIDE_IFELSE([AC_PROG_CC],
       
 26937 -		  [_AM_DEPENDENCIES(CC)],
       
 26938 -		  [define([AC_PROG_CC],
       
 26939 -			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
       
 26940 +		  [_AM_DEPENDENCIES([CC])],
       
 26941 +		  [m4_define([AC_PROG_CC],
       
 26942 +			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
       
 26943  AC_PROVIDE_IFELSE([AC_PROG_CXX],
       
 26944 -		  [_AM_DEPENDENCIES(CXX)],
       
 26945 -		  [define([AC_PROG_CXX],
       
 26946 -			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
       
 26947 +		  [_AM_DEPENDENCIES([CXX])],
       
 26948 +		  [m4_define([AC_PROG_CXX],
       
 26949 +			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
       
 26950  AC_PROVIDE_IFELSE([AC_PROG_OBJC],
       
 26951 -		  [_AM_DEPENDENCIES(OBJC)],
       
 26952 -		  [define([AC_PROG_OBJC],
       
 26953 -			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
       
 26954 +		  [_AM_DEPENDENCIES([OBJC])],
       
 26955 +		  [m4_define([AC_PROG_OBJC],
       
 26956 +			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
       
 26957 +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
       
 26958 +		  [_AM_DEPENDENCIES([OBJCXX])],
       
 26959 +		  [m4_define([AC_PROG_OBJCXX],
       
 26960 +			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
       
 26961  ])
       
 26962 -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
       
 26963 -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
       
 26964 -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
       
 26965 -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
       
 26966 +AC_REQUIRE([AM_SILENT_RULES])dnl
       
 26967 +dnl The testsuite driver may need to know about EXEEXT, so add the
       
 26968 +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
       
 26969 +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
       
 26970  AC_CONFIG_COMMANDS_PRE(dnl
       
 26971  [m4_provide_if([_AM_COMPILER_EXEEXT],
       
 26972    [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
       
 26973  ])
       
 26974  
       
 26975 -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
       
 26976 +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
       
 26977  dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
       
 26978  dnl mangled by Autoconf and run in a shell conditional statement.
       
 26979  m4_define([_AC_COMPILER_EXEEXT],
       
 26980  m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
       
 26981  
       
 26982  
       
 26983  # When config.status generates a header, we must update the stamp-h file.
       
 26984  # This file resides in the same directory as the config header
       
 26985 @@ -9322,17 +1389,17 @@ for _am_header in $config_headers :; do
       
 26986      $_am_arg | $_am_arg:* )
       
 26987        break ;;
       
 26988      * )
       
 26989        _am_stamp_count=`expr $_am_stamp_count + 1` ;;
       
 26990    esac
       
 26991  done
       
 26992  echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
       
 26993  
       
 26994 -# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
       
 26995 +# Copyright (C) 2001-2013 Free Software Foundation, Inc.
       
 26996  #
       
 26997  # This file is free software; the Free Software Foundation
       
 26998  # gives unlimited permission to copy and/or distribute it,
       
 26999  # with or without modifications, as long as this notice is preserved.
       
 27000  
       
 27001  # AM_PROG_INSTALL_SH
       
 27002  # ------------------
       
 27003  # Define $install_sh.
       
 27004 @@ -9341,89 +1408,81 @@ AC_DEFUN([AM_PROG_INSTALL_SH],
       
 27005  if test x"${install_sh}" != xset; then
       
 27006    case $am_aux_dir in
       
 27007    *\ * | *\	*)
       
 27008      install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
       
 27009    *)
       
 27010      install_sh="\${SHELL} $am_aux_dir/install-sh"
       
 27011    esac
       
 27012  fi
       
 27013 -AC_SUBST(install_sh)])
       
 27014 +AC_SUBST([install_sh])])
       
 27015  
       
 27016 -# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
       
 27017 +# Copyright (C) 2003-2013 Free Software Foundation, Inc.
       
 27018  #
       
 27019  # This file is free software; the Free Software Foundation
       
 27020  # gives unlimited permission to copy and/or distribute it,
       
 27021  # with or without modifications, as long as this notice is preserved.
       
 27022  
       
 27023 -# serial 2
       
 27024 -
       
 27025  # Check whether the underlying file-system supports filenames
       
 27026  # with a leading dot.  For instance MS-DOS doesn't.
       
 27027  AC_DEFUN([AM_SET_LEADING_DOT],
       
 27028  [rm -rf .tst 2>/dev/null
       
 27029  mkdir .tst 2>/dev/null
       
 27030  if test -d .tst; then
       
 27031    am__leading_dot=.
       
 27032  else
       
 27033    am__leading_dot=_
       
 27034  fi
       
 27035  rmdir .tst 2>/dev/null
       
 27036  AC_SUBST([am__leading_dot])])
       
 27037  
       
 27038  # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
       
 27039  # From Jim Meyering
       
 27040  
       
 27041 -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
       
 27042 -# Free Software Foundation, Inc.
       
 27043 +# Copyright (C) 1996-2013 Free Software Foundation, Inc.
       
 27044  #
       
 27045  # This file is free software; the Free Software Foundation
       
 27046  # gives unlimited permission to copy and/or distribute it,
       
 27047  # with or without modifications, as long as this notice is preserved.
       
 27048  
       
 27049 -# serial 5
       
 27050 -
       
 27051  # AM_MAINTAINER_MODE([DEFAULT-MODE])
       
 27052  # ----------------------------------
       
 27053  # Control maintainer-specific portions of Makefiles.
       
 27054 -# Default is to disable them, unless `enable' is passed literally.
       
 27055 -# For symmetry, `disable' may be passed as well.  Anyway, the user
       
 27056 +# Default is to disable them, unless 'enable' is passed literally.
       
 27057 +# For symmetry, 'disable' may be passed as well.  Anyway, the user
       
 27058  # can override the default with the --enable/--disable switch.
       
 27059  AC_DEFUN([AM_MAINTAINER_MODE],
       
 27060  [m4_case(m4_default([$1], [disable]),
       
 27061         [enable], [m4_define([am_maintainer_other], [disable])],
       
 27062         [disable], [m4_define([am_maintainer_other], [enable])],
       
 27063         [m4_define([am_maintainer_other], [enable])
       
 27064          m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
       
 27065 -AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
       
 27066 +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
       
 27067    dnl maintainer-mode's default is 'disable' unless 'enable' is passed
       
 27068    AC_ARG_ENABLE([maintainer-mode],
       
 27069 -[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
       
 27070 -			  (and sometimes confusing) to the casual installer],
       
 27071 -      [USE_MAINTAINER_MODE=$enableval],
       
 27072 -      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
       
 27073 +    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
       
 27074 +      am_maintainer_other[ make rules and dependencies not useful
       
 27075 +      (and sometimes confusing) to the casual installer])],
       
 27076 +    [USE_MAINTAINER_MODE=$enableval],
       
 27077 +    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
       
 27078    AC_MSG_RESULT([$USE_MAINTAINER_MODE])
       
 27079    AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
       
 27080    MAINT=$MAINTAINER_MODE_TRUE
       
 27081    AC_SUBST([MAINT])dnl
       
 27082  ]
       
 27083  )
       
 27084  
       
 27085 -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
       
 27086 -
       
 27087  # Check to see how 'make' treats includes.	            -*- Autoconf -*-
       
 27088  
       
 27089 -# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
       
 27090 +# Copyright (C) 2001-2013 Free Software Foundation, Inc.
       
 27091  #
       
 27092  # This file is free software; the Free Software Foundation
       
 27093  # gives unlimited permission to copy and/or distribute it,
       
 27094  # with or without modifications, as long as this notice is preserved.
       
 27095  
       
 27096 -# serial 4
       
 27097 -
       
 27098  # AM_MAKE_INCLUDE()
       
 27099  # -----------------
       
 27100  # Check to see how make treats includes.
       
 27101  AC_DEFUN([AM_MAKE_INCLUDE],
       
 27102  [am_make=${MAKE-make}
       
 27103  cat > confinc << 'END'
       
 27104  am__doit:
       
 27105  	@echo this is the am__doit target
       
 27106 @@ -9431,17 +1490,17 @@ am__doit:
       
 27107  END
       
 27108  # If we don't find an include directive, just comment out the code.
       
 27109  AC_MSG_CHECKING([for style of include used by $am_make])
       
 27110  am__include="#"
       
 27111  am__quote=
       
 27112  _am_result=none
       
 27113  # First try GNU make style include.
       
 27114  echo "include confinc" > confmf
       
 27115 -# Ignore all kinds of additional output from `make'.
       
 27116 +# Ignore all kinds of additional output from 'make'.
       
 27117  case `$am_make -s -f confmf 2> /dev/null` in #(
       
 27118  *the\ am__doit\ target*)
       
 27119    am__include=include
       
 27120    am__quote=
       
 27121    _am_result=GNU
       
 27122    ;;
       
 27123  esac
       
 27124  # Now try BSD make style include.
       
 27125 @@ -9456,25 +1515,22 @@ if test "$am__include" = "#"; then
       
 27126     esac
       
 27127  fi
       
 27128  AC_SUBST([am__include])
       
 27129  AC_SUBST([am__quote])
       
 27130  AC_MSG_RESULT([$_am_result])
       
 27131  rm -f confinc confmf
       
 27132  ])
       
 27133  
       
 27134 -# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
       
 27135 -# Free Software Foundation, Inc.
       
 27136 +# Copyright (C) 1999-2013 Free Software Foundation, Inc.
       
 27137  #
       
 27138  # This file is free software; the Free Software Foundation
       
 27139  # gives unlimited permission to copy and/or distribute it,
       
 27140  # with or without modifications, as long as this notice is preserved.
       
 27141  
       
 27142 -# serial 6
       
 27143 -
       
 27144  # AM_PROG_CC_C_O
       
 27145  # --------------
       
 27146  # Like AC_PROG_CC_C_O, but changed for automake.
       
 27147  AC_DEFUN([AM_PROG_CC_C_O],
       
 27148  [AC_REQUIRE([AC_PROG_CC_C_O])dnl
       
 27149  AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
       
 27150  AC_REQUIRE_AUX_FILE([compile])dnl
       
 27151  # FIXME: we rely on the cache variable name because
       
 27152 @@ -9493,317 +1549,413 @@ fi
       
 27153  dnl Make sure AC_PROG_CC is never called again, or it will override our
       
 27154  dnl setting of CC.
       
 27155  m4_define([AC_PROG_CC],
       
 27156            [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
       
 27157  ])
       
 27158  
       
 27159  # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
       
 27160  
       
 27161 -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
       
 27162 -# Free Software Foundation, Inc.
       
 27163 +# Copyright (C) 1997-2013 Free Software Foundation, Inc.
       
 27164  #
       
 27165  # This file is free software; the Free Software Foundation
       
 27166  # gives unlimited permission to copy and/or distribute it,
       
 27167  # with or without modifications, as long as this notice is preserved.
       
 27168  
       
 27169 -# serial 6
       
 27170 -
       
 27171  # AM_MISSING_PROG(NAME, PROGRAM)
       
 27172  # ------------------------------
       
 27173  AC_DEFUN([AM_MISSING_PROG],
       
 27174  [AC_REQUIRE([AM_MISSING_HAS_RUN])
       
 27175  $1=${$1-"${am_missing_run}$2"}
       
 27176  AC_SUBST($1)])
       
 27177  
       
 27178 -
       
 27179  # AM_MISSING_HAS_RUN
       
 27180  # ------------------
       
 27181 -# Define MISSING if not defined so far and test if it supports --run.
       
 27182 -# If it does, set am_missing_run to use it, otherwise, to nothing.
       
 27183 +# Define MISSING if not defined so far and test if it is modern enough.
       
 27184 +# If it is, set am_missing_run to use it, otherwise, to nothing.
       
 27185  AC_DEFUN([AM_MISSING_HAS_RUN],
       
 27186  [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
       
 27187  AC_REQUIRE_AUX_FILE([missing])dnl
       
 27188  if test x"${MISSING+set}" != xset; then
       
 27189    case $am_aux_dir in
       
 27190    *\ * | *\	*)
       
 27191      MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
       
 27192    *)
       
 27193      MISSING="\${SHELL} $am_aux_dir/missing" ;;
       
 27194    esac
       
 27195  fi
       
 27196  # Use eval to expand $SHELL
       
 27197 -if eval "$MISSING --run true"; then
       
 27198 -  am_missing_run="$MISSING --run "
       
 27199 +if eval "$MISSING --is-lightweight"; then
       
 27200 +  am_missing_run="$MISSING "
       
 27201  else
       
 27202    am_missing_run=
       
 27203 -  AC_MSG_WARN([`missing' script is too old or missing])
       
 27204 +  AC_MSG_WARN(['missing' script is too old or missing])
       
 27205  fi
       
 27206  ])
       
 27207  
       
 27208 -# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
       
 27209 +# Helper functions for option handling.                     -*- Autoconf -*-
       
 27210 +
       
 27211 +# Copyright (C) 2001-2013 Free Software Foundation, Inc.
       
 27212  #
       
 27213  # This file is free software; the Free Software Foundation
       
 27214  # gives unlimited permission to copy and/or distribute it,
       
 27215  # with or without modifications, as long as this notice is preserved.
       
 27216  
       
 27217 -# AM_PROG_MKDIR_P
       
 27218 -# ---------------
       
 27219 -# Check for `mkdir -p'.
       
 27220 -AC_DEFUN([AM_PROG_MKDIR_P],
       
 27221 -[AC_PREREQ([2.60])dnl
       
 27222 -AC_REQUIRE([AC_PROG_MKDIR_P])dnl
       
 27223 -dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
       
 27224 -dnl while keeping a definition of mkdir_p for backward compatibility.
       
 27225 -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
       
 27226 -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
       
 27227 -dnl Makefile.ins that do not define MKDIR_P, so we do our own
       
 27228 -dnl adjustment using top_builddir (which is defined more often than
       
 27229 -dnl MKDIR_P).
       
 27230 -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
       
 27231 -case $mkdir_p in
       
 27232 -  [[\\/$]]* | ?:[[\\/]]*) ;;
       
 27233 -  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
       
 27234 -esac
       
 27235 -])
       
 27236 -
       
 27237 -# Helper functions for option handling.                     -*- Autoconf -*-
       
 27238 -
       
 27239 -# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
       
 27240 -#
       
 27241 -# This file is free software; the Free Software Foundation
       
 27242 -# gives unlimited permission to copy and/or distribute it,
       
 27243 -# with or without modifications, as long as this notice is preserved.
       
 27244 -
       
 27245 -# serial 4
       
 27246 -
       
 27247  # _AM_MANGLE_OPTION(NAME)
       
 27248  # -----------------------
       
 27249  AC_DEFUN([_AM_MANGLE_OPTION],
       
 27250  [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
       
 27251  
       
 27252  # _AM_SET_OPTION(NAME)
       
 27253 -# ------------------------------
       
 27254 +# --------------------
       
 27255  # Set option NAME.  Presently that only means defining a flag for this option.
       
 27256  AC_DEFUN([_AM_SET_OPTION],
       
 27257 -[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
       
 27258 +[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
       
 27259  
       
 27260  # _AM_SET_OPTIONS(OPTIONS)
       
 27261 -# ----------------------------------
       
 27262 +# ------------------------
       
 27263  # OPTIONS is a space-separated list of Automake options.
       
 27264  AC_DEFUN([_AM_SET_OPTIONS],
       
 27265  [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
       
 27266  
       
 27267  # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
       
 27268  # -------------------------------------------
       
 27269  # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
       
 27270  AC_DEFUN([_AM_IF_OPTION],
       
 27271  [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
       
 27272  
       
 27273  # Check to make sure that the build environment is sane.    -*- Autoconf -*-
       
 27274  
       
 27275 -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
       
 27276 -# Free Software Foundation, Inc.
       
 27277 +# Copyright (C) 1996-2013 Free Software Foundation, Inc.
       
 27278  #
       
 27279  # This file is free software; the Free Software Foundation
       
 27280  # gives unlimited permission to copy and/or distribute it,
       
 27281  # with or without modifications, as long as this notice is preserved.
       
 27282  
       
 27283 -# serial 5
       
 27284 -
       
 27285  # AM_SANITY_CHECK
       
 27286  # ---------------
       
 27287  AC_DEFUN([AM_SANITY_CHECK],
       
 27288  [AC_MSG_CHECKING([whether build environment is sane])
       
 27289 -# Just in case
       
 27290 -sleep 1
       
 27291 -echo timestamp > conftest.file
       
 27292  # Reject unsafe characters in $srcdir or the absolute working directory
       
 27293  # name.  Accept space and tab only in the latter.
       
 27294  am_lf='
       
 27295  '
       
 27296  case `pwd` in
       
 27297    *[[\\\"\#\$\&\'\`$am_lf]]*)
       
 27298      AC_MSG_ERROR([unsafe absolute working directory name]);;
       
 27299  esac
       
 27300  case $srcdir in
       
 27301    *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
       
 27302 -    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
       
 27303 +    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
       
 27304  esac
       
 27305  
       
 27306 -# Do `set' in a subshell so we don't clobber the current shell's
       
 27307 +# Do 'set' in a subshell so we don't clobber the current shell's
       
 27308  # arguments.  Must try -L first in case configure is actually a
       
 27309  # symlink; some systems play weird games with the mod time of symlinks
       
 27310  # (eg FreeBSD returns the mod time of the symlink's containing
       
 27311  # directory).
       
 27312  if (
       
 27313 -   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
       
 27314 -   if test "$[*]" = "X"; then
       
 27315 -      # -L didn't work.
       
 27316 -      set X `ls -t "$srcdir/configure" conftest.file`
       
 27317 -   fi
       
 27318 -   rm -f conftest.file
       
 27319 -   if test "$[*]" != "X $srcdir/configure conftest.file" \
       
 27320 -      && test "$[*]" != "X conftest.file $srcdir/configure"; then
       
 27321 +   am_has_slept=no
       
 27322 +   for am_try in 1 2; do
       
 27323 +     echo "timestamp, slept: $am_has_slept" > conftest.file
       
 27324 +     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
       
 27325 +     if test "$[*]" = "X"; then
       
 27326 +	# -L didn't work.
       
 27327 +	set X `ls -t "$srcdir/configure" conftest.file`
       
 27328 +     fi
       
 27329 +     if test "$[*]" != "X $srcdir/configure conftest.file" \
       
 27330 +	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
       
 27331  
       
 27332 -      # If neither matched, then we have a broken ls.  This can happen
       
 27333 -      # if, for instance, CONFIG_SHELL is bash and it inherits a
       
 27334 -      # broken ls alias from the environment.  This has actually
       
 27335 -      # happened.  Such a system could not be considered "sane".
       
 27336 -      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
       
 27337 -alias in your environment])
       
 27338 -   fi
       
 27339 -
       
 27340 +	# If neither matched, then we have a broken ls.  This can happen
       
 27341 +	# if, for instance, CONFIG_SHELL is bash and it inherits a
       
 27342 +	# broken ls alias from the environment.  This has actually
       
 27343 +	# happened.  Such a system could not be considered "sane".
       
 27344 +	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
       
 27345 +  alias in your environment])
       
 27346 +     fi
       
 27347 +     if test "$[2]" = conftest.file || test $am_try -eq 2; then
       
 27348 +       break
       
 27349 +     fi
       
 27350 +     # Just in case.
       
 27351 +     sleep 1
       
 27352 +     am_has_slept=yes
       
 27353 +   done
       
 27354     test "$[2]" = conftest.file
       
 27355     )
       
 27356  then
       
 27357     # Ok.
       
 27358     :
       
 27359  else
       
 27360     AC_MSG_ERROR([newly created file is older than distributed files!
       
 27361  Check your system clock])
       
 27362  fi
       
 27363 -AC_MSG_RESULT(yes)])
       
 27364 +AC_MSG_RESULT([yes])
       
 27365 +# If we didn't sleep, we still need to ensure time stamps of config.status and
       
 27366 +# generated files are strictly newer.
       
 27367 +am_sleep_pid=
       
 27368 +if grep 'slept: no' conftest.file >/dev/null 2>&1; then
       
 27369 +  ( sleep 1 ) &
       
 27370 +  am_sleep_pid=$!
       
 27371 +fi
       
 27372 +AC_CONFIG_COMMANDS_PRE(
       
 27373 +  [AC_MSG_CHECKING([that generated files are newer than configure])
       
 27374 +   if test -n "$am_sleep_pid"; then
       
 27375 +     # Hide warnings about reused PIDs.
       
 27376 +     wait $am_sleep_pid 2>/dev/null
       
 27377 +   fi
       
 27378 +   AC_MSG_RESULT([done])])
       
 27379 +rm -f conftest.file
       
 27380 +])
       
 27381  
       
 27382 -# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
       
 27383 +# Copyright (C) 2009-2013 Free Software Foundation, Inc.
       
 27384 +#
       
 27385 +# This file is free software; the Free Software Foundation
       
 27386 +# gives unlimited permission to copy and/or distribute it,
       
 27387 +# with or without modifications, as long as this notice is preserved.
       
 27388 +
       
 27389 +# AM_SILENT_RULES([DEFAULT])
       
 27390 +# --------------------------
       
 27391 +# Enable less verbose build rules; with the default set to DEFAULT
       
 27392 +# ("yes" being less verbose, "no" or empty being verbose).
       
 27393 +AC_DEFUN([AM_SILENT_RULES],
       
 27394 +[AC_ARG_ENABLE([silent-rules], [dnl
       
 27395 +AS_HELP_STRING(
       
 27396 +  [--enable-silent-rules],
       
 27397 +  [less verbose build output (undo: "make V=1")])
       
 27398 +AS_HELP_STRING(
       
 27399 +  [--disable-silent-rules],
       
 27400 +  [verbose build output (undo: "make V=0")])dnl
       
 27401 +])
       
 27402 +case $enable_silent_rules in @%:@ (((
       
 27403 +  yes) AM_DEFAULT_VERBOSITY=0;;
       
 27404 +   no) AM_DEFAULT_VERBOSITY=1;;
       
 27405 +    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
       
 27406 +esac
       
 27407 +dnl
       
 27408 +dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
       
 27409 +dnl do not support nested variable expansions.
       
 27410 +dnl See automake bug#9928 and bug#10237.
       
 27411 +am_make=${MAKE-make}
       
 27412 +AC_CACHE_CHECK([whether $am_make supports nested variables],
       
 27413 +   [am_cv_make_support_nested_variables],
       
 27414 +   [if AS_ECHO([['TRUE=$(BAR$(V))
       
 27415 +BAR0=false
       
 27416 +BAR1=true
       
 27417 +V=1
       
 27418 +am__doit:
       
 27419 +	@$(TRUE)
       
 27420 +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
       
 27421 +  am_cv_make_support_nested_variables=yes
       
 27422 +else
       
 27423 +  am_cv_make_support_nested_variables=no
       
 27424 +fi])
       
 27425 +if test $am_cv_make_support_nested_variables = yes; then
       
 27426 +  dnl Using '$V' instead of '$(V)' breaks IRIX make.
       
 27427 +  AM_V='$(V)'
       
 27428 +  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
       
 27429 +else
       
 27430 +  AM_V=$AM_DEFAULT_VERBOSITY
       
 27431 +  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
       
 27432 +fi
       
 27433 +AC_SUBST([AM_V])dnl
       
 27434 +AM_SUBST_NOTMAKE([AM_V])dnl
       
 27435 +AC_SUBST([AM_DEFAULT_V])dnl
       
 27436 +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
       
 27437 +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
       
 27438 +AM_BACKSLASH='\'
       
 27439 +AC_SUBST([AM_BACKSLASH])dnl
       
 27440 +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
       
 27441 +])
       
 27442 +
       
 27443 +# Copyright (C) 2001-2013 Free Software Foundation, Inc.
       
 27444  #
       
 27445  # This file is free software; the Free Software Foundation
       
 27446  # gives unlimited permission to copy and/or distribute it,
       
 27447  # with or without modifications, as long as this notice is preserved.
       
 27448  
       
 27449  # AM_PROG_INSTALL_STRIP
       
 27450  # ---------------------
       
 27451 -# One issue with vendor `install' (even GNU) is that you can't
       
 27452 +# One issue with vendor 'install' (even GNU) is that you can't
       
 27453  # specify the program used to strip binaries.  This is especially
       
 27454  # annoying in cross-compiling environments, where the build's strip
       
 27455  # is unlikely to handle the host's binaries.
       
 27456  # Fortunately install-sh will honor a STRIPPROG variable, so we
       
 27457 -# always use install-sh in `make install-strip', and initialize
       
 27458 +# always use install-sh in "make install-strip", and initialize
       
 27459  # STRIPPROG with the value of the STRIP variable (set by the user).
       
 27460  AC_DEFUN([AM_PROG_INSTALL_STRIP],
       
 27461  [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
       
 27462 -# Installed binaries are usually stripped using `strip' when the user
       
 27463 -# run `make install-strip'.  However `strip' might not be the right
       
 27464 +# Installed binaries are usually stripped using 'strip' when the user
       
 27465 +# run "make install-strip".  However 'strip' might not be the right
       
 27466  # tool to use in cross-compilation environments, therefore Automake
       
 27467 -# will honor the `STRIP' environment variable to overrule this program.
       
 27468 -dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
       
 27469 +# will honor the 'STRIP' environment variable to overrule this program.
       
 27470 +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
       
 27471  if test "$cross_compiling" != no; then
       
 27472    AC_CHECK_TOOL([STRIP], [strip], :)
       
 27473  fi
       
 27474  INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
       
 27475  AC_SUBST([INSTALL_STRIP_PROGRAM])])
       
 27476  
       
 27477 -# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
       
 27478 +# Copyright (C) 2006-2013 Free Software Foundation, Inc.
       
 27479  #
       
 27480  # This file is free software; the Free Software Foundation
       
 27481  # gives unlimited permission to copy and/or distribute it,
       
 27482  # with or without modifications, as long as this notice is preserved.
       
 27483  
       
 27484 -# serial 2
       
 27485 -
       
 27486  # _AM_SUBST_NOTMAKE(VARIABLE)
       
 27487  # ---------------------------
       
 27488  # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
       
 27489  # This macro is traced by Automake.
       
 27490  AC_DEFUN([_AM_SUBST_NOTMAKE])
       
 27491  
       
 27492  # AM_SUBST_NOTMAKE(VARIABLE)
       
 27493 -# ---------------------------
       
 27494 +# --------------------------
       
 27495  # Public sister of _AM_SUBST_NOTMAKE.
       
 27496  AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
       
 27497  
       
 27498  # Check how to create a tarball.                            -*- Autoconf -*-
       
 27499  
       
 27500 -# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
       
 27501 +# Copyright (C) 2004-2013 Free Software Foundation, Inc.
       
 27502  #
       
 27503  # This file is free software; the Free Software Foundation
       
 27504  # gives unlimited permission to copy and/or distribute it,
       
 27505  # with or without modifications, as long as this notice is preserved.
       
 27506  
       
 27507 -# serial 2
       
 27508 -
       
 27509  # _AM_PROG_TAR(FORMAT)
       
 27510  # --------------------
       
 27511  # Check how to create a tarball in format FORMAT.
       
 27512 -# FORMAT should be one of `v7', `ustar', or `pax'.
       
 27513 +# FORMAT should be one of 'v7', 'ustar', or 'pax'.
       
 27514  #
       
 27515  # Substitute a variable $(am__tar) that is a command
       
 27516  # writing to stdout a FORMAT-tarball containing the directory
       
 27517  # $tardir.
       
 27518  #     tardir=directory && $(am__tar) > result.tar
       
 27519  #
       
 27520  # Substitute a variable $(am__untar) that extract such
       
 27521  # a tarball read from stdin.
       
 27522  #     $(am__untar) < result.tar
       
 27523 +#
       
 27524  AC_DEFUN([_AM_PROG_TAR],
       
 27525 -[# Always define AMTAR for backward compatibility.
       
 27526 -AM_MISSING_PROG([AMTAR], [tar])
       
 27527 +[# Always define AMTAR for backward compatibility.  Yes, it's still used
       
 27528 +# in the wild :-(  We should find a proper way to deprecate it ...
       
 27529 +AC_SUBST([AMTAR], ['$${TAR-tar}'])
       
 27530 +
       
 27531 +# We'll loop over all known methods to create a tar archive until one works.
       
 27532 +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
       
 27533 +
       
 27534  m4_if([$1], [v7],
       
 27535 -     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
       
 27536 -     [m4_case([$1], [ustar],, [pax],,
       
 27537 -              [m4_fatal([Unknown tar format])])
       
 27538 -AC_MSG_CHECKING([how to create a $1 tar archive])
       
 27539 -# Loop over all known methods to create a tar archive until one works.
       
 27540 -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
       
 27541 -_am_tools=${am_cv_prog_tar_$1-$_am_tools}
       
 27542 -# Do not fold the above two line into one, because Tru64 sh and
       
 27543 -# Solaris sh will not grok spaces in the rhs of `-'.
       
 27544 -for _am_tool in $_am_tools
       
 27545 -do
       
 27546 -  case $_am_tool in
       
 27547 -  gnutar)
       
 27548 -    for _am_tar in tar gnutar gtar;
       
 27549 -    do
       
 27550 -      AM_RUN_LOG([$_am_tar --version]) && break
       
 27551 -    done
       
 27552 -    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
       
 27553 -    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
       
 27554 -    am__untar="$_am_tar -xf -"
       
 27555 -    ;;
       
 27556 -  plaintar)
       
 27557 -    # Must skip GNU tar: if it does not support --format= it doesn't create
       
 27558 -    # ustar tarball either.
       
 27559 -    (tar --version) >/dev/null 2>&1 && continue
       
 27560 -    am__tar='tar chf - "$$tardir"'
       
 27561 -    am__tar_='tar chf - "$tardir"'
       
 27562 -    am__untar='tar xf -'
       
 27563 -    ;;
       
 27564 -  pax)
       
 27565 -    am__tar='pax -L -x $1 -w "$$tardir"'
       
 27566 -    am__tar_='pax -L -x $1 -w "$tardir"'
       
 27567 -    am__untar='pax -r'
       
 27568 -    ;;
       
 27569 -  cpio)
       
 27570 -    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
       
 27571 -    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
       
 27572 -    am__untar='cpio -i -H $1 -d'
       
 27573 -    ;;
       
 27574 -  none)
       
 27575 -    am__tar=false
       
 27576 -    am__tar_=false
       
 27577 -    am__untar=false
       
 27578 -    ;;
       
 27579 -  esac
       
 27580 +  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
       
 27581  
       
 27582 -  # If the value was cached, stop now.  We just wanted to have am__tar
       
 27583 -  # and am__untar set.
       
 27584 -  test -n "${am_cv_prog_tar_$1}" && break
       
 27585 +  [m4_case([$1],
       
 27586 +    [ustar],
       
 27587 +     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
       
 27588 +      # There is notably a 21 bits limit for the UID and the GID.  In fact,
       
 27589 +      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
       
 27590 +      # and bug#13588).
       
 27591 +      am_max_uid=2097151 # 2^21 - 1
       
 27592 +      am_max_gid=$am_max_uid
       
 27593 +      # The $UID and $GID variables are not portable, so we need to resort
       
 27594 +      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
       
 27595 +      # below are definitely unexpected, so allow the users to see them
       
 27596 +      # (that is, avoid stderr redirection).
       
 27597 +      am_uid=`id -u || echo unknown`
       
 27598 +      am_gid=`id -g || echo unknown`
       
 27599 +      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
       
 27600 +      if test $am_uid -le $am_max_uid; then
       
 27601 +         AC_MSG_RESULT([yes])
       
 27602 +      else
       
 27603 +         AC_MSG_RESULT([no])
       
 27604 +         _am_tools=none
       
 27605 +      fi
       
 27606 +      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
       
 27607 +      if test $am_gid -le $am_max_gid; then
       
 27608 +         AC_MSG_RESULT([yes])
       
 27609 +      else
       
 27610 +        AC_MSG_RESULT([no])
       
 27611 +        _am_tools=none
       
 27612 +      fi],
       
 27613  
       
 27614 -  # tar/untar a dummy directory, and stop if the command works
       
 27615 +  [pax],
       
 27616 +    [],
       
 27617 +
       
 27618 +  [m4_fatal([Unknown tar format])])
       
 27619 +
       
 27620 +  AC_MSG_CHECKING([how to create a $1 tar archive])
       
 27621 +
       
 27622 +  # Go ahead even if we have the value already cached.  We do so because we
       
 27623 +  # need to set the values for the 'am__tar' and 'am__untar' variables.
       
 27624 +  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
       
 27625 +
       
 27626 +  for _am_tool in $_am_tools; do
       
 27627 +    case $_am_tool in
       
 27628 +    gnutar)
       
 27629 +      for _am_tar in tar gnutar gtar; do
       
 27630 +        AM_RUN_LOG([$_am_tar --version]) && break
       
 27631 +      done
       
 27632 +      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
       
 27633 +      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
       
 27634 +      am__untar="$_am_tar -xf -"
       
 27635 +      ;;
       
 27636 +    plaintar)
       
 27637 +      # Must skip GNU tar: if it does not support --format= it doesn't create
       
 27638 +      # ustar tarball either.
       
 27639 +      (tar --version) >/dev/null 2>&1 && continue
       
 27640 +      am__tar='tar chf - "$$tardir"'
       
 27641 +      am__tar_='tar chf - "$tardir"'
       
 27642 +      am__untar='tar xf -'
       
 27643 +      ;;
       
 27644 +    pax)
       
 27645 +      am__tar='pax -L -x $1 -w "$$tardir"'
       
 27646 +      am__tar_='pax -L -x $1 -w "$tardir"'
       
 27647 +      am__untar='pax -r'
       
 27648 +      ;;
       
 27649 +    cpio)
       
 27650 +      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
       
 27651 +      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
       
 27652 +      am__untar='cpio -i -H $1 -d'
       
 27653 +      ;;
       
 27654 +    none)
       
 27655 +      am__tar=false
       
 27656 +      am__tar_=false
       
 27657 +      am__untar=false
       
 27658 +      ;;
       
 27659 +    esac
       
 27660 +
       
 27661 +    # If the value was cached, stop now.  We just wanted to have am__tar
       
 27662 +    # and am__untar set.
       
 27663 +    test -n "${am_cv_prog_tar_$1}" && break
       
 27664 +
       
 27665 +    # tar/untar a dummy directory, and stop if the command works.
       
 27666 +    rm -rf conftest.dir
       
 27667 +    mkdir conftest.dir
       
 27668 +    echo GrepMe > conftest.dir/file
       
 27669 +    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
       
 27670 +    rm -rf conftest.dir
       
 27671 +    if test -s conftest.tar; then
       
 27672 +      AM_RUN_LOG([$am__untar <conftest.tar])
       
 27673 +      AM_RUN_LOG([cat conftest.dir/file])
       
 27674 +      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
       
 27675 +    fi
       
 27676 +  done
       
 27677    rm -rf conftest.dir
       
 27678 -  mkdir conftest.dir
       
 27679 -  echo GrepMe > conftest.dir/file
       
 27680 -  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
       
 27681 -  rm -rf conftest.dir
       
 27682 -  if test -s conftest.tar; then
       
 27683 -    AM_RUN_LOG([$am__untar <conftest.tar])
       
 27684 -    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
       
 27685 -  fi
       
 27686 -done
       
 27687 -rm -rf conftest.dir
       
 27688  
       
 27689 -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
       
 27690 -AC_MSG_RESULT([$am_cv_prog_tar_$1])])
       
 27691 +  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
       
 27692 +  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
       
 27693 +
       
 27694  AC_SUBST([am__tar])
       
 27695  AC_SUBST([am__untar])
       
 27696  ]) # _AM_PROG_TAR
       
 27697  
       
 27698 +m4_include([m4/asmcfi.m4])
       
 27699 +m4_include([m4/ax_append_flag.m4])
       
 27700 +m4_include([m4/ax_cc_maxopt.m4])
       
 27701 +m4_include([m4/ax_cflags_warn_all.m4])
       
 27702 +m4_include([m4/ax_check_compile_flag.m4])
       
 27703 +m4_include([m4/ax_compiler_vendor.m4])
       
 27704 +m4_include([m4/ax_configure_args.m4])
       
 27705 +m4_include([m4/ax_enable_builddir.m4])
       
 27706 +m4_include([m4/ax_gcc_archflag.m4])
       
 27707 +m4_include([m4/ax_gcc_x86_cpuid.m4])
       
 27708 +m4_include([m4/libtool.m4])
       
 27709 +m4_include([m4/ltoptions.m4])
       
 27710 +m4_include([m4/ltsugar.m4])
       
 27711 +m4_include([m4/ltversion.m4])
       
 27712 +m4_include([m4/lt~obsolete.m4])
       
 27713  m4_include([acinclude.m4])
       
 27714 diff --git a/js/src/ctypes/libffi/compile b/js/src/ctypes/libffi/compile
       
 27715 --- a/js/src/ctypes/libffi/compile
       
 27716 +++ b/js/src/ctypes/libffi/compile
       
 27717 @@ -1,78 +1,282 @@
       
 27718  #! /bin/sh
       
 27719 -# Wrapper for compilers which do not understand `-c -o'.
       
 27720 +# Wrapper for compilers which do not understand '-c -o'.
       
 27721  
       
 27722 -scriptversion=2005-05-14.22
       
 27723 +scriptversion=2012-10-14.11; # UTC
       
 27724  
       
 27725 -# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
       
 27726 +# Copyright (C) 1999-2013 Free Software Foundation, Inc.
       
 27727  # Written by Tom Tromey <tromey@cygnus.com>.
       
 27728  #
       
 27729  # This program is free software; you can redistribute it and/or modify
       
 27730  # it under the terms of the GNU General Public License as published by
       
 27731  # the Free Software Foundation; either version 2, or (at your option)
       
 27732  # any later version.
       
 27733  #
       
 27734  # This program is distributed in the hope that it will be useful,
       
 27735  # but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 27736  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 27737  # GNU General Public License for more details.
       
 27738  #
       
 27739  # You should have received a copy of the GNU General Public License
       
 27740 -# along with this program; if not, write to the Free Software
       
 27741 -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       
 27742 +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
       
 27743  
       
 27744  # As a special exception to the GNU General Public License, if you
       
 27745  # distribute this file as part of a program that contains a
       
 27746  # configuration script generated by Autoconf, you may include it under
       
 27747  # the same distribution terms that you use for the rest of that program.
       
 27748  
       
 27749  # This file is maintained in Automake, please report
       
 27750  # bugs to <bug-automake@gnu.org> or send patches to
       
 27751  # <automake-patches@gnu.org>.
       
 27752  
       
 27753 +nl='
       
 27754 +'
       
 27755 +
       
 27756 +# We need space, tab and new line, in precisely that order.  Quoting is
       
 27757 +# there to prevent tools from complaining about whitespace usage.
       
 27758 +IFS=" ""	$nl"
       
 27759 +
       
 27760 +file_conv=
       
 27761 +
       
 27762 +# func_file_conv build_file lazy
       
 27763 +# Convert a $build file to $host form and store it in $file
       
 27764 +# Currently only supports Windows hosts. If the determined conversion
       
 27765 +# type is listed in (the comma separated) LAZY, no conversion will
       
 27766 +# take place.
       
 27767 +func_file_conv ()
       
 27768 +{
       
 27769 +  file=$1
       
 27770 +  case $file in
       
 27771 +    / | /[!/]*) # absolute file, and not a UNC file
       
 27772 +      if test -z "$file_conv"; then
       
 27773 +	# lazily determine how to convert abs files
       
 27774 +	case `uname -s` in
       
 27775 +	  MINGW*)
       
 27776 +	    file_conv=mingw
       
 27777 +	    ;;
       
 27778 +	  CYGWIN*)
       
 27779 +	    file_conv=cygwin
       
 27780 +	    ;;
       
 27781 +	  *)
       
 27782 +	    file_conv=wine
       
 27783 +	    ;;
       
 27784 +	esac
       
 27785 +      fi
       
 27786 +      case $file_conv/,$2, in
       
 27787 +	*,$file_conv,*)
       
 27788 +	  ;;
       
 27789 +	mingw/*)
       
 27790 +	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
       
 27791 +	  ;;
       
 27792 +	cygwin/*)
       
 27793 +	  file=`cygpath -m "$file" || echo "$file"`
       
 27794 +	  ;;
       
 27795 +	wine/*)
       
 27796 +	  file=`winepath -w "$file" || echo "$file"`
       
 27797 +	  ;;
       
 27798 +      esac
       
 27799 +      ;;
       
 27800 +  esac
       
 27801 +}
       
 27802 +
       
 27803 +# func_cl_dashL linkdir
       
 27804 +# Make cl look for libraries in LINKDIR
       
 27805 +func_cl_dashL ()
       
 27806 +{
       
 27807 +  func_file_conv "$1"
       
 27808 +  if test -z "$lib_path"; then
       
 27809 +    lib_path=$file
       
 27810 +  else
       
 27811 +    lib_path="$lib_path;$file"
       
 27812 +  fi
       
 27813 +  linker_opts="$linker_opts -LIBPATH:$file"
       
 27814 +}
       
 27815 +
       
 27816 +# func_cl_dashl library
       
 27817 +# Do a library search-path lookup for cl
       
 27818 +func_cl_dashl ()
       
 27819 +{
       
 27820 +  lib=$1
       
 27821 +  found=no
       
 27822 +  save_IFS=$IFS
       
 27823 +  IFS=';'
       
 27824 +  for dir in $lib_path $LIB
       
 27825 +  do
       
 27826 +    IFS=$save_IFS
       
 27827 +    if $shared && test -f "$dir/$lib.dll.lib"; then
       
 27828 +      found=yes
       
 27829 +      lib=$dir/$lib.dll.lib
       
 27830 +      break
       
 27831 +    fi
       
 27832 +    if test -f "$dir/$lib.lib"; then
       
 27833 +      found=yes
       
 27834 +      lib=$dir/$lib.lib
       
 27835 +      break
       
 27836 +    fi
       
 27837 +    if test -f "$dir/lib$lib.a"; then
       
 27838 +      found=yes
       
 27839 +      lib=$dir/lib$lib.a
       
 27840 +      break
       
 27841 +    fi
       
 27842 +  done
       
 27843 +  IFS=$save_IFS
       
 27844 +
       
 27845 +  if test "$found" != yes; then
       
 27846 +    lib=$lib.lib
       
 27847 +  fi
       
 27848 +}
       
 27849 +
       
 27850 +# func_cl_wrapper cl arg...
       
 27851 +# Adjust compile command to suit cl
       
 27852 +func_cl_wrapper ()
       
 27853 +{
       
 27854 +  # Assume a capable shell
       
 27855 +  lib_path=
       
 27856 +  shared=:
       
 27857 +  linker_opts=
       
 27858 +  for arg
       
 27859 +  do
       
 27860 +    if test -n "$eat"; then
       
 27861 +      eat=
       
 27862 +    else
       
 27863 +      case $1 in
       
 27864 +	-o)
       
 27865 +	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
       
 27866 +	  eat=1
       
 27867 +	  case $2 in
       
 27868 +	    *.o | *.[oO][bB][jJ])
       
 27869 +	      func_file_conv "$2"
       
 27870 +	      set x "$@" -Fo"$file"
       
 27871 +	      shift
       
 27872 +	      ;;
       
 27873 +	    *)
       
 27874 +	      func_file_conv "$2"
       
 27875 +	      set x "$@" -Fe"$file"
       
 27876 +	      shift
       
 27877 +	      ;;
       
 27878 +	  esac
       
 27879 +	  ;;
       
 27880 +	-I)
       
 27881 +	  eat=1
       
 27882 +	  func_file_conv "$2" mingw
       
 27883 +	  set x "$@" -I"$file"
       
 27884 +	  shift
       
 27885 +	  ;;
       
 27886 +	-I*)
       
 27887 +	  func_file_conv "${1#-I}" mingw
       
 27888 +	  set x "$@" -I"$file"
       
 27889 +	  shift
       
 27890 +	  ;;
       
 27891 +	-l)
       
 27892 +	  eat=1
       
 27893 +	  func_cl_dashl "$2"
       
 27894 +	  set x "$@" "$lib"
       
 27895 +	  shift
       
 27896 +	  ;;
       
 27897 +	-l*)
       
 27898 +	  func_cl_dashl "${1#-l}"
       
 27899 +	  set x "$@" "$lib"
       
 27900 +	  shift
       
 27901 +	  ;;
       
 27902 +	-L)
       
 27903 +	  eat=1
       
 27904 +	  func_cl_dashL "$2"
       
 27905 +	  ;;
       
 27906 +	-L*)
       
 27907 +	  func_cl_dashL "${1#-L}"
       
 27908 +	  ;;
       
 27909 +	-static)
       
 27910 +	  shared=false
       
 27911 +	  ;;
       
 27912 +	-Wl,*)
       
 27913 +	  arg=${1#-Wl,}
       
 27914 +	  save_ifs="$IFS"; IFS=','
       
 27915 +	  for flag in $arg; do
       
 27916 +	    IFS="$save_ifs"
       
 27917 +	    linker_opts="$linker_opts $flag"
       
 27918 +	  done
       
 27919 +	  IFS="$save_ifs"
       
 27920 +	  ;;
       
 27921 +	-Xlinker)
       
 27922 +	  eat=1
       
 27923 +	  linker_opts="$linker_opts $2"
       
 27924 +	  ;;
       
 27925 +	-*)
       
 27926 +	  set x "$@" "$1"
       
 27927 +	  shift
       
 27928 +	  ;;
       
 27929 +	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
       
 27930 +	  func_file_conv "$1"
       
 27931 +	  set x "$@" -Tp"$file"
       
 27932 +	  shift
       
 27933 +	  ;;
       
 27934 +	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
       
 27935 +	  func_file_conv "$1" mingw
       
 27936 +	  set x "$@" "$file"
       
 27937 +	  shift
       
 27938 +	  ;;
       
 27939 +	*)
       
 27940 +	  set x "$@" "$1"
       
 27941 +	  shift
       
 27942 +	  ;;
       
 27943 +      esac
       
 27944 +    fi
       
 27945 +    shift
       
 27946 +  done
       
 27947 +  if test -n "$linker_opts"; then
       
 27948 +    linker_opts="-link$linker_opts"
       
 27949 +  fi
       
 27950 +  exec "$@" $linker_opts
       
 27951 +  exit 1
       
 27952 +}
       
 27953 +
       
 27954 +eat=
       
 27955 +
       
 27956  case $1 in
       
 27957    '')
       
 27958 -     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
       
 27959 +     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
       
 27960       exit 1;
       
 27961       ;;
       
 27962    -h | --h*)
       
 27963      cat <<\EOF
       
 27964  Usage: compile [--help] [--version] PROGRAM [ARGS]
       
 27965  
       
 27966 -Wrapper for compilers which do not understand `-c -o'.
       
 27967 -Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
       
 27968 +Wrapper for compilers which do not understand '-c -o'.
       
 27969 +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
       
 27970  arguments, and rename the output as expected.
       
 27971  
       
 27972  If you are trying to build a whole package this is not the
       
 27973 -right script to run: please start by reading the file `INSTALL'.
       
 27974 +right script to run: please start by reading the file 'INSTALL'.
       
 27975  
       
 27976  Report bugs to <bug-automake@gnu.org>.
       
 27977  EOF
       
 27978      exit $?
       
 27979      ;;
       
 27980    -v | --v*)
       
 27981      echo "compile $scriptversion"
       
 27982      exit $?
       
 27983      ;;
       
 27984 +  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
       
 27985 +    func_cl_wrapper "$@"      # Doesn't return...
       
 27986 +    ;;
       
 27987  esac
       
 27988  
       
 27989  ofile=
       
 27990  cfile=
       
 27991 -eat=
       
 27992  
       
 27993  for arg
       
 27994  do
       
 27995    if test -n "$eat"; then
       
 27996      eat=
       
 27997    else
       
 27998      case $1 in
       
 27999        -o)
       
 28000 -	# configure might choose to run compile as `compile cc -o foo foo.c'.
       
 28001 -	# So we strip `-o arg' only if arg is an object.
       
 28002 +	# configure might choose to run compile as 'compile cc -o foo foo.c'.
       
 28003 +	# So we strip '-o arg' only if arg is an object.
       
 28004  	eat=1
       
 28005  	case $2 in
       
 28006  	  *.o | *.obj)
       
 28007  	    ofile=$2
       
 28008  	    ;;
       
 28009  	  *)
       
 28010  	    set x "$@" -o "$2"
       
 28011  	    shift
       
 28012 @@ -89,54 +293,55 @@ do
       
 28013  	shift
       
 28014  	;;
       
 28015      esac
       
 28016    fi
       
 28017    shift
       
 28018  done
       
 28019  
       
 28020  if test -z "$ofile" || test -z "$cfile"; then
       
 28021 -  # If no `-o' option was seen then we might have been invoked from a
       
 28022 +  # If no '-o' option was seen then we might have been invoked from a
       
 28023    # pattern rule where we don't need one.  That is ok -- this is a
       
 28024    # normal compilation that the losing compiler can handle.  If no
       
 28025 -  # `.c' file was seen then we are probably linking.  That is also
       
 28026 +  # '.c' file was seen then we are probably linking.  That is also
       
 28027    # ok.
       
 28028    exec "$@"
       
 28029  fi
       
 28030  
       
 28031  # Name of file we expect compiler to create.
       
 28032 -cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
       
 28033 +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
       
 28034  
       
 28035  # Create the lock directory.
       
 28036 -# Note: use `[/.-]' here to ensure that we don't use the same name
       
 28037 +# Note: use '[/\\:.-]' here to ensure that we don't use the same name
       
 28038  # that we are using for the .o file.  Also, base the name on the expected
       
 28039  # object file name, since that is what matters with a parallel build.
       
 28040 -lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
       
 28041 +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
       
 28042  while true; do
       
 28043    if mkdir "$lockdir" >/dev/null 2>&1; then
       
 28044      break
       
 28045    fi
       
 28046    sleep 1
       
 28047  done
       
 28048  # FIXME: race condition here if user kills between mkdir and trap.
       
 28049  trap "rmdir '$lockdir'; exit 1" 1 2 15
       
 28050  
       
 28051  # Run the compile.
       
 28052  "$@"
       
 28053  ret=$?
       
 28054  
       
 28055  if test -f "$cofile"; then
       
 28056 -  mv "$cofile" "$ofile"
       
 28057 +  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
       
 28058  elif test -f "${cofile}bj"; then
       
 28059 -  mv "${cofile}bj" "$ofile"
       
 28060 +  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
       
 28061  fi
       
 28062  
       
 28063  rmdir "$lockdir"
       
 28064  exit $ret
       
 28065  
       
 28066  # Local Variables:
       
 28067  # mode: shell-script
       
 28068  # sh-indentation: 2
       
 28069  # eval: (add-hook 'write-file-hooks 'time-stamp)
       
 28070  # time-stamp-start: "scriptversion="
       
 28071  # time-stamp-format: "%:y-%02m-%02d.%02H"
       
 28072 -# time-stamp-end: "$"
       
 28073 +# time-stamp-time-zone: "UTC"
       
 28074 +# time-stamp-end: "; # UTC"
       
 28075  # End:
       
 28076 diff --git a/js/src/ctypes/libffi/config.guess b/js/src/ctypes/libffi/config.guess
       
 28077 --- a/js/src/ctypes/libffi/config.guess
       
 28078 +++ b/js/src/ctypes/libffi/config.guess
       
 28079 @@ -1,47 +1,43 @@
       
 28080  #! /bin/sh
       
 28081  # Attempt to guess a canonical system name.
       
 28082  #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
       
 28083 -#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
       
 28084 -#   Free Software Foundation, Inc.
       
 28085 +#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
       
 28086 +#   2011, 2012, 2013 Free Software Foundation, Inc.
       
 28087  
       
 28088 -timestamp='2009-11-19'
       
 28089 +timestamp='2012-12-29'
       
 28090  
       
 28091  # This file is free software; you can redistribute it and/or modify it
       
 28092  # under the terms of the GNU General Public License as published by
       
 28093 -# the Free Software Foundation; either version 2 of the License, or
       
 28094 +# the Free Software Foundation; either version 3 of the License, or
       
 28095  # (at your option) any later version.
       
 28096  #
       
 28097  # This program is distributed in the hope that it will be useful, but
       
 28098  # WITHOUT ANY WARRANTY; without even the implied warranty of
       
 28099  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       
 28100  # General Public License for more details.
       
 28101  #
       
 28102  # You should have received a copy of the GNU General Public License
       
 28103 -# along with this program; if not, write to the Free Software
       
 28104 -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
       
 28105 -# 02110-1301, USA.
       
 28106 +# along with this program; if not, see <http://www.gnu.org/licenses/>.
       
 28107  #
       
 28108  # As a special exception to the GNU General Public License, if you
       
 28109  # distribute this file as part of a program that contains a
       
 28110  # configuration script generated by Autoconf, you may include it under
       
 28111 -# the same distribution terms that you use for the rest of that program.
       
 28112 -
       
 28113 -
       
 28114 -# Originally written by Per Bothner.  Please send patches (context
       
 28115 -# diff format) to <config-patches@gnu.org> and include a ChangeLog
       
 28116 -# entry.
       
 28117 +# the same distribution terms that you use for the rest of that
       
 28118 +# program.  This Exception is an additional permission under section 7
       
 28119 +# of the GNU General Public License, version 3 ("GPLv3").
       
 28120  #
       
 28121 -# This script attempts to guess a canonical system name similar to
       
 28122 -# config.sub.  If it succeeds, it prints the system name on stdout, and
       
 28123 -# exits with 0.  Otherwise, it exits with 1.
       
 28124 +# Originally written by Per Bothner. 
       
 28125  #
       
 28126  # You can get the latest version of this script from:
       
 28127  # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
       
 28128 +#
       
 28129 +# Please send patches with a ChangeLog entry to config-patches@gnu.org.
       
 28130 +
       
 28131  
       
 28132  me=`echo "$0" | sed -e 's,.*/,,'`
       
 28133  
       
 28134  usage="\
       
 28135  Usage: $0 [OPTION]
       
 28136  
       
 28137  Output the configuration name of the system \`$me' is run on.
       
 28138  
       
 28139 @@ -51,18 +47,19 @@ Operation modes:
       
 28140    -v, --version      print version number, then exit
       
 28141  
       
 28142  Report bugs and patches to <config-patches@gnu.org>."
       
 28143  
       
 28144  version="\
       
 28145  GNU config.guess ($timestamp)
       
 28146  
       
 28147  Originally written by Per Bothner.
       
 28148 -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
       
 28149 -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
       
 28150 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
       
 28151 +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
       
 28152 +2012, 2013 Free Software Foundation, Inc.
       
 28153  
       
 28154  This is free software; see the source for copying conditions.  There is NO
       
 28155  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
       
 28156  
       
 28157  help="
       
 28158  Try \`$me --help' for more information."
       
 28159  
       
 28160  # Parse command line
       
 28161 @@ -139,17 +136,17 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` |
       
 28162  UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
       
 28163  UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
       
 28164  
       
 28165  # Note: order is significant - the case branches are not exclusive.
       
 28166  
       
 28167  case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
       
 28168      *:NetBSD:*:*)
       
 28169  	# NetBSD (nbsd) targets should (where applicable) match one or
       
 28170 -	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
       
 28171 +	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
       
 28172  	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
       
 28173  	# switched to ELF, *-*-netbsd* would select the old
       
 28174  	# object file format.  This provides both forward
       
 28175  	# compatibility and a consistent mechanism for selecting the
       
 28176  	# object file format.
       
 28177  	#
       
 28178  	# Note: NetBSD doesn't particularly care about the vendor
       
 28179  	# portion of the name.  We always set it to "unknown".
       
 28180 @@ -175,17 +172,17 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
       
 28181  		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
       
 28182  		    # Return netbsd for either.  FIX?
       
 28183  		    os=netbsd
       
 28184  		else
       
 28185  		    os=netbsdelf
       
 28186  		fi
       
 28187  		;;
       
 28188  	    *)
       
 28189 -	        os=netbsd
       
 28190 +		os=netbsd
       
 28191  		;;
       
 28192  	esac
       
 28193  	# The OS release
       
 28194  	# Debian GNU/NetBSD machines have a different userland, and
       
 28195  	# thus, need a distinct triplet. However, they do not need
       
 28196  	# kernel version information, so it can be replaced with a
       
 28197  	# suitable tag, in the style of linux-gnu.
       
 28198  	case "${UNAME_VERSION}" in
       
 28199 @@ -196,16 +193,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
       
 28200  		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
       
 28201  		;;
       
 28202  	esac
       
 28203  	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
       
 28204  	# contains redundant information, the shorter form:
       
 28205  	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
       
 28206  	echo "${machine}-${os}${release}"
       
 28207  	exit ;;
       
 28208 +    *:Bitrig:*:*)
       
 28209 +	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
       
 28210 +	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
       
 28211 +	exit ;;
       
 28212      *:OpenBSD:*:*)
       
 28213  	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
       
 28214  	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
       
 28215  	exit ;;
       
 28216      *:ekkoBSD:*:*)
       
 28217  	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
       
 28218  	exit ;;
       
 28219      *:SolidBSD:*:*)
       
 28220 @@ -218,17 +219,17 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
       
 28221  	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
       
 28222  	exit ;;
       
 28223      alpha:OSF1:*:*)
       
 28224  	case $UNAME_RELEASE in
       
 28225  	*4.0)
       
 28226  		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
       
 28227  		;;
       
 28228  	*5.*)
       
 28229 -	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
       
 28230 +		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
       
 28231  		;;
       
 28232  	esac
       
 28233  	# According to Compaq, /usr/sbin/psrinfo has been available on
       
 28234  	# OSF/1 and Tru64 systems produced since 1995.  I hope that
       
 28235  	# covers most systems running today.  This code pipes the CPU
       
 28236  	# types through head -n 1, so we only detect the type of CPU 0.
       
 28237  	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
       
 28238  	case "$ALPHA_CPU_TYPE" in
       
 28239 @@ -264,17 +265,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
       
 28240  		UNAME_MACHINE="alphaev79" ;;
       
 28241  	esac
       
 28242  	# A Pn.n version is a patched version.
       
 28243  	# A Vn.n version is a released version.
       
 28244  	# A Tn.n version is a released field test version.
       
 28245  	# A Xn.n version is an unreleased experimental baselevel.
       
 28246  	# 1.2 uses "1.2" for uname -r.
       
 28247  	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
       
 28248 -	exit ;;
       
 28249 +	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
       
 28250 +	exitcode=$?
       
 28251 +	trap '' 0
       
 28252 +	exit $exitcode ;;
       
 28253      Alpha\ *:Windows_NT*:*)
       
 28254  	# How do we know it's Interix rather than the generic POSIX subsystem?
       
 28255  	# Should we change UNAME_MACHINE based on the output of uname instead
       
 28256  	# of the specific Alpha model?
       
 28257  	echo alpha-pc-interix
       
 28258  	exit ;;
       
 28259      21064:Windows_NT:50:3)
       
 28260  	echo alpha-dec-winnt3.5
       
 28261 @@ -290,22 +294,22 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
       
 28262  	exit ;;
       
 28263      *:OS/390:*:*)
       
 28264  	echo i370-ibm-openedition
       
 28265  	exit ;;
       
 28266      *:z/VM:*:*)
       
 28267  	echo s390-ibm-zvmoe
       
 28268  	exit ;;
       
 28269      *:OS400:*:*)
       
 28270 -        echo powerpc-ibm-os400
       
 28271 +	echo powerpc-ibm-os400
       
 28272  	exit ;;
       
 28273      arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
       
 28274  	echo arm-acorn-riscix${UNAME_RELEASE}
       
 28275  	exit ;;
       
 28276 -    arm:riscos:*:*|arm:RISCOS:*:*)
       
 28277 +    arm*:riscos:*:*|arm*:RISCOS:*:*)
       
 28278  	echo arm-unknown-riscos
       
 28279  	exit ;;
       
 28280      SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
       
 28281  	echo hppa1.1-hitachi-hiuxmpp
       
 28282  	exit ;;
       
 28283      Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
       
 28284  	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
       
 28285  	if test "`(/bin/universe) 2>/dev/null`" = att ; then
       
 28286 @@ -328,16 +332,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
       
 28287  	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
       
 28288  	exit ;;
       
 28289      sun4H:SunOS:5.*:*)
       
 28290  	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
       
 28291  	exit ;;
       
 28292      sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
       
 28293  	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
       
 28294  	exit ;;
       
 28295 +    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
       
 28296 +	echo i386-pc-auroraux${UNAME_RELEASE}
       
 28297 +	exit ;;
       
 28298      i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
       
 28299  	eval $set_cc_for_build
       
 28300  	SUN_ARCH="i386"
       
 28301  	# If there is a compiler, see if it is configured for 64-bit objects.
       
 28302  	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
       
 28303  	# This test works for both compilers.
       
 28304  	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
       
 28305  	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
       
 28306 @@ -386,33 +393,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
       
 28307      # can be virtually everything (everything which is not
       
 28308      # "atarist" or "atariste" at least should have a processor
       
 28309      # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
       
 28310      # to the lowercase version "mint" (or "freemint").  Finally
       
 28311      # the system name "TOS" denotes a system which is actually not
       
 28312      # MiNT.  But MiNT is downward compatible to TOS, so this should
       
 28313      # be no problem.
       
 28314      atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
       
 28315 -        echo m68k-atari-mint${UNAME_RELEASE}
       
 28316 +	echo m68k-atari-mint${UNAME_RELEASE}
       
 28317  	exit ;;
       
 28318      atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
       
 28319  	echo m68k-atari-mint${UNAME_RELEASE}
       
 28320 -        exit ;;
       
 28321 +	exit ;;
       
 28322      *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
       
 28323 -        echo m68k-atari-mint${UNAME_RELEASE}
       
 28324 +	echo m68k-atari-mint${UNAME_RELEASE}
       
 28325  	exit ;;
       
 28326      milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
       
 28327 -        echo m68k-milan-mint${UNAME_RELEASE}
       
 28328 -        exit ;;
       
 28329 +	echo m68k-milan-mint${UNAME_RELEASE}
       
 28330 +	exit ;;
       
 28331      hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
       
 28332 -        echo m68k-hades-mint${UNAME_RELEASE}
       
 28333 -        exit ;;
       
 28334 +	echo m68k-hades-mint${UNAME_RELEASE}
       
 28335 +	exit ;;
       
 28336      *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
       
 28337 -        echo m68k-unknown-mint${UNAME_RELEASE}
       
 28338 -        exit ;;
       
 28339 +	echo m68k-unknown-mint${UNAME_RELEASE}
       
 28340 +	exit ;;
       
 28341      m68k:machten:*:*)
       
 28342  	echo m68k-apple-machten${UNAME_RELEASE}
       
 28343  	exit ;;
       
 28344      powerpc:machten:*:*)
       
 28345  	echo powerpc-apple-machten${UNAME_RELEASE}
       
 28346  	exit ;;
       
 28347      RISC*:Mach:*:*)
       
 28348  	echo mips-dec-mach_bsd4.3
       
 28349 @@ -472,31 +479,31 @@ EOF
       
 28350  	exit ;;
       
 28351      m88k:*:4*:R4*)
       
 28352  	echo m88k-motorola-sysv4
       
 28353  	exit ;;
       
 28354      m88k:*:3*:R3*)
       
 28355  	echo m88k-motorola-sysv3
       
 28356  	exit ;;
       
 28357      AViiON:dgux:*:*)
       
 28358 -        # DG/UX returns AViiON for all architectures
       
 28359 -        UNAME_PROCESSOR=`/usr/bin/uname -p`
       
 28360 +	# DG/UX returns AViiON for all architectures
       
 28361 +	UNAME_PROCESSOR=`/usr/bin/uname -p`
       
 28362  	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
       
 28363  	then
       
 28364  	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
       
 28365  	       [ ${TARGET_BINARY_INTERFACE}x = x ]
       
 28366  	    then
       
 28367  		echo m88k-dg-dgux${UNAME_RELEASE}
       
 28368  	    else
       
 28369  		echo m88k-dg-dguxbcs${UNAME_RELEASE}
       
 28370  	    fi
       
 28371  	else
       
 28372  	    echo i586-dg-dgux${UNAME_RELEASE}
       
 28373  	fi
       
 28374 - 	exit ;;
       
 28375 +	exit ;;
       
 28376      M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
       
 28377  	echo m88k-dolphin-sysv3
       
 28378  	exit ;;
       
 28379      M88*:*:R3*:*)
       
 28380  	# Delta 88k system running SVR3
       
 28381  	echo m88k-motorola-sysv3
       
 28382  	exit ;;
       
 28383      XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
       
 28384 @@ -543,17 +550,17 @@ EOF
       
 28385  			echo rs6000-ibm-aix3.2.5
       
 28386  		fi
       
 28387  	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
       
 28388  		echo rs6000-ibm-aix3.2.4
       
 28389  	else
       
 28390  		echo rs6000-ibm-aix3.2
       
 28391  	fi
       
 28392  	exit ;;
       
 28393 -    *:AIX:*:[456])
       
 28394 +    *:AIX:*:[4567])
       
 28395  	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
       
 28396  	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
       
 28397  		IBM_ARCH=rs6000
       
 28398  	else
       
 28399  		IBM_ARCH=powerpc
       
 28400  	fi
       
 28401  	if [ -x /usr/bin/oslevel ] ; then
       
 28402  		IBM_REV=`/usr/bin/oslevel`
       
 28403 @@ -586,62 +593,62 @@ EOF
       
 28404      9000/[34678]??:HP-UX:*:*)
       
 28405  	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
       
 28406  	case "${UNAME_MACHINE}" in
       
 28407  	    9000/31? )            HP_ARCH=m68000 ;;
       
 28408  	    9000/[34]?? )         HP_ARCH=m68k ;;
       
 28409  	    9000/[678][0-9][0-9])
       
 28410  		if [ -x /usr/bin/getconf ]; then
       
 28411  		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
       
 28412 -                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
       
 28413 -                    case "${sc_cpu_version}" in
       
 28414 -                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
       
 28415 -                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
       
 28416 -                      532)                      # CPU_PA_RISC2_0
       
 28417 -                        case "${sc_kernel_bits}" in
       
 28418 -                          32) HP_ARCH="hppa2.0n" ;;
       
 28419 -                          64) HP_ARCH="hppa2.0w" ;;
       
 28420 +		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
       
 28421 +		    case "${sc_cpu_version}" in
       
 28422 +		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
       
 28423 +		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
       
 28424 +		      532)                      # CPU_PA_RISC2_0
       
 28425 +			case "${sc_kernel_bits}" in
       
 28426 +			  32) HP_ARCH="hppa2.0n" ;;
       
 28427 +			  64) HP_ARCH="hppa2.0w" ;;
       
 28428  			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
       
 28429 -                        esac ;;
       
 28430 -                    esac
       
 28431 +			esac ;;
       
 28432 +		    esac
       
 28433  		fi
       
 28434  		if [ "${HP_ARCH}" = "" ]; then
       
 28435  		    eval $set_cc_for_build
       
 28436 -		    sed 's/^              //' << EOF >$dummy.c
       
 28437 +		    sed 's/^		//' << EOF >$dummy.c
       
 28438  
       
 28439 -              #define _HPUX_SOURCE
       
 28440 -              #include <stdlib.h>
       
 28441 -              #include <unistd.h>
       
 28442 +		#define _HPUX_SOURCE
       
 28443 +		#include <stdlib.h>
       
 28444 +		#include <unistd.h>
       
 28445  
       
 28446 -              int main ()
       
 28447 -              {
       
 28448 -              #if defined(_SC_KERNEL_BITS)
       
 28449 -                  long bits = sysconf(_SC_KERNEL_BITS);
       
 28450 -              #endif
       
 28451 -                  long cpu  = sysconf (_SC_CPU_VERSION);
       
 28452 +		int main ()
       
 28453 +		{
       
 28454 +		#if defined(_SC_KERNEL_BITS)
       
 28455 +		    long bits = sysconf(_SC_KERNEL_BITS);
       
 28456 +		#endif
       
 28457 +		    long cpu  = sysconf (_SC_CPU_VERSION);
       
 28458  
       
 28459 -                  switch (cpu)
       
 28460 -              	{
       
 28461 -              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
       
 28462 -              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
       
 28463 -              	case CPU_PA_RISC2_0:
       
 28464 -              #if defined(_SC_KERNEL_BITS)
       
 28465 -              	    switch (bits)
       
 28466 -              		{
       
 28467 -              		case 64: puts ("hppa2.0w"); break;
       
 28468 -              		case 32: puts ("hppa2.0n"); break;
       
 28469 -              		default: puts ("hppa2.0"); break;
       
 28470 -              		} break;
       
 28471 -              #else  /* !defined(_SC_KERNEL_BITS) */
       
 28472 -              	    puts ("hppa2.0"); break;
       
 28473 -              #endif
       
 28474 -              	default: puts ("hppa1.0"); break;
       
 28475 -              	}
       
 28476 -                  exit (0);
       
 28477 -              }
       
 28478 +		    switch (cpu)
       
 28479 +			{
       
 28480 +			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
       
 28481 +			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
       
 28482 +			case CPU_PA_RISC2_0:
       
 28483 +		#if defined(_SC_KERNEL_BITS)
       
 28484 +			    switch (bits)
       
 28485 +				{
       
 28486 +				case 64: puts ("hppa2.0w"); break;
       
 28487 +				case 32: puts ("hppa2.0n"); break;
       
 28488 +				default: puts ("hppa2.0"); break;
       
 28489 +				} break;
       
 28490 +		#else  /* !defined(_SC_KERNEL_BITS) */
       
 28491 +			    puts ("hppa2.0"); break;
       
 28492 +		#endif
       
 28493 +			default: puts ("hppa1.0"); break;
       
 28494 +			}
       
 28495 +		    exit (0);
       
 28496 +		}
       
 28497  EOF
       
 28498  		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
       
 28499  		    test -z "$HP_ARCH" && HP_ARCH=hppa
       
 28500  		fi ;;
       
 28501  	esac
       
 28502  	if [ ${HP_ARCH} = "hppa2.0w" ]
       
 28503  	then
       
 28504  	    eval $set_cc_for_build
       
 28505 @@ -722,32 +729,32 @@ EOF
       
 28506  	    echo ${UNAME_MACHINE}-unknown-osf1
       
 28507  	fi
       
 28508  	exit ;;
       
 28509      parisc*:Lites*:*:*)
       
 28510  	echo hppa1.1-hp-lites
       
 28511  	exit ;;
       
 28512      C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
       
 28513  	echo c1-convex-bsd
       
 28514 -        exit ;;
       
 28515 +	exit ;;
       
 28516      C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
       
 28517  	if getsysinfo -f scalar_acc
       
 28518  	then echo c32-convex-bsd
       
 28519  	else echo c2-convex-bsd
       
 28520  	fi
       
 28521 -        exit ;;
       
 28522 +	exit ;;
       
 28523      C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
       
 28524  	echo c34-convex-bsd
       
 28525 -        exit ;;
       
 28526 +	exit ;;
       
 28527      C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
       
 28528  	echo c38-convex-bsd
       
 28529 -        exit ;;
       
 28530 +	exit ;;
       
 28531      C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
       
 28532  	echo c4-convex-bsd
       
 28533 -        exit ;;
       
 28534 +	exit ;;
       
 28535      CRAY*Y-MP:*:*:*)
       
 28536  	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
       
 28537  	exit ;;
       
 28538      CRAY*[A-Z]90:*:*:*)
       
 28539  	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
       
 28540  	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
       
 28541  	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
       
 28542  	      -e 's/\.[^.]*$/.X/'
       
 28543 @@ -761,59 +768,64 @@ EOF
       
 28544      CRAY*SV1:*:*:*)
       
 28545  	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
       
 28546  	exit ;;
       
 28547      *:UNICOS/mp:*:*)
       
 28548  	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
       
 28549  	exit ;;
       
 28550      F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
       
 28551  	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
       
 28552 -        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
       
 28553 -        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
       
 28554 -        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
       
 28555 -        exit ;;
       
 28556 +	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
       
 28557 +	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
       
 28558 +	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
       
 28559 +	exit ;;
       
 28560      5000:UNIX_System_V:4.*:*)
       
 28561 -        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
       
 28562 -        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
       
 28563 -        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
       
 28564 +	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
       
 28565 +	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
       
 28566 +	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
       
 28567  	exit ;;
       
 28568      i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
       
 28569  	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
       
 28570  	exit ;;
       
 28571      sparc*:BSD/OS:*:*)
       
 28572  	echo sparc-unknown-bsdi${UNAME_RELEASE}
       
 28573  	exit ;;
       
 28574      *:BSD/OS:*:*)
       
 28575  	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
       
 28576  	exit ;;
       
 28577      *:FreeBSD:*:*)
       
 28578 -	case ${UNAME_MACHINE} in
       
 28579 -	    pc98)
       
 28580 -		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
       
 28581 +	UNAME_PROCESSOR=`/usr/bin/uname -p`
       
 28582 +	case ${UNAME_PROCESSOR} in
       
 28583  	    amd64)
       
 28584  		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
       
 28585  	    *)
       
 28586 -		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
       
 28587 +		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
       
 28588  	esac
       
 28589  	exit ;;
       
 28590      i*:CYGWIN*:*)
       
 28591  	echo ${UNAME_MACHINE}-pc-cygwin
       
 28592  	exit ;;
       
 28593 +    *:MINGW64*:*)
       
 28594 +	echo ${UNAME_MACHINE}-pc-mingw64
       
 28595 +	exit ;;
       
 28596      *:MINGW*:*)
       
 28597  	echo ${UNAME_MACHINE}-pc-mingw32
       
 28598  	exit ;;
       
 28599 +    i*:MSYS*:*)
       
 28600 +	echo ${UNAME_MACHINE}-pc-msys
       
 28601 +	exit ;;
       
 28602      i*:windows32*:*)
       
 28603 -    	# uname -m includes "-pc" on this system.
       
 28604 -    	echo ${UNAME_MACHINE}-mingw32
       
 28605 +	# uname -m includes "-pc" on this system.
       
 28606 +	echo ${UNAME_MACHINE}-mingw32
       
 28607  	exit ;;
       
 28608      i*:PW*:*)
       
 28609  	echo ${UNAME_MACHINE}-pc-pw32
       
 28610  	exit ;;
       
 28611      *:Interix*:*)
       
 28612 -    	case ${UNAME_MACHINE} in
       
 28613 +	case ${UNAME_MACHINE} in
       
 28614  	    x86)
       
 28615  		echo i586-pc-interix${UNAME_RELEASE}
       
 28616  		exit ;;
       
 28617  	    authenticamd | genuineintel | EM64T)
       
 28618  		echo x86_64-unknown-interix${UNAME_RELEASE}
       
 28619  		exit ;;
       
 28620  	    IA64)
       
 28621  		echo ia64-unknown-interix${UNAME_RELEASE}
       
 28622 @@ -849,51 +861,67 @@ EOF
       
 28623  	exit ;;
       
 28624      *:GNU/*:*:*)
       
 28625  	# other systems with GNU libc and userland
       
 28626  	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
       
 28627  	exit ;;
       
 28628      i*86:Minix:*:*)
       
 28629  	echo ${UNAME_MACHINE}-pc-minix
       
 28630  	exit ;;
       
 28631 +    aarch64:Linux:*:*)
       
 28632 +	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28633 +	exit ;;
       
 28634 +    aarch64_be:Linux:*:*)
       
 28635 +	UNAME_MACHINE=aarch64_be
       
 28636 +	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28637 +	exit ;;
       
 28638      alpha:Linux:*:*)
       
 28639  	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
       
 28640  	  EV5)   UNAME_MACHINE=alphaev5 ;;
       
 28641  	  EV56)  UNAME_MACHINE=alphaev56 ;;
       
 28642  	  PCA56) UNAME_MACHINE=alphapca56 ;;
       
 28643  	  PCA57) UNAME_MACHINE=alphapca56 ;;
       
 28644  	  EV6)   UNAME_MACHINE=alphaev6 ;;
       
 28645  	  EV67)  UNAME_MACHINE=alphaev67 ;;
       
 28646  	  EV68*) UNAME_MACHINE=alphaev68 ;;
       
 28647 -        esac
       
 28648 +	esac
       
 28649  	objdump --private-headers /bin/sh | grep -q ld.so.1
       
 28650  	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
       
 28651  	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
       
 28652  	exit ;;
       
 28653      arm*:Linux:*:*)
       
 28654  	eval $set_cc_for_build
       
 28655  	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
       
 28656  	    | grep -q __ARM_EABI__
       
 28657  	then
       
 28658  	    echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28659  	else
       
 28660 -	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
       
 28661 +	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
       
 28662 +		| grep -q __ARM_PCS_VFP
       
 28663 +	    then
       
 28664 +		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
       
 28665 +	    else
       
 28666 +		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
       
 28667 +	    fi
       
 28668  	fi
       
 28669  	exit ;;
       
 28670      avr32*:Linux:*:*)
       
 28671  	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28672  	exit ;;
       
 28673      cris:Linux:*:*)
       
 28674 -	echo cris-axis-linux-gnu
       
 28675 +	echo ${UNAME_MACHINE}-axis-linux-gnu
       
 28676  	exit ;;
       
 28677      crisv32:Linux:*:*)
       
 28678 -	echo crisv32-axis-linux-gnu
       
 28679 +	echo ${UNAME_MACHINE}-axis-linux-gnu
       
 28680  	exit ;;
       
 28681      frv:Linux:*:*)
       
 28682 -    	echo frv-unknown-linux-gnu
       
 28683 +	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28684 +	exit ;;
       
 28685 +    hexagon:Linux:*:*)
       
 28686 +	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28687  	exit ;;
       
 28688      i*86:Linux:*:*)
       
 28689  	LIBC=gnu
       
 28690  	eval $set_cc_for_build
       
 28691  	sed 's/^	//' << EOF >$dummy.c
       
 28692  	#ifdef __dietlibc__
       
 28693  	LIBC=dietlibc
       
 28694  	#endif
       
 28695 @@ -925,17 +953,17 @@ EOF
       
 28696  	CPU=
       
 28697  	#endif
       
 28698  	#endif
       
 28699  EOF
       
 28700  	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
       
 28701  	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
       
 28702  	;;
       
 28703      or32:Linux:*:*)
       
 28704 -	echo or32-unknown-linux-gnu
       
 28705 +	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28706  	exit ;;
       
 28707      padre:Linux:*:*)
       
 28708  	echo sparc-unknown-linux-gnu
       
 28709  	exit ;;
       
 28710      parisc64:Linux:*:* | hppa64:Linux:*:*)
       
 28711  	echo hppa64-unknown-linux-gnu
       
 28712  	exit ;;
       
 28713      parisc:Linux:*:* | hppa:Linux:*:*)
       
 28714 @@ -951,45 +979,48 @@ EOF
       
 28715  	exit ;;
       
 28716      ppc:Linux:*:*)
       
 28717  	echo powerpc-unknown-linux-gnu
       
 28718  	exit ;;
       
 28719      s390:Linux:*:* | s390x:Linux:*:*)
       
 28720  	echo ${UNAME_MACHINE}-ibm-linux
       
 28721  	exit ;;
       
 28722      sh64*:Linux:*:*)
       
 28723 -    	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28724 +	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28725  	exit ;;
       
 28726      sh*:Linux:*:*)
       
 28727  	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28728  	exit ;;
       
 28729      sparc:Linux:*:* | sparc64:Linux:*:*)
       
 28730  	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28731  	exit ;;
       
 28732 +    tile*:Linux:*:*)
       
 28733 +	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28734 +	exit ;;
       
 28735      vax:Linux:*:*)
       
 28736  	echo ${UNAME_MACHINE}-dec-linux-gnu
       
 28737  	exit ;;
       
 28738      x86_64:Linux:*:*)
       
 28739 -	echo x86_64-unknown-linux-gnu
       
 28740 +	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28741  	exit ;;
       
 28742      xtensa*:Linux:*:*)
       
 28743 -    	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28744 +	echo ${UNAME_MACHINE}-unknown-linux-gnu
       
 28745  	exit ;;
       
 28746      i*86:DYNIX/ptx:4*:*)
       
 28747  	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
       
 28748  	# earlier versions are messed up and put the nodename in both
       
 28749  	# sysname and nodename.
       
 28750  	echo i386-sequent-sysv4
       
 28751  	exit ;;
       
 28752      i*86:UNIX_SV:4.2MP:2.*)
       
 28753 -        # Unixware is an offshoot of SVR4, but it has its own version
       
 28754 -        # number series starting with 2...
       
 28755 -        # I am not positive that other SVR4 systems won't match this,
       
 28756 +	# Unixware is an offshoot of SVR4, but it has its own version
       
 28757 +	# number series starting with 2...
       
 28758 +	# I am not positive that other SVR4 systems won't match this,
       
 28759  	# I just have to hope.  -- rms.
       
 28760 -        # Use sysv4.2uw... so that sysv4* matches it.
       
 28761 +	# Use sysv4.2uw... so that sysv4* matches it.
       
 28762  	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
       
 28763  	exit ;;
       
 28764      i*86:OS/2:*:*)
       
 28765  	# If we were able to find `uname', then EMX Unix compatibility
       
 28766  	# is probably installed.
       
 28767  	echo ${UNAME_MACHINE}-pc-os2-emx
       
 28768  	exit ;;
       
 28769      i*86:XTS-300:*:STOP)
       
 28770 @@ -1011,17 +1042,17 @@ EOF
       
 28771  	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
       
 28772  	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
       
 28773  		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
       
 28774  	else
       
 28775  		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
       
 28776  	fi
       
 28777  	exit ;;
       
 28778      i*86:*:5:[678]*)
       
 28779 -    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
       
 28780 +	# UnixWare 7.x, OpenUNIX and OpenServer 6.
       
 28781  	case `/bin/uname -X | grep "^Machine"` in
       
 28782  	    *486*)	     UNAME_MACHINE=i486 ;;
       
 28783  	    *Pentium)	     UNAME_MACHINE=i586 ;;
       
 28784  	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
       
 28785  	esac
       
 28786  	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
       
 28787  	exit ;;
       
 28788      i*86:*:3.2:*)
       
 28789 @@ -1039,23 +1070,23 @@ EOF
       
 28790  			&& UNAME_MACHINE=i686
       
 28791  		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
       
 28792  	else
       
 28793  		echo ${UNAME_MACHINE}-pc-sysv32
       
 28794  	fi
       
 28795  	exit ;;
       
 28796      pc:*:*:*)
       
 28797  	# Left here for compatibility:
       
 28798 -        # uname -m prints for DJGPP always 'pc', but it prints nothing about
       
 28799 -        # the processor, so we play safe by assuming i586.
       
 28800 +	# uname -m prints for DJGPP always 'pc', but it prints nothing about
       
 28801 +	# the processor, so we play safe by assuming i586.
       
 28802  	# Note: whatever this is, it MUST be the same as what config.sub
       
 28803  	# prints for the "djgpp" host, or else GDB configury will decide that
       
 28804  	# this is a cross-build.
       
 28805  	echo i586-pc-msdosdjgpp
       
 28806 -        exit ;;
       
 28807 +	exit ;;
       
 28808      Intel:Mach:3*:*)
       
 28809  	echo i386-pc-mach3
       
 28810  	exit ;;
       
 28811      paragon:*:*:*)
       
 28812  	echo i860-intel-osf1
       
 28813  	exit ;;
       
 28814      i860:*:4.*:*) # i860-SVR4
       
 28815  	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
       
 28816 @@ -1080,18 +1111,18 @@ EOF
       
 28817  	OS_REL=''
       
 28818  	test -r /etc/.relid \
       
 28819  	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
       
 28820  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
       
 28821  	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
       
 28822  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
       
 28823  	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
       
 28824      3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
       
 28825 -        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
       
 28826 -          && { echo i486-ncr-sysv4; exit; } ;;
       
 28827 +	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
       
 28828 +	  && { echo i486-ncr-sysv4; exit; } ;;
       
 28829      NCR*:*:4.2:* | MPRAS*:*:4.2:*)
       
 28830  	OS_REL='.3'
       
 28831  	test -r /etc/.relid \
       
 28832  	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
       
 28833  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
       
 28834  	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
       
 28835  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
       
 28836  	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
       
 28837 @@ -1124,20 +1155,20 @@ EOF
       
 28838      *:SINIX-*:*:*)
       
 28839  	if uname -p 2>/dev/null >/dev/null ; then
       
 28840  		UNAME_MACHINE=`(uname -p) 2>/dev/null`
       
 28841  		echo ${UNAME_MACHINE}-sni-sysv4
       
 28842  	else
       
 28843  		echo ns32k-sni-sysv
       
 28844  	fi
       
 28845  	exit ;;
       
 28846 -    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
       
 28847 -                      # says <Richard.M.Bartel@ccMail.Census.GOV>
       
 28848 -        echo i586-unisys-sysv4
       
 28849 -        exit ;;
       
 28850 +    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
       
 28851 +			# says <Richard.M.Bartel@ccMail.Census.GOV>
       
 28852 +	echo i586-unisys-sysv4
       
 28853 +	exit ;;
       
 28854      *:UNIX_System_V:4*:FTX*)
       
 28855  	# From Gerald Hewes <hewes@openmarket.com>.
       
 28856  	# How about differentiating between stratus architectures? -djm
       
 28857  	echo hppa1.1-stratus-sysv4
       
 28858  	exit ;;
       
 28859      *:*:*:FTX*)
       
 28860  	# From seanf@swdc.stratus.com.
       
 28861  	echo i860-stratus-sysv4
       
 28862 @@ -1153,33 +1184,36 @@ EOF
       
 28863      mc68*:A/UX:*:*)
       
 28864  	echo m68k-apple-aux${UNAME_RELEASE}
       
 28865  	exit ;;
       
 28866      news*:NEWS-OS:6*:*)
       
 28867  	echo mips-sony-newsos6
       
 28868  	exit ;;
       
 28869      R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
       
 28870  	if [ -d /usr/nec ]; then
       
 28871 -	        echo mips-nec-sysv${UNAME_RELEASE}
       
 28872 +		echo mips-nec-sysv${UNAME_RELEASE}
       
 28873  	else
       
 28874 -	        echo mips-unknown-sysv${UNAME_RELEASE}
       
 28875 +		echo mips-unknown-sysv${UNAME_RELEASE}
       
 28876  	fi
       
 28877 -        exit ;;
       
 28878 +	exit ;;
       
 28879      BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
       
 28880  	echo powerpc-be-beos
       
 28881  	exit ;;
       
 28882      BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
       
 28883  	echo powerpc-apple-beos
       
 28884  	exit ;;
       
 28885      BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
       
 28886  	echo i586-pc-beos
       
 28887  	exit ;;
       
 28888      BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
       
 28889  	echo i586-pc-haiku
       
 28890  	exit ;;
       
 28891 +    x86_64:Haiku:*:*)
       
 28892 +	echo x86_64-unknown-haiku
       
 28893 +	exit ;;
       
 28894      SX-4:SUPER-UX:*:*)
       
 28895  	echo sx4-nec-superux${UNAME_RELEASE}
       
 28896  	exit ;;
       
 28897      SX-5:SUPER-UX:*:*)
       
 28898  	echo sx5-nec-superux${UNAME_RELEASE}
       
 28899  	exit ;;
       
 28900      SX-6:SUPER-UX:*:*)
       
 28901  	echo sx6-nec-superux${UNAME_RELEASE}
       
 28902 @@ -1222,17 +1256,20 @@ EOF
       
 28903  		UNAME_PROCESSOR=i386
       
 28904  		UNAME_MACHINE=pc
       
 28905  	fi
       
 28906  	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
       
 28907  	exit ;;
       
 28908      *:QNX:*:4*)
       
 28909  	echo i386-pc-qnx
       
 28910  	exit ;;
       
 28911 -    NSE-?:NONSTOP_KERNEL:*:*)
       
 28912 +    NEO-?:NONSTOP_KERNEL:*:*)
       
 28913 +	echo neo-tandem-nsk${UNAME_RELEASE}
       
 28914 +	exit ;;
       
 28915 +    NSE-*:NONSTOP_KERNEL:*:*)
       
 28916  	echo nse-tandem-nsk${UNAME_RELEASE}
       
 28917  	exit ;;
       
 28918      NSR-?:NONSTOP_KERNEL:*:*)
       
 28919  	echo nsr-tandem-nsk${UNAME_RELEASE}
       
 28920  	exit ;;
       
 28921      *:NonStop-UX:*:*)
       
 28922  	echo mips-compaq-nonstopux
       
 28923  	exit ;;
       
 28924 @@ -1267,23 +1304,23 @@ EOF
       
 28925  	exit ;;
       
 28926      *:TOPS-20:*:*)
       
 28927  	echo pdp10-unknown-tops20
       
 28928  	exit ;;
       
 28929      *:ITS:*:*)
       
 28930  	echo pdp10-unknown-its
       
 28931  	exit ;;
       
 28932      SEI:*:*:SEIUX)
       
 28933 -        echo mips-sei-seiux${UNAME_RELEASE}
       
 28934 +	echo mips-sei-seiux${UNAME_RELEASE}
       
 28935  	exit ;;
       
 28936      *:DragonFly:*:*)
       
 28937  	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
       
 28938  	exit ;;
       
 28939      *:*VMS:*:*)
       
 28940 -    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
       
 28941 +	UNAME_MACHINE=`(uname -p) 2>/dev/null`
       
 28942  	case "${UNAME_MACHINE}" in
       
 28943  	    A*) echo alpha-dec-vms ; exit ;;
       
 28944  	    I*) echo ia64-dec-vms ; exit ;;
       
 28945  	    V*) echo vax-dec-vms ; exit ;;
       
 28946  	esac ;;
       
 28947      *:XENIX:*:SysV)
       
 28948  	echo i386-pc-xenix
       
 28949  	exit ;;
       
 28950 @@ -1291,21 +1328,21 @@ EOF
       
 28951  	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
       
 28952  	exit ;;
       
 28953      i*86:rdos:*:*)
       
 28954  	echo ${UNAME_MACHINE}-pc-rdos
       
 28955  	exit ;;
       
 28956      i*86:AROS:*:*)
       
 28957  	echo ${UNAME_MACHINE}-pc-aros
       
 28958  	exit ;;
       
 28959 +    x86_64:VMkernel:*:*)
       
 28960 +	echo ${UNAME_MACHINE}-unknown-esx
       
 28961 +	exit ;;
       
 28962  esac
       
 28963  
       
 28964 -#echo '(No uname command or uname output not recognized.)' 1>&2
       
 28965 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
       
 28966 -
       
 28967  eval $set_cc_for_build
       
 28968  cat >$dummy.c <<EOF
       
 28969  #ifdef _SEQUENT_
       
 28970  # include <sys/types.h>
       
 28971  # include <sys/utsname.h>
       
 28972  #endif
       
 28973  main ()
       
 28974  {
       
 28975 @@ -1313,21 +1350,21 @@ main ()
       
 28976  #if defined (MIPSEB)
       
 28977    /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
       
 28978       I don't know....  */
       
 28979    printf ("mips-sony-bsd\n"); exit (0);
       
 28980  #else
       
 28981  #include <sys/param.h>
       
 28982    printf ("m68k-sony-newsos%s\n",
       
 28983  #ifdef NEWSOS4
       
 28984 -          "4"
       
 28985 +	"4"
       
 28986  #else
       
 28987 -	  ""
       
 28988 +	""
       
 28989  #endif
       
 28990 -         ); exit (0);
       
 28991 +	); exit (0);
       
 28992  #endif
       
 28993  #endif
       
 28994  
       
 28995  #if defined (__arm) && defined (__acorn) && defined (__unix)
       
 28996    printf ("arm-acorn-riscix\n"); exit (0);
       
 28997  #endif
       
 28998  
       
 28999  #if defined (hp300) && !defined (hpux)
       
 29000 diff --git a/js/src/ctypes/libffi/config.sub b/js/src/ctypes/libffi/config.sub
       
 29001 --- a/js/src/ctypes/libffi/config.sub
       
 29002 +++ b/js/src/ctypes/libffi/config.sub
       
 29003 @@ -1,43 +1,38 @@
       
 29004  #! /bin/sh
       
 29005  # Configuration validation subroutine script.
       
 29006  #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
       
 29007 -#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
       
 29008 -#   Free Software Foundation, Inc.
       
 29009 +#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
       
 29010 +#   2011, 2012, 2013 Free Software Foundation, Inc.
       
 29011  
       
 29012 -timestamp='2011-01-03'
       
 29013 +timestamp='2012-12-29'
       
 29014  
       
 29015 -# This file is (in principle) common to ALL GNU software.
       
 29016 -# The presence of a machine in this file suggests that SOME GNU software
       
 29017 -# can handle that machine.  It does not imply ALL GNU software can.
       
 29018 -#
       
 29019 -# This file is free software; you can redistribute it and/or modify
       
 29020 -# it under the terms of the GNU General Public License as published by
       
 29021 -# the Free Software Foundation; either version 2 of the License, or
       
 29022 +# This file is free software; you can redistribute it and/or modify it
       
 29023 +# under the terms of the GNU General Public License as published by
       
 29024 +# the Free Software Foundation; either version 3 of the License, or
       
 29025  # (at your option) any later version.
       
 29026  #
       
 29027 -# This program is distributed in the hope that it will be useful,
       
 29028 -# but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 29029 -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 29030 -# GNU General Public License for more details.
       
 29031 +# This program is distributed in the hope that it will be useful, but
       
 29032 +# WITHOUT ANY WARRANTY; without even the implied warranty of
       
 29033 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       
 29034 +# General Public License for more details.
       
 29035  #
       
 29036  # You should have received a copy of the GNU General Public License
       
 29037 -# along with this program; if not, write to the Free Software
       
 29038 -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
       
 29039 -# 02110-1301, USA.
       
 29040 +# along with this program; if not, see <http://www.gnu.org/licenses/>.
       
 29041  #
       
 29042  # As a special exception to the GNU General Public License, if you
       
 29043  # distribute this file as part of a program that contains a
       
 29044  # configuration script generated by Autoconf, you may include it under
       
 29045 -# the same distribution terms that you use for the rest of that program.
       
 29046 +# the same distribution terms that you use for the rest of that
       
 29047 +# program.  This Exception is an additional permission under section 7
       
 29048 +# of the GNU General Public License, version 3 ("GPLv3").
       
 29049  
       
 29050  
       
 29051 -# Please send patches to <config-patches@gnu.org>.  Submit a context
       
 29052 -# diff and a properly formatted GNU ChangeLog entry.
       
 29053 +# Please send patches with a ChangeLog entry to config-patches@gnu.org.
       
 29054  #
       
 29055  # Configuration subroutine to validate and canonicalize a configuration type.
       
 29056  # Supply the specified configuration type as an argument.
       
 29057  # If it is invalid, we print an error message on stderr and exit with code 1.
       
 29058  # Otherwise, we print the canonical config type on stdout and succeed.
       
 29059  
       
 29060  # You can get the latest version of this script from:
       
 29061  # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
       
 29062 @@ -70,18 +65,19 @@ Operation modes:
       
 29063    -t, --time-stamp   print date of last modification, then exit
       
 29064    -v, --version      print version number, then exit
       
 29065  
       
 29066  Report bugs and patches to <config-patches@gnu.org>."
       
 29067  
       
 29068  version="\
       
 29069  GNU config.sub ($timestamp)
       
 29070  
       
 29071 -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
       
 29072 -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
       
 29073 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
       
 29074 +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
       
 29075 +2012, 2013 Free Software Foundation, Inc.
       
 29076  
       
 29077  This is free software; see the source for copying conditions.  There is NO
       
 29078  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
       
 29079  
       
 29080  help="
       
 29081  Try \`$me --help' for more information."
       
 29082  
       
 29083  # Parse command line
       
 29084 @@ -118,23 +114,28 @@ case $# in
       
 29085   *) echo "$me: too many arguments$help" >&2
       
 29086      exit 1;;
       
 29087  esac
       
 29088  
       
 29089  # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
       
 29090  # Here we must recognize all the valid KERNEL-OS combinations.
       
 29091  maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
       
 29092  case $maybe_os in
       
 29093 -  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
       
 29094 -  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
       
 29095 +  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
       
 29096 +  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
       
 29097 +  knetbsd*-gnu* | netbsd*-gnu* | \
       
 29098    kopensolaris*-gnu* | \
       
 29099 -  storm-chaos* | os2-emx* | rtmk-nova* | wince-winmo*)
       
 29100 +  storm-chaos* | os2-emx* | rtmk-nova*)
       
 29101      os=-$maybe_os
       
 29102      basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
       
 29103      ;;
       
 29104 +  android-linux)
       
 29105 +    os=-linux-android
       
 29106 +    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
       
 29107 +    ;;
       
 29108    *)
       
 29109      basic_machine=`echo $1 | sed 's/-[^-]*$//'`
       
 29110      if [ $basic_machine != $1 ]
       
 29111      then os=`echo $1 | sed 's/.*-/-/'`
       
 29112      else os=; fi
       
 29113      ;;
       
 29114  esac
       
 29115  
       
 29116 @@ -147,41 +148,41 @@ case $os in
       
 29117  		# Prevent following clause from handling this invalid input.
       
 29118  		;;
       
 29119  	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
       
 29120  	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
       
 29121  	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
       
 29122  	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
       
 29123  	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
       
 29124  	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
       
 29125 -	-apple | -axis | -knuth | -cray | -microblaze)
       
 29126 +	-apple | -axis | -knuth | -cray | -microblaze*)
       
 29127  		os=
       
 29128  		basic_machine=$1
       
 29129  		;;
       
 29130 -        -bluegene*)
       
 29131 -	        os=-cnk
       
 29132 +	-bluegene*)
       
 29133 +		os=-cnk
       
 29134  		;;
       
 29135  	-sim | -cisco | -oki | -wec | -winbond)
       
 29136  		os=
       
 29137  		basic_machine=$1
       
 29138  		;;
       
 29139  	-scout)
       
 29140  		;;
       
 29141  	-wrs)
       
 29142  		os=-vxworks
       
 29143  		basic_machine=$1
       
 29144  		;;
       
 29145  	-chorusos*)
       
 29146  		os=-chorusos
       
 29147  		basic_machine=$1
       
 29148  		;;
       
 29149 - 	-chorusrdb)
       
 29150 - 		os=-chorusrdb
       
 29151 +	-chorusrdb)
       
 29152 +		os=-chorusrdb
       
 29153  		basic_machine=$1
       
 29154 - 		;;
       
 29155 +		;;
       
 29156  	-hiux*)
       
 29157  		os=-hiuxwe2
       
 29158  		;;
       
 29159  	-sco6)
       
 29160  		os=-sco5v6
       
 29161  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
       
 29162  		;;
       
 29163  	-sco5)
       
 29164 @@ -216,16 +217,22 @@ case $os in
       
 29165  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
       
 29166  		;;
       
 29167  	-clix*)
       
 29168  		basic_machine=clipper-intergraph
       
 29169  		;;
       
 29170  	-isc*)
       
 29171  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
       
 29172  		;;
       
 29173 +	-lynx*178)
       
 29174 +		os=-lynxos178
       
 29175 +		;;
       
 29176 +	-lynx*5)
       
 29177 +		os=-lynxos5
       
 29178 +		;;
       
 29179  	-lynx*)
       
 29180  		os=-lynxos
       
 29181  		;;
       
 29182  	-ptx*)
       
 29183  		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
       
 29184  		;;
       
 29185  	-windowsnt*)
       
 29186  		os=`echo $os | sed -e 's/windowsnt/winnt/'`
       
 29187 @@ -240,30 +247,37 @@ case $os in
       
 29188  esac
       
 29189  
       
 29190  # Decode aliases for certain CPU-COMPANY combinations.
       
 29191  case $basic_machine in
       
 29192  	# Recognize the basic CPU types without company name.
       
 29193  	# Some are omitted here because they have special meanings below.
       
 29194  	1750a | 580 \
       
 29195  	| a29k \
       
 29196 +	| aarch64 | aarch64_be \
       
 29197  	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
       
 29198  	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
       
 29199  	| am33_2.0 \
       
 29200 -	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
       
 29201 +	| arc \
       
 29202 +	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
       
 29203 +	| avr | avr32 \
       
 29204 +	| be32 | be64 \
       
 29205  	| bfin \
       
 29206  	| c4x | clipper \
       
 29207  	| d10v | d30v | dlx | dsp16xx \
       
 29208 +	| epiphany \
       
 29209  	| fido | fr30 | frv \
       
 29210  	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
       
 29211 +	| hexagon \
       
 29212  	| i370 | i860 | i960 | ia64 \
       
 29213  	| ip2k | iq2000 \
       
 29214 +	| le32 | le64 \
       
 29215  	| lm32 \
       
 29216  	| m32c | m32r | m32rle | m68000 | m68k | m88k \
       
 29217 -	| maxq | mb | microblaze | mcore | mep | metag \
       
 29218 +	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
       
 29219  	| mips | mipsbe | mipseb | mipsel | mipsle \
       
 29220  	| mips16 \
       
 29221  	| mips64 | mips64el \
       
 29222  	| mips64octeon | mips64octeonel \
       
 29223  	| mips64orion | mips64orionel \
       
 29224  	| mips64r5900 | mips64r5900el \
       
 29225  	| mips64vr | mips64vrel \
       
 29226  	| mips64vr4100 | mips64vr4100el \
       
 29227 @@ -276,79 +290,111 @@ case $basic_machine in
       
 29228  	| mipsisa64r2 | mipsisa64r2el \
       
 29229  	| mipsisa64sb1 | mipsisa64sb1el \
       
 29230  	| mipsisa64sr71k | mipsisa64sr71kel \
       
 29231  	| mipstx39 | mipstx39el \
       
 29232  	| mn10200 | mn10300 \
       
 29233  	| moxie \
       
 29234  	| mt \
       
 29235  	| msp430 \
       
 29236 +	| nds32 | nds32le | nds32be \
       
 29237  	| nios | nios2 \
       
 29238  	| ns16k | ns32k \
       
 29239 +	| open8 \
       
 29240  	| or32 \
       
 29241  	| pdp10 | pdp11 | pj | pjl \
       
 29242 -	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
       
 29243 +	| powerpc | powerpc64 | powerpc64le | powerpcle \
       
 29244  	| pyramid \
       
 29245 +	| rl78 | rx \
       
 29246  	| score \
       
 29247  	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
       
 29248  	| sh64 | sh64le \
       
 29249  	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
       
 29250  	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
       
 29251 -	| spu | strongarm \
       
 29252 -	| tahoe | thumb | tic4x | tic80 | tron \
       
 29253 -	| v850 | v850e \
       
 29254 +	| spu \
       
 29255 +	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
       
 29256 +	| ubicom32 \
       
 29257 +	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
       
 29258  	| we32k \
       
 29259 -	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
       
 29260 +	| x86 | xc16x | xstormy16 | xtensa \
       
 29261  	| z8k | z80)
       
 29262  		basic_machine=$basic_machine-unknown
       
 29263  		;;
       
 29264 -	m6811 | m68hc11 | m6812 | m68hc12)
       
 29265 -		# Motorola 68HC11/12.
       
 29266 +	c54x)
       
 29267 +		basic_machine=tic54x-unknown
       
 29268 +		;;
       
 29269 +	c55x)
       
 29270 +		basic_machine=tic55x-unknown
       
 29271 +		;;
       
 29272 +	c6x)
       
 29273 +		basic_machine=tic6x-unknown
       
 29274 +		;;
       
 29275 +	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
       
 29276  		basic_machine=$basic_machine-unknown
       
 29277  		os=-none
       
 29278  		;;
       
 29279  	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
       
 29280  		;;
       
 29281  	ms1)
       
 29282  		basic_machine=mt-unknown
       
 29283  		;;
       
 29284  
       
 29285 +	strongarm | thumb | xscale)
       
 29286 +		basic_machine=arm-unknown
       
 29287 +		;;
       
 29288 +	xgate)
       
 29289 +		basic_machine=$basic_machine-unknown
       
 29290 +		os=-none
       
 29291 +		;;
       
 29292 +	xscaleeb)
       
 29293 +		basic_machine=armeb-unknown
       
 29294 +		;;
       
 29295 +
       
 29296 +	xscaleel)
       
 29297 +		basic_machine=armel-unknown
       
 29298 +		;;
       
 29299 +
       
 29300  	# We use `pc' rather than `unknown'
       
 29301  	# because (1) that's what they normally are, and
       
 29302  	# (2) the word "unknown" tends to confuse beginning users.
       
 29303  	i*86 | x86_64)
       
 29304  	  basic_machine=$basic_machine-pc
       
 29305  	  ;;
       
 29306  	# Object if more than one company name word.
       
 29307  	*-*-*)
       
 29308  		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
       
 29309  		exit 1
       
 29310  		;;
       
 29311  	# Recognize the basic CPU types with company name.
       
 29312  	580-* \
       
 29313  	| a29k-* \
       
 29314 +	| aarch64-* | aarch64_be-* \
       
 29315  	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
       
 29316  	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
       
 29317  	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
       
 29318  	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
       
 29319  	| avr-* | avr32-* \
       
 29320 +	| be32-* | be64-* \
       
 29321  	| bfin-* | bs2000-* \
       
 29322 -	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
       
 29323 +	| c[123]* | c30-* | [cjt]90-* | c4x-* \
       
 29324  	| clipper-* | craynv-* | cydra-* \
       
 29325  	| d10v-* | d30v-* | dlx-* \
       
 29326  	| elxsi-* \
       
 29327  	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
       
 29328  	| h8300-* | h8500-* \
       
 29329  	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
       
 29330 +	| hexagon-* \
       
 29331  	| i*86-* | i860-* | i960-* | ia64-* \
       
 29332  	| ip2k-* | iq2000-* \
       
 29333 +	| le32-* | le64-* \
       
 29334  	| lm32-* \
       
 29335  	| m32c-* | m32r-* | m32rle-* \
       
 29336  	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
       
 29337 -	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
       
 29338 +	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
       
 29339 +	| microblaze-* | microblazeel-* \
       
 29340  	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
       
 29341  	| mips16-* \
       
 29342  	| mips64-* | mips64el-* \
       
 29343  	| mips64octeon-* | mips64octeonel-* \
       
 29344  	| mips64orion-* | mips64orionel-* \
       
 29345  	| mips64r5900-* | mips64r5900el-* \
       
 29346  	| mips64vr-* | mips64vrel-* \
       
 29347  	| mips64vr4100-* | mips64vr4100el-* \
       
 29348 @@ -360,34 +406,39 @@ case $basic_machine in
       
 29349  	| mipsisa64-* | mipsisa64el-* \
       
 29350  	| mipsisa64r2-* | mipsisa64r2el-* \
       
 29351  	| mipsisa64sb1-* | mipsisa64sb1el-* \
       
 29352  	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
       
 29353  	| mipstx39-* | mipstx39el-* \
       
 29354  	| mmix-* \
       
 29355  	| mt-* \
       
 29356  	| msp430-* \
       
 29357 +	| nds32-* | nds32le-* | nds32be-* \
       
 29358  	| nios-* | nios2-* \
       
 29359  	| none-* | np1-* | ns16k-* | ns32k-* \
       
 29360 +	| open8-* \
       
 29361  	| orion-* \
       
 29362  	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
       
 29363 -	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
       
 29364 +	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
       
 29365  	| pyramid-* \
       
 29366 -	| romp-* | rs6000-* \
       
 29367 +	| rl78-* | romp-* | rs6000-* | rx-* \
       
 29368  	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
       
 29369  	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
       
 29370  	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
       
 29371  	| sparclite-* \
       
 29372 -	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
       
 29373 -	| tahoe-* | thumb-* \
       
 29374 -	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
       
 29375 +	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
       
 29376 +	| tahoe-* \
       
 29377 +	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
       
 29378 +	| tile*-* \
       
 29379  	| tron-* \
       
 29380 -	| v850-* | v850e-* | vax-* \
       
 29381 +	| ubicom32-* \
       
 29382 +	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
       
 29383 +	| vax-* \
       
 29384  	| we32k-* \
       
 29385 -	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
       
 29386 +	| x86-* | x86_64-* | xc16x-* | xps100-* \
       
 29387  	| xstormy16-* | xtensa*-* \
       
 29388  	| ymp-* \
       
 29389  	| z8k-* | z80-*)
       
 29390  		;;
       
 29391  	# Recognize the basic CPU types without company name, with glob match.
       
 29392  	xtensa*)
       
 29393  		basic_machine=$basic_machine-unknown
       
 29394  		;;
       
 29395 @@ -402,17 +453,17 @@ case $basic_machine in
       
 29396  		;;
       
 29397  	3b*)
       
 29398  		basic_machine=we32k-att
       
 29399  		;;
       
 29400  	a29khif)
       
 29401  		basic_machine=a29k-amd
       
 29402  		os=-udi
       
 29403  		;;
       
 29404 -    	abacus)
       
 29405 +	abacus)
       
 29406  		basic_machine=abacus-unknown
       
 29407  		;;
       
 29408  	adobe68k)
       
 29409  		basic_machine=m68010-adobe
       
 29410  		os=-scout
       
 29411  		;;
       
 29412  	alliant | fx80)
       
 29413  		basic_machine=fx80-alliant
       
 29414 @@ -472,21 +523,30 @@ case $basic_machine in
       
 29415  	blackfin-*)
       
 29416  		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29417  		os=-linux
       
 29418  		;;
       
 29419  	bluegene*)
       
 29420  		basic_machine=powerpc-ibm
       
 29421  		os=-cnk
       
 29422  		;;
       
 29423 +	c54x-*)
       
 29424 +		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29425 +		;;
       
 29426 +	c55x-*)
       
 29427 +		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29428 +		;;
       
 29429 +	c6x-*)
       
 29430 +		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29431 +		;;
       
 29432  	c90)
       
 29433  		basic_machine=c90-cray
       
 29434  		os=-unicos
       
 29435  		;;
       
 29436 -        cegcc)
       
 29437 +	cegcc)
       
 29438  		basic_machine=arm-unknown
       
 29439  		os=-cegcc
       
 29440  		;;
       
 29441  	convex-c1)
       
 29442  		basic_machine=c1-convex
       
 29443  		os=-bsd
       
 29444  		;;
       
 29445  	convex-c2)
       
 29446 @@ -508,17 +568,17 @@ case $basic_machine in
       
 29447  	cray | j90)
       
 29448  		basic_machine=j90-cray
       
 29449  		os=-unicos
       
 29450  		;;
       
 29451  	craynv)
       
 29452  		basic_machine=craynv-cray
       
 29453  		os=-unicosmp
       
 29454  		;;
       
 29455 -	cr16)
       
 29456 +	cr16 | cr16-*)
       
 29457  		basic_machine=cr16-unknown
       
 29458  		os=-elf
       
 29459  		;;
       
 29460  	crds | unos)
       
 29461  		basic_machine=m68k-crds
       
 29462  		;;
       
 29463  	crisv32 | crisv32-* | etraxfs*)
       
 29464  		basic_machine=crisv32-axis
       
 29465 @@ -666,17 +726,16 @@ case $basic_machine in
       
 29466  		;;
       
 29467  	hppro)
       
 29468  		basic_machine=hppa1.1-hp
       
 29469  		os=-proelf
       
 29470  		;;
       
 29471  	i370-ibm* | ibm*)
       
 29472  		basic_machine=i370-ibm
       
 29473  		;;
       
 29474 -# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
       
 29475  	i*86v32)
       
 29476  		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
       
 29477  		os=-sysv32
       
 29478  		;;
       
 29479  	i*86v4*)
       
 29480  		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
       
 29481  		os=-sysv4
       
 29482  		;;
       
 29483 @@ -724,19 +783,23 @@ case $basic_machine in
       
 29484  	magnum | m3230)
       
 29485  		basic_machine=mips-mips
       
 29486  		os=-sysv
       
 29487  		;;
       
 29488  	merlin)
       
 29489  		basic_machine=ns32k-utek
       
 29490  		os=-sysv
       
 29491  		;;
       
 29492 -        microblaze)
       
 29493 +	microblaze*)
       
 29494  		basic_machine=microblaze-xilinx
       
 29495  		;;
       
 29496 +	mingw64)
       
 29497 +		basic_machine=x86_64-pc
       
 29498 +		os=-mingw64
       
 29499 +		;;
       
 29500  	mingw32)
       
 29501  		basic_machine=i386-pc
       
 29502  		os=-mingw32
       
 29503  		;;
       
 29504  	mingw32ce)
       
 29505  		basic_machine=arm-unknown
       
 29506  		os=-mingw32ce
       
 29507  		;;
       
 29508 @@ -763,20 +826,28 @@ case $basic_machine in
       
 29509  		;;
       
 29510  	msdos)
       
 29511  		basic_machine=i386-pc
       
 29512  		os=-msdos
       
 29513  		;;
       
 29514  	ms1-*)
       
 29515  		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
       
 29516  		;;
       
 29517 +	msys)
       
 29518 +		basic_machine=i386-pc
       
 29519 +		os=-msys
       
 29520 +		;;
       
 29521  	mvs)
       
 29522  		basic_machine=i370-ibm
       
 29523  		os=-mvs
       
 29524  		;;
       
 29525 +	nacl)
       
 29526 +		basic_machine=le32-unknown
       
 29527 +		os=-nacl
       
 29528 +		;;
       
 29529  	ncr3000)
       
 29530  		basic_machine=i486-ncr
       
 29531  		os=-sysv4
       
 29532  		;;
       
 29533  	netbsd386)
       
 29534  		basic_machine=i386-unknown
       
 29535  		os=-netbsd
       
 29536  		;;
       
 29537 @@ -831,16 +902,22 @@ case $basic_machine in
       
 29538  		;;
       
 29539  	nonstopux)
       
 29540  		basic_machine=mips-compaq
       
 29541  		os=-nonstopux
       
 29542  		;;
       
 29543  	np1)
       
 29544  		basic_machine=np1-gould
       
 29545  		;;
       
 29546 +	neo-tandem)
       
 29547 +		basic_machine=neo-tandem
       
 29548 +		;;
       
 29549 +	nse-tandem)
       
 29550 +		basic_machine=nse-tandem
       
 29551 +		;;
       
 29552  	nsr-tandem)
       
 29553  		basic_machine=nsr-tandem
       
 29554  		;;
       
 29555  	op50n-* | op60c-*)
       
 29556  		basic_machine=hppa1.1-oki
       
 29557  		os=-proelf
       
 29558  		;;
       
 29559  	openrisc | openrisc-*)
       
 29560 @@ -913,44 +990,49 @@ case $basic_machine in
       
 29561  	pentium4-*)
       
 29562  		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29563  		;;
       
 29564  	pn)
       
 29565  		basic_machine=pn-gould
       
 29566  		;;
       
 29567  	power)	basic_machine=power-ibm
       
 29568  		;;
       
 29569 -	ppc)	basic_machine=powerpc-unknown
       
 29570 +	ppc | ppcbe)	basic_machine=powerpc-unknown
       
 29571  		;;
       
 29572 -	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29573 +	ppc-* | ppcbe-*)
       
 29574 +		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29575  		;;
       
 29576  	ppcle | powerpclittle | ppc-le | powerpc-little)
       
 29577  		basic_machine=powerpcle-unknown
       
 29578  		;;
       
 29579  	ppcle-* | powerpclittle-*)
       
 29580  		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29581  		;;
       
 29582  	ppc64)	basic_machine=powerpc64-unknown
       
 29583  		;;
       
 29584 -	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29585 +	ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29586  		;;
       
 29587  	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
       
 29588  		basic_machine=powerpc64le-unknown
       
 29589  		;;
       
 29590  	ppc64le-* | powerpc64little-*)
       
 29591  		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29592  		;;
       
 29593  	ps2)
       
 29594  		basic_machine=i386-ibm
       
 29595  		;;
       
 29596  	pw32)
       
 29597  		basic_machine=i586-unknown
       
 29598  		os=-pw32
       
 29599  		;;
       
 29600 -	rdos)
       
 29601 +	rdos | rdos64)
       
 29602 +		basic_machine=x86_64-pc
       
 29603 +		os=-rdos
       
 29604 +		;;
       
 29605 +	rdos32)
       
 29606  		basic_machine=i386-pc
       
 29607  		os=-rdos
       
 29608  		;;
       
 29609  	rom68k)
       
 29610  		basic_machine=m68k-rom68k
       
 29611  		os=-coff
       
 29612  		;;
       
 29613  	rm[46]00)
       
 29614 @@ -1009,16 +1091,19 @@ case $basic_machine in
       
 29615  		;;
       
 29616  	st2000)
       
 29617  		basic_machine=m68k-tandem
       
 29618  		;;
       
 29619  	stratus)
       
 29620  		basic_machine=i860-stratus
       
 29621  		os=-sysv4
       
 29622  		;;
       
 29623 +	strongarm-* | thumb-*)
       
 29624 +		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
       
 29625 +		;;
       
 29626  	sun2)
       
 29627  		basic_machine=m68000-sun
       
 29628  		;;
       
 29629  	sun2os3)
       
 29630  		basic_machine=m68000-sun
       
 29631  		os=-sunos3
       
 29632  		;;
       
 29633  	sun2os4)
       
 29634 @@ -1065,30 +1150,18 @@ case $basic_machine in
       
 29635  	t3e)
       
 29636  		basic_machine=alphaev5-cray
       
 29637  		os=-unicos
       
 29638  		;;
       
 29639  	t90)
       
 29640  		basic_machine=t90-cray
       
 29641  		os=-unicos
       
 29642  		;;
       
 29643 -	tic54x | c54x*)
       
 29644 -		basic_machine=tic54x-unknown
       
 29645 -		os=-coff
       
 29646 -		;;
       
 29647 -	tic55x | c55x*)
       
 29648 -		basic_machine=tic55x-unknown
       
 29649 -		os=-coff
       
 29650 -		;;
       
 29651 -	tic6x | c6x*)
       
 29652 -		basic_machine=tic6x-unknown
       
 29653 -		os=-coff
       
 29654 -		;;
       
 29655  	tile*)
       
 29656 -		basic_machine=tile-unknown
       
 29657 +		basic_machine=$basic_machine-unknown
       
 29658  		os=-linux-gnu
       
 29659  		;;
       
 29660  	tx39)
       
 29661  		basic_machine=mipstx39-unknown
       
 29662  		;;
       
 29663  	tx39el)
       
 29664  		basic_machine=mipstx39el-unknown
       
 29665  		;;
       
 29666 @@ -1148,16 +1221,19 @@ case $basic_machine in
       
 29667  		;;
       
 29668  	xbox)
       
 29669  		basic_machine=i686-pc
       
 29670  		os=-mingw32
       
 29671  		;;
       
 29672  	xps | xps100)
       
 29673  		basic_machine=xps100-honeywell
       
 29674  		;;
       
 29675 +	xscale-* | xscalee[bl]-*)
       
 29676 +		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
       
 29677 +		;;
       
 29678  	ymp)
       
 29679  		basic_machine=ymp-cray
       
 29680  		os=-unicos
       
 29681  		;;
       
 29682  	z8k-*-coff)
       
 29683  		basic_machine=z8k-unknown
       
 29684  		os=-sim
       
 29685  		;;
       
 29686 @@ -1245,19 +1321,22 @@ case $basic_machine in
       
 29687  		;;
       
 29688  esac
       
 29689  
       
 29690  # Decode manufacturer-specific aliases for certain operating systems.
       
 29691  
       
 29692  if [ x"$os" != x"" ]
       
 29693  then
       
 29694  case $os in
       
 29695 -        # First match some system type aliases
       
 29696 -        # that might get confused with valid system types.
       
 29697 +	# First match some system type aliases
       
 29698 +	# that might get confused with valid system types.
       
 29699  	# -solaris* is a basic system type, with this one exception.
       
 29700 +	-auroraux)
       
 29701 +		os=-auroraux
       
 29702 +		;;
       
 29703  	-solaris1 | -solaris1.*)
       
 29704  		os=`echo $os | sed -e 's|solaris1|sunos4|'`
       
 29705  		;;
       
 29706  	-solaris)
       
 29707  		os=-solaris2
       
 29708  		;;
       
 29709  	-svr4*)
       
 29710  		os=-sysv4
       
 29711 @@ -1269,39 +1348,40 @@ case $os in
       
 29712  		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
       
 29713  		;;
       
 29714  	# First accept the basic system types.
       
 29715  	# The portable systems comes first.
       
 29716  	# Each alternative MUST END IN A *, to match a version number.
       
 29717  	# -sysv* is not here because it comes later, after sysvr4.
       
 29718  	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
       
 29719  	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
       
 29720 -	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
       
 29721 -	      | -kopensolaris* \
       
 29722 +	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
       
 29723 +	      | -sym* | -kopensolaris* \
       
 29724  	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
       
 29725  	      | -aos* | -aros* \
       
 29726  	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
       
 29727  	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
       
 29728  	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
       
 29729 -	      | -openbsd* | -solidbsd* \
       
 29730 +	      | -bitrig* | -openbsd* | -solidbsd* \
       
 29731  	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
       
 29732  	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
       
 29733  	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
       
 29734  	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
       
 29735  	      | -chorusos* | -chorusrdb* | -cegcc* \
       
 29736 -	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
       
 29737 -	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
       
 29738 +	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
       
 29739 +	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
       
 29740 +	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
       
 29741  	      | -uxpv* | -beos* | -mpeix* | -udk* \
       
 29742  	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
       
 29743  	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
       
 29744  	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
       
 29745  	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
       
 29746  	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
       
 29747  	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
       
 29748 -	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -winmo*)
       
 29749 +	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
       
 29750  	# Remember, each alternative MUST END IN *, to match a version number.
       
 29751  		;;
       
 29752  	-qnx*)
       
 29753  		case $basic_machine in
       
 29754  		    x86-* | i*86-*)
       
 29755  			;;
       
 29756  		    *)
       
 29757  			os=-nto$os
       
 29758 @@ -1330,22 +1410,19 @@ case $os in
       
 29759  		os=`echo $os | sed -e 's|sunos5|solaris2|'`
       
 29760  		;;
       
 29761  	-sunos6*)
       
 29762  		os=`echo $os | sed -e 's|sunos6|solaris3|'`
       
 29763  		;;
       
 29764  	-opened*)
       
 29765  		os=-openedition
       
 29766  		;;
       
 29767 -        -os400*)
       
 29768 +	-os400*)
       
 29769  		os=-os400
       
 29770  		;;
       
 29771 -	-wince-winmo*)
       
 29772 -		os=-wince-winmo
       
 29773 -		;;
       
 29774  	-wince*)
       
 29775  		os=-wince
       
 29776  		;;
       
 29777  	-osfrose*)
       
 29778  		os=-osfrose
       
 29779  		;;
       
 29780  	-osf*)
       
 29781  		os=-osf
       
 29782 @@ -1382,17 +1459,17 @@ case $os in
       
 29783  		;;
       
 29784  	# Preserve the version number of sinix5.
       
 29785  	-sinix5.*)
       
 29786  		os=`echo $os | sed -e 's|sinix|sysv|'`
       
 29787  		;;
       
 29788  	-sinix*)
       
 29789  		os=-sysv4
       
 29790  		;;
       
 29791 -        -tpf*)
       
 29792 +	-tpf*)
       
 29793  		os=-tpf
       
 29794  		;;
       
 29795  	-triton*)
       
 29796  		os=-sysv3
       
 29797  		;;
       
 29798  	-oss*)
       
 29799  		os=-sysv3
       
 29800  		;;
       
 29801 @@ -1427,19 +1504,18 @@ case $os in
       
 29802  		os=-kaos
       
 29803  		;;
       
 29804  	-zvmoe)
       
 29805  		os=-zvmoe
       
 29806  		;;
       
 29807  	-dicos*)
       
 29808  		os=-dicos
       
 29809  		;;
       
 29810 -        -android*)
       
 29811 -	        os=-android
       
 29812 -                ;;
       
 29813 +	-nacl*)
       
 29814 +		;;
       
 29815  	-none)
       
 29816  		;;
       
 29817  	*)
       
 29818  		# Get rid of the `-' at the beginning of $os.
       
 29819  		os=`echo $os | sed 's/[^-]*-//'`
       
 29820  		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
       
 29821  		exit 1
       
 29822  		;;
       
 29823 @@ -1452,33 +1528,45 @@ else
       
 29824  
       
 29825  # Note that if you're going to try to match "-MANUFACTURER" here (say,
       
 29826  # "-sun"), then you have to tell the case statement up towards the top
       
 29827  # that MANUFACTURER isn't an operating system.  Otherwise, code above
       
 29828  # will signal an error saying that MANUFACTURER isn't an operating
       
 29829  # system, and we'll never get to this point.
       
 29830  
       
 29831  case $basic_machine in
       
 29832 -        score-*)
       
 29833 +	score-*)
       
 29834  		os=-elf
       
 29835  		;;
       
 29836 -        spu-*)
       
 29837 +	spu-*)
       
 29838  		os=-elf
       
 29839  		;;
       
 29840  	*-acorn)
       
 29841  		os=-riscix1.2
       
 29842  		;;
       
 29843  	arm*-rebel)
       
 29844  		os=-linux
       
 29845  		;;
       
 29846  	arm*-semi)
       
 29847  		os=-aout
       
 29848  		;;
       
 29849 -        c4x-* | tic4x-*)
       
 29850 -        	os=-coff
       
 29851 +	c4x-* | tic4x-*)
       
 29852 +		os=-coff
       
 29853 +		;;
       
 29854 +	hexagon-*)
       
 29855 +		os=-elf
       
 29856 +		;;
       
 29857 +	tic54x-*)
       
 29858 +		os=-coff
       
 29859 +		;;
       
 29860 +	tic55x-*)
       
 29861 +		os=-coff
       
 29862 +		;;
       
 29863 +	tic6x-*)
       
 29864 +		os=-coff
       
 29865  		;;
       
 29866  	# This must come before the *-dec entry.
       
 29867  	pdp10-*)
       
 29868  		os=-tops20
       
 29869  		;;
       
 29870  	pdp11-*)
       
 29871  		os=-none
       
 29872  		;;
       
 29873 @@ -1488,24 +1576,21 @@ case $basic_machine in
       
 29874  	m68*-apollo)
       
 29875  		os=-domain
       
 29876  		;;
       
 29877  	i386-sun)
       
 29878  		os=-sunos4.0.2
       
 29879  		;;
       
 29880  	m68000-sun)
       
 29881  		os=-sunos3
       
 29882 -		# This also exists in the configure program, but was not the
       
 29883 -		# default.
       
 29884 -		# os=-sunos4
       
 29885  		;;
       
 29886  	m68*-cisco)
       
 29887  		os=-aout
       
 29888  		;;
       
 29889 -        mep-*)
       
 29890 +	mep-*)
       
 29891  		os=-elf
       
 29892  		;;
       
 29893  	mips*-cisco)
       
 29894  		os=-elf
       
 29895  		;;
       
 29896  	mips*-*)
       
 29897  		os=-elf
       
 29898  		;;
       
 29899 @@ -1522,17 +1607,17 @@ case $basic_machine in
       
 29900  		os=-beos
       
 29901  		;;
       
 29902  	*-haiku)
       
 29903  		os=-haiku
       
 29904  		;;
       
 29905  	*-ibm)
       
 29906  		os=-aix
       
 29907  		;;
       
 29908 -    	*-knuth)
       
 29909 +	*-knuth)
       
 29910  		os=-mmixware
       
 29911  		;;
       
 29912  	*-wec)
       
 29913  		os=-proelf
       
 29914  		;;
       
 29915  	*-winbond)
       
 29916  		os=-proelf
       
 29917  		;;
       
 29918 @@ -1684,19 +1769,16 @@ case $basic_machine in
       
 29919  				vendor=apple
       
 29920  				;;
       
 29921  			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
       
 29922  				vendor=atari
       
 29923  				;;
       
 29924  			-vos*)
       
 29925  				vendor=stratus
       
 29926  				;;
       
 29927 -			*-android*|*-linuxandroid*)
       
 29928 -				vendor=linux-
       
 29929 -				;;
       
 29930  		esac
       
 29931  		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
       
 29932  		;;
       
 29933  esac
       
 29934  
       
 29935  echo $basic_machine$os
       
 29936  exit
       
 29937  
       
 29938 diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
       
 29939 --- a/js/src/ctypes/libffi/configure
       
 29940 +++ b/js/src/ctypes/libffi/configure
       
 29941 @@ -1,18 +1,16 @@
       
 29942  #! /bin/sh
       
 29943  # Guess values for system-dependent variables and create Makefiles.
       
 29944 -# Generated by GNU Autoconf 2.65 for libffi 3.0.10rc0.
       
 29945 +# Generated by GNU Autoconf 2.69 for libffi 3.1-rc1.
       
 29946  #
       
 29947 -# Report bugs to <http://gcc.gnu.org/bugs.html>.
       
 29948 +# Report bugs to <http://github.com/atgreen/libffi/issues>.
       
 29949  #
       
 29950  #
       
 29951 -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
       
 29952 -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
       
 29953 -# Inc.
       
 29954 +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
       
 29955  #
       
 29956  #
       
 29957  # This configure script is free software; the Free Software Foundation
       
 29958  # gives unlimited permission to copy, distribute and modify it.
       
 29959  ## -------------------- ##
       
 29960  ## M4sh Initialization. ##
       
 29961  ## -------------------- ##
       
 29962  
       
 29963 @@ -86,16 +84,17 @@ fi
       
 29964  # IFS
       
 29965  # We need space, tab and new line, in precisely that order.  Quoting is
       
 29966  # there to prevent editors from complaining about space-tab.
       
 29967  # (If _AS_PATH_WALK were called with IFS unset, it would disable word
       
 29968  # splitting by setting IFS to empty value.)
       
 29969  IFS=" ""	$as_nl"
       
 29970  
       
 29971  # Find who we are.  Look in the path if we contain no directory separator.
       
 29972 +as_myself=
       
 29973  case $0 in #((
       
 29974    *[\\/]* ) as_myself=$0 ;;
       
 29975    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 29976  for as_dir in $PATH
       
 29977  do
       
 29978    IFS=$as_save_IFS
       
 29979    test -z "$as_dir" && as_dir=.
       
 29980      test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
       
 29981 @@ -130,16 +129,41 @@ PS4='+ '
       
 29982  LC_ALL=C
       
 29983  export LC_ALL
       
 29984  LANGUAGE=C
       
 29985  export LANGUAGE
       
 29986  
       
 29987  # CDPATH.
       
 29988  (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
       
 29989  
       
 29990 +# Use a proper internal environment variable to ensure we don't fall
       
 29991 +  # into an infinite loop, continuously re-executing ourselves.
       
 29992 +  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
       
 29993 +    _as_can_reexec=no; export _as_can_reexec;
       
 29994 +    # We cannot yet assume a decent shell, so we have to provide a
       
 29995 +# neutralization value for shells without unset; and this also
       
 29996 +# works around shells that cannot unset nonexistent variables.
       
 29997 +# Preserve -v and -x to the replacement shell.
       
 29998 +BASH_ENV=/dev/null
       
 29999 +ENV=/dev/null
       
 30000 +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
       
 30001 +case $- in # ((((
       
 30002 +  *v*x* | *x*v* ) as_opts=-vx ;;
       
 30003 +  *v* ) as_opts=-v ;;
       
 30004 +  *x* ) as_opts=-x ;;
       
 30005 +  * ) as_opts= ;;
       
 30006 +esac
       
 30007 +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
       
 30008 +# Admittedly, this is quite paranoid, since all the known shells bail
       
 30009 +# out after a failed `exec'.
       
 30010 +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
       
 30011 +as_fn_exit 255
       
 30012 +  fi
       
 30013 +  # We don't want this to propagate to other subprocesses.
       
 30014 +          { _as_can_reexec=; unset _as_can_reexec;}
       
 30015  if test "x$CONFIG_SHELL" = x; then
       
 30016    as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
       
 30017    emulate sh
       
 30018    NULLCMD=:
       
 30019    # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
       
 30020    # is contrary to our usage.  Disable this feature.
       
 30021    alias -g '\${1+\"\$@\"}'='\"\$@\"'
       
 30022    setopt NO_GLOB_SUBST
       
 30023 @@ -163,21 +187,30 @@ as_fn_success || { exitcode=1; echo as_f
       
 30024  as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
       
 30025  as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
       
 30026  as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
       
 30027  if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
       
 30028  
       
 30029  else
       
 30030    exitcode=1; echo positional parameters were not saved.
       
 30031  fi
       
 30032 -test x\$exitcode = x0 || exit 1"
       
 30033 +test x\$exitcode = x0 || exit 1
       
 30034 +test -x / || exit 1"
       
 30035    as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
       
 30036    as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
       
 30037    eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
       
 30038    test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
       
 30039 +
       
 30040 +  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
       
 30041 +    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
       
 30042 +    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
       
 30043 +    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
       
 30044 +    PATH=/empty FPATH=/empty; export PATH FPATH
       
 30045 +    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
       
 30046 +      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
       
 30047  test \$(( 1 + 1 )) = 2 || exit 1"
       
 30048    if (eval "$as_required") 2>/dev/null; then :
       
 30049    as_have_required=yes
       
 30050  else
       
 30051    as_have_required=no
       
 30052  fi
       
 30053    if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
       
 30054  
       
 30055 @@ -208,36 +241,47 @@ done
       
 30056  $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
       
 30057  	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
       
 30058    CONFIG_SHELL=$SHELL as_have_required=yes
       
 30059  fi; }
       
 30060  IFS=$as_save_IFS
       
 30061  
       
 30062  
       
 30063        if test "x$CONFIG_SHELL" != x; then :
       
 30064 -  # We cannot yet assume a decent shell, so we have to provide a
       
 30065 -	# neutralization value for shells without unset; and this also
       
 30066 -	# works around shells that cannot unset nonexistent variables.
       
 30067 -	BASH_ENV=/dev/null
       
 30068 -	ENV=/dev/null
       
 30069 -	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
       
 30070 -	export CONFIG_SHELL
       
 30071 -	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
       
 30072 +  export CONFIG_SHELL
       
 30073 +             # We cannot yet assume a decent shell, so we have to provide a
       
 30074 +# neutralization value for shells without unset; and this also
       
 30075 +# works around shells that cannot unset nonexistent variables.
       
 30076 +# Preserve -v and -x to the replacement shell.
       
 30077 +BASH_ENV=/dev/null
       
 30078 +ENV=/dev/null
       
 30079 +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
       
 30080 +case $- in # ((((
       
 30081 +  *v*x* | *x*v* ) as_opts=-vx ;;
       
 30082 +  *v* ) as_opts=-v ;;
       
 30083 +  *x* ) as_opts=-x ;;
       
 30084 +  * ) as_opts= ;;
       
 30085 +esac
       
 30086 +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
       
 30087 +# Admittedly, this is quite paranoid, since all the known shells bail
       
 30088 +# out after a failed `exec'.
       
 30089 +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
       
 30090 +exit 255
       
 30091  fi
       
 30092  
       
 30093      if test x$as_have_required = xno; then :
       
 30094    $as_echo "$0: This script requires a shell more modern than all"
       
 30095    $as_echo "$0: the shells that I found on your system."
       
 30096    if test x${ZSH_VERSION+set} = xset ; then
       
 30097      $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
       
 30098      $as_echo "$0: be upgraded to zsh 4.3.4 or later."
       
 30099    else
       
 30100      $as_echo "$0: Please tell bug-autoconf@gnu.org and
       
 30101 -$0: http://gcc.gnu.org/bugs.html about your system,
       
 30102 -$0: including any error possibly output before this
       
 30103 +$0: http://github.com/atgreen/libffi/issues about your
       
 30104 +$0: system, including any error possibly output before this
       
 30105  $0: message. Then install a modern shell, or manually run
       
 30106  $0: the script under such a shell if you do have one."
       
 30107    fi
       
 30108    exit 1
       
 30109  fi
       
 30110  fi
       
 30111  fi
       
 30112  SHELL=${CONFIG_SHELL-/bin/sh}
       
 30113 @@ -314,20 +358,28 @@ as_fn_mkdir_p ()
       
 30114  	  /^X\(\/\).*/{
       
 30115  	    s//\1/
       
 30116  	    q
       
 30117  	  }
       
 30118  	  s/.*/./; q'`
       
 30119        test -d "$as_dir" && break
       
 30120      done
       
 30121      test -z "$as_dirs" || eval "mkdir $as_dirs"
       
 30122 -  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
       
 30123 +  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
       
 30124  
       
 30125  
       
 30126  } # as_fn_mkdir_p
       
 30127 +
       
 30128 +# as_fn_executable_p FILE
       
 30129 +# -----------------------
       
 30130 +# Test if FILE is an executable regular file.
       
 30131 +as_fn_executable_p ()
       
 30132 +{
       
 30133 +  test -f "$1" && test -x "$1"
       
 30134 +} # as_fn_executable_p
       
 30135  # as_fn_append VAR VALUE
       
 30136  # ----------------------
       
 30137  # Append the text in VALUE to the end of the definition contained in VAR. Take
       
 30138  # advantage of any shell optimizations that allow amortized linear growth over
       
 30139  # repeated appends, instead of the typical quadratic growth present in naive
       
 30140  # implementations.
       
 30141  if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
       
 30142    eval 'as_fn_append ()
       
 30143 @@ -354,29 +406,29 @@ if (eval "test \$(( 1 + 1 )) = 2") 2>/de
       
 30144  else
       
 30145    as_fn_arith ()
       
 30146    {
       
 30147      as_val=`expr "$@" || test $? -eq 1`
       
 30148    }
       
 30149  fi # as_fn_arith
       
 30150  
       
 30151  
       
 30152 -# as_fn_error ERROR [LINENO LOG_FD]
       
 30153 -# ---------------------------------
       
 30154 +# as_fn_error STATUS ERROR [LINENO LOG_FD]
       
 30155 +# ----------------------------------------
       
 30156  # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
       
 30157  # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
       
 30158 -# script with status $?, using 1 if that was 0.
       
 30159 +# script with STATUS, using 1 if that was 0.
       
 30160  as_fn_error ()
       
 30161  {
       
 30162 -  as_status=$?; test $as_status -eq 0 && as_status=1
       
 30163 -  if test "$3"; then
       
 30164 -    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
       
 30165 -    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
       
 30166 -  fi
       
 30167 -  $as_echo "$as_me: error: $1" >&2
       
 30168 +  as_status=$1; test $as_status -eq 0 && as_status=1
       
 30169 +  if test "$4"; then
       
 30170 +    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
       
 30171 +    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
       
 30172 +  fi
       
 30173 +  $as_echo "$as_me: error: $2" >&2
       
 30174    as_fn_exit $as_status
       
 30175  } # as_fn_error
       
 30176  
       
 30177  if expr a : '\(a\)' >/dev/null 2>&1 &&
       
 30178     test "X`expr 00001 : '.*\(...\)'`" = X001; then
       
 30179    as_expr=expr
       
 30180  else
       
 30181    as_expr=false
       
 30182 @@ -439,16 +491,20 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
       
 30183        :loop
       
 30184        s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
       
 30185        t loop
       
 30186        s/-\n.*//
       
 30187      ' >$as_me.lineno &&
       
 30188    chmod +x "$as_me.lineno" ||
       
 30189      { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
       
 30190  
       
 30191 +  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
       
 30192 +  # already done that, so ensure we don't try to do so again and fall
       
 30193 +  # in an infinite loop.  This has already happened in practice.
       
 30194 +  _as_can_reexec=no; export _as_can_reexec
       
 30195    # Don't try to exec as it changes $[0], causing all sort of problems
       
 30196    # (the dirname of $[0] is not the place where we might find the
       
 30197    # original and so on.  Autoconf is especially sensitive to this).
       
 30198    . "./$as_me.lineno"
       
 30199    # Exit status is that of the last command.
       
 30200    exit
       
 30201  }
       
 30202  
       
 30203 @@ -473,221 +529,54 @@ else
       
 30204    mkdir conf$$.dir 2>/dev/null
       
 30205  fi
       
 30206  if (echo >conf$$.file) 2>/dev/null; then
       
 30207    if ln -s conf$$.file conf$$ 2>/dev/null; then
       
 30208      as_ln_s='ln -s'
       
 30209      # ... but there are two gotchas:
       
 30210      # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
       
 30211      # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
       
 30212 -    # In both cases, we have to default to `cp -p'.
       
 30213 +    # In both cases, we have to default to `cp -pR'.
       
 30214      ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
       
 30215 -      as_ln_s='cp -p'
       
 30216 +      as_ln_s='cp -pR'
       
 30217    elif ln conf$$.file conf$$ 2>/dev/null; then
       
 30218      as_ln_s=ln
       
 30219    else
       
 30220 -    as_ln_s='cp -p'
       
 30221 -  fi
       
 30222 -else
       
 30223 -  as_ln_s='cp -p'
       
 30224 +    as_ln_s='cp -pR'
       
 30225 +  fi
       
 30226 +else
       
 30227 +  as_ln_s='cp -pR'
       
 30228  fi
       
 30229  rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
       
 30230  rmdir conf$$.dir 2>/dev/null
       
 30231  
       
 30232  if mkdir -p . 2>/dev/null; then
       
 30233    as_mkdir_p='mkdir -p "$as_dir"'
       
 30234  else
       
 30235    test -d ./-p && rmdir ./-p
       
 30236    as_mkdir_p=false
       
 30237  fi
       
 30238  
       
 30239 -if test -x / >/dev/null 2>&1; then
       
 30240 -  as_test_x='test -x'
       
 30241 -else
       
 30242 -  if ls -dL / >/dev/null 2>&1; then
       
 30243 -    as_ls_L_option=L
       
 30244 -  else
       
 30245 -    as_ls_L_option=
       
 30246 -  fi
       
 30247 -  as_test_x='
       
 30248 -    eval sh -c '\''
       
 30249 -      if test -d "$1"; then
       
 30250 -	test -d "$1/.";
       
 30251 -      else
       
 30252 -	case $1 in #(
       
 30253 -	-*)set "./$1";;
       
 30254 -	esac;
       
 30255 -	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
       
 30256 -	???[sx]*):;;*)false;;esac;fi
       
 30257 -    '\'' sh
       
 30258 -  '
       
 30259 -fi
       
 30260 -as_executable_p=$as_test_x
       
 30261 +as_test_x='test -x'
       
 30262 +as_executable_p=as_fn_executable_p
       
 30263  
       
 30264  # Sed expression to map a string onto a valid CPP name.
       
 30265  as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
       
 30266  
       
 30267  # Sed expression to map a string onto a valid variable name.
       
 30268  as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
       
 30269  
       
 30270 -
       
 30271 -
       
 30272 -# Check that we are running under the correct shell.
       
 30273  SHELL=${CONFIG_SHELL-/bin/sh}
       
 30274  
       
 30275 -case X$lt_ECHO in
       
 30276 -X*--fallback-echo)
       
 30277 -  # Remove one level of quotation (which was required for Make).
       
 30278 -  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
       
 30279 -  ;;
       
 30280 -esac
       
 30281 -
       
 30282 -ECHO=${lt_ECHO-echo}
       
 30283 -if test "X$1" = X--no-reexec; then
       
 30284 -  # Discard the --no-reexec flag, and continue.
       
 30285 -  shift
       
 30286 -elif test "X$1" = X--fallback-echo; then
       
 30287 -  # Avoid inline document here, it may be left over
       
 30288 -  :
       
 30289 -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
       
 30290 -  # Yippee, $ECHO works!
       
 30291 -  :
       
 30292 -else
       
 30293 -  # Restart under the correct shell.
       
 30294 -  exec $SHELL "$0" --no-reexec ${1+"$@"}
       
 30295 -fi
       
 30296 -
       
 30297 -if test "X$1" = X--fallback-echo; then
       
 30298 -  # used as fallback echo
       
 30299 -  shift
       
 30300 -  cat <<_LT_EOF
       
 30301 -$*
       
 30302 -_LT_EOF
       
 30303 -  exit 0
       
 30304 -fi
       
 30305 -
       
 30306 -# The HP-UX ksh and POSIX shell print the target directory to stdout
       
 30307 -# if CDPATH is set.
       
 30308 -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
       
 30309 -
       
 30310 -if test -z "$lt_ECHO"; then
       
 30311 -  if test "X${echo_test_string+set}" != Xset; then
       
 30312 -    # find a string as large as possible, as long as the shell can cope with it
       
 30313 -    for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
       
 30314 -      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
       
 30315 -      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
       
 30316 -	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
       
 30317 -      then
       
 30318 -        break
       
 30319 -      fi
       
 30320 -    done
       
 30321 -  fi
       
 30322 -
       
 30323 -  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
       
 30324 -     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
       
 30325 -     test "X$echo_testing_string" = "X$echo_test_string"; then
       
 30326 -    :
       
 30327 -  else
       
 30328 -    # The Solaris, AIX, and Digital Unix default echo programs unquote
       
 30329 -    # backslashes.  This makes it impossible to quote backslashes using
       
 30330 -    #   echo "$something" | sed 's/\\/\\\\/g'
       
 30331 -    #
       
 30332 -    # So, first we look for a working echo in the user's PATH.
       
 30333 -
       
 30334 -    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
       
 30335 -    for dir in $PATH /usr/ucb; do
       
 30336 -      IFS="$lt_save_ifs"
       
 30337 -      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
       
 30338 -         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
       
 30339 -         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
       
 30340 -         test "X$echo_testing_string" = "X$echo_test_string"; then
       
 30341 -        ECHO="$dir/echo"
       
 30342 -        break
       
 30343 -      fi
       
 30344 -    done
       
 30345 -    IFS="$lt_save_ifs"
       
 30346 -
       
 30347 -    if test "X$ECHO" = Xecho; then
       
 30348 -      # We didn't find a better echo, so look for alternatives.
       
 30349 -      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
       
 30350 -         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
       
 30351 -         test "X$echo_testing_string" = "X$echo_test_string"; then
       
 30352 -        # This shell has a builtin print -r that does the trick.
       
 30353 -        ECHO='print -r'
       
 30354 -      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
       
 30355 -	   test "X$CONFIG_SHELL" != X/bin/ksh; then
       
 30356 -        # If we have ksh, try running configure again with it.
       
 30357 -        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
       
 30358 -        export ORIGINAL_CONFIG_SHELL
       
 30359 -        CONFIG_SHELL=/bin/ksh
       
 30360 -        export CONFIG_SHELL
       
 30361 -        exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
       
 30362 -      else
       
 30363 -        # Try using printf.
       
 30364 -        ECHO='printf %s\n'
       
 30365 -        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
       
 30366 -	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
       
 30367 -	   test "X$echo_testing_string" = "X$echo_test_string"; then
       
 30368 -	  # Cool, printf works
       
 30369 -	  :
       
 30370 -        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
       
 30371 -	     test "X$echo_testing_string" = 'X\t' &&
       
 30372 -	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
       
 30373 -	     test "X$echo_testing_string" = "X$echo_test_string"; then
       
 30374 -	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
       
 30375 -	  export CONFIG_SHELL
       
 30376 -	  SHELL="$CONFIG_SHELL"
       
 30377 -	  export SHELL
       
 30378 -	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
       
 30379 -        elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
       
 30380 -	     test "X$echo_testing_string" = 'X\t' &&
       
 30381 -	     echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
       
 30382 -	     test "X$echo_testing_string" = "X$echo_test_string"; then
       
 30383 -	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
       
 30384 -        else
       
 30385 -	  # maybe with a smaller string...
       
 30386 -	  prev=:
       
 30387 -
       
 30388 -	  for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
       
 30389 -	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
       
 30390 -	    then
       
 30391 -	      break
       
 30392 -	    fi
       
 30393 -	    prev="$cmd"
       
 30394 -	  done
       
 30395 -
       
 30396 -	  if test "$prev" != 'sed 50q "$0"'; then
       
 30397 -	    echo_test_string=`eval $prev`
       
 30398 -	    export echo_test_string
       
 30399 -	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
       
 30400 -	  else
       
 30401 -	    # Oops.  We lost completely, so just stick with echo.
       
 30402 -	    ECHO=echo
       
 30403 -	  fi
       
 30404 -        fi
       
 30405 -      fi
       
 30406 -    fi
       
 30407 -  fi
       
 30408 -fi
       
 30409 -
       
 30410 -# Copy echo and quote the copy suitably for passing to libtool from
       
 30411 -# the Makefile, instead of quoting the original, which is used later.
       
 30412 -lt_ECHO=$ECHO
       
 30413 -if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
       
 30414 -   lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
       
 30415 -fi
       
 30416 -
       
 30417 -
       
 30418 -
       
 30419  
       
 30420  test -n "$DJDIR" || exec 7<&0 </dev/null
       
 30421  exec 6>&1
       
 30422  
       
 30423  # Name of the host.
       
 30424 -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
       
 30425 +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
       
 30426  # so uname gets run too.
       
 30427  ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
       
 30428  
       
 30429  #
       
 30430  # Initializations.
       
 30431  #
       
 30432  ac_default_prefix=/usr/local
       
 30433  ac_clean_files=
       
 30434 @@ -696,19 +585,19 @@ LIBOBJS=
       
 30435  cross_compiling=no
       
 30436  subdirs=
       
 30437  MFLAGS=
       
 30438  MAKEFLAGS=
       
 30439  
       
 30440  # Identity of this package.
       
 30441  PACKAGE_NAME='libffi'
       
 30442  PACKAGE_TARNAME='libffi'
       
 30443 -PACKAGE_VERSION='3.0.10rc0'
       
 30444 -PACKAGE_STRING='libffi 3.0.10rc0'
       
 30445 -PACKAGE_BUGREPORT='http://gcc.gnu.org/bugs.html'
       
 30446 +PACKAGE_VERSION='3.1-rc1'
       
 30447 +PACKAGE_STRING='libffi 3.1-rc1'
       
 30448 +PACKAGE_BUGREPORT='http://github.com/atgreen/libffi/issues'
       
 30449  PACKAGE_URL=''
       
 30450  
       
 30451  # Factoring default headers for most tests.
       
 30452  ac_includes_default="\
       
 30453  #include <stdio.h>
       
 30454  #ifdef HAVE_SYS_TYPES_H
       
 30455  # include <sys/types.h>
       
 30456  #endif
       
 30457 @@ -747,19 +636,29 @@ am__EXEEXT_TRUE
       
 30458  LTLIBOBJS
       
 30459  LIBOBJS
       
 30460  toolexeclibdir
       
 30461  toolexecdir
       
 30462  FFI_DEBUG_FALSE
       
 30463  FFI_DEBUG_TRUE
       
 30464  TARGETDIR
       
 30465  TARGET
       
 30466 +FFI_EXEC_TRAMPOLINE_TABLE
       
 30467 +FFI_EXEC_TRAMPOLINE_TABLE_FALSE
       
 30468 +FFI_EXEC_TRAMPOLINE_TABLE_TRUE
       
 30469  sys_symbol_underscore
       
 30470 +HAVE_LONG_DOUBLE_VARIANT
       
 30471  HAVE_LONG_DOUBLE
       
 30472  ALLOCA
       
 30473 +XTENSA_FALSE
       
 30474 +XTENSA_TRUE
       
 30475 +VAX_FALSE
       
 30476 +VAX_TRUE
       
 30477 +TILE_FALSE
       
 30478 +TILE_TRUE
       
 30479  PA64_HPUX_FALSE
       
 30480  PA64_HPUX_TRUE
       
 30481  PA_HPUX_FALSE
       
 30482  PA_HPUX_TRUE
       
 30483  PA_LINUX_FALSE
       
 30484  PA_LINUX_TRUE
       
 30485  SH64_FALSE
       
 30486  SH64_TRUE
       
 30487 @@ -772,64 +671,85 @@ S390_TRUE
       
 30488  FRV_FALSE
       
 30489  FRV_TRUE
       
 30490  LIBFFI_CRIS_FALSE
       
 30491  LIBFFI_CRIS_TRUE
       
 30492  AVR32_FALSE
       
 30493  AVR32_TRUE
       
 30494  ARM_FALSE
       
 30495  ARM_TRUE
       
 30496 +ARC_FALSE
       
 30497 +ARC_TRUE
       
 30498 +AARCH64_FALSE
       
 30499 +AARCH64_TRUE
       
 30500  POWERPC_FREEBSD_FALSE
       
 30501  POWERPC_FREEBSD_TRUE
       
 30502  POWERPC_DARWIN_FALSE
       
 30503  POWERPC_DARWIN_TRUE
       
 30504  POWERPC_AIX_FALSE
       
 30505  POWERPC_AIX_TRUE
       
 30506  POWERPC_FALSE
       
 30507  POWERPC_TRUE
       
 30508 +NIOS2_FALSE
       
 30509 +NIOS2_TRUE
       
 30510  MOXIE_FALSE
       
 30511  MOXIE_TRUE
       
 30512 +METAG_FALSE
       
 30513 +METAG_TRUE
       
 30514 +MICROBLAZE_FALSE
       
 30515 +MICROBLAZE_TRUE
       
 30516 +M88K_FALSE
       
 30517 +M88K_TRUE
       
 30518  M68K_FALSE
       
 30519  M68K_TRUE
       
 30520  M32R_FALSE
       
 30521  M32R_TRUE
       
 30522  IA64_FALSE
       
 30523  IA64_TRUE
       
 30524  ALPHA_FALSE
       
 30525  ALPHA_TRUE
       
 30526 +X86_DARWIN64_FALSE
       
 30527 +X86_DARWIN64_TRUE
       
 30528 +X86_DARWIN32_FALSE
       
 30529 +X86_DARWIN32_TRUE
       
 30530  X86_DARWIN_FALSE
       
 30531  X86_DARWIN_TRUE
       
 30532  X86_WIN64_FALSE
       
 30533  X86_WIN64_TRUE
       
 30534  X86_WIN32_FALSE
       
 30535  X86_WIN32_TRUE
       
 30536  X86_FREEBSD_FALSE
       
 30537  X86_FREEBSD_TRUE
       
 30538  X86_FALSE
       
 30539  X86_TRUE
       
 30540  SPARC_FALSE
       
 30541  SPARC_TRUE
       
 30542 +BFIN_FALSE
       
 30543 +BFIN_TRUE
       
 30544  MIPS_FALSE
       
 30545  MIPS_TRUE
       
 30546  AM_LTLDFLAGS
       
 30547  AM_RUNTESTFLAGS
       
 30548  TESTSUBDIR_FALSE
       
 30549  TESTSUBDIR_TRUE
       
 30550  MAINT
       
 30551  MAINTAINER_MODE_FALSE
       
 30552  MAINTAINER_MODE_TRUE
       
 30553 +PRTDIAG
       
 30554  CPP
       
 30555  OTOOL64
       
 30556  OTOOL
       
 30557  LIPO
       
 30558  NMEDIT
       
 30559  DSYMUTIL
       
 30560 -lt_ECHO
       
 30561 +MANIFEST_TOOL
       
 30562  RANLIB
       
 30563 +ac_ct_AR
       
 30564  AR
       
 30565 +DLLTOOL
       
 30566  OBJDUMP
       
 30567  LN_S
       
 30568  NM
       
 30569  ac_ct_DUMPBIN
       
 30570  DUMPBIN
       
 30571  LD
       
 30572  FGREP
       
 30573  EGREP
       
 30574 @@ -839,29 +759,34 @@ LIBTOOL
       
 30575  am__fastdepCCAS_FALSE
       
 30576  am__fastdepCCAS_TRUE
       
 30577  CCASDEPMODE
       
 30578  CCASFLAGS
       
 30579  CCAS
       
 30580  am__fastdepCC_FALSE
       
 30581  am__fastdepCC_TRUE
       
 30582  CCDEPMODE
       
 30583 +am__nodep
       
 30584  AMDEPBACKSLASH
       
 30585  AMDEP_FALSE
       
 30586  AMDEP_TRUE
       
 30587  am__quote
       
 30588  am__include
       
 30589  DEPDIR
       
 30590  OBJEXT
       
 30591  EXEEXT
       
 30592  ac_ct_CC
       
 30593  CPPFLAGS
       
 30594  LDFLAGS
       
 30595  CFLAGS
       
 30596  CC
       
 30597 +AM_BACKSLASH
       
 30598 +AM_DEFAULT_VERBOSITY
       
 30599 +AM_DEFAULT_V
       
 30600 +AM_V
       
 30601  am__untar
       
 30602  am__tar
       
 30603  AMTAR
       
 30604  am__leading_dot
       
 30605  SET_MAKE
       
 30606  AWK
       
 30607  mkdir_p
       
 30608  MKDIR_P
       
 30609 @@ -875,16 +800,17 @@ AUTOCONF
       
 30610  ACLOCAL
       
 30611  VERSION
       
 30612  PACKAGE
       
 30613  CYGPATH_W
       
 30614  am__isrc
       
 30615  INSTALL_DATA
       
 30616  INSTALL_SCRIPT
       
 30617  INSTALL_PROGRAM
       
 30618 +ax_enable_builddir_sed
       
 30619  target_os
       
 30620  target_vendor
       
 30621  target_cpu
       
 30622  target
       
 30623  host_os
       
 30624  host_vendor
       
 30625  host_cpu
       
 30626  host
       
 30627 @@ -928,24 +854,30 @@ PACKAGE_STRING
       
 30628  PACKAGE_VERSION
       
 30629  PACKAGE_TARNAME
       
 30630  PACKAGE_NAME
       
 30631  PATH_SEPARATOR
       
 30632  SHELL'
       
 30633  ac_subst_files=''
       
 30634  ac_user_opts='
       
 30635  enable_option_checking
       
 30636 +enable_builddir
       
 30637 +enable_silent_rules
       
 30638  enable_dependency_tracking
       
 30639  enable_shared
       
 30640  enable_static
       
 30641  with_pic
       
 30642  enable_fast_install
       
 30643  with_gnu_ld
       
 30644 +with_sysroot
       
 30645  enable_libtool_lock
       
 30646 +enable_portable_binary
       
 30647 +with_gcc_arch
       
 30648  enable_maintainer_mode
       
 30649 +enable_pax_emutramp
       
 30650  enable_debug
       
 30651  enable_structs
       
 30652  enable_raw_api
       
 30653  enable_purify_safety
       
 30654  '
       
 30655        ac_precious_vars='build_alias
       
 30656  host_alias
       
 30657  target_alias
       
 30658 @@ -1010,18 +942,19 @@ do
       
 30659    # If the previous option needs an argument, assign it.
       
 30660    if test -n "$ac_prev"; then
       
 30661      eval $ac_prev=\$ac_option
       
 30662      ac_prev=
       
 30663      continue
       
 30664    fi
       
 30665  
       
 30666    case $ac_option in
       
 30667 -  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
       
 30668 -  *)	ac_optarg=yes ;;
       
 30669 +  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
       
 30670 +  *=)   ac_optarg= ;;
       
 30671 +  *)    ac_optarg=yes ;;
       
 30672    esac
       
 30673  
       
 30674    # Accept the important Cygnus configure options, so we can diagnose typos.
       
 30675  
       
 30676    case $ac_dashdash$ac_option in
       
 30677    --)
       
 30678      ac_dashdash=yes ;;
       
 30679  
       
 30680 @@ -1056,17 +989,17 @@ do
       
 30681    -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
       
 30682    | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
       
 30683      datarootdir=$ac_optarg ;;
       
 30684  
       
 30685    -disable-* | --disable-*)
       
 30686      ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
       
 30687      # Reject names that are not valid shell variable names.
       
 30688      expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
       
 30689 -      as_fn_error "invalid feature name: $ac_useropt"
       
 30690 +      as_fn_error $? "invalid feature name: $ac_useropt"
       
 30691      ac_useropt_orig=$ac_useropt
       
 30692      ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
       
 30693      case $ac_user_opts in
       
 30694        *"
       
 30695  "enable_$ac_useropt"
       
 30696  "*) ;;
       
 30697        *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
       
 30698  	 ac_unrecognized_sep=', ';;
       
 30699 @@ -1082,17 +1015,17 @@ do
       
 30700      ac_prev=dvidir ;;
       
 30701    -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
       
 30702      dvidir=$ac_optarg ;;
       
 30703  
       
 30704    -enable-* | --enable-*)
       
 30705      ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
       
 30706      # Reject names that are not valid shell variable names.
       
 30707      expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
       
 30708 -      as_fn_error "invalid feature name: $ac_useropt"
       
 30709 +      as_fn_error $? "invalid feature name: $ac_useropt"
       
 30710      ac_useropt_orig=$ac_useropt
       
 30711      ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
       
 30712      case $ac_user_opts in
       
 30713        *"
       
 30714  "enable_$ac_useropt"
       
 30715  "*) ;;
       
 30716        *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
       
 30717  	 ac_unrecognized_sep=', ';;
       
 30718 @@ -1286,33 +1219,33 @@ do
       
 30719  
       
 30720    -version | --version | --versio | --versi | --vers | -V)
       
 30721      ac_init_version=: ;;
       
 30722  
       
 30723    -with-* | --with-*)
       
 30724      ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
       
 30725      # Reject names that are not valid shell variable names.
       
 30726      expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
       
 30727 -      as_fn_error "invalid package name: $ac_useropt"
       
 30728 +      as_fn_error $? "invalid package name: $ac_useropt"
       
 30729      ac_useropt_orig=$ac_useropt
       
 30730      ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
       
 30731      case $ac_user_opts in
       
 30732        *"
       
 30733  "with_$ac_useropt"
       
 30734  "*) ;;
       
 30735        *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
       
 30736  	 ac_unrecognized_sep=', ';;
       
 30737      esac
       
 30738      eval with_$ac_useropt=\$ac_optarg ;;
       
 30739  
       
 30740    -without-* | --without-*)
       
 30741      ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
       
 30742      # Reject names that are not valid shell variable names.
       
 30743      expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
       
 30744 -      as_fn_error "invalid package name: $ac_useropt"
       
 30745 +      as_fn_error $? "invalid package name: $ac_useropt"
       
 30746      ac_useropt_orig=$ac_useropt
       
 30747      ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
       
 30748      case $ac_user_opts in
       
 30749        *"
       
 30750  "with_$ac_useropt"
       
 30751  "*) ;;
       
 30752        *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
       
 30753  	 ac_unrecognized_sep=', ';;
       
 30754 @@ -1332,50 +1265,50 @@ do
       
 30755  
       
 30756    -x-libraries | --x-libraries | --x-librarie | --x-librari \
       
 30757    | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
       
 30758      ac_prev=x_libraries ;;
       
 30759    -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
       
 30760    | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
       
 30761      x_libraries=$ac_optarg ;;
       
 30762  
       
 30763 -  -*) as_fn_error "unrecognized option: \`$ac_option'
       
 30764 -Try \`$0 --help' for more information."
       
 30765 +  -*) as_fn_error $? "unrecognized option: \`$ac_option'
       
 30766 +Try \`$0 --help' for more information"
       
 30767      ;;
       
 30768  
       
 30769    *=*)
       
 30770      ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
       
 30771      # Reject names that are not valid shell variable names.
       
 30772      case $ac_envvar in #(
       
 30773        '' | [0-9]* | *[!_$as_cr_alnum]* )
       
 30774 -      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
       
 30775 +      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
       
 30776      esac
       
 30777      eval $ac_envvar=\$ac_optarg
       
 30778      export $ac_envvar ;;
       
 30779  
       
 30780    *)
       
 30781      # FIXME: should be removed in autoconf 3.0.
       
 30782      $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
       
 30783      expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       
 30784        $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
       
 30785 -    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
       
 30786 +    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
       
 30787      ;;
       
 30788  
       
 30789    esac
       
 30790  done
       
 30791  
       
 30792  if test -n "$ac_prev"; then
       
 30793    ac_option=--`echo $ac_prev | sed 's/_/-/g'`
       
 30794 -  as_fn_error "missing argument to $ac_option"
       
 30795 +  as_fn_error $? "missing argument to $ac_option"
       
 30796  fi
       
 30797  
       
 30798  if test -n "$ac_unrecognized_opts"; then
       
 30799    case $enable_option_checking in
       
 30800      no) ;;
       
 30801 -    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
       
 30802 +    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
       
 30803      *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
       
 30804    esac
       
 30805  fi
       
 30806  
       
 30807  # Check all directory arguments for consistency.
       
 30808  for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
       
 30809  		datadir sysconfdir sharedstatedir localstatedir includedir \
       
 30810  		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
       
 30811 @@ -1388,49 +1321,47 @@ do
       
 30812        ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
       
 30813        eval $ac_var=\$ac_val;;
       
 30814    esac
       
 30815    # Be sure to have absolute directory names.
       
 30816    case $ac_val in
       
 30817      [\\/$]* | ?:[\\/]* )  continue;;
       
 30818      NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
       
 30819    esac
       
 30820 -  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
       
 30821 +  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
       
 30822  done
       
 30823  
       
 30824  # There might be people who depend on the old broken behavior: `$host'
       
 30825  # used to hold the argument of --host etc.
       
 30826  # FIXME: To remove some day.
       
 30827  build=$build_alias
       
 30828  host=$host_alias
       
 30829  target=$target_alias
       
 30830  
       
 30831  # FIXME: To remove some day.
       
 30832  if test "x$host_alias" != x; then
       
 30833    if test "x$build_alias" = x; then
       
 30834      cross_compiling=maybe
       
 30835 -    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
       
 30836 -    If a cross compiler is detected then cross compile mode will be used." >&2
       
 30837    elif test "x$build_alias" != "x$host_alias"; then
       
 30838      cross_compiling=yes
       
 30839    fi
       
 30840  fi
       
 30841  
       
 30842  ac_tool_prefix=
       
 30843  test -n "$host_alias" && ac_tool_prefix=$host_alias-
       
 30844  
       
 30845  test "$silent" = yes && exec 6>/dev/null
       
 30846  
       
 30847  
       
 30848  ac_pwd=`pwd` && test -n "$ac_pwd" &&
       
 30849  ac_ls_di=`ls -di .` &&
       
 30850  ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
       
 30851 -  as_fn_error "working directory cannot be determined"
       
 30852 +  as_fn_error $? "working directory cannot be determined"
       
 30853  test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
       
 30854 -  as_fn_error "pwd does not report name of working directory"
       
 30855 +  as_fn_error $? "pwd does not report name of working directory"
       
 30856  
       
 30857  
       
 30858  # Find the source files, if location was not specified.
       
 30859  if test -z "$srcdir"; then
       
 30860    ac_srcdir_defaulted=yes
       
 30861    # Try the directory containing this script, then the parent directory.
       
 30862    ac_confdir=`$as_dirname -- "$as_myself" ||
       
 30863  $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
       
 30864 @@ -1459,21 +1390,21 @@ if test -z "$srcdir"; then
       
 30865    if test ! -r "$srcdir/$ac_unique_file"; then
       
 30866      srcdir=..
       
 30867    fi
       
 30868  else
       
 30869    ac_srcdir_defaulted=no
       
 30870  fi
       
 30871  if test ! -r "$srcdir/$ac_unique_file"; then
       
 30872    test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
       
 30873 -  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
       
 30874 +  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
       
 30875  fi
       
 30876  ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
       
 30877  ac_abs_confdir=`(
       
 30878 -	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
       
 30879 +	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
       
 30880  	pwd)`
       
 30881  # When building in place, set srcdir=.
       
 30882  if test "$ac_abs_confdir" = "$ac_pwd"; then
       
 30883    srcdir=.
       
 30884  fi
       
 30885  # Remove unnecessary trailing slashes from srcdir.
       
 30886  # Double slashes in file names in object file debugging info
       
 30887  # mess up M-x gdb in Emacs.
       
 30888 @@ -1489,31 +1420,31 @@ done
       
 30889  
       
 30890  #
       
 30891  # Report the --help message.
       
 30892  #
       
 30893  if test "$ac_init_help" = "long"; then
       
 30894    # Omit some internal or obsolete options to make the list less imposing.
       
 30895    # This message is too long to be a string in the A/UX 3.1 sh.
       
 30896    cat <<_ACEOF
       
 30897 -\`configure' configures libffi 3.0.10rc0 to adapt to many kinds of systems.
       
 30898 +\`configure' configures libffi 3.1-rc1 to adapt to many kinds of systems.
       
 30899  
       
 30900  Usage: $0 [OPTION]... [VAR=VALUE]...
       
 30901  
       
 30902  To assign environment variables (e.g., CC, CFLAGS...), specify them as
       
 30903  VAR=VALUE.  See below for descriptions of some of the useful variables.
       
 30904  
       
 30905  Defaults for the options are specified in brackets.
       
 30906  
       
 30907  Configuration:
       
 30908    -h, --help              display this help and exit
       
 30909        --help=short        display options specific to this package
       
 30910        --help=recursive    display the short help of all the included packages
       
 30911    -V, --version           display version information and exit
       
 30912 -  -q, --quiet, --silent   do not print \`checking...' messages
       
 30913 +  -q, --quiet, --silent   do not print \`checking ...' messages
       
 30914        --cache-file=FILE   cache test results in FILE [disabled]
       
 30915    -C, --config-cache      alias for \`--cache-file=config.cache'
       
 30916    -n, --no-create         do not create output files
       
 30917        --srcdir=DIR        find the sources in DIR [configure dir or \`..']
       
 30918  
       
 30919  Installation directories:
       
 30920    --prefix=PREFIX         install architecture-independent files in PREFIX
       
 30921                            [$ac_default_prefix]
       
 30922 @@ -1560,61 +1491,76 @@ System types:
       
 30923    --build=BUILD     configure for building on BUILD [guessed]
       
 30924    --host=HOST       cross-compile to build programs to run on HOST [BUILD]
       
 30925    --target=TARGET   configure for building compilers for TARGET [HOST]
       
 30926  _ACEOF
       
 30927  fi
       
 30928  
       
 30929  if test -n "$ac_init_help"; then
       
 30930    case $ac_init_help in
       
 30931 -     short | recursive ) echo "Configuration of libffi 3.0.10rc0:";;
       
 30932 +     short | recursive ) echo "Configuration of libffi 3.1-rc1:";;
       
 30933     esac
       
 30934    cat <<\_ACEOF
       
 30935  
       
 30936  Optional Features:
       
 30937    --disable-option-checking  ignore unrecognized --enable/--with options
       
 30938    --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
       
 30939    --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
       
 30940 -  --disable-dependency-tracking  speeds up one-time build
       
 30941 -  --enable-dependency-tracking   do not reject slow dependency extractors
       
 30942 +  --disable-builddir      disable automatic build in subdir of sources
       
 30943 +
       
 30944 +  --enable-silent-rules   less verbose build output (undo: "make V=1")
       
 30945 +  --disable-silent-rules  verbose build output (undo: "make V=0")
       
 30946 +  --enable-dependency-tracking
       
 30947 +                          do not reject slow dependency extractors
       
 30948 +  --disable-dependency-tracking
       
 30949 +                          speeds up one-time build
       
 30950    --enable-shared[=PKGS]  build shared libraries [default=yes]
       
 30951    --enable-static[=PKGS]  build static libraries [default=yes]
       
 30952    --enable-fast-install[=PKGS]
       
 30953                            optimize for fast installation [default=yes]
       
 30954    --disable-libtool-lock  avoid locking (might break parallel builds)
       
 30955 -  --enable-maintainer-mode  enable make rules and dependencies not useful
       
 30956 -			  (and sometimes confusing) to the casual installer
       
 30957 +  --enable-portable-binary
       
 30958 +                          disable compiler optimizations that would produce
       
 30959 +                          unportable binaries
       
 30960 +  --enable-maintainer-mode
       
 30961 +                          enable make rules and dependencies not useful (and
       
 30962 +                          sometimes confusing) to the casual installer
       
 30963 +  --enable-pax_emutramp       enable pax emulated trampolines, for we can't use PROT_EXEC
       
 30964    --enable-debug          debugging mode
       
 30965    --disable-structs       omit code for struct support
       
 30966    --disable-raw-api       make the raw api unavailable
       
 30967    --enable-purify-safety  purify-safe mode
       
 30968  
       
 30969  Optional Packages:
       
 30970    --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
       
 30971    --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
       
 30972 -  --with-pic              try to use only PIC/non-PIC objects [default=use
       
 30973 +  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
       
 30974                            both]
       
 30975    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
       
 30976 +  --with-sysroot=DIR Search for dependent libraries within DIR
       
 30977 +                        (or the compiler's sysroot if not specified).
       
 30978 +  --with-gcc-arch=<arch>  use architecture <arch> for gcc -march/-mtune,
       
 30979 +                          instead of guessing
       
 30980  
       
 30981  Some influential environment variables:
       
 30982    CC          C compiler command
       
 30983    CFLAGS      C compiler flags
       
 30984    LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
       
 30985                nonstandard directory <lib dir>
       
 30986    LIBS        libraries to pass to the linker, e.g. -l<library>
       
 30987    CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
       
 30988                you have headers in a nonstandard directory <include dir>
       
 30989    CCAS        assembler compiler command (defaults to CC)
       
 30990    CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
       
 30991    CPP         C preprocessor
       
 30992  
       
 30993  Use these variables to override the choices made by `configure' or to help
       
 30994  it to find libraries and programs with nonstandard names/locations.
       
 30995  
       
 30996 -Report bugs to <http://gcc.gnu.org/bugs.html>.
       
 30997 +Report bugs to <http://github.com/atgreen/libffi/issues>.
       
 30998  _ACEOF
       
 30999  ac_status=$?
       
 31000  fi
       
 31001  
       
 31002  if test "$ac_init_help" = "recursive"; then
       
 31003    # If there are subdirs, report their specific --help.
       
 31004    for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
       
 31005      test -d "$ac_dir" ||
       
 31006 @@ -1667,20 +1613,20 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_
       
 31007      fi || ac_status=$?
       
 31008      cd "$ac_pwd" || { ac_status=$?; break; }
       
 31009    done
       
 31010  fi
       
 31011  
       
 31012  test -n "$ac_init_help" && exit $ac_status
       
 31013  if $ac_init_version; then
       
 31014    cat <<\_ACEOF
       
 31015 -libffi configure 3.0.10rc0
       
 31016 -generated by GNU Autoconf 2.65
       
 31017 -
       
 31018 -Copyright (C) 2009 Free Software Foundation, Inc.
       
 31019 +libffi configure 3.1-rc1
       
 31020 +generated by GNU Autoconf 2.69
       
 31021 +
       
 31022 +Copyright (C) 2012 Free Software Foundation, Inc.
       
 31023  This configure script is free software; the Free Software Foundation
       
 31024  gives unlimited permission to copy, distribute and modify it.
       
 31025  _ACEOF
       
 31026    exit
       
 31027  fi
       
 31028  
       
 31029  ## ------------------------ ##
       
 31030  ## Autoconf initialization. ##
       
 31031 @@ -1714,17 +1660,17 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
       
 31032         } && test -s conftest.$ac_objext; then :
       
 31033    ac_retval=0
       
 31034  else
       
 31035    $as_echo "$as_me: failed program was:" >&5
       
 31036  sed 's/^/| /' conftest.$ac_ext >&5
       
 31037  
       
 31038  	ac_retval=1
       
 31039  fi
       
 31040 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
       
 31041 +  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
       
 31042    as_fn_set_status $ac_retval
       
 31043  
       
 31044  } # ac_fn_c_try_compile
       
 31045  
       
 31046  # ac_fn_c_try_link LINENO
       
 31047  # -----------------------
       
 31048  # Try to link conftest.$ac_ext, and return whether this succeeded.
       
 31049  ac_fn_c_try_link ()
       
 31050 @@ -1746,45 +1692,45 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
       
 31051      mv -f conftest.er1 conftest.err
       
 31052    fi
       
 31053    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 31054    test $ac_status = 0; } && {
       
 31055  	 test -z "$ac_c_werror_flag" ||
       
 31056  	 test ! -s conftest.err
       
 31057         } && test -s conftest$ac_exeext && {
       
 31058  	 test "$cross_compiling" = yes ||
       
 31059 -	 $as_test_x conftest$ac_exeext
       
 31060 +	 test -x conftest$ac_exeext
       
 31061         }; then :
       
 31062    ac_retval=0
       
 31063  else
       
 31064    $as_echo "$as_me: failed program was:" >&5
       
 31065  sed 's/^/| /' conftest.$ac_ext >&5
       
 31066  
       
 31067  	ac_retval=1
       
 31068  fi
       
 31069    # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
       
 31070    # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
       
 31071    # interfere with the next link command; also delete a directory that is
       
 31072    # left behind by Apple's compiler.  We do this before executing the actions.
       
 31073    rm -rf conftest.dSYM conftest_ipa8_conftest.oo
       
 31074 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
       
 31075 +  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
       
 31076    as_fn_set_status $ac_retval
       
 31077  
       
 31078  } # ac_fn_c_try_link
       
 31079  
       
 31080  # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
       
 31081  # -------------------------------------------------------
       
 31082  # Tests whether HEADER exists and can be compiled using the include files in
       
 31083  # INCLUDES, setting the cache variable VAR accordingly.
       
 31084  ac_fn_c_check_header_compile ()
       
 31085  {
       
 31086    as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
       
 31087    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
       
 31088  $as_echo_n "checking for $2... " >&6; }
       
 31089 -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
       
 31090 +if eval \${$3+:} false; then :
       
 31091    $as_echo_n "(cached) " >&6
       
 31092  else
       
 31093    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31094  /* end confdefs.h.  */
       
 31095  $4
       
 31096  #include <$2>
       
 31097  _ACEOF
       
 31098  if ac_fn_c_try_compile "$LINENO"; then :
       
 31099 @@ -1792,17 +1738,17 @@ if ac_fn_c_try_compile "$LINENO"; then :
       
 31100  else
       
 31101    eval "$3=no"
       
 31102  fi
       
 31103  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31104  fi
       
 31105  eval ac_res=\$$3
       
 31106  	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
       
 31107  $as_echo "$ac_res" >&6; }
       
 31108 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
       
 31109 +  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
       
 31110  
       
 31111  } # ac_fn_c_check_header_compile
       
 31112  
       
 31113  # ac_fn_c_try_cpp LINENO
       
 31114  # ----------------------
       
 31115  # Try to preprocess conftest.$ac_ext, and return whether this succeeded.
       
 31116  ac_fn_c_try_cpp ()
       
 31117  {
       
 31118 @@ -1817,28 +1763,28 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
       
 31119    (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
       
 31120    ac_status=$?
       
 31121    if test -s conftest.err; then
       
 31122      grep -v '^ *+' conftest.err >conftest.er1
       
 31123      cat conftest.er1 >&5
       
 31124      mv -f conftest.er1 conftest.err
       
 31125    fi
       
 31126    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 31127 -  test $ac_status = 0; } >/dev/null && {
       
 31128 +  test $ac_status = 0; } > conftest.i && {
       
 31129  	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
       
 31130  	 test ! -s conftest.err
       
 31131         }; then :
       
 31132    ac_retval=0
       
 31133  else
       
 31134    $as_echo "$as_me: failed program was:" >&5
       
 31135  sed 's/^/| /' conftest.$ac_ext >&5
       
 31136  
       
 31137      ac_retval=1
       
 31138  fi
       
 31139 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
       
 31140 +  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
       
 31141    as_fn_set_status $ac_retval
       
 31142  
       
 31143  } # ac_fn_c_try_cpp
       
 31144  
       
 31145  # ac_fn_c_try_run LINENO
       
 31146  # ----------------------
       
 31147  # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
       
 31148  # that executables *can* be run.
       
 31149 @@ -1870,30 +1816,30 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
       
 31150  else
       
 31151    $as_echo "$as_me: program exited with status $ac_status" >&5
       
 31152         $as_echo "$as_me: failed program was:" >&5
       
 31153  sed 's/^/| /' conftest.$ac_ext >&5
       
 31154  
       
 31155         ac_retval=$ac_status
       
 31156  fi
       
 31157    rm -rf conftest.dSYM conftest_ipa8_conftest.oo
       
 31158 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
       
 31159 +  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
       
 31160    as_fn_set_status $ac_retval
       
 31161  
       
 31162  } # ac_fn_c_try_run
       
 31163  
       
 31164  # ac_fn_c_check_func LINENO FUNC VAR
       
 31165  # ----------------------------------
       
 31166  # Tests whether FUNC exists, setting the cache variable VAR accordingly
       
 31167  ac_fn_c_check_func ()
       
 31168  {
       
 31169    as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
       
 31170    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
       
 31171  $as_echo_n "checking for $2... " >&6; }
       
 31172 -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
       
 31173 +if eval \${$3+:} false; then :
       
 31174    $as_echo_n "(cached) " >&6
       
 31175  else
       
 31176    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31177  /* end confdefs.h.  */
       
 31178  /* Define $2 to an innocuous variant, in case <limits.h> declares $2.
       
 31179     For example, HP-UX 11i <limits.h> declares gettimeofday.  */
       
 31180  #define $2 innocuous_$2
       
 31181  
       
 31182 @@ -1938,32 +1884,215 @@ else
       
 31183    eval "$3=no"
       
 31184  fi
       
 31185  rm -f core conftest.err conftest.$ac_objext \
       
 31186      conftest$ac_exeext conftest.$ac_ext
       
 31187  fi
       
 31188  eval ac_res=\$$3
       
 31189  	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
       
 31190  $as_echo "$ac_res" >&6; }
       
 31191 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
       
 31192 +  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
       
 31193  
       
 31194  } # ac_fn_c_check_func
       
 31195  
       
 31196 +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
       
 31197 +# --------------------------------------------
       
 31198 +# Tries to find the compile-time value of EXPR in a program that includes
       
 31199 +# INCLUDES, setting VAR accordingly. Returns whether the value could be
       
 31200 +# computed
       
 31201 +ac_fn_c_compute_int ()
       
 31202 +{
       
 31203 +  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
       
 31204 +  if test "$cross_compiling" = yes; then
       
 31205 +    # Depending upon the size, compute the lo and hi bounds.
       
 31206 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31207 +/* end confdefs.h.  */
       
 31208 +$4
       
 31209 +int
       
 31210 +main ()
       
 31211 +{
       
 31212 +static int test_array [1 - 2 * !(($2) >= 0)];
       
 31213 +test_array [0] = 0;
       
 31214 +return test_array [0];
       
 31215 +
       
 31216 +  ;
       
 31217 +  return 0;
       
 31218 +}
       
 31219 +_ACEOF
       
 31220 +if ac_fn_c_try_compile "$LINENO"; then :
       
 31221 +  ac_lo=0 ac_mid=0
       
 31222 +  while :; do
       
 31223 +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31224 +/* end confdefs.h.  */
       
 31225 +$4
       
 31226 +int
       
 31227 +main ()
       
 31228 +{
       
 31229 +static int test_array [1 - 2 * !(($2) <= $ac_mid)];
       
 31230 +test_array [0] = 0;
       
 31231 +return test_array [0];
       
 31232 +
       
 31233 +  ;
       
 31234 +  return 0;
       
 31235 +}
       
 31236 +_ACEOF
       
 31237 +if ac_fn_c_try_compile "$LINENO"; then :
       
 31238 +  ac_hi=$ac_mid; break
       
 31239 +else
       
 31240 +  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
       
 31241 +			if test $ac_lo -le $ac_mid; then
       
 31242 +			  ac_lo= ac_hi=
       
 31243 +			  break
       
 31244 +			fi
       
 31245 +			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
       
 31246 +fi
       
 31247 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31248 +  done
       
 31249 +else
       
 31250 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31251 +/* end confdefs.h.  */
       
 31252 +$4
       
 31253 +int
       
 31254 +main ()
       
 31255 +{
       
 31256 +static int test_array [1 - 2 * !(($2) < 0)];
       
 31257 +test_array [0] = 0;
       
 31258 +return test_array [0];
       
 31259 +
       
 31260 +  ;
       
 31261 +  return 0;
       
 31262 +}
       
 31263 +_ACEOF
       
 31264 +if ac_fn_c_try_compile "$LINENO"; then :
       
 31265 +  ac_hi=-1 ac_mid=-1
       
 31266 +  while :; do
       
 31267 +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31268 +/* end confdefs.h.  */
       
 31269 +$4
       
 31270 +int
       
 31271 +main ()
       
 31272 +{
       
 31273 +static int test_array [1 - 2 * !(($2) >= $ac_mid)];
       
 31274 +test_array [0] = 0;
       
 31275 +return test_array [0];
       
 31276 +
       
 31277 +  ;
       
 31278 +  return 0;
       
 31279 +}
       
 31280 +_ACEOF
       
 31281 +if ac_fn_c_try_compile "$LINENO"; then :
       
 31282 +  ac_lo=$ac_mid; break
       
 31283 +else
       
 31284 +  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
       
 31285 +			if test $ac_mid -le $ac_hi; then
       
 31286 +			  ac_lo= ac_hi=
       
 31287 +			  break
       
 31288 +			fi
       
 31289 +			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
       
 31290 +fi
       
 31291 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31292 +  done
       
 31293 +else
       
 31294 +  ac_lo= ac_hi=
       
 31295 +fi
       
 31296 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31297 +fi
       
 31298 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31299 +# Binary search between lo and hi bounds.
       
 31300 +while test "x$ac_lo" != "x$ac_hi"; do
       
 31301 +  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
       
 31302 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31303 +/* end confdefs.h.  */
       
 31304 +$4
       
 31305 +int
       
 31306 +main ()
       
 31307 +{
       
 31308 +static int test_array [1 - 2 * !(($2) <= $ac_mid)];
       
 31309 +test_array [0] = 0;
       
 31310 +return test_array [0];
       
 31311 +
       
 31312 +  ;
       
 31313 +  return 0;
       
 31314 +}
       
 31315 +_ACEOF
       
 31316 +if ac_fn_c_try_compile "$LINENO"; then :
       
 31317 +  ac_hi=$ac_mid
       
 31318 +else
       
 31319 +  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
       
 31320 +fi
       
 31321 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31322 +done
       
 31323 +case $ac_lo in #((
       
 31324 +?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
       
 31325 +'') ac_retval=1 ;;
       
 31326 +esac
       
 31327 +  else
       
 31328 +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31329 +/* end confdefs.h.  */
       
 31330 +$4
       
 31331 +static long int longval () { return $2; }
       
 31332 +static unsigned long int ulongval () { return $2; }
       
 31333 +#include <stdio.h>
       
 31334 +#include <stdlib.h>
       
 31335 +int
       
 31336 +main ()
       
 31337 +{
       
 31338 +
       
 31339 +  FILE *f = fopen ("conftest.val", "w");
       
 31340 +  if (! f)
       
 31341 +    return 1;
       
 31342 +  if (($2) < 0)
       
 31343 +    {
       
 31344 +      long int i = longval ();
       
 31345 +      if (i != ($2))
       
 31346 +	return 1;
       
 31347 +      fprintf (f, "%ld", i);
       
 31348 +    }
       
 31349 +  else
       
 31350 +    {
       
 31351 +      unsigned long int i = ulongval ();
       
 31352 +      if (i != ($2))
       
 31353 +	return 1;
       
 31354 +      fprintf (f, "%lu", i);
       
 31355 +    }
       
 31356 +  /* Do not output a trailing newline, as this causes \r\n confusion
       
 31357 +     on some platforms.  */
       
 31358 +  return ferror (f) || fclose (f) != 0;
       
 31359 +
       
 31360 +  ;
       
 31361 +  return 0;
       
 31362 +}
       
 31363 +_ACEOF
       
 31364 +if ac_fn_c_try_run "$LINENO"; then :
       
 31365 +  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
       
 31366 +else
       
 31367 +  ac_retval=1
       
 31368 +fi
       
 31369 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
       
 31370 +  conftest.$ac_objext conftest.beam conftest.$ac_ext
       
 31371 +rm -f conftest.val
       
 31372 +
       
 31373 +  fi
       
 31374 +  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
       
 31375 +  as_fn_set_status $ac_retval
       
 31376 +
       
 31377 +} # ac_fn_c_compute_int
       
 31378 +
       
 31379  # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
       
 31380  # -------------------------------------------------------
       
 31381  # Tests whether HEADER exists, giving a warning if it cannot be compiled using
       
 31382  # the include files in INCLUDES and setting the cache variable VAR
       
 31383  # accordingly.
       
 31384  ac_fn_c_check_header_mongrel ()
       
 31385  {
       
 31386    as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
       
 31387 -  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
       
 31388 +  if eval \${$3+:} false; then :
       
 31389    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
       
 31390  $as_echo_n "checking for $2... " >&6; }
       
 31391 -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
       
 31392 +if eval \${$3+:} false; then :
       
 31393    $as_echo_n "(cached) " >&6
       
 31394  fi
       
 31395  eval ac_res=\$$3
       
 31396  	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
       
 31397  $as_echo "$ac_res" >&6; }
       
 31398  else
       
 31399    # Is the header compilable?
       
 31400  { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
       
 31401 @@ -1989,17 +2118,17 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
       
 31402  /* end confdefs.h.  */
       
 31403  #include <$2>
       
 31404  _ACEOF
       
 31405  if ac_fn_c_try_cpp "$LINENO"; then :
       
 31406    ac_header_preproc=yes
       
 31407  else
       
 31408    ac_header_preproc=no
       
 31409  fi
       
 31410 -rm -f conftest.err conftest.$ac_ext
       
 31411 +rm -f conftest.err conftest.i conftest.$ac_ext
       
 31412  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
       
 31413  $as_echo "$ac_header_preproc" >&6; }
       
 31414  
       
 31415  # So?  What about this header?
       
 31416  case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
       
 31417    yes:no: )
       
 31418      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
       
 31419  $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
       
 31420 @@ -2012,222 +2141,96 @@ case $ac_header_compiler:$ac_header_prep
       
 31421      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
       
 31422  $as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
       
 31423      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
       
 31424  $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
       
 31425      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
       
 31426  $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
       
 31427      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
       
 31428  $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
       
 31429 -( cat <<\_ASBOX
       
 31430 -## ------------------------------------------- ##
       
 31431 -## Report this to http://gcc.gnu.org/bugs.html ##
       
 31432 -## ------------------------------------------- ##
       
 31433 -_ASBOX
       
 31434 +( $as_echo "## ------------------------------------------------------ ##
       
 31435 +## Report this to http://github.com/atgreen/libffi/issues ##
       
 31436 +## ------------------------------------------------------ ##"
       
 31437       ) | sed "s/^/$as_me: WARNING:     /" >&2
       
 31438      ;;
       
 31439  esac
       
 31440    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
       
 31441  $as_echo_n "checking for $2... " >&6; }
       
 31442 -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
       
 31443 +if eval \${$3+:} false; then :
       
 31444    $as_echo_n "(cached) " >&6
       
 31445  else
       
 31446    eval "$3=\$ac_header_compiler"
       
 31447  fi
       
 31448  eval ac_res=\$$3
       
 31449  	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
       
 31450  $as_echo "$ac_res" >&6; }
       
 31451  fi
       
 31452 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
       
 31453 +  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
       
 31454  
       
 31455  } # ac_fn_c_check_header_mongrel
       
 31456  
       
 31457 -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
       
 31458 -# --------------------------------------------
       
 31459 -# Tries to find the compile-time value of EXPR in a program that includes
       
 31460 -# INCLUDES, setting VAR accordingly. Returns whether the value could be
       
 31461 -# computed
       
 31462 -ac_fn_c_compute_int ()
       
 31463 +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
       
 31464 +# -------------------------------------------
       
 31465 +# Tests whether TYPE exists after having included INCLUDES, setting cache
       
 31466 +# variable VAR accordingly.
       
 31467 +ac_fn_c_check_type ()
       
 31468  {
       
 31469    as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
       
 31470 -  if test "$cross_compiling" = yes; then
       
 31471 -    # Depending upon the size, compute the lo and hi bounds.
       
 31472 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31473 +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
       
 31474 +$as_echo_n "checking for $2... " >&6; }
       
 31475 +if eval \${$3+:} false; then :
       
 31476 +  $as_echo_n "(cached) " >&6
       
 31477 +else
       
 31478 +  eval "$3=no"
       
 31479 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31480  /* end confdefs.h.  */
       
 31481  $4
       
 31482  int
       
 31483  main ()
       
 31484  {
       
 31485 -static int test_array [1 - 2 * !(($2) >= 0)];
       
 31486 -test_array [0] = 0
       
 31487 -
       
 31488 +if (sizeof ($2))
       
 31489 +	 return 0;
       
 31490    ;
       
 31491    return 0;
       
 31492  }
       
 31493  _ACEOF
       
 31494  if ac_fn_c_try_compile "$LINENO"; then :
       
 31495 -  ac_lo=0 ac_mid=0
       
 31496 -  while :; do
       
 31497 -    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31498 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31499  /* end confdefs.h.  */
       
 31500  $4
       
 31501  int
       
 31502  main ()
       
 31503  {
       
 31504 -static int test_array [1 - 2 * !(($2) <= $ac_mid)];
       
 31505 -test_array [0] = 0
       
 31506 -
       
 31507 +if (sizeof (($2)))
       
 31508 +	    return 0;
       
 31509    ;
       
 31510    return 0;
       
 31511  }
       
 31512  _ACEOF
       
 31513  if ac_fn_c_try_compile "$LINENO"; then :
       
 31514 -  ac_hi=$ac_mid; break
       
 31515 -else
       
 31516 -  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
       
 31517 -			if test $ac_lo -le $ac_mid; then
       
 31518 -			  ac_lo= ac_hi=
       
 31519 -			  break
       
 31520 -			fi
       
 31521 -			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
       
 31522 +
       
 31523 +else
       
 31524 +  eval "$3=yes"
       
 31525  fi
       
 31526  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31527 -  done
       
 31528 -else
       
 31529 -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31530 -/* end confdefs.h.  */
       
 31531 -$4
       
 31532 -int
       
 31533 -main ()
       
 31534 -{
       
 31535 -static int test_array [1 - 2 * !(($2) < 0)];
       
 31536 -test_array [0] = 0
       
 31537 -
       
 31538 -  ;
       
 31539 -  return 0;
       
 31540 -}
       
 31541 -_ACEOF
       
 31542 -if ac_fn_c_try_compile "$LINENO"; then :
       
 31543 -  ac_hi=-1 ac_mid=-1
       
 31544 -  while :; do
       
 31545 -    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31546 -/* end confdefs.h.  */
       
 31547 -$4
       
 31548 -int
       
 31549 -main ()
       
 31550 -{
       
 31551 -static int test_array [1 - 2 * !(($2) >= $ac_mid)];
       
 31552 -test_array [0] = 0
       
 31553 -
       
 31554 -  ;
       
 31555 -  return 0;
       
 31556 -}
       
 31557 -_ACEOF
       
 31558 -if ac_fn_c_try_compile "$LINENO"; then :
       
 31559 -  ac_lo=$ac_mid; break
       
 31560 -else
       
 31561 -  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
       
 31562 -			if test $ac_mid -le $ac_hi; then
       
 31563 -			  ac_lo= ac_hi=
       
 31564 -			  break
       
 31565 -			fi
       
 31566 -			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
       
 31567  fi
       
 31568  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31569 -  done
       
 31570 -else
       
 31571 -  ac_lo= ac_hi=
       
 31572 -fi
       
 31573 -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31574 -fi
       
 31575 -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31576 -# Binary search between lo and hi bounds.
       
 31577 -while test "x$ac_lo" != "x$ac_hi"; do
       
 31578 -  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
       
 31579 -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31580 -/* end confdefs.h.  */
       
 31581 -$4
       
 31582 -int
       
 31583 -main ()
       
 31584 -{
       
 31585 -static int test_array [1 - 2 * !(($2) <= $ac_mid)];
       
 31586 -test_array [0] = 0
       
 31587 -
       
 31588 -  ;
       
 31589 -  return 0;
       
 31590 -}
       
 31591 -_ACEOF
       
 31592 -if ac_fn_c_try_compile "$LINENO"; then :
       
 31593 -  ac_hi=$ac_mid
       
 31594 -else
       
 31595 -  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
       
 31596 -fi
       
 31597 -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 31598 -done
       
 31599 -case $ac_lo in #((
       
 31600 -?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
       
 31601 -'') ac_retval=1 ;;
       
 31602 -esac
       
 31603 -  else
       
 31604 -    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 31605 -/* end confdefs.h.  */
       
 31606 -$4
       
 31607 -static long int longval () { return $2; }
       
 31608 -static unsigned long int ulongval () { return $2; }
       
 31609 -#include <stdio.h>
       
 31610 -#include <stdlib.h>
       
 31611 -int
       
 31612 -main ()
       
 31613 -{
       
 31614 -
       
 31615 -  FILE *f = fopen ("conftest.val", "w");
       
 31616 -  if (! f)
       
 31617 -    return 1;
       
 31618 -  if (($2) < 0)
       
 31619 -    {
       
 31620 -      long int i = longval ();
       
 31621 -      if (i != ($2))
       
 31622 -	return 1;
       
 31623 -      fprintf (f, "%ld", i);
       
 31624 -    }
       
 31625 -  else
       
 31626 -    {
       
 31627 -      unsigned long int i = ulongval ();
       
 31628 -      if (i != ($2))
       
 31629 -	return 1;
       
 31630 -      fprintf (f, "%lu", i);
       
 31631 -    }
       
 31632 -  /* Do not output a trailing newline, as this causes \r\n confusion
       
 31633 -     on some platforms.  */
       
 31634 -  return ferror (f) || fclose (f) != 0;
       
 31635 -
       
 31636 -  ;
       
 31637 -  return 0;
       
 31638 -}
       
 31639 -_ACEOF
       
 31640 -if ac_fn_c_try_run "$LINENO"; then :
       
 31641 -  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
       
 31642 -else
       
 31643 -  ac_retval=1
       
 31644 -fi
       
 31645 -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
       
 31646 -  conftest.$ac_objext conftest.beam conftest.$ac_ext
       
 31647 -rm -f conftest.val
       
 31648 -
       
 31649 -  fi
       
 31650 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
       
 31651 -  as_fn_set_status $ac_retval
       
 31652 -
       
 31653 -} # ac_fn_c_compute_int
       
 31654 +fi
       
 31655 +eval ac_res=\$$3
       
 31656 +	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
       
 31657 +$as_echo "$ac_res" >&6; }
       
 31658 +  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
       
 31659 +
       
 31660 +} # ac_fn_c_check_type
       
 31661  cat >config.log <<_ACEOF
       
 31662  This file contains any messages produced by compilers while
       
 31663  running configure, to aid debugging if configure makes a mistake.
       
 31664  
       
 31665 -It was created by libffi $as_me 3.0.10rc0, which was
       
 31666 -generated by GNU Autoconf 2.65.  Invocation command line was
       
 31667 +It was created by libffi $as_me 3.1-rc1, which was
       
 31668 +generated by GNU Autoconf 2.69.  Invocation command line was
       
 31669  
       
 31670    $ $0 $@
       
 31671  
       
 31672  _ACEOF
       
 31673  exec 5>>config.log
       
 31674  {
       
 31675  cat <<_ASUNAME
       
 31676  ## --------- ##
       
 31677 @@ -2327,21 +2330,19 @@ done
       
 31678  # would cause problems or look ugly.
       
 31679  # WARNING: Use '\'' to represent an apostrophe within the trap.
       
 31680  # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
       
 31681  trap 'exit_status=$?
       
 31682    # Save into config.log some information that might help in debugging.
       
 31683    {
       
 31684      echo
       
 31685  
       
 31686 -    cat <<\_ASBOX
       
 31687 -## ---------------- ##
       
 31688 +    $as_echo "## ---------------- ##
       
 31689  ## Cache variables. ##
       
 31690 -## ---------------- ##
       
 31691 -_ASBOX
       
 31692 +## ---------------- ##"
       
 31693      echo
       
 31694      # The following way of writing the cache mishandles newlines in values,
       
 31695  (
       
 31696    for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
       
 31697      eval ac_val=\$$ac_var
       
 31698      case $ac_val in #(
       
 31699      *${as_nl}*)
       
 31700        case $ac_var in #(
       
 31701 @@ -2365,56 +2366,50 @@ trap 'exit_status=$?
       
 31702      *)
       
 31703        sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
       
 31704        ;;
       
 31705      esac |
       
 31706      sort
       
 31707  )
       
 31708      echo
       
 31709  
       
 31710 -    cat <<\_ASBOX
       
 31711 -## ----------------- ##
       
 31712 +    $as_echo "## ----------------- ##
       
 31713  ## Output variables. ##
       
 31714 -## ----------------- ##
       
 31715 -_ASBOX
       
 31716 +## ----------------- ##"
       
 31717      echo
       
 31718      for ac_var in $ac_subst_vars
       
 31719      do
       
 31720        eval ac_val=\$$ac_var
       
 31721        case $ac_val in
       
 31722        *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       
 31723        esac
       
 31724        $as_echo "$ac_var='\''$ac_val'\''"
       
 31725      done | sort
       
 31726      echo
       
 31727  
       
 31728      if test -n "$ac_subst_files"; then
       
 31729 -      cat <<\_ASBOX
       
 31730 -## ------------------- ##
       
 31731 +      $as_echo "## ------------------- ##
       
 31732  ## File substitutions. ##
       
 31733 -## ------------------- ##
       
 31734 -_ASBOX
       
 31735 +## ------------------- ##"
       
 31736        echo
       
 31737        for ac_var in $ac_subst_files
       
 31738        do
       
 31739  	eval ac_val=\$$ac_var
       
 31740  	case $ac_val in
       
 31741  	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       
 31742  	esac
       
 31743  	$as_echo "$ac_var='\''$ac_val'\''"
       
 31744        done | sort
       
 31745        echo
       
 31746      fi
       
 31747  
       
 31748      if test -s confdefs.h; then
       
 31749 -      cat <<\_ASBOX
       
 31750 -## ----------- ##
       
 31751 +      $as_echo "## ----------- ##
       
 31752  ## confdefs.h. ##
       
 31753 -## ----------- ##
       
 31754 -_ASBOX
       
 31755 +## ----------- ##"
       
 31756        echo
       
 31757        cat confdefs.h
       
 31758        echo
       
 31759      fi
       
 31760      test "$ac_signal" != 0 &&
       
 31761        $as_echo "$as_me: caught signal $ac_signal"
       
 31762      $as_echo "$as_me: exit $exit_status"
       
 31763    } >&5
       
 31764 @@ -2459,32 +2454,41 @@ cat >>confdefs.h <<_ACEOF
       
 31765  _ACEOF
       
 31766  
       
 31767  
       
 31768  # Let the site file select an alternate cache file if it wants to.
       
 31769  # Prefer an explicitly selected file to automatically selected ones.
       
 31770  ac_site_file1=NONE
       
 31771  ac_site_file2=NONE
       
 31772  if test -n "$CONFIG_SITE"; then
       
 31773 -  ac_site_file1=$CONFIG_SITE
       
 31774 +  # We do not want a PATH search for config.site.
       
 31775 +  case $CONFIG_SITE in #((
       
 31776 +    -*)  ac_site_file1=./$CONFIG_SITE;;
       
 31777 +    */*) ac_site_file1=$CONFIG_SITE;;
       
 31778 +    *)   ac_site_file1=./$CONFIG_SITE;;
       
 31779 +  esac
       
 31780  elif test "x$prefix" != xNONE; then
       
 31781    ac_site_file1=$prefix/share/config.site
       
 31782    ac_site_file2=$prefix/etc/config.site
       
 31783  else
       
 31784    ac_site_file1=$ac_default_prefix/share/config.site
       
 31785    ac_site_file2=$ac_default_prefix/etc/config.site
       
 31786  fi
       
 31787  for ac_site_file in "$ac_site_file1" "$ac_site_file2"
       
 31788  do
       
 31789    test "x$ac_site_file" = xNONE && continue
       
 31790    if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
       
 31791      { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
       
 31792  $as_echo "$as_me: loading site script $ac_site_file" >&6;}
       
 31793      sed 's/^/| /' "$ac_site_file" >&5
       
 31794 -    . "$ac_site_file"
       
 31795 +    . "$ac_site_file" \
       
 31796 +      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 31797 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 31798 +as_fn_error $? "failed to load site script $ac_site_file
       
 31799 +See \`config.log' for more details" "$LINENO" 5; }
       
 31800    fi
       
 31801  done
       
 31802  
       
 31803  if test -r "$cache_file"; then
       
 31804    # Some versions of bash will fail to source /dev/null (special files
       
 31805    # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
       
 31806    if test /dev/null != "$cache_file" && test -f "$cache_file"; then
       
 31807      { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
       
 31808 @@ -2550,17 +2554,17 @@ for ac_var in $ac_precious_vars; do
       
 31809      esac
       
 31810    fi
       
 31811  done
       
 31812  if $ac_cache_corrupted; then
       
 31813    { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 31814  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 31815    { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
       
 31816  $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
       
 31817 -  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
       
 31818 +  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
       
 31819  fi
       
 31820  ## -------------------- ##
       
 31821  ## Main body of script. ##
       
 31822  ## -------------------- ##
       
 31823  
       
 31824  ac_ext=c
       
 31825  ac_cpp='$CPP $CPPFLAGS'
       
 31826  ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 31827 @@ -2568,60 +2572,66 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
       
 31828  ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 31829  
       
 31830  
       
 31831  ac_config_headers="$ac_config_headers fficonfig.h"
       
 31832  
       
 31833  
       
 31834  ac_aux_dir=
       
 31835  for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
       
 31836 -  for ac_t in install-sh install.sh shtool; do
       
 31837 -    if test -f "$ac_dir/$ac_t"; then
       
 31838 -      ac_aux_dir=$ac_dir
       
 31839 -      ac_install_sh="$ac_aux_dir/$ac_t -c"
       
 31840 -      break 2
       
 31841 -    fi
       
 31842 -  done
       
 31843 +  if test -f "$ac_dir/install-sh"; then
       
 31844 +    ac_aux_dir=$ac_dir
       
 31845 +    ac_install_sh="$ac_aux_dir/install-sh -c"
       
 31846 +    break
       
 31847 +  elif test -f "$ac_dir/install.sh"; then
       
 31848 +    ac_aux_dir=$ac_dir
       
 31849 +    ac_install_sh="$ac_aux_dir/install.sh -c"
       
 31850 +    break
       
 31851 +  elif test -f "$ac_dir/shtool"; then
       
 31852 +    ac_aux_dir=$ac_dir
       
 31853 +    ac_install_sh="$ac_aux_dir/shtool install -c"
       
 31854 +    break
       
 31855 +  fi
       
 31856  done
       
 31857  if test -z "$ac_aux_dir"; then
       
 31858 -  as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
       
 31859 +  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
       
 31860  fi
       
 31861  
       
 31862  # These three variables are undocumented and unsupported,
       
 31863  # and are intended to be withdrawn in a future Autoconf release.
       
 31864  # They can cause serious problems if a builder's source tree is in a directory
       
 31865  # whose full name contains unusual characters.
       
 31866  ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
       
 31867  ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
       
 31868  ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
       
 31869  
       
 31870  
       
 31871  # Make sure we can run config.sub.
       
 31872  $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
       
 31873 -  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
       
 31874 +  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
       
 31875  
       
 31876  { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
       
 31877  $as_echo_n "checking build system type... " >&6; }
       
 31878 -if test "${ac_cv_build+set}" = set; then :
       
 31879 +if ${ac_cv_build+:} false; then :
       
 31880    $as_echo_n "(cached) " >&6
       
 31881  else
       
 31882    ac_build_alias=$build_alias
       
 31883  test "x$ac_build_alias" = x &&
       
 31884    ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
       
 31885  test "x$ac_build_alias" = x &&
       
 31886 -  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
       
 31887 +  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
       
 31888  ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
       
 31889 -  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
       
 31890 +  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
       
 31891  
       
 31892  fi
       
 31893  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
       
 31894  $as_echo "$ac_cv_build" >&6; }
       
 31895  case $ac_cv_build in
       
 31896  *-*-*) ;;
       
 31897 -*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
       
 31898 +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
       
 31899  esac
       
 31900  build=$ac_cv_build
       
 31901  ac_save_IFS=$IFS; IFS='-'
       
 31902  set x $ac_cv_build
       
 31903  shift
       
 31904  build_cpu=$1
       
 31905  build_vendor=$2
       
 31906  shift; shift
       
 31907 @@ -2629,32 +2639,32 @@ shift; shift
       
 31908  # except with old shells:
       
 31909  build_os=$*
       
 31910  IFS=$ac_save_IFS
       
 31911  case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
       
 31912  
       
 31913  
       
 31914  { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
       
 31915  $as_echo_n "checking host system type... " >&6; }
       
 31916 -if test "${ac_cv_host+set}" = set; then :
       
 31917 +if ${ac_cv_host+:} false; then :
       
 31918    $as_echo_n "(cached) " >&6
       
 31919  else
       
 31920    if test "x$host_alias" = x; then
       
 31921    ac_cv_host=$ac_cv_build
       
 31922  else
       
 31923    ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
       
 31924 -    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
       
 31925 +    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
       
 31926  fi
       
 31927  
       
 31928  fi
       
 31929  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
       
 31930  $as_echo "$ac_cv_host" >&6; }
       
 31931  case $ac_cv_host in
       
 31932  *-*-*) ;;
       
 31933 -*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
       
 31934 +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
       
 31935  esac
       
 31936  host=$ac_cv_host
       
 31937  ac_save_IFS=$IFS; IFS='-'
       
 31938  set x $ac_cv_host
       
 31939  shift
       
 31940  host_cpu=$1
       
 31941  host_vendor=$2
       
 31942  shift; shift
       
 31943 @@ -2662,32 +2672,32 @@ shift; shift
       
 31944  # except with old shells:
       
 31945  host_os=$*
       
 31946  IFS=$ac_save_IFS
       
 31947  case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
       
 31948  
       
 31949  
       
 31950  { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
       
 31951  $as_echo_n "checking target system type... " >&6; }
       
 31952 -if test "${ac_cv_target+set}" = set; then :
       
 31953 +if ${ac_cv_target+:} false; then :
       
 31954    $as_echo_n "(cached) " >&6
       
 31955  else
       
 31956    if test "x$target_alias" = x; then
       
 31957    ac_cv_target=$ac_cv_host
       
 31958  else
       
 31959    ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
       
 31960 -    as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
       
 31961 +    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
       
 31962  fi
       
 31963  
       
 31964  fi
       
 31965  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
       
 31966  $as_echo "$ac_cv_target" >&6; }
       
 31967  case $ac_cv_target in
       
 31968  *-*-*) ;;
       
 31969 -*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
       
 31970 +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
       
 31971  esac
       
 31972  target=$ac_cv_target
       
 31973  ac_save_IFS=$IFS; IFS='-'
       
 31974  set x $ac_cv_target
       
 31975  shift
       
 31976  target_cpu=$1
       
 31977  target_vendor=$2
       
 31978  shift; shift
       
 31979 @@ -2702,19 +2712,127 @@ case $target_os in *\ *) target_os=`echo
       
 31980  # will get canonicalized.
       
 31981  test -n "$target_alias" &&
       
 31982    test "$program_prefix$program_suffix$program_transform_name" = \
       
 31983      NONENONEs,x,x, &&
       
 31984    program_prefix=${target_alias}-
       
 31985  
       
 31986  target_alias=${target_alias-$host_alias}
       
 31987  
       
 31988 -. ${srcdir}/configure.host
       
 31989 -
       
 31990 -am__api_version='1.11'
       
 31991 +case "${host}" in
       
 31992 +  frv*-elf)
       
 31993 +    LDFLAGS=`echo $LDFLAGS | sed "s/\-B^ *libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
       
 31994 +    ;;
       
 31995 +esac
       
 31996 +
       
 31997 +
       
 31998 +   # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args
       
 31999 +   if test "${ac_configure_args+set}" != "set" ; then
       
 32000 +      ac_configure_args=
       
 32001 +      for ac_arg in ${1+"$@"}; do
       
 32002 +         ac_configure_args="$ac_configure_args '$ac_arg'"
       
 32003 +      done
       
 32004 +   fi
       
 32005 +
       
 32006 +# expand $ac_aux_dir to an absolute path
       
 32007 +am_aux_dir=`cd $ac_aux_dir && pwd`
       
 32008 +
       
 32009 +
       
 32010 +ax_enable_builddir="."
       
 32011 +# Check whether --enable-builddir was given.
       
 32012 +if test "${enable_builddir+set}" = set; then :
       
 32013 +  enableval=$enable_builddir; ax_enable_builddir="$enableval"
       
 32014 +else
       
 32015 +  ax_enable_builddir="auto"
       
 32016 +fi
       
 32017 +
       
 32018 +if test ".$ac_srcdir_defaulted" != ".no" ; then
       
 32019 +if test ".$srcdir" = ".." ; then
       
 32020 +  if test -f config.status ; then
       
 32021 +    { $as_echo "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5
       
 32022 +$as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;}
       
 32023 +  else
       
 32024 +    test ".$ax_enable_builddir" = "."  && ax_enable_builddir="."
       
 32025 +    test ".$ax_enable_builddir" = ".no"  && ax_enable_builddir="."
       
 32026 +    test ".$TARGET" = "." && TARGET="$target"
       
 32027 +    test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="$TARGET"
       
 32028 +    if test ".$ax_enable_builddir" != ".." ; then    # we know where to go and
       
 32029 +      as_dir=$ax_enable_builddir; as_fn_mkdir_p
       
 32030 +      echo __.$ax_enable_builddir.__ > $ax_enable_builddir/conftest.tmp
       
 32031 +      cd $ax_enable_builddir
       
 32032 +      if grep __.$ax_enable_builddir.__ conftest.tmp >/dev/null 2>/dev/null ; then
       
 32033 +        rm conftest.tmp
       
 32034 +        { $as_echo "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5
       
 32035 +$as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; }
       
 32036 +      else
       
 32037 +        as_fn_error $? "could not change to default builddir \"./$ax_enable_builddir\"" "$LINENO" 5
       
 32038 +      fi
       
 32039 +      srcdir=`echo "$ax_enable_builddir" |
       
 32040 +              sed -e 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g;s,[/]$,,;'`
       
 32041 +      # going to restart from subdirectory location
       
 32042 +      test -f $srcdir/config.log   && mv $srcdir/config.log   .
       
 32043 +      test -f $srcdir/confdefs.h   && mv $srcdir/confdefs.h   .
       
 32044 +      test -f $srcdir/conftest.log && mv $srcdir/conftest.log .
       
 32045 +      test -f $srcdir/$cache_file  && mv $srcdir/$cache_file  .
       
 32046 +      { $as_echo "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5
       
 32047 +$as_echo "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; }
       
 32048 +      case "$0" in # restart
       
 32049 +       /\\*) eval $SHELL "'$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
       
 32050 +       *) eval $SHELL "'$srcdir/$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
       
 32051 +      esac ; exit $?
       
 32052 +    fi
       
 32053 +  fi
       
 32054 +fi fi
       
 32055 +test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="."
       
 32056 +# Extract the first word of "gsed sed", so it can be a program name with args.
       
 32057 +set dummy gsed sed; ac_word=$2
       
 32058 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32059 +$as_echo_n "checking for $ac_word... " >&6; }
       
 32060 +if ${ac_cv_path_ax_enable_builddir_sed+:} false; then :
       
 32061 +  $as_echo_n "(cached) " >&6
       
 32062 +else
       
 32063 +  case $ax_enable_builddir_sed in
       
 32064 +  [\\/]* | ?:[\\/]*)
       
 32065 +  ac_cv_path_ax_enable_builddir_sed="$ax_enable_builddir_sed" # Let the user override the test with a path.
       
 32066 +  ;;
       
 32067 +  *)
       
 32068 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32069 +for as_dir in $PATH
       
 32070 +do
       
 32071 +  IFS=$as_save_IFS
       
 32072 +  test -z "$as_dir" && as_dir=.
       
 32073 +    for ac_exec_ext in '' $ac_executable_extensions; do
       
 32074 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32075 +    ac_cv_path_ax_enable_builddir_sed="$as_dir/$ac_word$ac_exec_ext"
       
 32076 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32077 +    break 2
       
 32078 +  fi
       
 32079 +done
       
 32080 +  done
       
 32081 +IFS=$as_save_IFS
       
 32082 +
       
 32083 +  test -z "$ac_cv_path_ax_enable_builddir_sed" && ac_cv_path_ax_enable_builddir_sed="sed"
       
 32084 +  ;;
       
 32085 +esac
       
 32086 +fi
       
 32087 +ax_enable_builddir_sed=$ac_cv_path_ax_enable_builddir_sed
       
 32088 +if test -n "$ax_enable_builddir_sed"; then
       
 32089 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5
       
 32090 +$as_echo "$ax_enable_builddir_sed" >&6; }
       
 32091 +else
       
 32092 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 32093 +$as_echo "no" >&6; }
       
 32094 +fi
       
 32095 +
       
 32096 +
       
 32097 +ax_enable_builddir_auxdir="$am_aux_dir"
       
 32098 +ac_config_commands="$ac_config_commands buildir"
       
 32099 +
       
 32100 +
       
 32101 +am__api_version='1.13'
       
 32102  
       
 32103  # Find a good install program.  We prefer a C program (faster),
       
 32104  # so one script is as good as another.  But avoid the broken or
       
 32105  # incompatible versions:
       
 32106  # SysV /etc/install, /usr/sbin/install
       
 32107  # SunOS /usr/etc/install
       
 32108  # IRIX /sbin/install
       
 32109  # AIX /bin/install
       
 32110 @@ -2723,17 +2841,17 @@ am__api_version='1.11'
       
 32111  # AFS /usr/afsws/bin/install, which mishandles nonexistent args
       
 32112  # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
       
 32113  # OS/2's system install, which has a completely different semantic
       
 32114  # ./install, which can be erroneously created by make from ./install.sh.
       
 32115  # Reject install programs that cannot install multiple files.
       
 32116  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
       
 32117  $as_echo_n "checking for a BSD-compatible install... " >&6; }
       
 32118  if test -z "$INSTALL"; then
       
 32119 -if test "${ac_cv_path_install+set}" = set; then :
       
 32120 +if ${ac_cv_path_install+:} false; then :
       
 32121    $as_echo_n "(cached) " >&6
       
 32122  else
       
 32123    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32124  for as_dir in $PATH
       
 32125  do
       
 32126    IFS=$as_save_IFS
       
 32127    test -z "$as_dir" && as_dir=.
       
 32128      # Account for people who put trailing slashes in PATH elements.
       
 32129 @@ -2743,17 +2861,17 @@ case $as_dir/ in #((
       
 32130    ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
       
 32131    /usr/ucb/* ) ;;
       
 32132    *)
       
 32133      # OSF1 and SCO ODT 3.0 have their own names for install.
       
 32134      # Don't use installbsd from OSF since it installs stuff as root
       
 32135      # by default.
       
 32136      for ac_prog in ginstall scoinst install; do
       
 32137        for ac_exec_ext in '' $ac_executable_extensions; do
       
 32138 -	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
       
 32139 +	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
       
 32140  	  if test $ac_prog = install &&
       
 32141  	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
       
 32142  	    # AIX install.  It has an incompatible calling convention.
       
 32143  	    :
       
 32144  	  elif test $ac_prog = install &&
       
 32145  	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
       
 32146  	    # program-specific install script used by HP pwplus--don't use.
       
 32147  	    :
       
 32148 @@ -2801,128 +2919,140 @@ fi
       
 32149  test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
       
 32150  
       
 32151  test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
       
 32152  
       
 32153  test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
       
 32154  
       
 32155  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
       
 32156  $as_echo_n "checking whether build environment is sane... " >&6; }
       
 32157 -# Just in case
       
 32158 -sleep 1
       
 32159 -echo timestamp > conftest.file
       
 32160  # Reject unsafe characters in $srcdir or the absolute working directory
       
 32161  # name.  Accept space and tab only in the latter.
       
 32162  am_lf='
       
 32163  '
       
 32164  case `pwd` in
       
 32165    *[\\\"\#\$\&\'\`$am_lf]*)
       
 32166 -    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
       
 32167 +    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
       
 32168  esac
       
 32169  case $srcdir in
       
 32170    *[\\\"\#\$\&\'\`$am_lf\ \	]*)
       
 32171 -    as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
       
 32172 -esac
       
 32173 -
       
 32174 -# Do `set' in a subshell so we don't clobber the current shell's
       
 32175 +    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
       
 32176 +esac
       
 32177 +
       
 32178 +# Do 'set' in a subshell so we don't clobber the current shell's
       
 32179  # arguments.  Must try -L first in case configure is actually a
       
 32180  # symlink; some systems play weird games with the mod time of symlinks
       
 32181  # (eg FreeBSD returns the mod time of the symlink's containing
       
 32182  # directory).
       
 32183  if (
       
 32184 -   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
       
 32185 -   if test "$*" = "X"; then
       
 32186 -      # -L didn't work.
       
 32187 -      set X `ls -t "$srcdir/configure" conftest.file`
       
 32188 -   fi
       
 32189 -   rm -f conftest.file
       
 32190 -   if test "$*" != "X $srcdir/configure conftest.file" \
       
 32191 -      && test "$*" != "X conftest.file $srcdir/configure"; then
       
 32192 -
       
 32193 -      # If neither matched, then we have a broken ls.  This can happen
       
 32194 -      # if, for instance, CONFIG_SHELL is bash and it inherits a
       
 32195 -      # broken ls alias from the environment.  This has actually
       
 32196 -      # happened.  Such a system could not be considered "sane".
       
 32197 -      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
       
 32198 -alias in your environment" "$LINENO" 5
       
 32199 -   fi
       
 32200 -
       
 32201 +   am_has_slept=no
       
 32202 +   for am_try in 1 2; do
       
 32203 +     echo "timestamp, slept: $am_has_slept" > conftest.file
       
 32204 +     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
       
 32205 +     if test "$*" = "X"; then
       
 32206 +	# -L didn't work.
       
 32207 +	set X `ls -t "$srcdir/configure" conftest.file`
       
 32208 +     fi
       
 32209 +     if test "$*" != "X $srcdir/configure conftest.file" \
       
 32210 +	&& test "$*" != "X conftest.file $srcdir/configure"; then
       
 32211 +
       
 32212 +	# If neither matched, then we have a broken ls.  This can happen
       
 32213 +	# if, for instance, CONFIG_SHELL is bash and it inherits a
       
 32214 +	# broken ls alias from the environment.  This has actually
       
 32215 +	# happened.  Such a system could not be considered "sane".
       
 32216 +	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
       
 32217 +  alias in your environment" "$LINENO" 5
       
 32218 +     fi
       
 32219 +     if test "$2" = conftest.file || test $am_try -eq 2; then
       
 32220 +       break
       
 32221 +     fi
       
 32222 +     # Just in case.
       
 32223 +     sleep 1
       
 32224 +     am_has_slept=yes
       
 32225 +   done
       
 32226     test "$2" = conftest.file
       
 32227     )
       
 32228  then
       
 32229     # Ok.
       
 32230     :
       
 32231  else
       
 32232 -   as_fn_error "newly created file is older than distributed files!
       
 32233 +   as_fn_error $? "newly created file is older than distributed files!
       
 32234  Check your system clock" "$LINENO" 5
       
 32235  fi
       
 32236  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
       
 32237  $as_echo "yes" >&6; }
       
 32238 +# If we didn't sleep, we still need to ensure time stamps of config.status and
       
 32239 +# generated files are strictly newer.
       
 32240 +am_sleep_pid=
       
 32241 +if grep 'slept: no' conftest.file >/dev/null 2>&1; then
       
 32242 +  ( sleep 1 ) &
       
 32243 +  am_sleep_pid=$!
       
 32244 +fi
       
 32245 +
       
 32246 +rm -f conftest.file
       
 32247 +
       
 32248  test "$program_prefix" != NONE &&
       
 32249    program_transform_name="s&^&$program_prefix&;$program_transform_name"
       
 32250  # Use a double $ so make ignores it.
       
 32251  test "$program_suffix" != NONE &&
       
 32252    program_transform_name="s&\$&$program_suffix&;$program_transform_name"
       
 32253  # Double any \ or $.
       
 32254  # By default was `s,x,x', remove it if useless.
       
 32255  ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
       
 32256  program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
       
 32257  
       
 32258 -# expand $ac_aux_dir to an absolute path
       
 32259 -am_aux_dir=`cd $ac_aux_dir && pwd`
       
 32260 -
       
 32261  if test x"${MISSING+set}" != xset; then
       
 32262    case $am_aux_dir in
       
 32263    *\ * | *\	*)
       
 32264      MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
       
 32265    *)
       
 32266      MISSING="\${SHELL} $am_aux_dir/missing" ;;
       
 32267    esac
       
 32268  fi
       
 32269  # Use eval to expand $SHELL
       
 32270 -if eval "$MISSING --run true"; then
       
 32271 -  am_missing_run="$MISSING --run "
       
 32272 +if eval "$MISSING --is-lightweight"; then
       
 32273 +  am_missing_run="$MISSING "
       
 32274  else
       
 32275    am_missing_run=
       
 32276 -  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
       
 32277 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
       
 32278 +  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
       
 32279 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
       
 32280  fi
       
 32281  
       
 32282  if test x"${install_sh}" != xset; then
       
 32283    case $am_aux_dir in
       
 32284    *\ * | *\	*)
       
 32285      install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
       
 32286    *)
       
 32287      install_sh="\${SHELL} $am_aux_dir/install-sh"
       
 32288    esac
       
 32289  fi
       
 32290  
       
 32291 -# Installed binaries are usually stripped using `strip' when the user
       
 32292 -# run `make install-strip'.  However `strip' might not be the right
       
 32293 +# Installed binaries are usually stripped using 'strip' when the user
       
 32294 +# run "make install-strip".  However 'strip' might not be the right
       
 32295  # tool to use in cross-compilation environments, therefore Automake
       
 32296 -# will honor the `STRIP' environment variable to overrule this program.
       
 32297 +# will honor the 'STRIP' environment variable to overrule this program.
       
 32298  if test "$cross_compiling" != no; then
       
 32299    if test -n "$ac_tool_prefix"; then
       
 32300    # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
       
 32301  set dummy ${ac_tool_prefix}strip; ac_word=$2
       
 32302  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32303  $as_echo_n "checking for $ac_word... " >&6; }
       
 32304 -if test "${ac_cv_prog_STRIP+set}" = set; then :
       
 32305 +if ${ac_cv_prog_STRIP+:} false; then :
       
 32306    $as_echo_n "(cached) " >&6
       
 32307  else
       
 32308    if test -n "$STRIP"; then
       
 32309    ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
       
 32310  else
       
 32311  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32312  for as_dir in $PATH
       
 32313  do
       
 32314    IFS=$as_save_IFS
       
 32315    test -z "$as_dir" && as_dir=.
       
 32316      for ac_exec_ext in '' $ac_executable_extensions; do
       
 32317 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 32318 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32319      ac_cv_prog_STRIP="${ac_tool_prefix}strip"
       
 32320      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32321      break 2
       
 32322    fi
       
 32323  done
       
 32324    done
       
 32325  IFS=$as_save_IFS
       
 32326  
       
 32327 @@ -2940,29 +3070,29 @@ fi
       
 32328  
       
 32329  fi
       
 32330  if test -z "$ac_cv_prog_STRIP"; then
       
 32331    ac_ct_STRIP=$STRIP
       
 32332    # Extract the first word of "strip", so it can be a program name with args.
       
 32333  set dummy strip; ac_word=$2
       
 32334  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32335  $as_echo_n "checking for $ac_word... " >&6; }
       
 32336 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
       
 32337 +if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
       
 32338    $as_echo_n "(cached) " >&6
       
 32339  else
       
 32340    if test -n "$ac_ct_STRIP"; then
       
 32341    ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
       
 32342  else
       
 32343  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32344  for as_dir in $PATH
       
 32345  do
       
 32346    IFS=$as_save_IFS
       
 32347    test -z "$as_dir" && as_dir=.
       
 32348      for ac_exec_ext in '' $ac_executable_extensions; do
       
 32349 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 32350 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32351      ac_cv_prog_ac_ct_STRIP="strip"
       
 32352      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32353      break 2
       
 32354    fi
       
 32355  done
       
 32356    done
       
 32357  IFS=$as_save_IFS
       
 32358  
       
 32359 @@ -2993,27 +3123,27 @@ else
       
 32360  fi
       
 32361  
       
 32362  fi
       
 32363  INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
       
 32364  
       
 32365  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
       
 32366  $as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
       
 32367  if test -z "$MKDIR_P"; then
       
 32368 -  if test "${ac_cv_path_mkdir+set}" = set; then :
       
 32369 +  if ${ac_cv_path_mkdir+:} false; then :
       
 32370    $as_echo_n "(cached) " >&6
       
 32371  else
       
 32372    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32373  for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
       
 32374  do
       
 32375    IFS=$as_save_IFS
       
 32376    test -z "$as_dir" && as_dir=.
       
 32377      for ac_prog in mkdir gmkdir; do
       
 32378  	 for ac_exec_ext in '' $ac_executable_extensions; do
       
 32379 -	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
       
 32380 +	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
       
 32381  	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
       
 32382  	     'mkdir (GNU coreutils) '* | \
       
 32383  	     'mkdir (coreutils) '* | \
       
 32384  	     'mkdir (fileutils) '4.1*)
       
 32385  	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
       
 32386  	       break 3;;
       
 32387  	   esac
       
 32388  	 done
       
 32389 @@ -3032,41 +3162,35 @@ fi
       
 32390      # break other packages using the cache if that directory is
       
 32391      # removed, or if the value is a relative name.
       
 32392      MKDIR_P="$ac_install_sh -d"
       
 32393    fi
       
 32394  fi
       
 32395  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
       
 32396  $as_echo "$MKDIR_P" >&6; }
       
 32397  
       
 32398 -mkdir_p="$MKDIR_P"
       
 32399 -case $mkdir_p in
       
 32400 -  [\\/$]* | ?:[\\/]*) ;;
       
 32401 -  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
       
 32402 -esac
       
 32403 -
       
 32404  for ac_prog in gawk mawk nawk awk
       
 32405  do
       
 32406    # Extract the first word of "$ac_prog", so it can be a program name with args.
       
 32407  set dummy $ac_prog; ac_word=$2
       
 32408  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32409  $as_echo_n "checking for $ac_word... " >&6; }
       
 32410 -if test "${ac_cv_prog_AWK+set}" = set; then :
       
 32411 +if ${ac_cv_prog_AWK+:} false; then :
       
 32412    $as_echo_n "(cached) " >&6
       
 32413  else
       
 32414    if test -n "$AWK"; then
       
 32415    ac_cv_prog_AWK="$AWK" # Let the user override the test.
       
 32416  else
       
 32417  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32418  for as_dir in $PATH
       
 32419  do
       
 32420    IFS=$as_save_IFS
       
 32421    test -z "$as_dir" && as_dir=.
       
 32422      for ac_exec_ext in '' $ac_executable_extensions; do
       
 32423 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 32424 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32425      ac_cv_prog_AWK="$ac_prog"
       
 32426      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32427      break 2
       
 32428    fi
       
 32429  done
       
 32430    done
       
 32431  IFS=$as_save_IFS
       
 32432  
       
 32433 @@ -3084,25 +3208,25 @@ fi
       
 32434  
       
 32435    test -n "$AWK" && break
       
 32436  done
       
 32437  
       
 32438  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
       
 32439  $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
       
 32440  set x ${MAKE-make}
       
 32441  ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
       
 32442 -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
       
 32443 +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
       
 32444    $as_echo_n "(cached) " >&6
       
 32445  else
       
 32446    cat >conftest.make <<\_ACEOF
       
 32447  SHELL = /bin/sh
       
 32448  all:
       
 32449  	@echo '@@@%%%=$(MAKE)=@@@%%%'
       
 32450  _ACEOF
       
 32451 -# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
       
 32452 +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
       
 32453  case `${MAKE-make} -f conftest.make 2>/dev/null` in
       
 32454    *@@@%%%=?*=@@@%%%*)
       
 32455      eval ac_cv_prog_make_${ac_make}_set=yes;;
       
 32456    *)
       
 32457      eval ac_cv_prog_make_${ac_make}_set=no;;
       
 32458  esac
       
 32459  rm -f conftest.make
       
 32460  fi
       
 32461 @@ -3120,39 +3244,78 @@ rm -rf .tst 2>/dev/null
       
 32462  mkdir .tst 2>/dev/null
       
 32463  if test -d .tst; then
       
 32464    am__leading_dot=.
       
 32465  else
       
 32466    am__leading_dot=_
       
 32467  fi
       
 32468  rmdir .tst 2>/dev/null
       
 32469  
       
 32470 +# Check whether --enable-silent-rules was given.
       
 32471 +if test "${enable_silent_rules+set}" = set; then :
       
 32472 +  enableval=$enable_silent_rules;
       
 32473 +fi
       
 32474 +
       
 32475 +case $enable_silent_rules in # (((
       
 32476 +  yes) AM_DEFAULT_VERBOSITY=0;;
       
 32477 +   no) AM_DEFAULT_VERBOSITY=1;;
       
 32478 +    *) AM_DEFAULT_VERBOSITY=1;;
       
 32479 +esac
       
 32480 +am_make=${MAKE-make}
       
 32481 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
       
 32482 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
       
 32483 +if ${am_cv_make_support_nested_variables+:} false; then :
       
 32484 +  $as_echo_n "(cached) " >&6
       
 32485 +else
       
 32486 +  if $as_echo 'TRUE=$(BAR$(V))
       
 32487 +BAR0=false
       
 32488 +BAR1=true
       
 32489 +V=1
       
 32490 +am__doit:
       
 32491 +	@$(TRUE)
       
 32492 +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
       
 32493 +  am_cv_make_support_nested_variables=yes
       
 32494 +else
       
 32495 +  am_cv_make_support_nested_variables=no
       
 32496 +fi
       
 32497 +fi
       
 32498 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
       
 32499 +$as_echo "$am_cv_make_support_nested_variables" >&6; }
       
 32500 +if test $am_cv_make_support_nested_variables = yes; then
       
 32501 +    AM_V='$(V)'
       
 32502 +  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
       
 32503 +else
       
 32504 +  AM_V=$AM_DEFAULT_VERBOSITY
       
 32505 +  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
       
 32506 +fi
       
 32507 +AM_BACKSLASH='\'
       
 32508 +
       
 32509  if test "`cd $srcdir && pwd`" != "`pwd`"; then
       
 32510    # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
       
 32511    # is not polluted with repeated "-I."
       
 32512    am__isrc=' -I$(srcdir)'
       
 32513    # test to see if srcdir already configured
       
 32514    if test -f $srcdir/config.status; then
       
 32515 -    as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
       
 32516 +    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
       
 32517    fi
       
 32518  fi
       
 32519  
       
 32520  # test whether we have cygpath
       
 32521  if test -z "$CYGPATH_W"; then
       
 32522    if (cygpath --version) >/dev/null 2>/dev/null; then
       
 32523      CYGPATH_W='cygpath -w'
       
 32524    else
       
 32525      CYGPATH_W=echo
       
 32526    fi
       
 32527  fi
       
 32528  
       
 32529  
       
 32530  # Define the identity of the package.
       
 32531   PACKAGE='libffi'
       
 32532 - VERSION='3.0.10rc0'
       
 32533 + VERSION='3.1-rc1'
       
 32534  
       
 32535  
       
 32536  cat >>confdefs.h <<_ACEOF
       
 32537  #define PACKAGE "$PACKAGE"
       
 32538  _ACEOF
       
 32539  
       
 32540  
       
 32541  cat >>confdefs.h <<_ACEOF
       
 32542 @@ -3170,23 +3333,34 @@ AUTOCONF=${AUTOCONF-"${am_missing_run}au
       
 32543  AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
       
 32544  
       
 32545  
       
 32546  AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
       
 32547  
       
 32548  
       
 32549  MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
       
 32550  
       
 32551 +# For better backward compatibility.  To be removed once Automake 1.9.x
       
 32552 +# dies out for good.  For more background, see:
       
 32553 +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
       
 32554 +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
       
 32555 +mkdir_p='$(MKDIR_P)'
       
 32556 +
       
 32557  # We need awk for the "check" target.  The system "awk" is bad on
       
 32558  # some platforms.
       
 32559 -# Always define AMTAR for backward compatibility.
       
 32560 -
       
 32561 -AMTAR=${AMTAR-"${am_missing_run}tar"}
       
 32562 -
       
 32563 -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
       
 32564 +# Always define AMTAR for backward compatibility.  Yes, it's still used
       
 32565 +# in the wild :-(  We should find a proper way to deprecate it ...
       
 32566 +AMTAR='$${TAR-tar}'
       
 32567 +
       
 32568 +
       
 32569 +# We'll loop over all known methods to create a tar archive until one works.
       
 32570 +_am_tools='gnutar  pax cpio none'
       
 32571 +
       
 32572 +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
       
 32573 +
       
 32574  
       
 32575  
       
 32576  
       
 32577  
       
 32578  
       
 32579  
       
 32580  # The same as in boehm-gc and libstdc++. Have to borrow it from there.
       
 32581  # We must force CC to /not/ be precious variables; otherwise
       
 32582 @@ -3203,29 +3377,29 @@ ac_cpp='$CPP $CPPFLAGS'
       
 32583  ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 32584  ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 32585  ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 32586  if test -n "$ac_tool_prefix"; then
       
 32587    # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
       
 32588  set dummy ${ac_tool_prefix}gcc; ac_word=$2
       
 32589  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32590  $as_echo_n "checking for $ac_word... " >&6; }
       
 32591 -if test "${ac_cv_prog_CC+set}" = set; then :
       
 32592 +if ${ac_cv_prog_CC+:} false; then :
       
 32593    $as_echo_n "(cached) " >&6
       
 32594  else
       
 32595    if test -n "$CC"; then
       
 32596    ac_cv_prog_CC="$CC" # Let the user override the test.
       
 32597  else
       
 32598  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32599  for as_dir in $PATH
       
 32600  do
       
 32601    IFS=$as_save_IFS
       
 32602    test -z "$as_dir" && as_dir=.
       
 32603      for ac_exec_ext in '' $ac_executable_extensions; do
       
 32604 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 32605 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32606      ac_cv_prog_CC="${ac_tool_prefix}gcc"
       
 32607      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32608      break 2
       
 32609    fi
       
 32610  done
       
 32611    done
       
 32612  IFS=$as_save_IFS
       
 32613  
       
 32614 @@ -3243,29 +3417,29 @@ fi
       
 32615  
       
 32616  fi
       
 32617  if test -z "$ac_cv_prog_CC"; then
       
 32618    ac_ct_CC=$CC
       
 32619    # Extract the first word of "gcc", so it can be a program name with args.
       
 32620  set dummy gcc; ac_word=$2
       
 32621  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32622  $as_echo_n "checking for $ac_word... " >&6; }
       
 32623 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
       
 32624 +if ${ac_cv_prog_ac_ct_CC+:} false; then :
       
 32625    $as_echo_n "(cached) " >&6
       
 32626  else
       
 32627    if test -n "$ac_ct_CC"; then
       
 32628    ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
       
 32629  else
       
 32630  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32631  for as_dir in $PATH
       
 32632  do
       
 32633    IFS=$as_save_IFS
       
 32634    test -z "$as_dir" && as_dir=.
       
 32635      for ac_exec_ext in '' $ac_executable_extensions; do
       
 32636 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 32637 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32638      ac_cv_prog_ac_ct_CC="gcc"
       
 32639      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32640      break 2
       
 32641    fi
       
 32642  done
       
 32643    done
       
 32644  IFS=$as_save_IFS
       
 32645  
       
 32646 @@ -3296,29 +3470,29 @@ else
       
 32647  fi
       
 32648  
       
 32649  if test -z "$CC"; then
       
 32650            if test -n "$ac_tool_prefix"; then
       
 32651      # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
       
 32652  set dummy ${ac_tool_prefix}cc; ac_word=$2
       
 32653  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32654  $as_echo_n "checking for $ac_word... " >&6; }
       
 32655 -if test "${ac_cv_prog_CC+set}" = set; then :
       
 32656 +if ${ac_cv_prog_CC+:} false; then :
       
 32657    $as_echo_n "(cached) " >&6
       
 32658  else
       
 32659    if test -n "$CC"; then
       
 32660    ac_cv_prog_CC="$CC" # Let the user override the test.
       
 32661  else
       
 32662  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32663  for as_dir in $PATH
       
 32664  do
       
 32665    IFS=$as_save_IFS
       
 32666    test -z "$as_dir" && as_dir=.
       
 32667      for ac_exec_ext in '' $ac_executable_extensions; do
       
 32668 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 32669 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32670      ac_cv_prog_CC="${ac_tool_prefix}cc"
       
 32671      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32672      break 2
       
 32673    fi
       
 32674  done
       
 32675    done
       
 32676  IFS=$as_save_IFS
       
 32677  
       
 32678 @@ -3336,30 +3510,30 @@ fi
       
 32679  
       
 32680    fi
       
 32681  fi
       
 32682  if test -z "$CC"; then
       
 32683    # Extract the first word of "cc", so it can be a program name with args.
       
 32684  set dummy cc; ac_word=$2
       
 32685  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32686  $as_echo_n "checking for $ac_word... " >&6; }
       
 32687 -if test "${ac_cv_prog_CC+set}" = set; then :
       
 32688 +if ${ac_cv_prog_CC+:} false; then :
       
 32689    $as_echo_n "(cached) " >&6
       
 32690  else
       
 32691    if test -n "$CC"; then
       
 32692    ac_cv_prog_CC="$CC" # Let the user override the test.
       
 32693  else
       
 32694    ac_prog_rejected=no
       
 32695  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32696  for as_dir in $PATH
       
 32697  do
       
 32698    IFS=$as_save_IFS
       
 32699    test -z "$as_dir" && as_dir=.
       
 32700      for ac_exec_ext in '' $ac_executable_extensions; do
       
 32701 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 32702 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32703      if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
       
 32704         ac_prog_rejected=yes
       
 32705         continue
       
 32706       fi
       
 32707      ac_cv_prog_CC="cc"
       
 32708      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32709      break 2
       
 32710    fi
       
 32711 @@ -3395,29 +3569,29 @@ fi
       
 32712  if test -z "$CC"; then
       
 32713    if test -n "$ac_tool_prefix"; then
       
 32714    for ac_prog in cl.exe
       
 32715    do
       
 32716      # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
       
 32717  set dummy $ac_tool_prefix$ac_prog; ac_word=$2
       
 32718  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32719  $as_echo_n "checking for $ac_word... " >&6; }
       
 32720 -if test "${ac_cv_prog_CC+set}" = set; then :
       
 32721 +if ${ac_cv_prog_CC+:} false; then :
       
 32722    $as_echo_n "(cached) " >&6
       
 32723  else
       
 32724    if test -n "$CC"; then
       
 32725    ac_cv_prog_CC="$CC" # Let the user override the test.
       
 32726  else
       
 32727  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32728  for as_dir in $PATH
       
 32729  do
       
 32730    IFS=$as_save_IFS
       
 32731    test -z "$as_dir" && as_dir=.
       
 32732      for ac_exec_ext in '' $ac_executable_extensions; do
       
 32733 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 32734 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32735      ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
       
 32736      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32737      break 2
       
 32738    fi
       
 32739  done
       
 32740    done
       
 32741  IFS=$as_save_IFS
       
 32742  
       
 32743 @@ -3439,29 +3613,29 @@ fi
       
 32744  if test -z "$CC"; then
       
 32745    ac_ct_CC=$CC
       
 32746    for ac_prog in cl.exe
       
 32747  do
       
 32748    # Extract the first word of "$ac_prog", so it can be a program name with args.
       
 32749  set dummy $ac_prog; ac_word=$2
       
 32750  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 32751  $as_echo_n "checking for $ac_word... " >&6; }
       
 32752 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
       
 32753 +if ${ac_cv_prog_ac_ct_CC+:} false; then :
       
 32754    $as_echo_n "(cached) " >&6
       
 32755  else
       
 32756    if test -n "$ac_ct_CC"; then
       
 32757    ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
       
 32758  else
       
 32759  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 32760  for as_dir in $PATH
       
 32761  do
       
 32762    IFS=$as_save_IFS
       
 32763    test -z "$as_dir" && as_dir=.
       
 32764      for ac_exec_ext in '' $ac_executable_extensions; do
       
 32765 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 32766 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 32767      ac_cv_prog_ac_ct_CC="$ac_prog"
       
 32768      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 32769      break 2
       
 32770    fi
       
 32771  done
       
 32772    done
       
 32773  IFS=$as_save_IFS
       
 32774  
       
 32775 @@ -3493,18 +3667,18 @@ esac
       
 32776    fi
       
 32777  fi
       
 32778  
       
 32779  fi
       
 32780  
       
 32781  
       
 32782  test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 32783  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 32784 -as_fn_error "no acceptable C compiler found in \$PATH
       
 32785 -See \`config.log' for more details." "$LINENO" 5; }
       
 32786 +as_fn_error $? "no acceptable C compiler found in \$PATH
       
 32787 +See \`config.log' for more details" "$LINENO" 5; }
       
 32788  
       
 32789  # Provide some information about the compiler.
       
 32790  $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
       
 32791  set X $ac_compile
       
 32792  ac_compiler=$2
       
 32793  for ac_option in --version -v -V -qversion; do
       
 32794    { { ac_try="$ac_compiler $ac_option >&5"
       
 32795  case "(($ac_try" in
       
 32796 @@ -3608,19 +3782,18 @@ fi
       
 32797  if test -z "$ac_file"; then :
       
 32798    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 32799  $as_echo "no" >&6; }
       
 32800  $as_echo "$as_me: failed program was:" >&5
       
 32801  sed 's/^/| /' conftest.$ac_ext >&5
       
 32802  
       
 32803  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 32804  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 32805 -{ as_fn_set_status 77
       
 32806 -as_fn_error "C compiler cannot create executables
       
 32807 -See \`config.log' for more details." "$LINENO" 5; }; }
       
 32808 +as_fn_error 77 "C compiler cannot create executables
       
 32809 +See \`config.log' for more details" "$LINENO" 5; }
       
 32810  else
       
 32811    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
       
 32812  $as_echo "yes" >&6; }
       
 32813  fi
       
 32814  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
       
 32815  $as_echo_n "checking for C compiler default output file name... " >&6; }
       
 32816  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
       
 32817  $as_echo "$ac_file" >&6; }
       
 32818 @@ -3652,18 +3825,18 @@ for ac_file in conftest.exe conftest con
       
 32819      *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
       
 32820  	  break;;
       
 32821      * ) break;;
       
 32822    esac
       
 32823  done
       
 32824  else
       
 32825    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 32826  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 32827 -as_fn_error "cannot compute suffix of executables: cannot compile and link
       
 32828 -See \`config.log' for more details." "$LINENO" 5; }
       
 32829 +as_fn_error $? "cannot compute suffix of executables: cannot compile and link
       
 32830 +See \`config.log' for more details" "$LINENO" 5; }
       
 32831  fi
       
 32832  rm -f conftest conftest$ac_cv_exeext
       
 32833  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
       
 32834  $as_echo "$ac_cv_exeext" >&6; }
       
 32835  
       
 32836  rm -f conftest.$ac_ext
       
 32837  EXEEXT=$ac_cv_exeext
       
 32838  ac_exeext=$EXEEXT
       
 32839 @@ -3710,30 +3883,30 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
       
 32840    test $ac_status = 0; }; }; then
       
 32841      cross_compiling=no
       
 32842    else
       
 32843      if test "$cross_compiling" = maybe; then
       
 32844  	cross_compiling=yes
       
 32845      else
       
 32846  	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 32847  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 32848 -as_fn_error "cannot run C compiled programs.
       
 32849 +as_fn_error $? "cannot run C compiled programs.
       
 32850  If you meant to cross compile, use \`--host'.
       
 32851 -See \`config.log' for more details." "$LINENO" 5; }
       
 32852 +See \`config.log' for more details" "$LINENO" 5; }
       
 32853      fi
       
 32854    fi
       
 32855  fi
       
 32856  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
       
 32857  $as_echo "$cross_compiling" >&6; }
       
 32858  
       
 32859  rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
       
 32860  ac_clean_files=$ac_clean_files_save
       
 32861  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
       
 32862  $as_echo_n "checking for suffix of object files... " >&6; }
       
 32863 -if test "${ac_cv_objext+set}" = set; then :
       
 32864 +if ${ac_cv_objext+:} false; then :
       
 32865    $as_echo_n "(cached) " >&6
       
 32866  else
       
 32867    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 32868  /* end confdefs.h.  */
       
 32869  
       
 32870  int
       
 32871  main ()
       
 32872  {
       
 32873 @@ -3763,28 +3936,28 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
       
 32874    esac
       
 32875  done
       
 32876  else
       
 32877    $as_echo "$as_me: failed program was:" >&5
       
 32878  sed 's/^/| /' conftest.$ac_ext >&5
       
 32879  
       
 32880  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 32881  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 32882 -as_fn_error "cannot compute suffix of object files: cannot compile
       
 32883 -See \`config.log' for more details." "$LINENO" 5; }
       
 32884 +as_fn_error $? "cannot compute suffix of object files: cannot compile
       
 32885 +See \`config.log' for more details" "$LINENO" 5; }
       
 32886  fi
       
 32887  rm -f conftest.$ac_cv_objext conftest.$ac_ext
       
 32888  fi
       
 32889  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
       
 32890  $as_echo "$ac_cv_objext" >&6; }
       
 32891  OBJEXT=$ac_cv_objext
       
 32892  ac_objext=$OBJEXT
       
 32893  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
       
 32894  $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
       
 32895 -if test "${ac_cv_c_compiler_gnu+set}" = set; then :
       
 32896 +if ${ac_cv_c_compiler_gnu+:} false; then :
       
 32897    $as_echo_n "(cached) " >&6
       
 32898  else
       
 32899    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 32900  /* end confdefs.h.  */
       
 32901  
       
 32902  int
       
 32903  main ()
       
 32904  {
       
 32905 @@ -3811,17 +3984,17 @@ if test $ac_compiler_gnu = yes; then
       
 32906    GCC=yes
       
 32907  else
       
 32908    GCC=
       
 32909  fi
       
 32910  ac_test_CFLAGS=${CFLAGS+set}
       
 32911  ac_save_CFLAGS=$CFLAGS
       
 32912  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
       
 32913  $as_echo_n "checking whether $CC accepts -g... " >&6; }
       
 32914 -if test "${ac_cv_prog_cc_g+set}" = set; then :
       
 32915 +if ${ac_cv_prog_cc_g+:} false; then :
       
 32916    $as_echo_n "(cached) " >&6
       
 32917  else
       
 32918    ac_save_c_werror_flag=$ac_c_werror_flag
       
 32919     ac_c_werror_flag=yes
       
 32920     ac_cv_prog_cc_g=no
       
 32921     CFLAGS="-g"
       
 32922     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 32923  /* end confdefs.h.  */
       
 32924 @@ -3889,27 +4062,26 @@ else
       
 32925    if test "$GCC" = yes; then
       
 32926      CFLAGS="-O2"
       
 32927    else
       
 32928      CFLAGS=
       
 32929    fi
       
 32930  fi
       
 32931  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
       
 32932  $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
       
 32933 -if test "${ac_cv_prog_cc_c89+set}" = set; then :
       
 32934 +if ${ac_cv_prog_cc_c89+:} false; then :
       
 32935    $as_echo_n "(cached) " >&6
       
 32936  else
       
 32937    ac_cv_prog_cc_c89=no
       
 32938  ac_save_CC=$CC
       
 32939  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 32940  /* end confdefs.h.  */
       
 32941  #include <stdarg.h>
       
 32942  #include <stdio.h>
       
 32943 -#include <sys/types.h>
       
 32944 -#include <sys/stat.h>
       
 32945 +struct stat;
       
 32946  /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
       
 32947  struct buf { int x; };
       
 32948  FILE * (*rcsopen) (struct buf *, struct stat *, int);
       
 32949  static char *e (p, i)
       
 32950       char **p;
       
 32951       int i;
       
 32952  {
       
 32953    return p[i];
       
 32954 @@ -4002,17 +4174,17 @@ END
       
 32955  # If we don't find an include directive, just comment out the code.
       
 32956  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
       
 32957  $as_echo_n "checking for style of include used by $am_make... " >&6; }
       
 32958  am__include="#"
       
 32959  am__quote=
       
 32960  _am_result=none
       
 32961  # First try GNU make style include.
       
 32962  echo "include confinc" > confmf
       
 32963 -# Ignore all kinds of additional output from `make'.
       
 32964 +# Ignore all kinds of additional output from 'make'.
       
 32965  case `$am_make -s -f confmf 2> /dev/null` in #(
       
 32966  *the\ am__doit\ target*)
       
 32967    am__include=include
       
 32968    am__quote=
       
 32969    _am_result=GNU
       
 32970    ;;
       
 32971  esac
       
 32972  # Now try BSD make style include.
       
 32973 @@ -4035,40 +4207,42 @@ rm -f confinc confmf
       
 32974  # Check whether --enable-dependency-tracking was given.
       
 32975  if test "${enable_dependency_tracking+set}" = set; then :
       
 32976    enableval=$enable_dependency_tracking;
       
 32977  fi
       
 32978  
       
 32979  if test "x$enable_dependency_tracking" != xno; then
       
 32980    am_depcomp="$ac_aux_dir/depcomp"
       
 32981    AMDEPBACKSLASH='\'
       
 32982 +  am__nodep='_no'
       
 32983  fi
       
 32984   if test "x$enable_dependency_tracking" != xno; then
       
 32985    AMDEP_TRUE=
       
 32986    AMDEP_FALSE='#'
       
 32987  else
       
 32988    AMDEP_TRUE='#'
       
 32989    AMDEP_FALSE=
       
 32990  fi
       
 32991  
       
 32992  
       
 32993  
       
 32994  depcc="$CC"   am_compiler_list=
       
 32995  
       
 32996  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
       
 32997  $as_echo_n "checking dependency style of $depcc... " >&6; }
       
 32998 -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
       
 32999 +if ${am_cv_CC_dependencies_compiler_type+:} false; then :
       
 33000    $as_echo_n "(cached) " >&6
       
 33001  else
       
 33002    if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
       
 33003    # We make a subdir and do the tests there.  Otherwise we can end up
       
 33004    # making bogus files that we don't know about and never remove.  For
       
 33005    # instance it was reported that on HP-UX the gcc test will end up
       
 33006 -  # making a dummy file named `D' -- because `-MD' means `put the output
       
 33007 -  # in D'.
       
 33008 +  # making a dummy file named 'D' -- because '-MD' means "put the output
       
 33009 +  # in D".
       
 33010 +  rm -rf conftest.dir
       
 33011    mkdir conftest.dir
       
 33012    # Copy depcomp to subdir because otherwise we won't find it if we're
       
 33013    # using a relative directory.
       
 33014    cp "$am_depcomp" conftest.dir
       
 33015    cd conftest.dir
       
 33016    # We will build objects and dependencies in a subdirectory because
       
 33017    # it helps to detect inapplicable dependency modes.  For instance
       
 33018    # both Tru64's cc and ICC support -MD to output dependencies as a
       
 33019 @@ -4092,44 +4266,44 @@ else
       
 33020      # we should not choose a depcomp mode which is confused by this.
       
 33021      #
       
 33022      # We need to recreate these files for each test, as the compiler may
       
 33023      # overwrite some of them when testing with obscure command lines.
       
 33024      # This happens at least with the AIX C compiler.
       
 33025      : > sub/conftest.c
       
 33026      for i in 1 2 3 4 5 6; do
       
 33027        echo '#include "conftst'$i'.h"' >> sub/conftest.c
       
 33028 -      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
       
 33029 -      # Solaris 8's {/usr,}/bin/sh.
       
 33030 -      touch sub/conftst$i.h
       
 33031 +      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
       
 33032 +      # Solaris 10 /bin/sh.
       
 33033 +      echo '/* dummy */' > sub/conftst$i.h
       
 33034      done
       
 33035      echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
       
 33036  
       
 33037 -    # We check with `-c' and `-o' for the sake of the "dashmstdout"
       
 33038 +    # We check with '-c' and '-o' for the sake of the "dashmstdout"
       
 33039      # mode.  It turns out that the SunPro C++ compiler does not properly
       
 33040 -    # handle `-M -o', and we need to detect this.  Also, some Intel
       
 33041 -    # versions had trouble with output in subdirs
       
 33042 +    # handle '-M -o', and we need to detect this.  Also, some Intel
       
 33043 +    # versions had trouble with output in subdirs.
       
 33044      am__obj=sub/conftest.${OBJEXT-o}
       
 33045      am__minus_obj="-o $am__obj"
       
 33046      case $depmode in
       
 33047      gcc)
       
 33048        # This depmode causes a compiler race in universal mode.
       
 33049        test "$am__universal" = false || continue
       
 33050        ;;
       
 33051      nosideeffect)
       
 33052 -      # after this tag, mechanisms are not by side-effect, so they'll
       
 33053 -      # only be used when explicitly requested
       
 33054 +      # After this tag, mechanisms are not by side-effect, so they'll
       
 33055 +      # only be used when explicitly requested.
       
 33056        if test "x$enable_dependency_tracking" = xyes; then
       
 33057  	continue
       
 33058        else
       
 33059  	break
       
 33060        fi
       
 33061        ;;
       
 33062 -    msvisualcpp | msvcmsys)
       
 33063 -      # This compiler won't grok `-c -o', but also, the minuso test has
       
 33064 +    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
       
 33065 +      # This compiler won't grok '-c -o', but also, the minuso test has
       
 33066        # not run yet.  These depmodes are late enough in the game, and
       
 33067        # so weak that their functioning should not be impacted.
       
 33068        am__obj=conftest.${OBJEXT-o}
       
 33069        am__minus_obj=
       
 33070        ;;
       
 33071      none) break ;;
       
 33072      esac
       
 33073      if depmode=$depmode \
       
 33074 @@ -4190,25 +4364,26 @@ test "${CCAS+set}" = set || CCAS=$CC
       
 33075  test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
       
 33076  
       
 33077  
       
 33078  
       
 33079  depcc="$CCAS"   am_compiler_list=
       
 33080  
       
 33081  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
       
 33082  $as_echo_n "checking dependency style of $depcc... " >&6; }
       
 33083 -if test "${am_cv_CCAS_dependencies_compiler_type+set}" = set; then :
       
 33084 +if ${am_cv_CCAS_dependencies_compiler_type+:} false; then :
       
 33085    $as_echo_n "(cached) " >&6
       
 33086  else
       
 33087    if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
       
 33088    # We make a subdir and do the tests there.  Otherwise we can end up
       
 33089    # making bogus files that we don't know about and never remove.  For
       
 33090    # instance it was reported that on HP-UX the gcc test will end up
       
 33091 -  # making a dummy file named `D' -- because `-MD' means `put the output
       
 33092 -  # in D'.
       
 33093 +  # making a dummy file named 'D' -- because '-MD' means "put the output
       
 33094 +  # in D".
       
 33095 +  rm -rf conftest.dir
       
 33096    mkdir conftest.dir
       
 33097    # Copy depcomp to subdir because otherwise we won't find it if we're
       
 33098    # using a relative directory.
       
 33099    cp "$am_depcomp" conftest.dir
       
 33100    cd conftest.dir
       
 33101    # We will build objects and dependencies in a subdirectory because
       
 33102    # it helps to detect inapplicable dependency modes.  For instance
       
 33103    # both Tru64's cc and ICC support -MD to output dependencies as a
       
 33104 @@ -4230,44 +4405,44 @@ else
       
 33105      # we should not choose a depcomp mode which is confused by this.
       
 33106      #
       
 33107      # We need to recreate these files for each test, as the compiler may
       
 33108      # overwrite some of them when testing with obscure command lines.
       
 33109      # This happens at least with the AIX C compiler.
       
 33110      : > sub/conftest.c
       
 33111      for i in 1 2 3 4 5 6; do
       
 33112        echo '#include "conftst'$i'.h"' >> sub/conftest.c
       
 33113 -      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
       
 33114 -      # Solaris 8's {/usr,}/bin/sh.
       
 33115 -      touch sub/conftst$i.h
       
 33116 +      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
       
 33117 +      # Solaris 10 /bin/sh.
       
 33118 +      echo '/* dummy */' > sub/conftst$i.h
       
 33119      done
       
 33120      echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
       
 33121  
       
 33122 -    # We check with `-c' and `-o' for the sake of the "dashmstdout"
       
 33123 +    # We check with '-c' and '-o' for the sake of the "dashmstdout"
       
 33124      # mode.  It turns out that the SunPro C++ compiler does not properly
       
 33125 -    # handle `-M -o', and we need to detect this.  Also, some Intel
       
 33126 -    # versions had trouble with output in subdirs
       
 33127 +    # handle '-M -o', and we need to detect this.  Also, some Intel
       
 33128 +    # versions had trouble with output in subdirs.
       
 33129      am__obj=sub/conftest.${OBJEXT-o}
       
 33130      am__minus_obj="-o $am__obj"
       
 33131      case $depmode in
       
 33132      gcc)
       
 33133        # This depmode causes a compiler race in universal mode.
       
 33134        test "$am__universal" = false || continue
       
 33135        ;;
       
 33136      nosideeffect)
       
 33137 -      # after this tag, mechanisms are not by side-effect, so they'll
       
 33138 -      # only be used when explicitly requested
       
 33139 +      # After this tag, mechanisms are not by side-effect, so they'll
       
 33140 +      # only be used when explicitly requested.
       
 33141        if test "x$enable_dependency_tracking" = xyes; then
       
 33142  	continue
       
 33143        else
       
 33144  	break
       
 33145        fi
       
 33146        ;;
       
 33147 -    msvisualcpp | msvcmsys)
       
 33148 -      # This compiler won't grok `-c -o', but also, the minuso test has
       
 33149 +    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
       
 33150 +      # This compiler won't grok '-c -o', but also, the minuso test has
       
 33151        # not run yet.  These depmodes are late enough in the game, and
       
 33152        # so weak that their functioning should not be impacted.
       
 33153        am__obj=conftest.${OBJEXT-o}
       
 33154        am__minus_obj=
       
 33155        ;;
       
 33156      none) break ;;
       
 33157      esac
       
 33158      if depmode=$depmode \
       
 33159 @@ -4320,17 +4495,17 @@ if test "x$CC" != xcc; then
       
 33160    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
       
 33161  $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
       
 33162  else
       
 33163    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
       
 33164  $as_echo_n "checking whether cc understands -c and -o together... " >&6; }
       
 33165  fi
       
 33166  set dummy $CC; ac_cc=`$as_echo "$2" |
       
 33167  		      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
       
 33168 -if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then :
       
 33169 +if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
       
 33170    $as_echo_n "(cached) " >&6
       
 33171  else
       
 33172    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 33173  /* end confdefs.h.  */
       
 33174  
       
 33175  int
       
 33176  main ()
       
 33177  {
       
 33178 @@ -4445,36 +4620,105 @@ fi
       
 33179  case `pwd` in
       
 33180    *\ * | *\	*)
       
 33181      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
       
 33182  $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
       
 33183  esac
       
 33184  
       
 33185  
       
 33186  
       
 33187 -macro_version='2.2.6b'
       
 33188 -macro_revision='1.3017'
       
 33189 +macro_version='2.4.2'
       
 33190 +macro_revision='1.3337'
       
 33191  
       
 33192  
       
 33193  
       
 33194  
       
 33195  
       
 33196  
       
 33197  
       
 33198  
       
 33199  
       
 33200  
       
 33201  
       
 33202  
       
 33203  
       
 33204  ltmain="$ac_aux_dir/ltmain.sh"
       
 33205  
       
 33206 +# Backslashify metacharacters that are still active within
       
 33207 +# double-quoted strings.
       
 33208 +sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
       
 33209 +
       
 33210 +# Same as above, but do not quote variable references.
       
 33211 +double_quote_subst='s/\(["`\\]\)/\\\1/g'
       
 33212 +
       
 33213 +# Sed substitution to delay expansion of an escaped shell variable in a
       
 33214 +# double_quote_subst'ed string.
       
 33215 +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
       
 33216 +
       
 33217 +# Sed substitution to delay expansion of an escaped single quote.
       
 33218 +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
       
 33219 +
       
 33220 +# Sed substitution to avoid accidental globbing in evaled expressions
       
 33221 +no_glob_subst='s/\*/\\\*/g'
       
 33222 +
       
 33223 +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
       
 33224 +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
       
 33225 +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
       
 33226 +
       
 33227 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
       
 33228 +$as_echo_n "checking how to print strings... " >&6; }
       
 33229 +# Test print first, because it will be a builtin if present.
       
 33230 +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
       
 33231 +   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
       
 33232 +  ECHO='print -r --'
       
 33233 +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
       
 33234 +  ECHO='printf %s\n'
       
 33235 +else
       
 33236 +  # Use this function as a fallback that always works.
       
 33237 +  func_fallback_echo ()
       
 33238 +  {
       
 33239 +    eval 'cat <<_LTECHO_EOF
       
 33240 +$1
       
 33241 +_LTECHO_EOF'
       
 33242 +  }
       
 33243 +  ECHO='func_fallback_echo'
       
 33244 +fi
       
 33245 +
       
 33246 +# func_echo_all arg...
       
 33247 +# Invoke $ECHO with all args, space-separated.
       
 33248 +func_echo_all ()
       
 33249 +{
       
 33250 +    $ECHO ""
       
 33251 +}
       
 33252 +
       
 33253 +case "$ECHO" in
       
 33254 +  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
       
 33255 +$as_echo "printf" >&6; } ;;
       
 33256 +  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
       
 33257 +$as_echo "print -r" >&6; } ;;
       
 33258 +  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
       
 33259 +$as_echo "cat" >&6; } ;;
       
 33260 +esac
       
 33261 +
       
 33262 +
       
 33263 +
       
 33264 +
       
 33265 +
       
 33266 +
       
 33267 +
       
 33268 +
       
 33269 +
       
 33270 +
       
 33271 +
       
 33272 +
       
 33273 +
       
 33274 +
       
 33275  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
       
 33276  $as_echo_n "checking for a sed that does not truncate output... " >&6; }
       
 33277 -if test "${ac_cv_path_SED+set}" = set; then :
       
 33278 +if ${ac_cv_path_SED+:} false; then :
       
 33279    $as_echo_n "(cached) " >&6
       
 33280  else
       
 33281              ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
       
 33282       for ac_i in 1 2 3 4 5 6 7; do
       
 33283         ac_script="$ac_script$as_nl$ac_script"
       
 33284       done
       
 33285       echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
       
 33286       { ac_script=; unset ac_script;}
       
 33287 @@ -4484,17 +4728,17 @@ else
       
 33288    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 33289  for as_dir in $PATH
       
 33290  do
       
 33291    IFS=$as_save_IFS
       
 33292    test -z "$as_dir" && as_dir=.
       
 33293      for ac_prog in sed gsed; do
       
 33294      for ac_exec_ext in '' $ac_executable_extensions; do
       
 33295        ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
       
 33296 -      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
       
 33297 +      as_fn_executable_p "$ac_path_SED" || continue
       
 33298  # Check for GNU ac_path_SED and select it if it is found.
       
 33299    # Check for GNU $ac_path_SED
       
 33300  case `"$ac_path_SED" --version 2>&1` in
       
 33301  *GNU*)
       
 33302    ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
       
 33303  *)
       
 33304    ac_count=0
       
 33305    $as_echo_n 0123456789 >"conftest.in"
       
 33306 @@ -4519,17 +4763,17 @@ case `"$ac_path_SED" --version 2>&1` in
       
 33307  esac
       
 33308  
       
 33309        $ac_path_SED_found && break 3
       
 33310      done
       
 33311    done
       
 33312    done
       
 33313  IFS=$as_save_IFS
       
 33314    if test -z "$ac_cv_path_SED"; then
       
 33315 -    as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
       
 33316 +    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
       
 33317    fi
       
 33318  else
       
 33319    ac_cv_path_SED=$SED
       
 33320  fi
       
 33321  
       
 33322  fi
       
 33323  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
       
 33324  $as_echo "$ac_cv_path_SED" >&6; }
       
 33325 @@ -4546,31 +4790,31 @@ Xsed="$SED -e 1s/^X//"
       
 33326  
       
 33327  
       
 33328  
       
 33329  
       
 33330  
       
 33331  
       
 33332  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
       
 33333  $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
       
 33334 -if test "${ac_cv_path_GREP+set}" = set; then :
       
 33335 +if ${ac_cv_path_GREP+:} false; then :
       
 33336    $as_echo_n "(cached) " >&6
       
 33337  else
       
 33338    if test -z "$GREP"; then
       
 33339    ac_path_GREP_found=false
       
 33340    # Loop through the user's path and test for each of PROGNAME-LIST
       
 33341    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 33342  for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
       
 33343  do
       
 33344    IFS=$as_save_IFS
       
 33345    test -z "$as_dir" && as_dir=.
       
 33346      for ac_prog in grep ggrep; do
       
 33347      for ac_exec_ext in '' $ac_executable_extensions; do
       
 33348        ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
       
 33349 -      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
       
 33350 +      as_fn_executable_p "$ac_path_GREP" || continue
       
 33351  # Check for GNU ac_path_GREP and select it if it is found.
       
 33352    # Check for GNU $ac_path_GREP
       
 33353  case `"$ac_path_GREP" --version 2>&1` in
       
 33354  *GNU*)
       
 33355    ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
       
 33356  *)
       
 33357    ac_count=0
       
 33358    $as_echo_n 0123456789 >"conftest.in"
       
 33359 @@ -4595,48 +4839,48 @@ case `"$ac_path_GREP" --version 2>&1` in
       
 33360  esac
       
 33361  
       
 33362        $ac_path_GREP_found && break 3
       
 33363      done
       
 33364    done
       
 33365    done
       
 33366  IFS=$as_save_IFS
       
 33367    if test -z "$ac_cv_path_GREP"; then
       
 33368 -    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
       
 33369 +    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
       
 33370    fi
       
 33371  else
       
 33372    ac_cv_path_GREP=$GREP
       
 33373  fi
       
 33374  
       
 33375  fi
       
 33376  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
       
 33377  $as_echo "$ac_cv_path_GREP" >&6; }
       
 33378   GREP="$ac_cv_path_GREP"
       
 33379  
       
 33380  
       
 33381  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
       
 33382  $as_echo_n "checking for egrep... " >&6; }
       
 33383 -if test "${ac_cv_path_EGREP+set}" = set; then :
       
 33384 +if ${ac_cv_path_EGREP+:} false; then :
       
 33385    $as_echo_n "(cached) " >&6
       
 33386  else
       
 33387    if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
       
 33388     then ac_cv_path_EGREP="$GREP -E"
       
 33389     else
       
 33390       if test -z "$EGREP"; then
       
 33391    ac_path_EGREP_found=false
       
 33392    # Loop through the user's path and test for each of PROGNAME-LIST
       
 33393    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 33394  for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
       
 33395  do
       
 33396    IFS=$as_save_IFS
       
 33397    test -z "$as_dir" && as_dir=.
       
 33398      for ac_prog in egrep; do
       
 33399      for ac_exec_ext in '' $ac_executable_extensions; do
       
 33400        ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
       
 33401 -      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
       
 33402 +      as_fn_executable_p "$ac_path_EGREP" || continue
       
 33403  # Check for GNU ac_path_EGREP and select it if it is found.
       
 33404    # Check for GNU $ac_path_EGREP
       
 33405  case `"$ac_path_EGREP" --version 2>&1` in
       
 33406  *GNU*)
       
 33407    ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
       
 33408  *)
       
 33409    ac_count=0
       
 33410    $as_echo_n 0123456789 >"conftest.in"
       
 33411 @@ -4661,49 +4905,49 @@ case `"$ac_path_EGREP" --version 2>&1` i
       
 33412  esac
       
 33413  
       
 33414        $ac_path_EGREP_found && break 3
       
 33415      done
       
 33416    done
       
 33417    done
       
 33418  IFS=$as_save_IFS
       
 33419    if test -z "$ac_cv_path_EGREP"; then
       
 33420 -    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
       
 33421 +    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
       
 33422    fi
       
 33423  else
       
 33424    ac_cv_path_EGREP=$EGREP
       
 33425  fi
       
 33426  
       
 33427     fi
       
 33428  fi
       
 33429  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
       
 33430  $as_echo "$ac_cv_path_EGREP" >&6; }
       
 33431   EGREP="$ac_cv_path_EGREP"
       
 33432  
       
 33433  
       
 33434  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
       
 33435  $as_echo_n "checking for fgrep... " >&6; }
       
 33436 -if test "${ac_cv_path_FGREP+set}" = set; then :
       
 33437 +if ${ac_cv_path_FGREP+:} false; then :
       
 33438    $as_echo_n "(cached) " >&6
       
 33439  else
       
 33440    if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
       
 33441     then ac_cv_path_FGREP="$GREP -F"
       
 33442     else
       
 33443       if test -z "$FGREP"; then
       
 33444    ac_path_FGREP_found=false
       
 33445    # Loop through the user's path and test for each of PROGNAME-LIST
       
 33446    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 33447  for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
       
 33448  do
       
 33449    IFS=$as_save_IFS
       
 33450    test -z "$as_dir" && as_dir=.
       
 33451      for ac_prog in fgrep; do
       
 33452      for ac_exec_ext in '' $ac_executable_extensions; do
       
 33453        ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
       
 33454 -      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
       
 33455 +      as_fn_executable_p "$ac_path_FGREP" || continue
       
 33456  # Check for GNU ac_path_FGREP and select it if it is found.
       
 33457    # Check for GNU $ac_path_FGREP
       
 33458  case `"$ac_path_FGREP" --version 2>&1` in
       
 33459  *GNU*)
       
 33460    ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
       
 33461  *)
       
 33462    ac_count=0
       
 33463    $as_echo_n 0123456789 >"conftest.in"
       
 33464 @@ -4728,17 +4972,17 @@ case `"$ac_path_FGREP" --version 2>&1` i
       
 33465  esac
       
 33466  
       
 33467        $ac_path_FGREP_found && break 3
       
 33468      done
       
 33469    done
       
 33470    done
       
 33471  IFS=$as_save_IFS
       
 33472    if test -z "$ac_cv_path_FGREP"; then
       
 33473 -    as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
       
 33474 +    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
       
 33475    fi
       
 33476  else
       
 33477    ac_cv_path_FGREP=$FGREP
       
 33478  fi
       
 33479  
       
 33480     fi
       
 33481  fi
       
 33482  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
       
 33483 @@ -4807,17 +5051,17 @@ if test "$GCC" = yes; then
       
 33484    esac
       
 33485  elif test "$with_gnu_ld" = yes; then
       
 33486    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
       
 33487  $as_echo_n "checking for GNU ld... " >&6; }
       
 33488  else
       
 33489    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
       
 33490  $as_echo_n "checking for non-GNU ld... " >&6; }
       
 33491  fi
       
 33492 -if test "${lt_cv_path_LD+set}" = set; then :
       
 33493 +if ${lt_cv_path_LD+:} false; then :
       
 33494    $as_echo_n "(cached) " >&6
       
 33495  else
       
 33496    if test -z "$LD"; then
       
 33497    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
       
 33498    for ac_dir in $PATH; do
       
 33499      IFS="$lt_save_ifs"
       
 33500      test -z "$ac_dir" && ac_dir=.
       
 33501      if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
       
 33502 @@ -4844,20 +5088,20 @@ fi
       
 33503  LD="$lt_cv_path_LD"
       
 33504  if test -n "$LD"; then
       
 33505    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
       
 33506  $as_echo "$LD" >&6; }
       
 33507  else
       
 33508    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 33509  $as_echo "no" >&6; }
       
 33510  fi
       
 33511 -test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
       
 33512 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
       
 33513  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
       
 33514  $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
       
 33515 -if test "${lt_cv_prog_gnu_ld+set}" = set; then :
       
 33516 +if ${lt_cv_prog_gnu_ld+:} false; then :
       
 33517    $as_echo_n "(cached) " >&6
       
 33518  else
       
 33519    # I'd rather use --version here, but apparently some GNU lds only accept -v.
       
 33520  case `$LD -v 2>&1 </dev/null` in
       
 33521  *GNU* | *'with BFD'*)
       
 33522    lt_cv_prog_gnu_ld=yes
       
 33523    ;;
       
 33524  *)
       
 33525 @@ -4874,17 +5118,17 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
       
 33526  
       
 33527  
       
 33528  
       
 33529  
       
 33530  
       
 33531  
       
 33532  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
       
 33533  $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
       
 33534 -if test "${lt_cv_path_NM+set}" = set; then :
       
 33535 +if ${lt_cv_path_NM+:} false; then :
       
 33536    $as_echo_n "(cached) " >&6
       
 33537  else
       
 33538    if test -n "$NM"; then
       
 33539    # Let the user override the test.
       
 33540    lt_cv_path_NM="$NM"
       
 33541  else
       
 33542    lt_nm_to_check="${ac_tool_prefix}nm"
       
 33543    if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
       
 33544 @@ -4927,36 +5171,39 @@ else
       
 33545  fi
       
 33546  fi
       
 33547  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
       
 33548  $as_echo "$lt_cv_path_NM" >&6; }
       
 33549  if test "$lt_cv_path_NM" != "no"; then
       
 33550    NM="$lt_cv_path_NM"
       
 33551  else
       
 33552    # Didn't find any BSD compatible name lister, look for dumpbin.
       
 33553 -  if test -n "$ac_tool_prefix"; then
       
 33554 -  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
       
 33555 +  if test -n "$DUMPBIN"; then :
       
 33556 +    # Let the user override the test.
       
 33557 +  else
       
 33558 +    if test -n "$ac_tool_prefix"; then
       
 33559 +  for ac_prog in dumpbin "link -dump"
       
 33560    do
       
 33561      # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
       
 33562  set dummy $ac_tool_prefix$ac_prog; ac_word=$2
       
 33563  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 33564  $as_echo_n "checking for $ac_word... " >&6; }
       
 33565 -if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
       
 33566 +if ${ac_cv_prog_DUMPBIN+:} false; then :
       
 33567    $as_echo_n "(cached) " >&6
       
 33568  else
       
 33569    if test -n "$DUMPBIN"; then
       
 33570    ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
       
 33571  else
       
 33572  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 33573  for as_dir in $PATH
       
 33574  do
       
 33575    IFS=$as_save_IFS
       
 33576    test -z "$as_dir" && as_dir=.
       
 33577      for ac_exec_ext in '' $ac_executable_extensions; do
       
 33578 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 33579 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 33580      ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
       
 33581      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 33582      break 2
       
 33583    fi
       
 33584  done
       
 33585    done
       
 33586  IFS=$as_save_IFS
       
 33587  
       
 33588 @@ -4972,35 +5219,35 @@ else
       
 33589  fi
       
 33590  
       
 33591  
       
 33592      test -n "$DUMPBIN" && break
       
 33593    done
       
 33594  fi
       
 33595  if test -z "$DUMPBIN"; then
       
 33596    ac_ct_DUMPBIN=$DUMPBIN
       
 33597 -  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
       
 33598 +  for ac_prog in dumpbin "link -dump"
       
 33599  do
       
 33600    # Extract the first word of "$ac_prog", so it can be a program name with args.
       
 33601  set dummy $ac_prog; ac_word=$2
       
 33602  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 33603  $as_echo_n "checking for $ac_word... " >&6; }
       
 33604 -if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
       
 33605 +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
       
 33606    $as_echo_n "(cached) " >&6
       
 33607  else
       
 33608    if test -n "$ac_ct_DUMPBIN"; then
       
 33609    ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
       
 33610  else
       
 33611  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 33612  for as_dir in $PATH
       
 33613  do
       
 33614    IFS=$as_save_IFS
       
 33615    test -z "$as_dir" && as_dir=.
       
 33616      for ac_exec_ext in '' $ac_executable_extensions; do
       
 33617 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 33618 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 33619      ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
       
 33620      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 33621      break 2
       
 33622    fi
       
 33623  done
       
 33624    done
       
 33625  IFS=$as_save_IFS
       
 33626  
       
 33627 @@ -5027,42 +5274,51 @@ yes:)
       
 33628  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
       
 33629  $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
       
 33630  ac_tool_warned=yes ;;
       
 33631  esac
       
 33632      DUMPBIN=$ac_ct_DUMPBIN
       
 33633    fi
       
 33634  fi
       
 33635  
       
 33636 +    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
       
 33637 +    *COFF*)
       
 33638 +      DUMPBIN="$DUMPBIN -symbols"
       
 33639 +      ;;
       
 33640 +    *)
       
 33641 +      DUMPBIN=:
       
 33642 +      ;;
       
 33643 +    esac
       
 33644 +  fi
       
 33645  
       
 33646    if test "$DUMPBIN" != ":"; then
       
 33647      NM="$DUMPBIN"
       
 33648    fi
       
 33649  fi
       
 33650  test -z "$NM" && NM=nm
       
 33651  
       
 33652  
       
 33653  
       
 33654  
       
 33655  
       
 33656  
       
 33657  { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
       
 33658  $as_echo_n "checking the name lister ($NM) interface... " >&6; }
       
 33659 -if test "${lt_cv_nm_interface+set}" = set; then :
       
 33660 +if ${lt_cv_nm_interface+:} false; then :
       
 33661    $as_echo_n "(cached) " >&6
       
 33662  else
       
 33663    lt_cv_nm_interface="BSD nm"
       
 33664    echo "int some_variable = 0;" > conftest.$ac_ext
       
 33665 -  (eval echo "\"\$as_me:5054: $ac_compile\"" >&5)
       
 33666 +  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
       
 33667    (eval "$ac_compile" 2>conftest.err)
       
 33668    cat conftest.err >&5
       
 33669 -  (eval echo "\"\$as_me:5057: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
       
 33670 +  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
       
 33671    (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
       
 33672    cat conftest.err >&5
       
 33673 -  (eval echo "\"\$as_me:5060: output\"" >&5)
       
 33674 +  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
       
 33675    cat conftest.out >&5
       
 33676    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
       
 33677      lt_cv_nm_interface="MS dumpbin"
       
 33678    fi
       
 33679    rm -f conftest*
       
 33680  fi
       
 33681  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
       
 33682  $as_echo "$lt_cv_nm_interface" >&6; }
       
 33683 @@ -5076,17 +5332,17 @@ if test "$LN_S" = "ln -s"; then
       
 33684  else
       
 33685    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
       
 33686  $as_echo "no, using $LN_S" >&6; }
       
 33687  fi
       
 33688  
       
 33689  # find the maximum length of command line arguments
       
 33690  { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
       
 33691  $as_echo_n "checking the maximum length of command line arguments... " >&6; }
       
 33692 -if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
       
 33693 +if ${lt_cv_sys_max_cmd_len+:} false; then :
       
 33694    $as_echo_n "(cached) " >&6
       
 33695  else
       
 33696      i=0
       
 33697    teststring="ABCD"
       
 33698  
       
 33699    case $build_os in
       
 33700    msdosdjgpp*)
       
 33701      # On DJGPP, this test can blow up pretty badly due to problems in libc
       
 33702 @@ -5109,16 +5365,21 @@ else
       
 33703      # Worse, since 9x/ME are not pre-emptively multitasking,
       
 33704      # you end up with a "frozen" computer, even though with patience
       
 33705      # the test eventually succeeds (with a max line length of 256k).
       
 33706      # Instead, let's just punt: use the minimum linelength reported by
       
 33707      # all of the supported platforms: 8192 (on NT/2K/XP).
       
 33708      lt_cv_sys_max_cmd_len=8192;
       
 33709      ;;
       
 33710  
       
 33711 +  mint*)
       
 33712 +    # On MiNT this can take a long time and run out of memory.
       
 33713 +    lt_cv_sys_max_cmd_len=8192;
       
 33714 +    ;;
       
 33715 +
       
 33716    amigaos*)
       
 33717      # On AmigaOS with pdksh, this test takes hours, literally.
       
 33718      # So we just punt and use a minimum line length of 8192.
       
 33719      lt_cv_sys_max_cmd_len=8192;
       
 33720      ;;
       
 33721  
       
 33722    netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
       
 33723      # This has been around since 386BSD, at least.  Likely further.
       
 33724 @@ -5134,16 +5395,21 @@ else
       
 33725      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
       
 33726      ;;
       
 33727  
       
 33728    interix*)
       
 33729      # We know the value 262144 and hardcode it with a safety zone (like BSD)
       
 33730      lt_cv_sys_max_cmd_len=196608
       
 33731      ;;
       
 33732  
       
 33733 +  os2*)
       
 33734 +    # The test takes a long time on OS/2.
       
 33735 +    lt_cv_sys_max_cmd_len=8192
       
 33736 +    ;;
       
 33737 +
       
 33738    osf*)
       
 33739      # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
       
 33740      # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
       
 33741      # nice to cause kernel panics so lets avoid the loop below.
       
 33742      # First set a reasonable default.
       
 33743      lt_cv_sys_max_cmd_len=16384
       
 33744      #
       
 33745      if test -x /sbin/sysconfig; then
       
 33746 @@ -5173,18 +5439,18 @@ else
       
 33747        # a 1K string should be a reasonable start.
       
 33748        for i in 1 2 3 4 5 6 7 8 ; do
       
 33749          teststring=$teststring$teststring
       
 33750        done
       
 33751        SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
       
 33752        # If test is not a shell built-in, we'll probably end up computing a
       
 33753        # maximum length that is only half of the actual maximum length, but
       
 33754        # we can't tell.
       
 33755 -      while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
       
 33756 -	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
       
 33757 +      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
       
 33758 +	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
       
 33759  	      test $i != 17 # 1/2 MB should be enough
       
 33760        do
       
 33761          i=`expr $i + 1`
       
 33762          teststring=$teststring$teststring
       
 33763        done
       
 33764        # Only check the string length outside the loop.
       
 33765        lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
       
 33766        teststring=
       
 33767 @@ -5216,18 +5482,18 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
       
 33768  : ${MV="mv -f"}
       
 33769  : ${RM="rm -f"}
       
 33770  
       
 33771  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
       
 33772  $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
       
 33773  # Try some XSI features
       
 33774  xsi_shell=no
       
 33775  ( _lt_dummy="a/b/c"
       
 33776 -  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
       
 33777 -      = c,a/b,, \
       
 33778 +  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
       
 33779 +      = c,a/b,b/c, \
       
 33780      && eval 'test $(( 1 + 1 )) -eq 2 \
       
 33781      && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
       
 33782    && xsi_shell=yes
       
 33783  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
       
 33784  $as_echo "$xsi_shell" >&6; }
       
 33785  
       
 33786  
       
 33787  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
       
 33788 @@ -5266,32 +5532,111 @@ esac
       
 33789  
       
 33790  
       
 33791  
       
 33792  
       
 33793  
       
 33794  
       
 33795  
       
 33796  
       
 33797 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
       
 33798 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
       
 33799 +if ${lt_cv_to_host_file_cmd+:} false; then :
       
 33800 +  $as_echo_n "(cached) " >&6
       
 33801 +else
       
 33802 +  case $host in
       
 33803 +  *-*-mingw* )
       
 33804 +    case $build in
       
 33805 +      *-*-mingw* ) # actually msys
       
 33806 +        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
       
 33807 +        ;;
       
 33808 +      *-*-cygwin* )
       
 33809 +        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
       
 33810 +        ;;
       
 33811 +      * ) # otherwise, assume *nix
       
 33812 +        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
       
 33813 +        ;;
       
 33814 +    esac
       
 33815 +    ;;
       
 33816 +  *-*-cygwin* )
       
 33817 +    case $build in
       
 33818 +      *-*-mingw* ) # actually msys
       
 33819 +        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
       
 33820 +        ;;
       
 33821 +      *-*-cygwin* )
       
 33822 +        lt_cv_to_host_file_cmd=func_convert_file_noop
       
 33823 +        ;;
       
 33824 +      * ) # otherwise, assume *nix
       
 33825 +        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
       
 33826 +        ;;
       
 33827 +    esac
       
 33828 +    ;;
       
 33829 +  * ) # unhandled hosts (and "normal" native builds)
       
 33830 +    lt_cv_to_host_file_cmd=func_convert_file_noop
       
 33831 +    ;;
       
 33832 +esac
       
 33833 +
       
 33834 +fi
       
 33835 +
       
 33836 +to_host_file_cmd=$lt_cv_to_host_file_cmd
       
 33837 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
       
 33838 +$as_echo "$lt_cv_to_host_file_cmd" >&6; }
       
 33839 +
       
 33840 +
       
 33841 +
       
 33842 +
       
 33843 +
       
 33844 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
       
 33845 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
       
 33846 +if ${lt_cv_to_tool_file_cmd+:} false; then :
       
 33847 +  $as_echo_n "(cached) " >&6
       
 33848 +else
       
 33849 +  #assume ordinary cross tools, or native build.
       
 33850 +lt_cv_to_tool_file_cmd=func_convert_file_noop
       
 33851 +case $host in
       
 33852 +  *-*-mingw* )
       
 33853 +    case $build in
       
 33854 +      *-*-mingw* ) # actually msys
       
 33855 +        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
       
 33856 +        ;;
       
 33857 +    esac
       
 33858 +    ;;
       
 33859 +esac
       
 33860 +
       
 33861 +fi
       
 33862 +
       
 33863 +to_tool_file_cmd=$lt_cv_to_tool_file_cmd
       
 33864 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
       
 33865 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
       
 33866 +
       
 33867 +
       
 33868 +
       
 33869 +
       
 33870 +
       
 33871  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
       
 33872  $as_echo_n "checking for $LD option to reload object files... " >&6; }
       
 33873 -if test "${lt_cv_ld_reload_flag+set}" = set; then :
       
 33874 +if ${lt_cv_ld_reload_flag+:} false; then :
       
 33875    $as_echo_n "(cached) " >&6
       
 33876  else
       
 33877    lt_cv_ld_reload_flag='-r'
       
 33878  fi
       
 33879  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
       
 33880  $as_echo "$lt_cv_ld_reload_flag" >&6; }
       
 33881  reload_flag=$lt_cv_ld_reload_flag
       
 33882  case $reload_flag in
       
 33883  "" | " "*) ;;
       
 33884  *) reload_flag=" $reload_flag" ;;
       
 33885  esac
       
 33886  reload_cmds='$LD$reload_flag -o $output$reload_objs'
       
 33887  case $host_os in
       
 33888 +  cygwin* | mingw* | pw32* | cegcc*)
       
 33889 +    if test "$GCC" != yes; then
       
 33890 +      reload_cmds=false
       
 33891 +    fi
       
 33892 +    ;;
       
 33893    darwin*)
       
 33894      if test "$GCC" = yes; then
       
 33895        reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
       
 33896      else
       
 33897        reload_cmds='$LD$reload_flag -o $output$reload_objs'
       
 33898      fi
       
 33899      ;;
       
 33900  esac
       
 33901 @@ -5304,29 +5649,29 @@ esac
       
 33902  
       
 33903  
       
 33904  
       
 33905  if test -n "$ac_tool_prefix"; then
       
 33906    # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
       
 33907  set dummy ${ac_tool_prefix}objdump; ac_word=$2
       
 33908  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 33909  $as_echo_n "checking for $ac_word... " >&6; }
       
 33910 -if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
       
 33911 +if ${ac_cv_prog_OBJDUMP+:} false; then :
       
 33912    $as_echo_n "(cached) " >&6
       
 33913  else
       
 33914    if test -n "$OBJDUMP"; then
       
 33915    ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
       
 33916  else
       
 33917  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 33918  for as_dir in $PATH
       
 33919  do
       
 33920    IFS=$as_save_IFS
       
 33921    test -z "$as_dir" && as_dir=.
       
 33922      for ac_exec_ext in '' $ac_executable_extensions; do
       
 33923 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 33924 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 33925      ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
       
 33926      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 33927      break 2
       
 33928    fi
       
 33929  done
       
 33930    done
       
 33931  IFS=$as_save_IFS
       
 33932  
       
 33933 @@ -5344,29 +5689,29 @@ fi
       
 33934  
       
 33935  fi
       
 33936  if test -z "$ac_cv_prog_OBJDUMP"; then
       
 33937    ac_ct_OBJDUMP=$OBJDUMP
       
 33938    # Extract the first word of "objdump", so it can be a program name with args.
       
 33939  set dummy objdump; ac_word=$2
       
 33940  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 33941  $as_echo_n "checking for $ac_word... " >&6; }
       
 33942 -if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
       
 33943 +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
       
 33944    $as_echo_n "(cached) " >&6
       
 33945  else
       
 33946    if test -n "$ac_ct_OBJDUMP"; then
       
 33947    ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
       
 33948  else
       
 33949  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 33950  for as_dir in $PATH
       
 33951  do
       
 33952    IFS=$as_save_IFS
       
 33953    test -z "$as_dir" && as_dir=.
       
 33954      for ac_exec_ext in '' $ac_executable_extensions; do
       
 33955 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 33956 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 33957      ac_cv_prog_ac_ct_OBJDUMP="objdump"
       
 33958      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 33959      break 2
       
 33960    fi
       
 33961  done
       
 33962    done
       
 33963  IFS=$as_save_IFS
       
 33964  
       
 33965 @@ -5403,17 +5748,17 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
       
 33966  
       
 33967  
       
 33968  
       
 33969  
       
 33970  
       
 33971  
       
 33972  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
       
 33973  $as_echo_n "checking how to recognize dependent libraries... " >&6; }
       
 33974 -if test "${lt_cv_deplibs_check_method+set}" = set; then :
       
 33975 +if ${lt_cv_deplibs_check_method+:} false; then :
       
 33976    $as_echo_n "(cached) " >&6
       
 33977  else
       
 33978    lt_cv_file_magic_cmd='$MAGIC_CMD'
       
 33979  lt_cv_file_magic_test_file=
       
 33980  lt_cv_deplibs_check_method='unknown'
       
 33981  # Need to set the preceding variable on all platforms that support
       
 33982  # interlibrary dependencies.
       
 33983  # 'none' -- dependencies not supported.
       
 33984 @@ -5445,26 +5790,28 @@ cygwin*)
       
 33985    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
       
 33986    lt_cv_file_magic_cmd='func_win32_libid'
       
 33987    ;;
       
 33988  
       
 33989  mingw* | pw32*)
       
 33990    # Base MSYS/MinGW do not provide the 'file' command needed by
       
 33991    # func_win32_libid shell function, so use a weaker test based on 'objdump',
       
 33992    # unless we find 'file', for example because we are cross-compiling.
       
 33993 -  if ( file / ) >/dev/null 2>&1; then
       
 33994 +  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
       
 33995 +  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
       
 33996      lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
       
 33997      lt_cv_file_magic_cmd='func_win32_libid'
       
 33998    else
       
 33999 -    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
       
 34000 +    # Keep this pattern in sync with the one in func_win32_libid.
       
 34001 +    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
       
 34002      lt_cv_file_magic_cmd='$OBJDUMP -f'
       
 34003    fi
       
 34004    ;;
       
 34005  
       
 34006 -cegcc)
       
 34007 +cegcc*)
       
 34008    # use the weaker test based on 'objdump'. See mingw*.
       
 34009    lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
       
 34010    lt_cv_file_magic_cmd='$OBJDUMP -f'
       
 34011    ;;
       
 34012  
       
 34013  darwin* | rhapsody*)
       
 34014    lt_cv_deplibs_check_method=pass_all
       
 34015    ;;
       
 34016 @@ -5484,29 +5831,33 @@ freebsd* | dragonfly*)
       
 34017      lt_cv_deplibs_check_method=pass_all
       
 34018    fi
       
 34019    ;;
       
 34020  
       
 34021  gnu*)
       
 34022    lt_cv_deplibs_check_method=pass_all
       
 34023    ;;
       
 34024  
       
 34025 +haiku*)
       
 34026 +  lt_cv_deplibs_check_method=pass_all
       
 34027 +  ;;
       
 34028 +
       
 34029  hpux10.20* | hpux11*)
       
 34030    lt_cv_file_magic_cmd=/usr/bin/file
       
 34031    case $host_cpu in
       
 34032    ia64*)
       
 34033      lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
       
 34034      lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
       
 34035      ;;
       
 34036    hppa*64*)
       
 34037 -    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]'
       
 34038 +    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]'
       
 34039      lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
       
 34040      ;;
       
 34041    *)
       
 34042 -    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
       
 34043 +    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
       
 34044      lt_cv_file_magic_test_file=/usr/lib/libc.sl
       
 34045      ;;
       
 34046    esac
       
 34047    ;;
       
 34048  
       
 34049  interix[3-9]*)
       
 34050    # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
       
 34051    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
       
 34052 @@ -5517,18 +5868,18 @@ irix5* | irix6* | nonstopux*)
       
 34053    *-32|*"-32 ") libmagic=32-bit;;
       
 34054    *-n32|*"-n32 ") libmagic=N32;;
       
 34055    *-64|*"-64 ") libmagic=64-bit;;
       
 34056    *) libmagic=never-match;;
       
 34057    esac
       
 34058    lt_cv_deplibs_check_method=pass_all
       
 34059    ;;
       
 34060  
       
 34061 -# This must be Linux ELF.
       
 34062 -linux* | k*bsd*-gnu)
       
 34063 +# This must be glibc/ELF.
       
 34064 +linux* | k*bsd*-gnu | kopensolaris*-gnu)
       
 34065    lt_cv_deplibs_check_method=pass_all
       
 34066    ;;
       
 34067  
       
 34068  netbsd*)
       
 34069    if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
       
 34070      lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
       
 34071    else
       
 34072      lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
       
 34073 @@ -5599,154 +5950,387 @@ sysv4 | sysv4.3*)
       
 34074  tpf*)
       
 34075    lt_cv_deplibs_check_method=pass_all
       
 34076    ;;
       
 34077  esac
       
 34078  
       
 34079  fi
       
 34080  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
       
 34081  $as_echo "$lt_cv_deplibs_check_method" >&6; }
       
 34082 +
       
 34083 +file_magic_glob=
       
 34084 +want_nocaseglob=no
       
 34085 +if test "$build" = "$host"; then
       
 34086 +  case $host_os in
       
 34087 +  mingw* | pw32*)
       
 34088 +    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
       
 34089 +      want_nocaseglob=yes
       
 34090 +    else
       
 34091 +      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
       
 34092 +    fi
       
 34093 +    ;;
       
 34094 +  esac
       
 34095 +fi
       
 34096 +
       
 34097  file_magic_cmd=$lt_cv_file_magic_cmd
       
 34098  deplibs_check_method=$lt_cv_deplibs_check_method
       
 34099  test -z "$deplibs_check_method" && deplibs_check_method=unknown
       
 34100  
       
 34101  
       
 34102  
       
 34103  
       
 34104  
       
 34105  
       
 34106  
       
 34107  
       
 34108  
       
 34109  
       
 34110  
       
 34111  
       
 34112 +
       
 34113 +
       
 34114 +
       
 34115 +
       
 34116 +
       
 34117 +
       
 34118 +
       
 34119 +
       
 34120 +
       
 34121 +
       
 34122  if test -n "$ac_tool_prefix"; then
       
 34123 -  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
       
 34124 -set dummy ${ac_tool_prefix}ar; ac_word=$2
       
 34125 +  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
       
 34126 +set dummy ${ac_tool_prefix}dlltool; ac_word=$2
       
 34127  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 34128  $as_echo_n "checking for $ac_word... " >&6; }
       
 34129 -if test "${ac_cv_prog_AR+set}" = set; then :
       
 34130 -  $as_echo_n "(cached) " >&6
       
 34131 -else
       
 34132 -  if test -n "$AR"; then
       
 34133 -  ac_cv_prog_AR="$AR" # Let the user override the test.
       
 34134 +if ${ac_cv_prog_DLLTOOL+:} false; then :
       
 34135 +  $as_echo_n "(cached) " >&6
       
 34136 +else
       
 34137 +  if test -n "$DLLTOOL"; then
       
 34138 +  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
       
 34139  else
       
 34140  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 34141  for as_dir in $PATH
       
 34142  do
       
 34143    IFS=$as_save_IFS
       
 34144    test -z "$as_dir" && as_dir=.
       
 34145      for ac_exec_ext in '' $ac_executable_extensions; do
       
 34146 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 34147 -    ac_cv_prog_AR="${ac_tool_prefix}ar"
       
 34148 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 34149 +    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
       
 34150      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 34151      break 2
       
 34152    fi
       
 34153  done
       
 34154    done
       
 34155  IFS=$as_save_IFS
       
 34156  
       
 34157  fi
       
 34158  fi
       
 34159 -AR=$ac_cv_prog_AR
       
 34160 -if test -n "$AR"; then
       
 34161 -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
       
 34162 -$as_echo "$AR" >&6; }
       
 34163 +DLLTOOL=$ac_cv_prog_DLLTOOL
       
 34164 +if test -n "$DLLTOOL"; then
       
 34165 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
       
 34166 +$as_echo "$DLLTOOL" >&6; }
       
 34167  else
       
 34168    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 34169  $as_echo "no" >&6; }
       
 34170  fi
       
 34171  
       
 34172  
       
 34173  fi
       
 34174 -if test -z "$ac_cv_prog_AR"; then
       
 34175 -  ac_ct_AR=$AR
       
 34176 -  # Extract the first word of "ar", so it can be a program name with args.
       
 34177 -set dummy ar; ac_word=$2
       
 34178 +if test -z "$ac_cv_prog_DLLTOOL"; then
       
 34179 +  ac_ct_DLLTOOL=$DLLTOOL
       
 34180 +  # Extract the first word of "dlltool", so it can be a program name with args.
       
 34181 +set dummy dlltool; ac_word=$2
       
 34182  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 34183  $as_echo_n "checking for $ac_word... " >&6; }
       
 34184 -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
       
 34185 -  $as_echo_n "(cached) " >&6
       
 34186 -else
       
 34187 -  if test -n "$ac_ct_AR"; then
       
 34188 -  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
       
 34189 +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
       
 34190 +  $as_echo_n "(cached) " >&6
       
 34191 +else
       
 34192 +  if test -n "$ac_ct_DLLTOOL"; then
       
 34193 +  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
       
 34194  else
       
 34195  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 34196  for as_dir in $PATH
       
 34197  do
       
 34198    IFS=$as_save_IFS
       
 34199    test -z "$as_dir" && as_dir=.
       
 34200      for ac_exec_ext in '' $ac_executable_extensions; do
       
 34201 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 34202 -    ac_cv_prog_ac_ct_AR="ar"
       
 34203 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 34204 +    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
       
 34205      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 34206      break 2
       
 34207    fi
       
 34208  done
       
 34209    done
       
 34210  IFS=$as_save_IFS
       
 34211  
       
 34212  fi
       
 34213  fi
       
 34214 -ac_ct_AR=$ac_cv_prog_ac_ct_AR
       
 34215 -if test -n "$ac_ct_AR"; then
       
 34216 -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
       
 34217 -$as_echo "$ac_ct_AR" >&6; }
       
 34218 +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
       
 34219 +if test -n "$ac_ct_DLLTOOL"; then
       
 34220 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
       
 34221 +$as_echo "$ac_ct_DLLTOOL" >&6; }
       
 34222  else
       
 34223    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 34224  $as_echo "no" >&6; }
       
 34225  fi
       
 34226  
       
 34227 -  if test "x$ac_ct_AR" = x; then
       
 34228 -    AR="false"
       
 34229 +  if test "x$ac_ct_DLLTOOL" = x; then
       
 34230 +    DLLTOOL="false"
       
 34231    else
       
 34232      case $cross_compiling:$ac_tool_warned in
       
 34233  yes:)
       
 34234  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
       
 34235  $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
       
 34236  ac_tool_warned=yes ;;
       
 34237  esac
       
 34238 +    DLLTOOL=$ac_ct_DLLTOOL
       
 34239 +  fi
       
 34240 +else
       
 34241 +  DLLTOOL="$ac_cv_prog_DLLTOOL"
       
 34242 +fi
       
 34243 +
       
 34244 +test -z "$DLLTOOL" && DLLTOOL=dlltool
       
 34245 +
       
 34246 +
       
 34247 +
       
 34248 +
       
 34249 +
       
 34250 +
       
 34251 +
       
 34252 +
       
 34253 +
       
 34254 +
       
 34255 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
       
 34256 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
       
 34257 +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
       
 34258 +  $as_echo_n "(cached) " >&6
       
 34259 +else
       
 34260 +  lt_cv_sharedlib_from_linklib_cmd='unknown'
       
 34261 +
       
 34262 +case $host_os in
       
 34263 +cygwin* | mingw* | pw32* | cegcc*)
       
 34264 +  # two different shell functions defined in ltmain.sh
       
 34265 +  # decide which to use based on capabilities of $DLLTOOL
       
 34266 +  case `$DLLTOOL --help 2>&1` in
       
 34267 +  *--identify-strict*)
       
 34268 +    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
       
 34269 +    ;;
       
 34270 +  *)
       
 34271 +    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
       
 34272 +    ;;
       
 34273 +  esac
       
 34274 +  ;;
       
 34275 +*)
       
 34276 +  # fallback: assume linklib IS sharedlib
       
 34277 +  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
       
 34278 +  ;;
       
 34279 +esac
       
 34280 +
       
 34281 +fi
       
 34282 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
       
 34283 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
       
 34284 +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
       
 34285 +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
       
 34286 +
       
 34287 +
       
 34288 +
       
 34289 +
       
 34290 +
       
 34291 +
       
 34292 +
       
 34293 +
       
 34294 +if test -n "$ac_tool_prefix"; then
       
 34295 +  for ac_prog in ar
       
 34296 +  do
       
 34297 +    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
       
 34298 +set dummy $ac_tool_prefix$ac_prog; ac_word=$2
       
 34299 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 34300 +$as_echo_n "checking for $ac_word... " >&6; }
       
 34301 +if ${ac_cv_prog_AR+:} false; then :
       
 34302 +  $as_echo_n "(cached) " >&6
       
 34303 +else
       
 34304 +  if test -n "$AR"; then
       
 34305 +  ac_cv_prog_AR="$AR" # Let the user override the test.
       
 34306 +else
       
 34307 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 34308 +for as_dir in $PATH
       
 34309 +do
       
 34310 +  IFS=$as_save_IFS
       
 34311 +  test -z "$as_dir" && as_dir=.
       
 34312 +    for ac_exec_ext in '' $ac_executable_extensions; do
       
 34313 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 34314 +    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
       
 34315 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 34316 +    break 2
       
 34317 +  fi
       
 34318 +done
       
 34319 +  done
       
 34320 +IFS=$as_save_IFS
       
 34321 +
       
 34322 +fi
       
 34323 +fi
       
 34324 +AR=$ac_cv_prog_AR
       
 34325 +if test -n "$AR"; then
       
 34326 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
       
 34327 +$as_echo "$AR" >&6; }
       
 34328 +else
       
 34329 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 34330 +$as_echo "no" >&6; }
       
 34331 +fi
       
 34332 +
       
 34333 +
       
 34334 +    test -n "$AR" && break
       
 34335 +  done
       
 34336 +fi
       
 34337 +if test -z "$AR"; then
       
 34338 +  ac_ct_AR=$AR
       
 34339 +  for ac_prog in ar
       
 34340 +do
       
 34341 +  # Extract the first word of "$ac_prog", so it can be a program name with args.
       
 34342 +set dummy $ac_prog; ac_word=$2
       
 34343 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 34344 +$as_echo_n "checking for $ac_word... " >&6; }
       
 34345 +if ${ac_cv_prog_ac_ct_AR+:} false; then :
       
 34346 +  $as_echo_n "(cached) " >&6
       
 34347 +else
       
 34348 +  if test -n "$ac_ct_AR"; then
       
 34349 +  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
       
 34350 +else
       
 34351 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 34352 +for as_dir in $PATH
       
 34353 +do
       
 34354 +  IFS=$as_save_IFS
       
 34355 +  test -z "$as_dir" && as_dir=.
       
 34356 +    for ac_exec_ext in '' $ac_executable_extensions; do
       
 34357 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 34358 +    ac_cv_prog_ac_ct_AR="$ac_prog"
       
 34359 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 34360 +    break 2
       
 34361 +  fi
       
 34362 +done
       
 34363 +  done
       
 34364 +IFS=$as_save_IFS
       
 34365 +
       
 34366 +fi
       
 34367 +fi
       
 34368 +ac_ct_AR=$ac_cv_prog_ac_ct_AR
       
 34369 +if test -n "$ac_ct_AR"; then
       
 34370 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
       
 34371 +$as_echo "$ac_ct_AR" >&6; }
       
 34372 +else
       
 34373 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 34374 +$as_echo "no" >&6; }
       
 34375 +fi
       
 34376 +
       
 34377 +
       
 34378 +  test -n "$ac_ct_AR" && break
       
 34379 +done
       
 34380 +
       
 34381 +  if test "x$ac_ct_AR" = x; then
       
 34382 +    AR="false"
       
 34383 +  else
       
 34384 +    case $cross_compiling:$ac_tool_warned in
       
 34385 +yes:)
       
 34386 +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
       
 34387 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
       
 34388 +ac_tool_warned=yes ;;
       
 34389 +esac
       
 34390      AR=$ac_ct_AR
       
 34391    fi
       
 34392 -else
       
 34393 -  AR="$ac_cv_prog_AR"
       
 34394 -fi
       
 34395 -
       
 34396 -test -z "$AR" && AR=ar
       
 34397 -test -z "$AR_FLAGS" && AR_FLAGS=cru
       
 34398 -
       
 34399 -
       
 34400 -
       
 34401 -
       
 34402 +fi
       
 34403 +
       
 34404 +: ${AR=ar}
       
 34405 +: ${AR_FLAGS=cru}
       
 34406 +
       
 34407 +
       
 34408 +
       
 34409 +
       
 34410 +
       
 34411 +
       
 34412 +
       
 34413 +
       
 34414 +
       
 34415 +
       
 34416 +
       
 34417 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
       
 34418 +$as_echo_n "checking for archiver @FILE support... " >&6; }
       
 34419 +if ${lt_cv_ar_at_file+:} false; then :
       
 34420 +  $as_echo_n "(cached) " >&6
       
 34421 +else
       
 34422 +  lt_cv_ar_at_file=no
       
 34423 +   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 34424 +/* end confdefs.h.  */
       
 34425 +
       
 34426 +int
       
 34427 +main ()
       
 34428 +{
       
 34429 +
       
 34430 +  ;
       
 34431 +  return 0;
       
 34432 +}
       
 34433 +_ACEOF
       
 34434 +if ac_fn_c_try_compile "$LINENO"; then :
       
 34435 +  echo conftest.$ac_objext > conftest.lst
       
 34436 +      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
       
 34437 +      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
       
 34438 +  (eval $lt_ar_try) 2>&5
       
 34439 +  ac_status=$?
       
 34440 +  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 34441 +  test $ac_status = 0; }
       
 34442 +      if test "$ac_status" -eq 0; then
       
 34443 +	# Ensure the archiver fails upon bogus file names.
       
 34444 +	rm -f conftest.$ac_objext libconftest.a
       
 34445 +	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
       
 34446 +  (eval $lt_ar_try) 2>&5
       
 34447 +  ac_status=$?
       
 34448 +  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 34449 +  test $ac_status = 0; }
       
 34450 +	if test "$ac_status" -ne 0; then
       
 34451 +          lt_cv_ar_at_file=@
       
 34452 +        fi
       
 34453 +      fi
       
 34454 +      rm -f conftest.* libconftest.a
       
 34455 +
       
 34456 +fi
       
 34457 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 34458 +
       
 34459 +fi
       
 34460 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
       
 34461 +$as_echo "$lt_cv_ar_at_file" >&6; }
       
 34462 +
       
 34463 +if test "x$lt_cv_ar_at_file" = xno; then
       
 34464 +  archiver_list_spec=
       
 34465 +else
       
 34466 +  archiver_list_spec=$lt_cv_ar_at_file
       
 34467 +fi
       
 34468  
       
 34469  
       
 34470  
       
 34471  
       
 34472  
       
 34473  
       
 34474  
       
 34475  if test -n "$ac_tool_prefix"; then
       
 34476    # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
       
 34477  set dummy ${ac_tool_prefix}strip; ac_word=$2
       
 34478  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 34479  $as_echo_n "checking for $ac_word... " >&6; }
       
 34480 -if test "${ac_cv_prog_STRIP+set}" = set; then :
       
 34481 +if ${ac_cv_prog_STRIP+:} false; then :
       
 34482    $as_echo_n "(cached) " >&6
       
 34483  else
       
 34484    if test -n "$STRIP"; then
       
 34485    ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
       
 34486  else
       
 34487  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 34488  for as_dir in $PATH
       
 34489  do
       
 34490    IFS=$as_save_IFS
       
 34491    test -z "$as_dir" && as_dir=.
       
 34492      for ac_exec_ext in '' $ac_executable_extensions; do
       
 34493 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 34494 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 34495      ac_cv_prog_STRIP="${ac_tool_prefix}strip"
       
 34496      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 34497      break 2
       
 34498    fi
       
 34499  done
       
 34500    done
       
 34501  IFS=$as_save_IFS
       
 34502  
       
 34503 @@ -5764,29 +6348,29 @@ fi
       
 34504  
       
 34505  fi
       
 34506  if test -z "$ac_cv_prog_STRIP"; then
       
 34507    ac_ct_STRIP=$STRIP
       
 34508    # Extract the first word of "strip", so it can be a program name with args.
       
 34509  set dummy strip; ac_word=$2
       
 34510  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 34511  $as_echo_n "checking for $ac_word... " >&6; }
       
 34512 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
       
 34513 +if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
       
 34514    $as_echo_n "(cached) " >&6
       
 34515  else
       
 34516    if test -n "$ac_ct_STRIP"; then
       
 34517    ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
       
 34518  else
       
 34519  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 34520  for as_dir in $PATH
       
 34521  do
       
 34522    IFS=$as_save_IFS
       
 34523    test -z "$as_dir" && as_dir=.
       
 34524      for ac_exec_ext in '' $ac_executable_extensions; do
       
 34525 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 34526 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 34527      ac_cv_prog_ac_ct_STRIP="strip"
       
 34528      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 34529      break 2
       
 34530    fi
       
 34531  done
       
 34532    done
       
 34533  IFS=$as_save_IFS
       
 34534  
       
 34535 @@ -5823,29 +6407,29 @@ test -z "$STRIP" && STRIP=:
       
 34536  
       
 34537  
       
 34538  
       
 34539  if test -n "$ac_tool_prefix"; then
       
 34540    # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
       
 34541  set dummy ${ac_tool_prefix}ranlib; ac_word=$2
       
 34542  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 34543  $as_echo_n "checking for $ac_word... " >&6; }
       
 34544 -if test "${ac_cv_prog_RANLIB+set}" = set; then :
       
 34545 +if ${ac_cv_prog_RANLIB+:} false; then :
       
 34546    $as_echo_n "(cached) " >&6
       
 34547  else
       
 34548    if test -n "$RANLIB"; then
       
 34549    ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
       
 34550  else
       
 34551  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 34552  for as_dir in $PATH
       
 34553  do
       
 34554    IFS=$as_save_IFS
       
 34555    test -z "$as_dir" && as_dir=.
       
 34556      for ac_exec_ext in '' $ac_executable_extensions; do
       
 34557 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 34558 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 34559      ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
       
 34560      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 34561      break 2
       
 34562    fi
       
 34563  done
       
 34564    done
       
 34565  IFS=$as_save_IFS
       
 34566  
       
 34567 @@ -5863,29 +6447,29 @@ fi
       
 34568  
       
 34569  fi
       
 34570  if test -z "$ac_cv_prog_RANLIB"; then
       
 34571    ac_ct_RANLIB=$RANLIB
       
 34572    # Extract the first word of "ranlib", so it can be a program name with args.
       
 34573  set dummy ranlib; ac_word=$2
       
 34574  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 34575  $as_echo_n "checking for $ac_word... " >&6; }
       
 34576 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
       
 34577 +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
       
 34578    $as_echo_n "(cached) " >&6
       
 34579  else
       
 34580    if test -n "$ac_ct_RANLIB"; then
       
 34581    ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
       
 34582  else
       
 34583  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 34584  for as_dir in $PATH
       
 34585  do
       
 34586    IFS=$as_save_IFS
       
 34587    test -z "$as_dir" && as_dir=.
       
 34588      for ac_exec_ext in '' $ac_executable_extensions; do
       
 34589 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 34590 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 34591      ac_cv_prog_ac_ct_RANLIB="ranlib"
       
 34592      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 34593      break 2
       
 34594    fi
       
 34595  done
       
 34596    done
       
 34597  IFS=$as_save_IFS
       
 34598  
       
 34599 @@ -5925,24 +6509,36 @@ test -z "$RANLIB" && RANLIB=:
       
 34600  # Determine commands to create old-style static archives.
       
 34601  old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
       
 34602  old_postinstall_cmds='chmod 644 $oldlib'
       
 34603  old_postuninstall_cmds=
       
 34604  
       
 34605  if test -n "$RANLIB"; then
       
 34606    case $host_os in
       
 34607    openbsd*)
       
 34608 -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
       
 34609 +    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
       
 34610      ;;
       
 34611    *)
       
 34612 -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
       
 34613 -    ;;
       
 34614 -  esac
       
 34615 -  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
       
 34616 -fi
       
 34617 +    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
       
 34618 +    ;;
       
 34619 +  esac
       
 34620 +  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
       
 34621 +fi
       
 34622 +
       
 34623 +case $host_os in
       
 34624 +  darwin*)
       
 34625 +    lock_old_archive_extraction=yes ;;
       
 34626 +  *)
       
 34627 +    lock_old_archive_extraction=no ;;
       
 34628 +esac
       
 34629 +
       
 34630 +
       
 34631 +
       
 34632 +
       
 34633 +
       
 34634  
       
 34635  
       
 34636  
       
 34637  
       
 34638  
       
 34639  
       
 34640  
       
 34641  
       
 34642 @@ -5980,17 +6576,17 @@ LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
       
 34643  
       
 34644  # Allow CC to be a program name with arguments.
       
 34645  compiler=$CC
       
 34646  
       
 34647  
       
 34648  # Check for command to grab the raw symbol name followed by C symbol from nm.
       
 34649  { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
       
 34650  $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
       
 34651 -if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
       
 34652 +if ${lt_cv_sys_global_symbol_pipe+:} false; then :
       
 34653    $as_echo_n "(cached) " >&6
       
 34654  else
       
 34655  
       
 34656  # These are sane defaults that work on at least a few old systems.
       
 34657  # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
       
 34658  
       
 34659  # Character class describing NM global symbol codes.
       
 34660  symcode='[BCDEGRST]'
       
 34661 @@ -6041,18 +6637,18 @@ case `$NM -V 2>&1` in
       
 34662  esac
       
 34663  
       
 34664  # Transform an extracted symbol line into a proper C declaration.
       
 34665  # Some systems (esp. on ia64) link data and code symbols differently,
       
 34666  # so use this general approach.
       
 34667  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
       
 34668  
       
 34669  # Transform an extracted symbol line into symbol name and symbol address
       
 34670 -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
       
 34671 -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'"
       
 34672 +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
       
 34673 +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'"
       
 34674  
       
 34675  # Handle CRLF in mingw tool chain
       
 34676  opt_cr=
       
 34677  case $build_os in
       
 34678  mingw*)
       
 34679    opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
       
 34680    ;;
       
 34681  esac
       
 34682 @@ -6066,28 +6662,30 @@ for ac_symprfx in "" "_"; do
       
 34683    # Write the raw and C identifiers.
       
 34684    if test "$lt_cv_nm_interface" = "MS dumpbin"; then
       
 34685      # Fake it for dumpbin and say T for any non-static function
       
 34686      # and D for any global variable.
       
 34687      # Also find C++ and __fastcall symbols from MSVC++,
       
 34688      # which start with @ or ?.
       
 34689      lt_cv_sys_global_symbol_pipe="$AWK '"\
       
 34690  "     {last_section=section; section=\$ 3};"\
       
 34691 +"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
       
 34692  "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
       
 34693  "     \$ 0!~/External *\|/{next};"\
       
 34694  "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
       
 34695  "     {if(hide[section]) next};"\
       
 34696  "     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
       
 34697  "     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
       
 34698  "     s[1]~/^[@?]/{print s[1], s[1]; next};"\
       
 34699  "     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
       
 34700  "     ' prfx=^$ac_symprfx"
       
 34701    else
       
 34702      lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
       
 34703    fi
       
 34704 +  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
       
 34705  
       
 34706    # Check to see that the pipe works correctly.
       
 34707    pipe_works=no
       
 34708  
       
 34709    rm -f conftest*
       
 34710    cat > conftest.$ac_ext <<_LT_EOF
       
 34711  #ifdef __cplusplus
       
 34712  extern "C" {
       
 34713 @@ -6103,44 +6701,56 @@ int main(){nm_test_var='a';nm_test_func(
       
 34714  
       
 34715    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
       
 34716    (eval $ac_compile) 2>&5
       
 34717    ac_status=$?
       
 34718    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 34719    test $ac_status = 0; }; then
       
 34720      # Now try to grab the symbols.
       
 34721      nlist=conftest.nm
       
 34722 -    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5
       
 34723 -  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
       
 34724 +    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
       
 34725 +  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
       
 34726    ac_status=$?
       
 34727    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 34728    test $ac_status = 0; } && test -s "$nlist"; then
       
 34729        # Try sorting and uniquifying the output.
       
 34730        if sort "$nlist" | uniq > "$nlist"T; then
       
 34731  	mv -f "$nlist"T "$nlist"
       
 34732        else
       
 34733  	rm -f "$nlist"T
       
 34734        fi
       
 34735  
       
 34736        # Make sure that we snagged all the symbols we need.
       
 34737        if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
       
 34738  	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
       
 34739  	  cat <<_LT_EOF > conftest.$ac_ext
       
 34740 +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
       
 34741 +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
       
 34742 +/* DATA imports from DLLs on WIN32 con't be const, because runtime
       
 34743 +   relocations are performed -- see ld's documentation on pseudo-relocs.  */
       
 34744 +# define LT_DLSYM_CONST
       
 34745 +#elif defined(__osf__)
       
 34746 +/* This system does not cope well with relocations in const data.  */
       
 34747 +# define LT_DLSYM_CONST
       
 34748 +#else
       
 34749 +# define LT_DLSYM_CONST const
       
 34750 +#endif
       
 34751 +
       
 34752  #ifdef __cplusplus
       
 34753  extern "C" {
       
 34754  #endif
       
 34755  
       
 34756  _LT_EOF
       
 34757  	  # Now generate the symbol file.
       
 34758  	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
       
 34759  
       
 34760  	  cat <<_LT_EOF >> conftest.$ac_ext
       
 34761  
       
 34762  /* The mapping between symbol names and symbols.  */
       
 34763 -const struct {
       
 34764 +LT_DLSYM_CONST struct {
       
 34765    const char *name;
       
 34766    void       *address;
       
 34767  }
       
 34768  lt__PROGRAM__LTX_preloaded_symbols[] =
       
 34769  {
       
 34770    { "@PROGRAM@", (void *) 0 },
       
 34771  _LT_EOF
       
 34772  	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
       
 34773 @@ -6156,29 +6766,29 @@ static const void *lt_preloaded_setup() 
       
 34774  #endif
       
 34775  
       
 34776  #ifdef __cplusplus
       
 34777  }
       
 34778  #endif
       
 34779  _LT_EOF
       
 34780  	  # Now try linking the two files.
       
 34781  	  mv conftest.$ac_objext conftstm.$ac_objext
       
 34782 -	  lt_save_LIBS="$LIBS"
       
 34783 -	  lt_save_CFLAGS="$CFLAGS"
       
 34784 +	  lt_globsym_save_LIBS=$LIBS
       
 34785 +	  lt_globsym_save_CFLAGS=$CFLAGS
       
 34786  	  LIBS="conftstm.$ac_objext"
       
 34787  	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
       
 34788  	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
       
 34789    (eval $ac_link) 2>&5
       
 34790    ac_status=$?
       
 34791    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 34792    test $ac_status = 0; } && test -s conftest${ac_exeext}; then
       
 34793  	    pipe_works=yes
       
 34794  	  fi
       
 34795 -	  LIBS="$lt_save_LIBS"
       
 34796 -	  CFLAGS="$lt_save_CFLAGS"
       
 34797 +	  LIBS=$lt_globsym_save_LIBS
       
 34798 +	  CFLAGS=$lt_globsym_save_CFLAGS
       
 34799  	else
       
 34800  	  echo "cannot find nm_test_func in $nlist" >&5
       
 34801  	fi
       
 34802        else
       
 34803  	echo "cannot find nm_test_var in $nlist" >&5
       
 34804        fi
       
 34805      else
       
 34806        echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
       
 34807 @@ -6205,33 +6815,81 @@ fi
       
 34808  if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
       
 34809    { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
       
 34810  $as_echo "failed" >&6; }
       
 34811  else
       
 34812    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
       
 34813  $as_echo "ok" >&6; }
       
 34814  fi
       
 34815  
       
 34816 -
       
 34817 -
       
 34818 -
       
 34819 -
       
 34820 -
       
 34821 -
       
 34822 -
       
 34823 -
       
 34824 -
       
 34825 -
       
 34826 -
       
 34827 -
       
 34828 -
       
 34829 -
       
 34830 -
       
 34831 -
       
 34832 -
       
 34833 +# Response file support.
       
 34834 +if test "$lt_cv_nm_interface" = "MS dumpbin"; then
       
 34835 +  nm_file_list_spec='@'
       
 34836 +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
       
 34837 +  nm_file_list_spec='@'
       
 34838 +fi
       
 34839 +
       
 34840 +
       
 34841 +
       
 34842 +
       
 34843 +
       
 34844 +
       
 34845 +
       
 34846 +
       
 34847 +
       
 34848 +
       
 34849 +
       
 34850 +
       
 34851 +
       
 34852 +
       
 34853 +
       
 34854 +
       
 34855 +
       
 34856 +
       
 34857 +
       
 34858 +
       
 34859 +
       
 34860 +
       
 34861 +
       
 34862 +
       
 34863 +
       
 34864 +
       
 34865 +
       
 34866 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
       
 34867 +$as_echo_n "checking for sysroot... " >&6; }
       
 34868 +
       
 34869 +# Check whether --with-sysroot was given.
       
 34870 +if test "${with_sysroot+set}" = set; then :
       
 34871 +  withval=$with_sysroot;
       
 34872 +else
       
 34873 +  with_sysroot=no
       
 34874 +fi
       
 34875 +
       
 34876 +
       
 34877 +lt_sysroot=
       
 34878 +case ${with_sysroot} in #(
       
 34879 + yes)
       
 34880 +   if test "$GCC" = yes; then
       
 34881 +     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
       
 34882 +   fi
       
 34883 +   ;; #(
       
 34884 + /*)
       
 34885 +   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
       
 34886 +   ;; #(
       
 34887 + no|'')
       
 34888 +   ;; #(
       
 34889 + *)
       
 34890 +   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
       
 34891 +$as_echo "${with_sysroot}" >&6; }
       
 34892 +   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
       
 34893 +   ;;
       
 34894 +esac
       
 34895 +
       
 34896 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
       
 34897 +$as_echo "${lt_sysroot:-no}" >&6; }
       
 34898  
       
 34899  
       
 34900  
       
 34901  
       
 34902  
       
 34903  # Check whether --enable-libtool-lock was given.
       
 34904  if test "${enable_libtool_lock+set}" = set; then :
       
 34905    enableval=$enable_libtool_lock;
       
 34906 @@ -6258,17 +6916,17 @@ ia64-*-hpux*)
       
 34907  	HPUX_IA64_MODE="64"
       
 34908  	;;
       
 34909      esac
       
 34910    fi
       
 34911    rm -rf conftest*
       
 34912    ;;
       
 34913  *-*-irix6*)
       
 34914    # Find out which ABI we are using.
       
 34915 -  echo '#line 6266 "configure"' > conftest.$ac_ext
       
 34916 +  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
       
 34917    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
       
 34918    (eval $ac_compile) 2>&5
       
 34919    ac_status=$?
       
 34920    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 34921    test $ac_status = 0; }; then
       
 34922      if test "$lt_cv_prog_gnu_ld" = yes; then
       
 34923        case `/usr/bin/file conftest.$ac_objext` in
       
 34924  	*32-bit*)
       
 34925 @@ -6358,17 +7016,17 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
       
 34926    ;;
       
 34927  
       
 34928  *-*-sco3.2v5*)
       
 34929    # On SCO OpenServer 5, we need -belf to get full-featured binaries.
       
 34930    SAVE_CFLAGS="$CFLAGS"
       
 34931    CFLAGS="$CFLAGS -belf"
       
 34932    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
       
 34933  $as_echo_n "checking whether the C compiler needs -belf... " >&6; }
       
 34934 -if test "${lt_cv_cc_needs_belf+set}" = set; then :
       
 34935 +if ${lt_cv_cc_needs_belf+:} false; then :
       
 34936    $as_echo_n "(cached) " >&6
       
 34937  else
       
 34938    ac_ext=c
       
 34939  ac_cpp='$CPP $CPPFLAGS'
       
 34940  ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 34941  ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 34942  ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 34943  
       
 34944 @@ -6399,64 +7057,194 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 34945  fi
       
 34946  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
       
 34947  $as_echo "$lt_cv_cc_needs_belf" >&6; }
       
 34948    if test x"$lt_cv_cc_needs_belf" != x"yes"; then
       
 34949      # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
       
 34950      CFLAGS="$SAVE_CFLAGS"
       
 34951    fi
       
 34952    ;;
       
 34953 -sparc*-*solaris*)
       
 34954 +*-*solaris*)
       
 34955    # Find out which ABI we are using.
       
 34956    echo 'int i;' > conftest.$ac_ext
       
 34957    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
       
 34958    (eval $ac_compile) 2>&5
       
 34959    ac_status=$?
       
 34960    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 34961    test $ac_status = 0; }; then
       
 34962      case `/usr/bin/file conftest.o` in
       
 34963      *64-bit*)
       
 34964        case $lt_cv_prog_gnu_ld in
       
 34965 -      yes*) LD="${LD-ld} -m elf64_sparc" ;;
       
 34966 +      yes*)
       
 34967 +        case $host in
       
 34968 +        i?86-*-solaris*)
       
 34969 +          LD="${LD-ld} -m elf_x86_64"
       
 34970 +          ;;
       
 34971 +        sparc*-*-solaris*)
       
 34972 +          LD="${LD-ld} -m elf64_sparc"
       
 34973 +          ;;
       
 34974 +        esac
       
 34975 +        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
       
 34976 +        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
       
 34977 +          LD="${LD-ld}_sol2"
       
 34978 +        fi
       
 34979 +        ;;
       
 34980        *)
       
 34981  	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
       
 34982  	  LD="${LD-ld} -64"
       
 34983  	fi
       
 34984  	;;
       
 34985        esac
       
 34986        ;;
       
 34987      esac
       
 34988    fi
       
 34989    rm -rf conftest*
       
 34990    ;;
       
 34991  esac
       
 34992  
       
 34993  need_locks="$enable_libtool_lock"
       
 34994  
       
 34995 +if test -n "$ac_tool_prefix"; then
       
 34996 +  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
       
 34997 +set dummy ${ac_tool_prefix}mt; ac_word=$2
       
 34998 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 34999 +$as_echo_n "checking for $ac_word... " >&6; }
       
 35000 +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
       
 35001 +  $as_echo_n "(cached) " >&6
       
 35002 +else
       
 35003 +  if test -n "$MANIFEST_TOOL"; then
       
 35004 +  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
       
 35005 +else
       
 35006 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35007 +for as_dir in $PATH
       
 35008 +do
       
 35009 +  IFS=$as_save_IFS
       
 35010 +  test -z "$as_dir" && as_dir=.
       
 35011 +    for ac_exec_ext in '' $ac_executable_extensions; do
       
 35012 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35013 +    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
       
 35014 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35015 +    break 2
       
 35016 +  fi
       
 35017 +done
       
 35018 +  done
       
 35019 +IFS=$as_save_IFS
       
 35020 +
       
 35021 +fi
       
 35022 +fi
       
 35023 +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
       
 35024 +if test -n "$MANIFEST_TOOL"; then
       
 35025 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
       
 35026 +$as_echo "$MANIFEST_TOOL" >&6; }
       
 35027 +else
       
 35028 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 35029 +$as_echo "no" >&6; }
       
 35030 +fi
       
 35031 +
       
 35032 +
       
 35033 +fi
       
 35034 +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
       
 35035 +  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
       
 35036 +  # Extract the first word of "mt", so it can be a program name with args.
       
 35037 +set dummy mt; ac_word=$2
       
 35038 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35039 +$as_echo_n "checking for $ac_word... " >&6; }
       
 35040 +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
       
 35041 +  $as_echo_n "(cached) " >&6
       
 35042 +else
       
 35043 +  if test -n "$ac_ct_MANIFEST_TOOL"; then
       
 35044 +  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
       
 35045 +else
       
 35046 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35047 +for as_dir in $PATH
       
 35048 +do
       
 35049 +  IFS=$as_save_IFS
       
 35050 +  test -z "$as_dir" && as_dir=.
       
 35051 +    for ac_exec_ext in '' $ac_executable_extensions; do
       
 35052 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35053 +    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
       
 35054 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35055 +    break 2
       
 35056 +  fi
       
 35057 +done
       
 35058 +  done
       
 35059 +IFS=$as_save_IFS
       
 35060 +
       
 35061 +fi
       
 35062 +fi
       
 35063 +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
       
 35064 +if test -n "$ac_ct_MANIFEST_TOOL"; then
       
 35065 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
       
 35066 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
       
 35067 +else
       
 35068 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 35069 +$as_echo "no" >&6; }
       
 35070 +fi
       
 35071 +
       
 35072 +  if test "x$ac_ct_MANIFEST_TOOL" = x; then
       
 35073 +    MANIFEST_TOOL=":"
       
 35074 +  else
       
 35075 +    case $cross_compiling:$ac_tool_warned in
       
 35076 +yes:)
       
 35077 +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
       
 35078 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
       
 35079 +ac_tool_warned=yes ;;
       
 35080 +esac
       
 35081 +    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
       
 35082 +  fi
       
 35083 +else
       
 35084 +  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
       
 35085 +fi
       
 35086 +
       
 35087 +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
       
 35088 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
       
 35089 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
       
 35090 +if ${lt_cv_path_mainfest_tool+:} false; then :
       
 35091 +  $as_echo_n "(cached) " >&6
       
 35092 +else
       
 35093 +  lt_cv_path_mainfest_tool=no
       
 35094 +  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
       
 35095 +  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
       
 35096 +  cat conftest.err >&5
       
 35097 +  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
       
 35098 +    lt_cv_path_mainfest_tool=yes
       
 35099 +  fi
       
 35100 +  rm -f conftest*
       
 35101 +fi
       
 35102 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
       
 35103 +$as_echo "$lt_cv_path_mainfest_tool" >&6; }
       
 35104 +if test "x$lt_cv_path_mainfest_tool" != xyes; then
       
 35105 +  MANIFEST_TOOL=:
       
 35106 +fi
       
 35107 +
       
 35108 +
       
 35109 +
       
 35110 +
       
 35111 +
       
 35112  
       
 35113    case $host_os in
       
 35114      rhapsody* | darwin*)
       
 35115      if test -n "$ac_tool_prefix"; then
       
 35116    # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
       
 35117  set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
       
 35118  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35119  $as_echo_n "checking for $ac_word... " >&6; }
       
 35120 -if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
       
 35121 +if ${ac_cv_prog_DSYMUTIL+:} false; then :
       
 35122    $as_echo_n "(cached) " >&6
       
 35123  else
       
 35124    if test -n "$DSYMUTIL"; then
       
 35125    ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
       
 35126  else
       
 35127  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35128  for as_dir in $PATH
       
 35129  do
       
 35130    IFS=$as_save_IFS
       
 35131    test -z "$as_dir" && as_dir=.
       
 35132      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35133 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35134 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35135      ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
       
 35136      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35137      break 2
       
 35138    fi
       
 35139  done
       
 35140    done
       
 35141  IFS=$as_save_IFS
       
 35142  
       
 35143 @@ -6474,29 +7262,29 @@ fi
       
 35144  
       
 35145  fi
       
 35146  if test -z "$ac_cv_prog_DSYMUTIL"; then
       
 35147    ac_ct_DSYMUTIL=$DSYMUTIL
       
 35148    # Extract the first word of "dsymutil", so it can be a program name with args.
       
 35149  set dummy dsymutil; ac_word=$2
       
 35150  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35151  $as_echo_n "checking for $ac_word... " >&6; }
       
 35152 -if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
       
 35153 +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
       
 35154    $as_echo_n "(cached) " >&6
       
 35155  else
       
 35156    if test -n "$ac_ct_DSYMUTIL"; then
       
 35157    ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
       
 35158  else
       
 35159  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35160  for as_dir in $PATH
       
 35161  do
       
 35162    IFS=$as_save_IFS
       
 35163    test -z "$as_dir" && as_dir=.
       
 35164      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35165 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35166 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35167      ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
       
 35168      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35169      break 2
       
 35170    fi
       
 35171  done
       
 35172    done
       
 35173  IFS=$as_save_IFS
       
 35174  
       
 35175 @@ -6526,29 +7314,29 @@ else
       
 35176    DSYMUTIL="$ac_cv_prog_DSYMUTIL"
       
 35177  fi
       
 35178  
       
 35179      if test -n "$ac_tool_prefix"; then
       
 35180    # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
       
 35181  set dummy ${ac_tool_prefix}nmedit; ac_word=$2
       
 35182  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35183  $as_echo_n "checking for $ac_word... " >&6; }
       
 35184 -if test "${ac_cv_prog_NMEDIT+set}" = set; then :
       
 35185 +if ${ac_cv_prog_NMEDIT+:} false; then :
       
 35186    $as_echo_n "(cached) " >&6
       
 35187  else
       
 35188    if test -n "$NMEDIT"; then
       
 35189    ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
       
 35190  else
       
 35191  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35192  for as_dir in $PATH
       
 35193  do
       
 35194    IFS=$as_save_IFS
       
 35195    test -z "$as_dir" && as_dir=.
       
 35196      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35197 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35198 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35199      ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
       
 35200      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35201      break 2
       
 35202    fi
       
 35203  done
       
 35204    done
       
 35205  IFS=$as_save_IFS
       
 35206  
       
 35207 @@ -6566,29 +7354,29 @@ fi
       
 35208  
       
 35209  fi
       
 35210  if test -z "$ac_cv_prog_NMEDIT"; then
       
 35211    ac_ct_NMEDIT=$NMEDIT
       
 35212    # Extract the first word of "nmedit", so it can be a program name with args.
       
 35213  set dummy nmedit; ac_word=$2
       
 35214  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35215  $as_echo_n "checking for $ac_word... " >&6; }
       
 35216 -if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
       
 35217 +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
       
 35218    $as_echo_n "(cached) " >&6
       
 35219  else
       
 35220    if test -n "$ac_ct_NMEDIT"; then
       
 35221    ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
       
 35222  else
       
 35223  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35224  for as_dir in $PATH
       
 35225  do
       
 35226    IFS=$as_save_IFS
       
 35227    test -z "$as_dir" && as_dir=.
       
 35228      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35229 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35230 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35231      ac_cv_prog_ac_ct_NMEDIT="nmedit"
       
 35232      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35233      break 2
       
 35234    fi
       
 35235  done
       
 35236    done
       
 35237  IFS=$as_save_IFS
       
 35238  
       
 35239 @@ -6618,29 +7406,29 @@ else
       
 35240    NMEDIT="$ac_cv_prog_NMEDIT"
       
 35241  fi
       
 35242  
       
 35243      if test -n "$ac_tool_prefix"; then
       
 35244    # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
       
 35245  set dummy ${ac_tool_prefix}lipo; ac_word=$2
       
 35246  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35247  $as_echo_n "checking for $ac_word... " >&6; }
       
 35248 -if test "${ac_cv_prog_LIPO+set}" = set; then :
       
 35249 +if ${ac_cv_prog_LIPO+:} false; then :
       
 35250    $as_echo_n "(cached) " >&6
       
 35251  else
       
 35252    if test -n "$LIPO"; then
       
 35253    ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
       
 35254  else
       
 35255  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35256  for as_dir in $PATH
       
 35257  do
       
 35258    IFS=$as_save_IFS
       
 35259    test -z "$as_dir" && as_dir=.
       
 35260      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35261 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35262 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35263      ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
       
 35264      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35265      break 2
       
 35266    fi
       
 35267  done
       
 35268    done
       
 35269  IFS=$as_save_IFS
       
 35270  
       
 35271 @@ -6658,29 +7446,29 @@ fi
       
 35272  
       
 35273  fi
       
 35274  if test -z "$ac_cv_prog_LIPO"; then
       
 35275    ac_ct_LIPO=$LIPO
       
 35276    # Extract the first word of "lipo", so it can be a program name with args.
       
 35277  set dummy lipo; ac_word=$2
       
 35278  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35279  $as_echo_n "checking for $ac_word... " >&6; }
       
 35280 -if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
       
 35281 +if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
       
 35282    $as_echo_n "(cached) " >&6
       
 35283  else
       
 35284    if test -n "$ac_ct_LIPO"; then
       
 35285    ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
       
 35286  else
       
 35287  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35288  for as_dir in $PATH
       
 35289  do
       
 35290    IFS=$as_save_IFS
       
 35291    test -z "$as_dir" && as_dir=.
       
 35292      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35293 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35294 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35295      ac_cv_prog_ac_ct_LIPO="lipo"
       
 35296      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35297      break 2
       
 35298    fi
       
 35299  done
       
 35300    done
       
 35301  IFS=$as_save_IFS
       
 35302  
       
 35303 @@ -6710,29 +7498,29 @@ else
       
 35304    LIPO="$ac_cv_prog_LIPO"
       
 35305  fi
       
 35306  
       
 35307      if test -n "$ac_tool_prefix"; then
       
 35308    # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
       
 35309  set dummy ${ac_tool_prefix}otool; ac_word=$2
       
 35310  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35311  $as_echo_n "checking for $ac_word... " >&6; }
       
 35312 -if test "${ac_cv_prog_OTOOL+set}" = set; then :
       
 35313 +if ${ac_cv_prog_OTOOL+:} false; then :
       
 35314    $as_echo_n "(cached) " >&6
       
 35315  else
       
 35316    if test -n "$OTOOL"; then
       
 35317    ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
       
 35318  else
       
 35319  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35320  for as_dir in $PATH
       
 35321  do
       
 35322    IFS=$as_save_IFS
       
 35323    test -z "$as_dir" && as_dir=.
       
 35324      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35325 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35326 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35327      ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
       
 35328      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35329      break 2
       
 35330    fi
       
 35331  done
       
 35332    done
       
 35333  IFS=$as_save_IFS
       
 35334  
       
 35335 @@ -6750,29 +7538,29 @@ fi
       
 35336  
       
 35337  fi
       
 35338  if test -z "$ac_cv_prog_OTOOL"; then
       
 35339    ac_ct_OTOOL=$OTOOL
       
 35340    # Extract the first word of "otool", so it can be a program name with args.
       
 35341  set dummy otool; ac_word=$2
       
 35342  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35343  $as_echo_n "checking for $ac_word... " >&6; }
       
 35344 -if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
       
 35345 +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
       
 35346    $as_echo_n "(cached) " >&6
       
 35347  else
       
 35348    if test -n "$ac_ct_OTOOL"; then
       
 35349    ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
       
 35350  else
       
 35351  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35352  for as_dir in $PATH
       
 35353  do
       
 35354    IFS=$as_save_IFS
       
 35355    test -z "$as_dir" && as_dir=.
       
 35356      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35357 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35358 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35359      ac_cv_prog_ac_ct_OTOOL="otool"
       
 35360      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35361      break 2
       
 35362    fi
       
 35363  done
       
 35364    done
       
 35365  IFS=$as_save_IFS
       
 35366  
       
 35367 @@ -6802,29 +7590,29 @@ else
       
 35368    OTOOL="$ac_cv_prog_OTOOL"
       
 35369  fi
       
 35370  
       
 35371      if test -n "$ac_tool_prefix"; then
       
 35372    # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
       
 35373  set dummy ${ac_tool_prefix}otool64; ac_word=$2
       
 35374  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35375  $as_echo_n "checking for $ac_word... " >&6; }
       
 35376 -if test "${ac_cv_prog_OTOOL64+set}" = set; then :
       
 35377 +if ${ac_cv_prog_OTOOL64+:} false; then :
       
 35378    $as_echo_n "(cached) " >&6
       
 35379  else
       
 35380    if test -n "$OTOOL64"; then
       
 35381    ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
       
 35382  else
       
 35383  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35384  for as_dir in $PATH
       
 35385  do
       
 35386    IFS=$as_save_IFS
       
 35387    test -z "$as_dir" && as_dir=.
       
 35388      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35389 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35390 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35391      ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
       
 35392      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35393      break 2
       
 35394    fi
       
 35395  done
       
 35396    done
       
 35397  IFS=$as_save_IFS
       
 35398  
       
 35399 @@ -6842,29 +7630,29 @@ fi
       
 35400  
       
 35401  fi
       
 35402  if test -z "$ac_cv_prog_OTOOL64"; then
       
 35403    ac_ct_OTOOL64=$OTOOL64
       
 35404    # Extract the first word of "otool64", so it can be a program name with args.
       
 35405  set dummy otool64; ac_word=$2
       
 35406  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 35407  $as_echo_n "checking for $ac_word... " >&6; }
       
 35408 -if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
       
 35409 +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
       
 35410    $as_echo_n "(cached) " >&6
       
 35411  else
       
 35412    if test -n "$ac_ct_OTOOL64"; then
       
 35413    ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
       
 35414  else
       
 35415  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 35416  for as_dir in $PATH
       
 35417  do
       
 35418    IFS=$as_save_IFS
       
 35419    test -z "$as_dir" && as_dir=.
       
 35420      for ac_exec_ext in '' $ac_executable_extensions; do
       
 35421 -  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
       
 35422 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 35423      ac_cv_prog_ac_ct_OTOOL64="otool64"
       
 35424      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 35425      break 2
       
 35426    fi
       
 35427  done
       
 35428    done
       
 35429  IFS=$as_save_IFS
       
 35430  
       
 35431 @@ -6917,46 +7705,53 @@ fi
       
 35432  
       
 35433  
       
 35434  
       
 35435  
       
 35436  
       
 35437  
       
 35438      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
       
 35439  $as_echo_n "checking for -single_module linker flag... " >&6; }
       
 35440 -if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
       
 35441 +if ${lt_cv_apple_cc_single_mod+:} false; then :
       
 35442    $as_echo_n "(cached) " >&6
       
 35443  else
       
 35444    lt_cv_apple_cc_single_mod=no
       
 35445        if test -z "${LT_MULTI_MODULE}"; then
       
 35446  	# By default we will add the -single_module flag. You can override
       
 35447  	# by either setting the environment variable LT_MULTI_MODULE
       
 35448  	# non-empty at configure time, or by adding -multi_module to the
       
 35449  	# link flags.
       
 35450  	rm -rf libconftest.dylib*
       
 35451  	echo "int foo(void){return 1;}" > conftest.c
       
 35452  	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
       
 35453  -dynamiclib -Wl,-single_module conftest.c" >&5
       
 35454  	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
       
 35455  	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
       
 35456          _lt_result=$?
       
 35457 -	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
       
 35458 +	# If there is a non-empty error log, and "single_module"
       
 35459 +	# appears in it, assume the flag caused a linker warning
       
 35460 +        if test -s conftest.err && $GREP single_module conftest.err; then
       
 35461 +	  cat conftest.err >&5
       
 35462 +	# Otherwise, if the output was created with a 0 exit code from
       
 35463 +	# the compiler, it worked.
       
 35464 +	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
       
 35465  	  lt_cv_apple_cc_single_mod=yes
       
 35466  	else
       
 35467  	  cat conftest.err >&5
       
 35468  	fi
       
 35469  	rm -rf libconftest.dylib*
       
 35470  	rm -f conftest.*
       
 35471        fi
       
 35472  fi
       
 35473  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
       
 35474  $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
       
 35475 +
       
 35476      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
       
 35477  $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
       
 35478 -if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
       
 35479 +if ${lt_cv_ld_exported_symbols_list+:} false; then :
       
 35480    $as_echo_n "(cached) " >&6
       
 35481  else
       
 35482    lt_cv_ld_exported_symbols_list=no
       
 35483        save_LDFLAGS=$LDFLAGS
       
 35484        echo "_main" > conftest.sym
       
 35485        LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
       
 35486        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 35487  /* end confdefs.h.  */
       
 35488 @@ -6976,16 +7771,51 @@ else
       
 35489  fi
       
 35490  rm -f core conftest.err conftest.$ac_objext \
       
 35491      conftest$ac_exeext conftest.$ac_ext
       
 35492  	LDFLAGS="$save_LDFLAGS"
       
 35493  
       
 35494  fi
       
 35495  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
       
 35496  $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
       
 35497 +
       
 35498 +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
       
 35499 +$as_echo_n "checking for -force_load linker flag... " >&6; }
       
 35500 +if ${lt_cv_ld_force_load+:} false; then :
       
 35501 +  $as_echo_n "(cached) " >&6
       
 35502 +else
       
 35503 +  lt_cv_ld_force_load=no
       
 35504 +      cat > conftest.c << _LT_EOF
       
 35505 +int forced_loaded() { return 2;}
       
 35506 +_LT_EOF
       
 35507 +      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
       
 35508 +      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
       
 35509 +      echo "$AR cru libconftest.a conftest.o" >&5
       
 35510 +      $AR cru libconftest.a conftest.o 2>&5
       
 35511 +      echo "$RANLIB libconftest.a" >&5
       
 35512 +      $RANLIB libconftest.a 2>&5
       
 35513 +      cat > conftest.c << _LT_EOF
       
 35514 +int main() { return 0;}
       
 35515 +_LT_EOF
       
 35516 +      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
       
 35517 +      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       
 35518 +      _lt_result=$?
       
 35519 +      if test -s conftest.err && $GREP force_load conftest.err; then
       
 35520 +	cat conftest.err >&5
       
 35521 +      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
       
 35522 +	lt_cv_ld_force_load=yes
       
 35523 +      else
       
 35524 +	cat conftest.err >&5
       
 35525 +      fi
       
 35526 +        rm -f conftest.err libconftest.a conftest conftest.c
       
 35527 +        rm -rf conftest.dSYM
       
 35528 +
       
 35529 +fi
       
 35530 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
       
 35531 +$as_echo "$lt_cv_ld_force_load" >&6; }
       
 35532      case $host_os in
       
 35533      rhapsody* | darwin1.[012])
       
 35534        _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
       
 35535      darwin1.*)
       
 35536        _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
       
 35537      darwin*) # darwin 5.x on
       
 35538        # if running on 10.5 or later, the deployment target defaults
       
 35539        # to the OS version, if on x86, and 10.4, the deployment
       
 35540 @@ -7003,17 +7833,17 @@ fi
       
 35541      if test "$lt_cv_apple_cc_single_mod" = "yes"; then
       
 35542        _lt_dar_single_mod='$single_module'
       
 35543      fi
       
 35544      if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
       
 35545        _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
       
 35546      else
       
 35547        _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
       
 35548      fi
       
 35549 -    if test "$DSYMUTIL" != ":"; then
       
 35550 +    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
       
 35551        _lt_dsymutil='~$DSYMUTIL $lib || :'
       
 35552      else
       
 35553        _lt_dsymutil=
       
 35554      fi
       
 35555      ;;
       
 35556    esac
       
 35557  
       
 35558  ac_ext=c
       
 35559 @@ -7023,17 +7853,17 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
       
 35560  ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 35561  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
       
 35562  $as_echo_n "checking how to run the C preprocessor... " >&6; }
       
 35563  # On Suns, sometimes $CPP names a directory.
       
 35564  if test -n "$CPP" && test -d "$CPP"; then
       
 35565    CPP=
       
 35566  fi
       
 35567  if test -z "$CPP"; then
       
 35568 -  if test "${ac_cv_prog_CPP+set}" = set; then :
       
 35569 +  if ${ac_cv_prog_CPP+:} false; then :
       
 35570    $as_echo_n "(cached) " >&6
       
 35571  else
       
 35572        # Double quotes because CPP needs to be expanded
       
 35573      for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
       
 35574      do
       
 35575        ac_preproc_ok=false
       
 35576  for ac_c_preproc_warn_flag in '' yes
       
 35577  do
       
 35578 @@ -7053,37 +7883,37 @@ do
       
 35579  		     Syntax error
       
 35580  _ACEOF
       
 35581  if ac_fn_c_try_cpp "$LINENO"; then :
       
 35582  
       
 35583  else
       
 35584    # Broken: fails on valid input.
       
 35585  continue
       
 35586  fi
       
 35587 -rm -f conftest.err conftest.$ac_ext
       
 35588 +rm -f conftest.err conftest.i conftest.$ac_ext
       
 35589  
       
 35590    # OK, works on sane cases.  Now check whether nonexistent headers
       
 35591    # can be detected and how.
       
 35592    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 35593  /* end confdefs.h.  */
       
 35594  #include <ac_nonexistent.h>
       
 35595  _ACEOF
       
 35596  if ac_fn_c_try_cpp "$LINENO"; then :
       
 35597    # Broken: success on invalid input.
       
 35598  continue
       
 35599  else
       
 35600    # Passes both tests.
       
 35601  ac_preproc_ok=:
       
 35602  break
       
 35603  fi
       
 35604 -rm -f conftest.err conftest.$ac_ext
       
 35605 +rm -f conftest.err conftest.i conftest.$ac_ext
       
 35606  
       
 35607  done
       
 35608  # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
       
 35609 -rm -f conftest.err conftest.$ac_ext
       
 35610 +rm -f conftest.i conftest.err conftest.$ac_ext
       
 35611  if $ac_preproc_ok; then :
       
 35612    break
       
 35613  fi
       
 35614  
       
 35615      done
       
 35616      ac_cv_prog_CPP=$CPP
       
 35617  
       
 35618  fi
       
 35619 @@ -7112,56 +7942,56 @@ do
       
 35620  		     Syntax error
       
 35621  _ACEOF
       
 35622  if ac_fn_c_try_cpp "$LINENO"; then :
       
 35623  
       
 35624  else
       
 35625    # Broken: fails on valid input.
       
 35626  continue
       
 35627  fi
       
 35628 -rm -f conftest.err conftest.$ac_ext
       
 35629 +rm -f conftest.err conftest.i conftest.$ac_ext
       
 35630  
       
 35631    # OK, works on sane cases.  Now check whether nonexistent headers
       
 35632    # can be detected and how.
       
 35633    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 35634  /* end confdefs.h.  */
       
 35635  #include <ac_nonexistent.h>
       
 35636  _ACEOF
       
 35637  if ac_fn_c_try_cpp "$LINENO"; then :
       
 35638    # Broken: success on invalid input.
       
 35639  continue
       
 35640  else
       
 35641    # Passes both tests.
       
 35642  ac_preproc_ok=:
       
 35643  break
       
 35644  fi
       
 35645 -rm -f conftest.err conftest.$ac_ext
       
 35646 +rm -f conftest.err conftest.i conftest.$ac_ext
       
 35647  
       
 35648  done
       
 35649  # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
       
 35650 -rm -f conftest.err conftest.$ac_ext
       
 35651 +rm -f conftest.i conftest.err conftest.$ac_ext
       
 35652  if $ac_preproc_ok; then :
       
 35653  
       
 35654  else
       
 35655    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 35656  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 35657 -as_fn_error "C preprocessor \"$CPP\" fails sanity check
       
 35658 -See \`config.log' for more details." "$LINENO" 5; }
       
 35659 +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
       
 35660 +See \`config.log' for more details" "$LINENO" 5; }
       
 35661  fi
       
 35662  
       
 35663  ac_ext=c
       
 35664  ac_cpp='$CPP $CPPFLAGS'
       
 35665  ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 35666  ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 35667  ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 35668  
       
 35669  
       
 35670  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
       
 35671  $as_echo_n "checking for ANSI C header files... " >&6; }
       
 35672 -if test "${ac_cv_header_stdc+set}" = set; then :
       
 35673 +if ${ac_cv_header_stdc+:} false; then :
       
 35674    $as_echo_n "(cached) " >&6
       
 35675  else
       
 35676    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 35677  /* end confdefs.h.  */
       
 35678  #include <stdlib.h>
       
 35679  #include <stdarg.h>
       
 35680  #include <string.h>
       
 35681  #include <float.h>
       
 35682 @@ -7268,42 +8098,43 @@ fi
       
 35683  
       
 35684  # On IRIX 5.3, sys/types and inttypes.h are conflicting.
       
 35685  for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
       
 35686  		  inttypes.h stdint.h unistd.h
       
 35687  do :
       
 35688    as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
       
 35689  ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
       
 35690  "
       
 35691 -eval as_val=\$$as_ac_Header
       
 35692 -   if test "x$as_val" = x""yes; then :
       
 35693 +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
       
 35694    cat >>confdefs.h <<_ACEOF
       
 35695  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
       
 35696  _ACEOF
       
 35697  
       
 35698  fi
       
 35699  
       
 35700  done
       
 35701  
       
 35702  
       
 35703  for ac_header in dlfcn.h
       
 35704  do :
       
 35705    ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
       
 35706  "
       
 35707 -if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
       
 35708 +if test "x$ac_cv_header_dlfcn_h" = xyes; then :
       
 35709    cat >>confdefs.h <<_ACEOF
       
 35710  #define HAVE_DLFCN_H 1
       
 35711  _ACEOF
       
 35712  
       
 35713  fi
       
 35714  
       
 35715  done
       
 35716  
       
 35717  
       
 35718  
       
 35719 +
       
 35720 +
       
 35721  # Set options
       
 35722  
       
 35723  
       
 35724  
       
 35725          enable_dlopen=no
       
 35726  
       
 35727  
       
 35728    enable_win32_dll=no
       
 35729 @@ -7369,17 +8200,32 @@ fi
       
 35730  
       
 35731  
       
 35732  
       
 35733  
       
 35734  
       
 35735  
       
 35736  # Check whether --with-pic was given.
       
 35737  if test "${with_pic+set}" = set; then :
       
 35738 -  withval=$with_pic; pic_mode="$withval"
       
 35739 +  withval=$with_pic; lt_p=${PACKAGE-default}
       
 35740 +    case $withval in
       
 35741 +    yes|no) pic_mode=$withval ;;
       
 35742 +    *)
       
 35743 +      pic_mode=default
       
 35744 +      # Look at the argument we got.  We use all the common list separators.
       
 35745 +      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
       
 35746 +      for lt_pkg in $withval; do
       
 35747 +	IFS="$lt_save_ifs"
       
 35748 +	if test "X$lt_pkg" = "X$lt_p"; then
       
 35749 +	  pic_mode=yes
       
 35750 +	fi
       
 35751 +      done
       
 35752 +      IFS="$lt_save_ifs"
       
 35753 +      ;;
       
 35754 +    esac
       
 35755  else
       
 35756    pic_mode=default
       
 35757  fi
       
 35758  
       
 35759  
       
 35760  test -z "$pic_mode" && pic_mode=default
       
 35761  
       
 35762  
       
 35763 @@ -7446,16 +8292,21 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtoo
       
 35764  
       
 35765  
       
 35766  
       
 35767  
       
 35768  
       
 35769  
       
 35770  
       
 35771  
       
 35772 +
       
 35773 +
       
 35774 +
       
 35775 +
       
 35776 +
       
 35777  test -z "$LN_S" && LN_S="ln -s"
       
 35778  
       
 35779  
       
 35780  
       
 35781  
       
 35782  
       
 35783  
       
 35784  
       
 35785 @@ -7467,17 +8318,17 @@ test -z "$LN_S" && LN_S="ln -s"
       
 35786  
       
 35787  
       
 35788  if test -n "${ZSH_VERSION+set}" ; then
       
 35789     setopt NO_GLOB_SUBST
       
 35790  fi
       
 35791  
       
 35792  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
       
 35793  $as_echo_n "checking for objdir... " >&6; }
       
 35794 -if test "${lt_cv_objdir+set}" = set; then :
       
 35795 +if ${lt_cv_objdir+:} false; then :
       
 35796    $as_echo_n "(cached) " >&6
       
 35797  else
       
 35798    rm -f .libs 2>/dev/null
       
 35799  mkdir .libs 2>/dev/null
       
 35800  if test -d .libs; then
       
 35801    lt_cv_objdir=.libs
       
 35802  else
       
 35803    # MS-DOS does not allow filenames that begin with a dot.
       
 35804 @@ -7495,58 +8346,28 @@ objdir=$lt_cv_objdir
       
 35805  
       
 35806  cat >>confdefs.h <<_ACEOF
       
 35807  #define LT_OBJDIR "$lt_cv_objdir/"
       
 35808  _ACEOF
       
 35809  
       
 35810  
       
 35811  
       
 35812  
       
 35813 -
       
 35814 -
       
 35815 -
       
 35816 -
       
 35817 -
       
 35818 -
       
 35819 -
       
 35820 -
       
 35821 -
       
 35822 -
       
 35823 -
       
 35824 -
       
 35825 -
       
 35826  case $host_os in
       
 35827  aix3*)
       
 35828    # AIX sometimes has problems with the GCC collect2 program.  For some
       
 35829    # reason, if we set the COLLECT_NAMES environment variable, the problems
       
 35830    # vanish in a puff of smoke.
       
 35831    if test "X${COLLECT_NAMES+set}" != Xset; then
       
 35832      COLLECT_NAMES=
       
 35833      export COLLECT_NAMES
       
 35834    fi
       
 35835    ;;
       
 35836  esac
       
 35837  
       
 35838 -# Sed substitution that helps us do robust quoting.  It backslashifies
       
 35839 -# metacharacters that are still active within double-quoted strings.
       
 35840 -sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
       
 35841 -
       
 35842 -# Same as above, but do not quote variable references.
       
 35843 -double_quote_subst='s/\(["`\\]\)/\\\1/g'
       
 35844 -
       
 35845 -# Sed substitution to delay expansion of an escaped shell variable in a
       
 35846 -# double_quote_subst'ed string.
       
 35847 -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
       
 35848 -
       
 35849 -# Sed substitution to delay expansion of an escaped single quote.
       
 35850 -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
       
 35851 -
       
 35852 -# Sed substitution to avoid accidental globbing in evaled expressions
       
 35853 -no_glob_subst='s/\*/\\\*/g'
       
 35854 -
       
 35855  # Global variables:
       
 35856  ofile=libtool
       
 35857  can_build_shared=yes
       
 35858  
       
 35859  # All known linkers require a `.a' archive for static linking (except MSVC,
       
 35860  # which needs '.lib').
       
 35861  libext=a
       
 35862  
       
 35863 @@ -7565,27 +8386,27 @@ test -z "$ac_objext" && ac_objext=o
       
 35864  for cc_temp in $compiler""; do
       
 35865    case $cc_temp in
       
 35866      compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
       
 35867      distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
       
 35868      \-*) ;;
       
 35869      *) break;;
       
 35870    esac
       
 35871  done
       
 35872 -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
       
 35873 +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
       
 35874  
       
 35875  
       
 35876  # Only perform the check for file, if the check method requires it
       
 35877  test -z "$MAGIC_CMD" && MAGIC_CMD=file
       
 35878  case $deplibs_check_method in
       
 35879  file_magic*)
       
 35880    if test "$file_magic_cmd" = '$MAGIC_CMD'; then
       
 35881      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
       
 35882  $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
       
 35883 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
       
 35884 +if ${lt_cv_path_MAGIC_CMD+:} false; then :
       
 35885    $as_echo_n "(cached) " >&6
       
 35886  else
       
 35887    case $MAGIC_CMD in
       
 35888  [\\/*] |  ?:[\\/]*)
       
 35889    lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
       
 35890    ;;
       
 35891  *)
       
 35892    lt_save_MAGIC_CMD="$MAGIC_CMD"
       
 35893 @@ -7641,17 +8462,17 @@ fi
       
 35894  
       
 35895  
       
 35896  
       
 35897  
       
 35898  if test -z "$lt_cv_path_MAGIC_CMD"; then
       
 35899    if test -n "$ac_tool_prefix"; then
       
 35900      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
       
 35901  $as_echo_n "checking for file... " >&6; }
       
 35902 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
       
 35903 +if ${lt_cv_path_MAGIC_CMD+:} false; then :
       
 35904    $as_echo_n "(cached) " >&6
       
 35905  else
       
 35906    case $MAGIC_CMD in
       
 35907  [\\/*] |  ?:[\\/]*)
       
 35908    lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
       
 35909    ;;
       
 35910  *)
       
 35911    lt_save_MAGIC_CMD="$MAGIC_CMD"
       
 35912 @@ -7765,50 +8586,59 @@ eval "$ac_compile" 2>&1 >/dev/null | $SE
       
 35913  
       
 35914  ac_outfile=conftest.$ac_objext
       
 35915  echo "$lt_simple_link_test_code" >conftest.$ac_ext
       
 35916  eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
       
 35917  _lt_linker_boilerplate=`cat conftest.err`
       
 35918  $RM -r conftest*
       
 35919  
       
 35920  
       
 35921 +## CAVEAT EMPTOR:
       
 35922 +## There is no encapsulation within the following macros, do not change
       
 35923 +## the running order or otherwise move them around unless you know exactly
       
 35924 +## what you are doing...
       
 35925  if test -n "$compiler"; then
       
 35926  
       
 35927  lt_prog_compiler_no_builtin_flag=
       
 35928  
       
 35929  if test "$GCC" = yes; then
       
 35930 -  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
       
 35931 +  case $cc_basename in
       
 35932 +  nvcc*)
       
 35933 +    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
       
 35934 +  *)
       
 35935 +    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
       
 35936 +  esac
       
 35937  
       
 35938    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
       
 35939  $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
       
 35940 -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
       
 35941 +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
       
 35942    $as_echo_n "(cached) " >&6
       
 35943  else
       
 35944    lt_cv_prog_compiler_rtti_exceptions=no
       
 35945     ac_outfile=conftest.$ac_objext
       
 35946     echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 35947     lt_compiler_flag="-fno-rtti -fno-exceptions"
       
 35948     # Insert the option either (1) after the last *FLAGS variable, or
       
 35949     # (2) before a word containing "conftest.", or (3) at the end.
       
 35950     # Note that $ac_compile itself does not contain backslashes and begins
       
 35951     # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 35952     # The option is referenced via a variable to avoid confusing sed.
       
 35953     lt_compile=`echo "$ac_compile" | $SED \
       
 35954     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 35955     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
       
 35956     -e 's:$: $lt_compiler_flag:'`
       
 35957 -   (eval echo "\"\$as_me:7792: $lt_compile\"" >&5)
       
 35958 +   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
       
 35959     (eval "$lt_compile" 2>conftest.err)
       
 35960     ac_status=$?
       
 35961     cat conftest.err >&5
       
 35962 -   echo "$as_me:7796: \$? = $ac_status" >&5
       
 35963 +   echo "$as_me:$LINENO: \$? = $ac_status" >&5
       
 35964     if (exit $ac_status) && test -s "$ac_outfile"; then
       
 35965       # The compiler can only warn and ignore the option if not recognized
       
 35966       # So say no if there are warnings other than the usual output.
       
 35967 -     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
       
 35968 +     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
       
 35969       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 35970       if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
       
 35971         lt_cv_prog_compiler_rtti_exceptions=yes
       
 35972       fi
       
 35973     fi
       
 35974     $RM conftest*
       
 35975  
       
 35976  fi
       
 35977 @@ -7827,18 +8657,16 @@ fi
       
 35978  
       
 35979  
       
 35980  
       
 35981  
       
 35982    lt_prog_compiler_wl=
       
 35983  lt_prog_compiler_pic=
       
 35984  lt_prog_compiler_static=
       
 35985  
       
 35986 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
       
 35987 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       
 35988  
       
 35989    if test "$GCC" = yes; then
       
 35990      lt_prog_compiler_wl='-Wl,'
       
 35991      lt_prog_compiler_static='-static'
       
 35992  
       
 35993      case $host_os in
       
 35994        aix*)
       
 35995        # All AIX code is PIC.
       
 35996 @@ -7876,16 +8704,22 @@ lt_prog_compiler_static=
       
 35997        ;;
       
 35998  
       
 35999      darwin* | rhapsody*)
       
 36000        # PIC is the default on this platform
       
 36001        # Common symbols not allowed in MH_DYLIB files
       
 36002        lt_prog_compiler_pic='-fno-common'
       
 36003        ;;
       
 36004  
       
 36005 +    haiku*)
       
 36006 +      # PIC is the default for Haiku.
       
 36007 +      # The "-static" flag exists, but is broken.
       
 36008 +      lt_prog_compiler_static=
       
 36009 +      ;;
       
 36010 +
       
 36011      hpux*)
       
 36012        # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
       
 36013        # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
       
 36014        # sets the default TLS model and affects inlining.
       
 36015        case $host_cpu in
       
 36016        hppa*64*)
       
 36017  	# +Z the default
       
 36018  	;;
       
 36019 @@ -7918,16 +8752,25 @@ lt_prog_compiler_static=
       
 36020  	lt_prog_compiler_pic=-Kconform_pic
       
 36021        fi
       
 36022        ;;
       
 36023  
       
 36024      *)
       
 36025        lt_prog_compiler_pic='-fPIC'
       
 36026        ;;
       
 36027      esac
       
 36028 +
       
 36029 +    case $cc_basename in
       
 36030 +    nvcc*) # Cuda Compiler Driver 2.2
       
 36031 +      lt_prog_compiler_wl='-Xlinker '
       
 36032 +      if test -n "$lt_prog_compiler_pic"; then
       
 36033 +        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
       
 36034 +      fi
       
 36035 +      ;;
       
 36036 +    esac
       
 36037    else
       
 36038      # PORTME Check for flag to pass linker flags through the system compiler.
       
 36039      case $host_os in
       
 36040      aix*)
       
 36041        lt_prog_compiler_wl='-Wl,'
       
 36042        if test "$host_cpu" = ia64; then
       
 36043  	# AIX 5 now supports IA64 processor
       
 36044  	lt_prog_compiler_static='-Bstatic'
       
 36045 @@ -7959,17 +8802,17 @@ lt_prog_compiler_static=
       
 36046        ;;
       
 36047  
       
 36048      irix5* | irix6* | nonstopux*)
       
 36049        lt_prog_compiler_wl='-Wl,'
       
 36050        # PIC (with -KPIC) is the default.
       
 36051        lt_prog_compiler_static='-non_shared'
       
 36052        ;;
       
 36053  
       
 36054 -    linux* | k*bsd*-gnu)
       
 36055 +    linux* | k*bsd*-gnu | kopensolaris*-gnu)
       
 36056        case $cc_basename in
       
 36057        # old Intel for x86_64 which still supported -KPIC.
       
 36058        ecc*)
       
 36059  	lt_prog_compiler_wl='-Wl,'
       
 36060  	lt_prog_compiler_pic='-KPIC'
       
 36061  	lt_prog_compiler_static='-static'
       
 36062          ;;
       
 36063        # icc used to be incompatible with GCC.
       
 36064 @@ -7980,47 +8823,68 @@ lt_prog_compiler_static=
       
 36065  	lt_prog_compiler_static='-static'
       
 36066          ;;
       
 36067        # Lahey Fortran 8.1.
       
 36068        lf95*)
       
 36069  	lt_prog_compiler_wl='-Wl,'
       
 36070  	lt_prog_compiler_pic='--shared'
       
 36071  	lt_prog_compiler_static='--static'
       
 36072  	;;
       
 36073 -      pgcc* | pgf77* | pgf90* | pgf95*)
       
 36074 +      nagfor*)
       
 36075 +	# NAG Fortran compiler
       
 36076 +	lt_prog_compiler_wl='-Wl,-Wl,,'
       
 36077 +	lt_prog_compiler_pic='-PIC'
       
 36078 +	lt_prog_compiler_static='-Bstatic'
       
 36079 +	;;
       
 36080 +      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
       
 36081          # Portland Group compilers (*not* the Pentium gcc compiler,
       
 36082  	# which looks to be a dead project)
       
 36083  	lt_prog_compiler_wl='-Wl,'
       
 36084  	lt_prog_compiler_pic='-fpic'
       
 36085  	lt_prog_compiler_static='-Bstatic'
       
 36086          ;;
       
 36087        ccc*)
       
 36088          lt_prog_compiler_wl='-Wl,'
       
 36089          # All Alpha code is PIC.
       
 36090          lt_prog_compiler_static='-non_shared'
       
 36091          ;;
       
 36092 -      xl*)
       
 36093 -	# IBM XL C 8.0/Fortran 10.1 on PPC
       
 36094 +      xl* | bgxl* | bgf* | mpixl*)
       
 36095 +	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
       
 36096  	lt_prog_compiler_wl='-Wl,'
       
 36097  	lt_prog_compiler_pic='-qpic'
       
 36098  	lt_prog_compiler_static='-qstaticlink'
       
 36099  	;;
       
 36100        *)
       
 36101  	case `$CC -V 2>&1 | sed 5q` in
       
 36102 +	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
       
 36103 +	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
       
 36104 +	  lt_prog_compiler_pic='-KPIC'
       
 36105 +	  lt_prog_compiler_static='-Bstatic'
       
 36106 +	  lt_prog_compiler_wl=''
       
 36107 +	  ;;
       
 36108 +	*Sun\ F* | *Sun*Fortran*)
       
 36109 +	  lt_prog_compiler_pic='-KPIC'
       
 36110 +	  lt_prog_compiler_static='-Bstatic'
       
 36111 +	  lt_prog_compiler_wl='-Qoption ld '
       
 36112 +	  ;;
       
 36113  	*Sun\ C*)
       
 36114  	  # Sun C 5.9
       
 36115  	  lt_prog_compiler_pic='-KPIC'
       
 36116  	  lt_prog_compiler_static='-Bstatic'
       
 36117  	  lt_prog_compiler_wl='-Wl,'
       
 36118  	  ;;
       
 36119 -	*Sun\ F*)
       
 36120 -	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
       
 36121 -	  lt_prog_compiler_pic='-KPIC'
       
 36122 +        *Intel*\ [CF]*Compiler*)
       
 36123 +	  lt_prog_compiler_wl='-Wl,'
       
 36124 +	  lt_prog_compiler_pic='-fPIC'
       
 36125 +	  lt_prog_compiler_static='-static'
       
 36126 +	  ;;
       
 36127 +	*Portland\ Group*)
       
 36128 +	  lt_prog_compiler_wl='-Wl,'
       
 36129 +	  lt_prog_compiler_pic='-fpic'
       
 36130  	  lt_prog_compiler_static='-Bstatic'
       
 36131 -	  lt_prog_compiler_wl=''
       
 36132  	  ;;
       
 36133  	esac
       
 36134  	;;
       
 36135        esac
       
 36136        ;;
       
 36137  
       
 36138      newsos6)
       
 36139        lt_prog_compiler_pic='-KPIC'
       
 36140 @@ -8042,17 +8906,17 @@ lt_prog_compiler_static=
       
 36141      rdos*)
       
 36142        lt_prog_compiler_static='-non_shared'
       
 36143        ;;
       
 36144  
       
 36145      solaris*)
       
 36146        lt_prog_compiler_pic='-KPIC'
       
 36147        lt_prog_compiler_static='-Bstatic'
       
 36148        case $cc_basename in
       
 36149 -      f77* | f90* | f95*)
       
 36150 +      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
       
 36151  	lt_prog_compiler_wl='-Qoption ld ';;
       
 36152        *)
       
 36153  	lt_prog_compiler_wl='-Wl,';;
       
 36154        esac
       
 36155        ;;
       
 36156  
       
 36157      sunos4*)
       
 36158        lt_prog_compiler_wl='-Qoption ld '
       
 36159 @@ -8099,55 +8963,59 @@ case $host_os in
       
 36160    # For platforms which do not support PIC, -DPIC is meaningless:
       
 36161    *djgpp*)
       
 36162      lt_prog_compiler_pic=
       
 36163      ;;
       
 36164    *)
       
 36165      lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
       
 36166      ;;
       
 36167  esac
       
 36168 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
       
 36169 -$as_echo "$lt_prog_compiler_pic" >&6; }
       
 36170 -
       
 36171 -
       
 36172 -
       
 36173 -
       
 36174 -
       
 36175 +
       
 36176 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
       
 36177 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       
 36178 +if ${lt_cv_prog_compiler_pic+:} false; then :
       
 36179 +  $as_echo_n "(cached) " >&6
       
 36180 +else
       
 36181 +  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
       
 36182 +fi
       
 36183 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
       
 36184 +$as_echo "$lt_cv_prog_compiler_pic" >&6; }
       
 36185 +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
       
 36186  
       
 36187  #
       
 36188  # Check to make sure the PIC flag actually works.
       
 36189  #
       
 36190  if test -n "$lt_prog_compiler_pic"; then
       
 36191    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
       
 36192  $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
       
 36193 -if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
       
 36194 +if ${lt_cv_prog_compiler_pic_works+:} false; then :
       
 36195    $as_echo_n "(cached) " >&6
       
 36196  else
       
 36197    lt_cv_prog_compiler_pic_works=no
       
 36198     ac_outfile=conftest.$ac_objext
       
 36199     echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 36200     lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
       
 36201     # Insert the option either (1) after the last *FLAGS variable, or
       
 36202     # (2) before a word containing "conftest.", or (3) at the end.
       
 36203     # Note that $ac_compile itself does not contain backslashes and begins
       
 36204     # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 36205     # The option is referenced via a variable to avoid confusing sed.
       
 36206     lt_compile=`echo "$ac_compile" | $SED \
       
 36207     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 36208     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
       
 36209     -e 's:$: $lt_compiler_flag:'`
       
 36210 -   (eval echo "\"\$as_me:8131: $lt_compile\"" >&5)
       
 36211 +   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
       
 36212     (eval "$lt_compile" 2>conftest.err)
       
 36213     ac_status=$?
       
 36214     cat conftest.err >&5
       
 36215 -   echo "$as_me:8135: \$? = $ac_status" >&5
       
 36216 +   echo "$as_me:$LINENO: \$? = $ac_status" >&5
       
 36217     if (exit $ac_status) && test -s "$ac_outfile"; then
       
 36218       # The compiler can only warn and ignore the option if not recognized
       
 36219       # So say no if there are warnings other than the usual output.
       
 36220 -     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
       
 36221 +     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
       
 36222       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 36223       if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
       
 36224         lt_cv_prog_compiler_pic_works=yes
       
 36225       fi
       
 36226     fi
       
 36227     $RM conftest*
       
 36228  
       
 36229  fi
       
 36230 @@ -8166,36 +9034,41 @@ fi
       
 36231  
       
 36232  fi
       
 36233  
       
 36234  
       
 36235  
       
 36236  
       
 36237  
       
 36238  
       
 36239 +
       
 36240 +
       
 36241 +
       
 36242 +
       
 36243 +
       
 36244  #
       
 36245  # Check to make sure the static flag actually works.
       
 36246  #
       
 36247  wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
       
 36248  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
       
 36249  $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
       
 36250 -if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
       
 36251 +if ${lt_cv_prog_compiler_static_works+:} false; then :
       
 36252    $as_echo_n "(cached) " >&6
       
 36253  else
       
 36254    lt_cv_prog_compiler_static_works=no
       
 36255     save_LDFLAGS="$LDFLAGS"
       
 36256     LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
       
 36257     echo "$lt_simple_link_test_code" > conftest.$ac_ext
       
 36258     if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
       
 36259       # The linker can only warn and ignore the option if not recognized
       
 36260       # So say no if there are warnings
       
 36261       if test -s conftest.err; then
       
 36262         # Append any errors to the config.log.
       
 36263         cat conftest.err 1>&5
       
 36264 -       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
       
 36265 +       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
       
 36266         $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 36267         if diff conftest.exp conftest.er2 >/dev/null; then
       
 36268           lt_cv_prog_compiler_static_works=yes
       
 36269         fi
       
 36270       else
       
 36271         lt_cv_prog_compiler_static_works=yes
       
 36272       fi
       
 36273     fi
       
 36274 @@ -8215,17 +9088,17 @@ fi
       
 36275  
       
 36276  
       
 36277  
       
 36278  
       
 36279  
       
 36280  
       
 36281    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
       
 36282  $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
       
 36283 -if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
       
 36284 +if ${lt_cv_prog_compiler_c_o+:} false; then :
       
 36285    $as_echo_n "(cached) " >&6
       
 36286  else
       
 36287    lt_cv_prog_compiler_c_o=no
       
 36288     $RM -r conftest 2>/dev/null
       
 36289     mkdir conftest
       
 36290     cd conftest
       
 36291     mkdir out
       
 36292     echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 36293 @@ -8234,26 +9107,26 @@ else
       
 36294     # Insert the option either (1) after the last *FLAGS variable, or
       
 36295     # (2) before a word containing "conftest.", or (3) at the end.
       
 36296     # Note that $ac_compile itself does not contain backslashes and begins
       
 36297     # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 36298     lt_compile=`echo "$ac_compile" | $SED \
       
 36299     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 36300     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
       
 36301     -e 's:$: $lt_compiler_flag:'`
       
 36302 -   (eval echo "\"\$as_me:8236: $lt_compile\"" >&5)
       
 36303 +   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
       
 36304     (eval "$lt_compile" 2>out/conftest.err)
       
 36305     ac_status=$?
       
 36306     cat out/conftest.err >&5
       
 36307 -   echo "$as_me:8240: \$? = $ac_status" >&5
       
 36308 +   echo "$as_me:$LINENO: \$? = $ac_status" >&5
       
 36309     if (exit $ac_status) && test -s out/conftest2.$ac_objext
       
 36310     then
       
 36311       # The compiler can only warn and ignore the option if not recognized
       
 36312       # So say no if there are warnings
       
 36313 -     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
       
 36314 +     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
       
 36315       $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
       
 36316       if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
       
 36317         lt_cv_prog_compiler_c_o=yes
       
 36318       fi
       
 36319     fi
       
 36320     chmod u+w . 2>&5
       
 36321     $RM conftest*
       
 36322     # SGI C++ compiler will create directory out/ii_files/ for
       
 36323 @@ -8270,17 +9143,17 @@ fi
       
 36324  
       
 36325  
       
 36326  
       
 36327  
       
 36328  
       
 36329  
       
 36330    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
       
 36331  $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
       
 36332 -if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
       
 36333 +if ${lt_cv_prog_compiler_c_o+:} false; then :
       
 36334    $as_echo_n "(cached) " >&6
       
 36335  else
       
 36336    lt_cv_prog_compiler_c_o=no
       
 36337     $RM -r conftest 2>/dev/null
       
 36338     mkdir conftest
       
 36339     cd conftest
       
 36340     mkdir out
       
 36341     echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 36342 @@ -8289,26 +9162,26 @@ else
       
 36343     # Insert the option either (1) after the last *FLAGS variable, or
       
 36344     # (2) before a word containing "conftest.", or (3) at the end.
       
 36345     # Note that $ac_compile itself does not contain backslashes and begins
       
 36346     # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 36347     lt_compile=`echo "$ac_compile" | $SED \
       
 36348     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 36349     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
       
 36350     -e 's:$: $lt_compiler_flag:'`
       
 36351 -   (eval echo "\"\$as_me:8291: $lt_compile\"" >&5)
       
 36352 +   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
       
 36353     (eval "$lt_compile" 2>out/conftest.err)
       
 36354     ac_status=$?
       
 36355     cat out/conftest.err >&5
       
 36356 -   echo "$as_me:8295: \$? = $ac_status" >&5
       
 36357 +   echo "$as_me:$LINENO: \$? = $ac_status" >&5
       
 36358     if (exit $ac_status) && test -s out/conftest2.$ac_objext
       
 36359     then
       
 36360       # The compiler can only warn and ignore the option if not recognized
       
 36361       # So say no if there are warnings
       
 36362 -     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
       
 36363 +     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
       
 36364       $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
       
 36365       if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
       
 36366         lt_cv_prog_compiler_c_o=yes
       
 36367       fi
       
 36368     fi
       
 36369     chmod u+w . 2>&5
       
 36370     $RM conftest*
       
 36371     # SGI C++ compiler will create directory out/ii_files/ for
       
 36372 @@ -8364,17 +9237,16 @@ fi
       
 36373    compiler_needs_object=no
       
 36374    enable_shared_with_static_runtimes=no
       
 36375    export_dynamic_flag_spec=
       
 36376    export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
       
 36377    hardcode_automatic=no
       
 36378    hardcode_direct=no
       
 36379    hardcode_direct_absolute=no
       
 36380    hardcode_libdir_flag_spec=
       
 36381 -  hardcode_libdir_flag_spec_ld=
       
 36382    hardcode_libdir_separator=
       
 36383    hardcode_minus_L=no
       
 36384    hardcode_shlibpath_var=unsupported
       
 36385    inherit_rpath=no
       
 36386    link_all_deplibs=unknown
       
 36387    module_cmds=
       
 36388    module_expsym_cmds=
       
 36389    old_archive_from_new_cmds=
       
 36390 @@ -8411,17 +9283,43 @@ fi
       
 36391      with_gnu_ld=yes
       
 36392      ;;
       
 36393    openbsd*)
       
 36394      with_gnu_ld=no
       
 36395      ;;
       
 36396    esac
       
 36397  
       
 36398    ld_shlibs=yes
       
 36399 +
       
 36400 +  # On some targets, GNU ld is compatible enough with the native linker
       
 36401 +  # that we're better off using the native interface for both.
       
 36402 +  lt_use_gnu_ld_interface=no
       
 36403    if test "$with_gnu_ld" = yes; then
       
 36404 +    case $host_os in
       
 36405 +      aix*)
       
 36406 +	# The AIX port of GNU ld has always aspired to compatibility
       
 36407 +	# with the native linker.  However, as the warning in the GNU ld
       
 36408 +	# block says, versions before 2.19.5* couldn't really create working
       
 36409 +	# shared libraries, regardless of the interface used.
       
 36410 +	case `$LD -v 2>&1` in
       
 36411 +	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
       
 36412 +	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
       
 36413 +	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
       
 36414 +	  *)
       
 36415 +	    lt_use_gnu_ld_interface=yes
       
 36416 +	    ;;
       
 36417 +	esac
       
 36418 +	;;
       
 36419 +      *)
       
 36420 +	lt_use_gnu_ld_interface=yes
       
 36421 +	;;
       
 36422 +    esac
       
 36423 +  fi
       
 36424 +
       
 36425 +  if test "$lt_use_gnu_ld_interface" = yes; then
       
 36426      # If archive_cmds runs LD, not CC, wlarc should be empty
       
 36427      wlarc='${wl}'
       
 36428  
       
 36429      # Set some defaults for GNU ld with shared library support. These
       
 36430      # are reset later if shared libraries are not supported. Putting them
       
 36431      # here allows them to be overridden if necessary.
       
 36432      runpath_var=LD_RUN_PATH
       
 36433      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
       
 36434 @@ -8429,36 +9327,38 @@ fi
       
 36435      # ancient GNU ld didn't support --whole-archive et. al.
       
 36436      if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
       
 36437        whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
       
 36438      else
       
 36439        whole_archive_flag_spec=
       
 36440      fi
       
 36441      supports_anon_versioning=no
       
 36442      case `$LD -v 2>&1` in
       
 36443 +      *GNU\ gold*) supports_anon_versioning=yes ;;
       
 36444        *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
       
 36445        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
       
 36446        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
       
 36447        *\ 2.11.*) ;; # other 2.11 versions
       
 36448        *) supports_anon_versioning=yes ;;
       
 36449      esac
       
 36450  
       
 36451      # See if GNU ld supports shared libraries.
       
 36452      case $host_os in
       
 36453      aix[3-9]*)
       
 36454        # On AIX/PPC, the GNU linker is very broken
       
 36455        if test "$host_cpu" != ia64; then
       
 36456  	ld_shlibs=no
       
 36457  	cat <<_LT_EOF 1>&2
       
 36458  
       
 36459 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported
       
 36460 +*** Warning: the GNU linker, at least up to release 2.19, is reported
       
 36461  *** to be unable to reliably create shared libraries on AIX.
       
 36462  *** Therefore, libtool is disabling shared libraries support.  If you
       
 36463 -*** really care for shared libraries, you may want to modify your PATH
       
 36464 -*** so that a non-GNU linker is found, and then restart.
       
 36465 +*** really care for shared libraries, you may want to install binutils
       
 36466 +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
       
 36467 +*** You will then need to restart the configuration process.
       
 36468  
       
 36469  _LT_EOF
       
 36470        fi
       
 36471        ;;
       
 36472  
       
 36473      amigaos*)
       
 36474        case $host_cpu in
       
 36475        powerpc)
       
 36476 @@ -8484,20 +9384,22 @@ fi
       
 36477  	ld_shlibs=no
       
 36478        fi
       
 36479        ;;
       
 36480  
       
 36481      cygwin* | mingw* | pw32* | cegcc*)
       
 36482        # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
       
 36483        # as there is no search path for DLLs.
       
 36484        hardcode_libdir_flag_spec='-L$libdir'
       
 36485 +      export_dynamic_flag_spec='${wl}--export-all-symbols'
       
 36486        allow_undefined_flag=unsupported
       
 36487        always_export_symbols=no
       
 36488        enable_shared_with_static_runtimes=yes
       
 36489 -      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
       
 36490 +      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'
       
 36491 +      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
       
 36492  
       
 36493        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
       
 36494          archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       
 36495  	# If the export-symbols file already is a .def file (1st line
       
 36496  	# is EXPORTS), use it as is; otherwise, prepend...
       
 36497  	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
       
 36498  	  cp $export_symbols $output_objdir/$soname.def;
       
 36499  	else
       
 36500 @@ -8505,108 +9407,117 @@ fi
       
 36501  	  cat $export_symbols >> $output_objdir/$soname.def;
       
 36502  	fi~
       
 36503  	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       
 36504        else
       
 36505  	ld_shlibs=no
       
 36506        fi
       
 36507        ;;
       
 36508  
       
 36509 +    haiku*)
       
 36510 +      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 36511 +      link_all_deplibs=yes
       
 36512 +      ;;
       
 36513 +
       
 36514      interix[3-9]*)
       
 36515        hardcode_direct=no
       
 36516        hardcode_shlibpath_var=no
       
 36517        hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
       
 36518        export_dynamic_flag_spec='${wl}-E'
       
 36519        # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       
 36520        # Instead, shared libraries are loaded at an image base (0x10000000 by
       
 36521        # default) and relocated if they conflict, which is a slow very memory
       
 36522        # consuming and fragmenting process.  To avoid this, we pick a random,
       
 36523        # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       
 36524        # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
       
 36525        archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       
 36526        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'
       
 36527        ;;
       
 36528  
       
 36529 -    gnu* | linux* | tpf* | k*bsd*-gnu)
       
 36530 +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       
 36531        tmp_diet=no
       
 36532        if test "$host_os" = linux-dietlibc; then
       
 36533  	case $cc_basename in
       
 36534  	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
       
 36535  	esac
       
 36536        fi
       
 36537        if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
       
 36538  	 && test "$tmp_diet" = no
       
 36539        then
       
 36540 -	tmp_addflag=
       
 36541 +	tmp_addflag=' $pic_flag'
       
 36542  	tmp_sharedflag='-shared'
       
 36543  	case $cc_basename,$host_cpu in
       
 36544          pgcc*)				# Portland Group C compiler
       
 36545 -	  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'
       
 36546 +	  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'
       
 36547  	  tmp_addflag=' $pic_flag'
       
 36548  	  ;;
       
 36549 -	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
       
 36550 -	  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'
       
 36551 +	pgf77* | pgf90* | pgf95* | pgfortran*)
       
 36552 +					# Portland Group f77 and f90 compilers
       
 36553 +	  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'
       
 36554  	  tmp_addflag=' $pic_flag -Mnomain' ;;
       
 36555  	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
       
 36556  	  tmp_addflag=' -i_dynamic' ;;
       
 36557  	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
       
 36558  	  tmp_addflag=' -i_dynamic -nofor_main' ;;
       
 36559  	ifc* | ifort*)			# Intel Fortran compiler
       
 36560  	  tmp_addflag=' -nofor_main' ;;
       
 36561  	lf95*)				# Lahey Fortran 8.1
       
 36562  	  whole_archive_flag_spec=
       
 36563  	  tmp_sharedflag='--shared' ;;
       
 36564 -	xl[cC]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
       
 36565 +	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
       
 36566  	  tmp_sharedflag='-qmkshrobj'
       
 36567  	  tmp_addflag= ;;
       
 36568 +	nvcc*)	# Cuda Compiler Driver 2.2
       
 36569 +	  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'
       
 36570 +	  compiler_needs_object=yes
       
 36571 +	  ;;
       
 36572  	esac
       
 36573  	case `$CC -V 2>&1 | sed 5q` in
       
 36574  	*Sun\ C*)			# Sun C 5.9
       
 36575 -	  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'
       
 36576 +	  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'
       
 36577  	  compiler_needs_object=yes
       
 36578  	  tmp_sharedflag='-G' ;;
       
 36579  	*Sun\ F*)			# Sun Fortran 8.3
       
 36580  	  tmp_sharedflag='-G' ;;
       
 36581  	esac
       
 36582  	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 36583  
       
 36584          if test "x$supports_anon_versioning" = xyes; then
       
 36585            archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
       
 36586  	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
       
 36587  	    echo "local: *; };" >> $output_objdir/$libname.ver~
       
 36588  	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
       
 36589          fi
       
 36590  
       
 36591  	case $cc_basename in
       
 36592 -	xlf*)
       
 36593 +	xlf* | bgf* | bgxlf* | mpixlf*)
       
 36594  	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
       
 36595  	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
       
 36596 -	  hardcode_libdir_flag_spec=
       
 36597 -	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
       
 36598 -	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
       
 36599 +	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
       
 36600 +	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
       
 36601  	  if test "x$supports_anon_versioning" = xyes; then
       
 36602  	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
       
 36603  	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
       
 36604  	      echo "local: *; };" >> $output_objdir/$libname.ver~
       
 36605 -	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
       
 36606 +	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
       
 36607  	  fi
       
 36608  	  ;;
       
 36609  	esac
       
 36610        else
       
 36611          ld_shlibs=no
       
 36612        fi
       
 36613        ;;
       
 36614  
       
 36615      netbsd*)
       
 36616        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
       
 36617  	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
       
 36618  	wlarc=
       
 36619        else
       
 36620 -	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 36621 -	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       
 36622 +	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 36623 +	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       
 36624        fi
       
 36625        ;;
       
 36626  
       
 36627      solaris*)
       
 36628        if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
       
 36629  	ld_shlibs=no
       
 36630  	cat <<_LT_EOF 1>&2
       
 36631  
       
 36632 @@ -8614,18 +9525,18 @@ fi
       
 36633  *** create shared libraries on Solaris systems.  Therefore, libtool
       
 36634  *** is disabling shared libraries support.  We urge you to upgrade GNU
       
 36635  *** binutils to release 2.9.1 or newer.  Another option is to modify
       
 36636  *** your PATH or compiler configuration so that the native linker is
       
 36637  *** used, and then restart.
       
 36638  
       
 36639  _LT_EOF
       
 36640        elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
       
 36641 -	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 36642 -	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       
 36643 +	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 36644 +	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       
 36645        else
       
 36646  	ld_shlibs=no
       
 36647        fi
       
 36648        ;;
       
 36649  
       
 36650      sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
       
 36651        case `$LD -v 2>&1` in
       
 36652          *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
       
 36653 @@ -8661,18 +9572,18 @@ fi
       
 36654        archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       
 36655        wlarc=
       
 36656        hardcode_direct=yes
       
 36657        hardcode_shlibpath_var=no
       
 36658        ;;
       
 36659  
       
 36660      *)
       
 36661        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
       
 36662 -	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 36663 -	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       
 36664 +	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 36665 +	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       
 36666        else
       
 36667  	ld_shlibs=no
       
 36668        fi
       
 36669        ;;
       
 36670      esac
       
 36671  
       
 36672      if test "$ld_shlibs" = no; then
       
 36673        runpath_var=
       
 36674 @@ -8702,18 +9613,20 @@ fi
       
 36675  	# On IA64, the linker does run time linking by default, so we don't
       
 36676  	# have to do anything special.
       
 36677  	aix_use_runtimelinking=no
       
 36678  	exp_sym_flag='-Bexport'
       
 36679  	no_entry_flag=""
       
 36680        else
       
 36681  	# If we're using GNU nm, then we don't want the "-C" option.
       
 36682  	# -C means demangle to AIX nm, but means don't demangle with GNU nm
       
 36683 +	# Also, AIX nm treats weak defined symbols like other global
       
 36684 +	# defined symbols, whereas GNU nm marks them as "W".
       
 36685  	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
       
 36686 -	  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'
       
 36687 +	  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'
       
 36688  	else
       
 36689  	  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'
       
 36690  	fi
       
 36691  	aix_use_runtimelinking=no
       
 36692  
       
 36693  	# Test if we are trying to use run time linking or normal
       
 36694  	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
       
 36695  	# need to do runtime linking.
       
 36696 @@ -8790,93 +9703,124 @@ fi
       
 36697        # underscore (_), so it is better to generate a list of symbols to export.
       
 36698        always_export_symbols=yes
       
 36699        if test "$aix_use_runtimelinking" = yes; then
       
 36700  	# Warning - without using the other runtime loading flags (-brtl),
       
 36701  	# -berok will link without error, but may produce a broken library.
       
 36702  	allow_undefined_flag='-berok'
       
 36703          # Determine the default libpath from the value encoded in an
       
 36704          # empty executable.
       
 36705 -        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 36706 +        if test "${lt_cv_aix_libpath+set}" = set; then
       
 36707 +  aix_libpath=$lt_cv_aix_libpath
       
 36708 +else
       
 36709 +  if ${lt_cv_aix_libpath_+:} false; then :
       
 36710 +  $as_echo_n "(cached) " >&6
       
 36711 +else
       
 36712 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 36713  /* end confdefs.h.  */
       
 36714  
       
 36715  int
       
 36716  main ()
       
 36717  {
       
 36718  
       
 36719    ;
       
 36720    return 0;
       
 36721  }
       
 36722  _ACEOF
       
 36723  if ac_fn_c_try_link "$LINENO"; then :
       
 36724  
       
 36725 -lt_aix_libpath_sed='
       
 36726 -    /Import File Strings/,/^$/ {
       
 36727 -	/^0/ {
       
 36728 -	    s/^0  *\(.*\)$/\1/
       
 36729 -	    p
       
 36730 -	}
       
 36731 -    }'
       
 36732 -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 36733 -# Check for a 64-bit object if we didn't find anything.
       
 36734 -if test -z "$aix_libpath"; then
       
 36735 -  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 36736 -fi
       
 36737 +  lt_aix_libpath_sed='
       
 36738 +      /Import File Strings/,/^$/ {
       
 36739 +	  /^0/ {
       
 36740 +	      s/^0  *\([^ ]*\) *$/\1/
       
 36741 +	      p
       
 36742 +	  }
       
 36743 +      }'
       
 36744 +  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 36745 +  # Check for a 64-bit object if we didn't find anything.
       
 36746 +  if test -z "$lt_cv_aix_libpath_"; then
       
 36747 +    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 36748 +  fi
       
 36749  fi
       
 36750  rm -f core conftest.err conftest.$ac_objext \
       
 36751      conftest$ac_exeext conftest.$ac_ext
       
 36752 -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       
 36753 +  if test -z "$lt_cv_aix_libpath_"; then
       
 36754 +    lt_cv_aix_libpath_="/usr/lib:/lib"
       
 36755 +  fi
       
 36756 +
       
 36757 +fi
       
 36758 +
       
 36759 +  aix_libpath=$lt_cv_aix_libpath_
       
 36760 +fi
       
 36761  
       
 36762          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 36763 -        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"
       
 36764 +        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"
       
 36765        else
       
 36766  	if test "$host_cpu" = ia64; then
       
 36767  	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
       
 36768  	  allow_undefined_flag="-z nodefs"
       
 36769  	  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"
       
 36770  	else
       
 36771  	 # Determine the default libpath from the value encoded in an
       
 36772  	 # empty executable.
       
 36773 -	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 36774 +	 if test "${lt_cv_aix_libpath+set}" = set; then
       
 36775 +  aix_libpath=$lt_cv_aix_libpath
       
 36776 +else
       
 36777 +  if ${lt_cv_aix_libpath_+:} false; then :
       
 36778 +  $as_echo_n "(cached) " >&6
       
 36779 +else
       
 36780 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 36781  /* end confdefs.h.  */
       
 36782  
       
 36783  int
       
 36784  main ()
       
 36785  {
       
 36786  
       
 36787    ;
       
 36788    return 0;
       
 36789  }
       
 36790  _ACEOF
       
 36791  if ac_fn_c_try_link "$LINENO"; then :
       
 36792  
       
 36793 -lt_aix_libpath_sed='
       
 36794 -    /Import File Strings/,/^$/ {
       
 36795 -	/^0/ {
       
 36796 -	    s/^0  *\(.*\)$/\1/
       
 36797 -	    p
       
 36798 -	}
       
 36799 -    }'
       
 36800 -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 36801 -# Check for a 64-bit object if we didn't find anything.
       
 36802 -if test -z "$aix_libpath"; then
       
 36803 -  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 36804 -fi
       
 36805 +  lt_aix_libpath_sed='
       
 36806 +      /Import File Strings/,/^$/ {
       
 36807 +	  /^0/ {
       
 36808 +	      s/^0  *\([^ ]*\) *$/\1/
       
 36809 +	      p
       
 36810 +	  }
       
 36811 +      }'
       
 36812 +  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 36813 +  # Check for a 64-bit object if we didn't find anything.
       
 36814 +  if test -z "$lt_cv_aix_libpath_"; then
       
 36815 +    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 36816 +  fi
       
 36817  fi
       
 36818  rm -f core conftest.err conftest.$ac_objext \
       
 36819      conftest$ac_exeext conftest.$ac_ext
       
 36820 -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       
 36821 +  if test -z "$lt_cv_aix_libpath_"; then
       
 36822 +    lt_cv_aix_libpath_="/usr/lib:/lib"
       
 36823 +  fi
       
 36824 +
       
 36825 +fi
       
 36826 +
       
 36827 +  aix_libpath=$lt_cv_aix_libpath_
       
 36828 +fi
       
 36829  
       
 36830  	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 36831  	  # Warning - without using the other run time loading flags,
       
 36832  	  # -berok will link without error, but may produce a broken library.
       
 36833  	  no_undefined_flag=' ${wl}-bernotok'
       
 36834  	  allow_undefined_flag=' ${wl}-berok'
       
 36835 -	  # Exported symbols can be pulled into shared objects from archives
       
 36836 -	  whole_archive_flag_spec='$convenience'
       
 36837 +	  if test "$with_gnu_ld" = yes; then
       
 36838 +	    # We only use this code for GNU lds that support --whole-archive.
       
 36839 +	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
       
 36840 +	  else
       
 36841 +	    # Exported symbols can be pulled into shared objects from archives
       
 36842 +	    whole_archive_flag_spec='$convenience'
       
 36843 +	  fi
       
 36844  	  archive_cmds_need_lc=yes
       
 36845  	  # This is similar to how AIX traditionally builds its shared libraries.
       
 36846  	  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'
       
 36847  	fi
       
 36848        fi
       
 36849        ;;
       
 36850  
       
 36851      amigaos*)
       
 36852 @@ -8898,48 +9842,97 @@ if test -z "$aix_libpath"; then aix_libp
       
 36853        export_dynamic_flag_spec=-rdynamic
       
 36854        ;;
       
 36855  
       
 36856      cygwin* | mingw* | pw32* | cegcc*)
       
 36857        # When not using gcc, we currently assume that we are using
       
 36858        # Microsoft Visual C++.
       
 36859        # hardcode_libdir_flag_spec is actually meaningless, as there is
       
 36860        # no search path for DLLs.
       
 36861 -      hardcode_libdir_flag_spec=' '
       
 36862 -      allow_undefined_flag=unsupported
       
 36863 -      # Tell ltmain to make .lib files, not .a files.
       
 36864 -      libext=lib
       
 36865 -      # Tell ltmain to make .dll files, not .so files.
       
 36866 -      shrext_cmds=".dll"
       
 36867 -      # FIXME: Setting linknames here is a bad hack.
       
 36868 -      archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
       
 36869 -      # The linker will automatically build a .lib file if we build a DLL.
       
 36870 -      old_archive_from_new_cmds='true'
       
 36871 -      # FIXME: Should let the user specify the lib program.
       
 36872 -      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
       
 36873 -      fix_srcfile_path=''
       
 36874 -      enable_shared_with_static_runtimes=yes
       
 36875 +      case $cc_basename in
       
 36876 +      cl*)
       
 36877 +	# Native MSVC
       
 36878 +	hardcode_libdir_flag_spec=' '
       
 36879 +	allow_undefined_flag=unsupported
       
 36880 +	always_export_symbols=yes
       
 36881 +	file_list_spec='@'
       
 36882 +	# Tell ltmain to make .lib files, not .a files.
       
 36883 +	libext=lib
       
 36884 +	# Tell ltmain to make .dll files, not .so files.
       
 36885 +	shrext_cmds=".dll"
       
 36886 +	# FIXME: Setting linknames here is a bad hack.
       
 36887 +	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
       
 36888 +	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
       
 36889 +	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
       
 36890 +	  else
       
 36891 +	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
       
 36892 +	  fi~
       
 36893 +	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
       
 36894 +	  linknames='
       
 36895 +	# The linker will not automatically build a static lib if we build a DLL.
       
 36896 +	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
       
 36897 +	enable_shared_with_static_runtimes=yes
       
 36898 +	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
       
 36899 +	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
       
 36900 +	# Don't use ranlib
       
 36901 +	old_postinstall_cmds='chmod 644 $oldlib'
       
 36902 +	postlink_cmds='lt_outputfile="@OUTPUT@"~
       
 36903 +	  lt_tool_outputfile="@TOOL_OUTPUT@"~
       
 36904 +	  case $lt_outputfile in
       
 36905 +	    *.exe|*.EXE) ;;
       
 36906 +	    *)
       
 36907 +	      lt_outputfile="$lt_outputfile.exe"
       
 36908 +	      lt_tool_outputfile="$lt_tool_outputfile.exe"
       
 36909 +	      ;;
       
 36910 +	  esac~
       
 36911 +	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
       
 36912 +	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
       
 36913 +	    $RM "$lt_outputfile.manifest";
       
 36914 +	  fi'
       
 36915 +	;;
       
 36916 +      *)
       
 36917 +	# Assume MSVC wrapper
       
 36918 +	hardcode_libdir_flag_spec=' '
       
 36919 +	allow_undefined_flag=unsupported
       
 36920 +	# Tell ltmain to make .lib files, not .a files.
       
 36921 +	libext=lib
       
 36922 +	# Tell ltmain to make .dll files, not .so files.
       
 36923 +	shrext_cmds=".dll"
       
 36924 +	# FIXME: Setting linknames here is a bad hack.
       
 36925 +	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
       
 36926 +	# The linker will automatically build a .lib file if we build a DLL.
       
 36927 +	old_archive_from_new_cmds='true'
       
 36928 +	# FIXME: Should let the user specify the lib program.
       
 36929 +	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
       
 36930 +	enable_shared_with_static_runtimes=yes
       
 36931 +	;;
       
 36932 +      esac
       
 36933        ;;
       
 36934  
       
 36935      darwin* | rhapsody*)
       
 36936  
       
 36937  
       
 36938    archive_cmds_need_lc=no
       
 36939    hardcode_direct=no
       
 36940    hardcode_automatic=yes
       
 36941    hardcode_shlibpath_var=unsupported
       
 36942 -  whole_archive_flag_spec=''
       
 36943 +  if test "$lt_cv_ld_force_load" = "yes"; then
       
 36944 +    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\"`'
       
 36945 +
       
 36946 +  else
       
 36947 +    whole_archive_flag_spec=''
       
 36948 +  fi
       
 36949    link_all_deplibs=yes
       
 36950    allow_undefined_flag="$_lt_dar_allow_undefined"
       
 36951    case $cc_basename in
       
 36952       ifort*) _lt_dar_can_shared=yes ;;
       
 36953       *) _lt_dar_can_shared=$GCC ;;
       
 36954    esac
       
 36955    if test "$_lt_dar_can_shared" = "yes"; then
       
 36956 -    output_verbose_link_cmd=echo
       
 36957 +    output_verbose_link_cmd=func_echo_all
       
 36958      archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
       
 36959      module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
       
 36960      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}"
       
 36961      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}"
       
 36962  
       
 36963    else
       
 36964    ld_shlibs=no
       
 36965    fi
       
 36966 @@ -8947,105 +9940,139 @@ if test -z "$aix_libpath"; then aix_libp
       
 36967        ;;
       
 36968  
       
 36969      dgux*)
       
 36970        archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 36971        hardcode_libdir_flag_spec='-L$libdir'
       
 36972        hardcode_shlibpath_var=no
       
 36973        ;;
       
 36974  
       
 36975 -    freebsd1*)
       
 36976 -      ld_shlibs=no
       
 36977 -      ;;
       
 36978 -
       
 36979      # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
       
 36980      # support.  Future versions do this automatically, but an explicit c++rt0.o
       
 36981      # does not break anything, and helps significantly (at the cost of a little
       
 36982      # extra space).
       
 36983      freebsd2.2*)
       
 36984        archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
       
 36985        hardcode_libdir_flag_spec='-R$libdir'
       
 36986        hardcode_direct=yes
       
 36987        hardcode_shlibpath_var=no
       
 36988        ;;
       
 36989  
       
 36990      # Unfortunately, older versions of FreeBSD 2 do not have this feature.
       
 36991 -    freebsd2*)
       
 36992 +    freebsd2.*)
       
 36993        archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       
 36994        hardcode_direct=yes
       
 36995        hardcode_minus_L=yes
       
 36996        hardcode_shlibpath_var=no
       
 36997        ;;
       
 36998  
       
 36999      # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
       
 37000      freebsd* | dragonfly*)
       
 37001 -      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
       
 37002 +      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       
 37003        hardcode_libdir_flag_spec='-R$libdir'
       
 37004        hardcode_direct=yes
       
 37005        hardcode_shlibpath_var=no
       
 37006        ;;
       
 37007  
       
 37008      hpux9*)
       
 37009        if test "$GCC" = yes; then
       
 37010 -	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'
       
 37011 +	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'
       
 37012        else
       
 37013  	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'
       
 37014        fi
       
 37015        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
       
 37016        hardcode_libdir_separator=:
       
 37017        hardcode_direct=yes
       
 37018  
       
 37019        # hardcode_minus_L: Not really in the search PATH,
       
 37020        # but as the default location of the library.
       
 37021        hardcode_minus_L=yes
       
 37022        export_dynamic_flag_spec='${wl}-E'
       
 37023        ;;
       
 37024  
       
 37025      hpux10*)
       
 37026 -      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
       
 37027 -	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 37028 +      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
       
 37029 +	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 37030        else
       
 37031  	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       
 37032        fi
       
 37033        if test "$with_gnu_ld" = no; then
       
 37034  	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
       
 37035 -	hardcode_libdir_flag_spec_ld='+b $libdir'
       
 37036  	hardcode_libdir_separator=:
       
 37037  	hardcode_direct=yes
       
 37038  	hardcode_direct_absolute=yes
       
 37039  	export_dynamic_flag_spec='${wl}-E'
       
 37040  	# hardcode_minus_L: Not really in the search PATH,
       
 37041  	# but as the default location of the library.
       
 37042  	hardcode_minus_L=yes
       
 37043        fi
       
 37044        ;;
       
 37045  
       
 37046      hpux11*)
       
 37047 -      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
       
 37048 +      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
       
 37049  	case $host_cpu in
       
 37050  	hppa*64*)
       
 37051  	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 37052  	  ;;
       
 37053  	ia64*)
       
 37054 -	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
       
 37055 +	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
       
 37056  	  ;;
       
 37057  	*)
       
 37058 -	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 37059 +	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 37060  	  ;;
       
 37061  	esac
       
 37062        else
       
 37063  	case $host_cpu in
       
 37064  	hppa*64*)
       
 37065  	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 37066  	  ;;
       
 37067  	ia64*)
       
 37068  	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
       
 37069  	  ;;
       
 37070  	*)
       
 37071 -	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 37072 +
       
 37073 +	  # Older versions of the 11.00 compiler do not understand -b yet
       
 37074 +	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
       
 37075 +	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
       
 37076 +$as_echo_n "checking if $CC understands -b... " >&6; }
       
 37077 +if ${lt_cv_prog_compiler__b+:} false; then :
       
 37078 +  $as_echo_n "(cached) " >&6
       
 37079 +else
       
 37080 +  lt_cv_prog_compiler__b=no
       
 37081 +   save_LDFLAGS="$LDFLAGS"
       
 37082 +   LDFLAGS="$LDFLAGS -b"
       
 37083 +   echo "$lt_simple_link_test_code" > conftest.$ac_ext
       
 37084 +   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
       
 37085 +     # The linker can only warn and ignore the option if not recognized
       
 37086 +     # So say no if there are warnings
       
 37087 +     if test -s conftest.err; then
       
 37088 +       # Append any errors to the config.log.
       
 37089 +       cat conftest.err 1>&5
       
 37090 +       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
       
 37091 +       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 37092 +       if diff conftest.exp conftest.er2 >/dev/null; then
       
 37093 +         lt_cv_prog_compiler__b=yes
       
 37094 +       fi
       
 37095 +     else
       
 37096 +       lt_cv_prog_compiler__b=yes
       
 37097 +     fi
       
 37098 +   fi
       
 37099 +   $RM -r conftest*
       
 37100 +   LDFLAGS="$save_LDFLAGS"
       
 37101 +
       
 37102 +fi
       
 37103 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
       
 37104 +$as_echo "$lt_cv_prog_compiler__b" >&6; }
       
 37105 +
       
 37106 +if test x"$lt_cv_prog_compiler__b" = xyes; then
       
 37107 +    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 37108 +else
       
 37109 +    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       
 37110 +fi
       
 37111 +
       
 37112  	  ;;
       
 37113  	esac
       
 37114        fi
       
 37115        if test "$with_gnu_ld" = no; then
       
 37116  	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
       
 37117  	hardcode_libdir_separator=:
       
 37118  
       
 37119  	case $host_cpu in
       
 37120 @@ -9063,36 +10090,49 @@ if test -z "$aix_libpath"; then aix_libp
       
 37121  	  hardcode_minus_L=yes
       
 37122  	  ;;
       
 37123  	esac
       
 37124        fi
       
 37125        ;;
       
 37126  
       
 37127      irix5* | irix6* | nonstopux*)
       
 37128        if test "$GCC" = yes; then
       
 37129 -	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'
       
 37130 +	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'
       
 37131  	# Try to use the -exported_symbol ld option, if it does not
       
 37132  	# work, assume that -exports_file does not work either and
       
 37133  	# implicitly export all symbols.
       
 37134 -        save_LDFLAGS="$LDFLAGS"
       
 37135 -        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
       
 37136 -        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 37137 -/* end confdefs.h.  */
       
 37138 -int foo(void) {}
       
 37139 +	# This should be the same for all languages, so no per-tag cache variable.
       
 37140 +	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
       
 37141 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
       
 37142 +if ${lt_cv_irix_exported_symbol+:} false; then :
       
 37143 +  $as_echo_n "(cached) " >&6
       
 37144 +else
       
 37145 +  save_LDFLAGS="$LDFLAGS"
       
 37146 +	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
       
 37147 +	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 37148 +/* end confdefs.h.  */
       
 37149 +int foo (void) { return 0; }
       
 37150  _ACEOF
       
 37151  if ac_fn_c_try_link "$LINENO"; then :
       
 37152 -  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'
       
 37153 -
       
 37154 +  lt_cv_irix_exported_symbol=yes
       
 37155 +else
       
 37156 +  lt_cv_irix_exported_symbol=no
       
 37157  fi
       
 37158  rm -f core conftest.err conftest.$ac_objext \
       
 37159      conftest$ac_exeext conftest.$ac_ext
       
 37160 -        LDFLAGS="$save_LDFLAGS"
       
 37161 +           LDFLAGS="$save_LDFLAGS"
       
 37162 +fi
       
 37163 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
       
 37164 +$as_echo "$lt_cv_irix_exported_symbol" >&6; }
       
 37165 +	if test "$lt_cv_irix_exported_symbol" = yes; then
       
 37166 +          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'
       
 37167 +	fi
       
 37168        else
       
 37169 -	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'
       
 37170 -	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'
       
 37171 +	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'
       
 37172 +	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'
       
 37173        fi
       
 37174        archive_cmds_need_lc='no'
       
 37175        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
       
 37176        hardcode_libdir_separator=:
       
 37177        inherit_rpath=yes
       
 37178        link_all_deplibs=yes
       
 37179        ;;
       
 37180  
       
 37181 @@ -9144,58 +10184,58 @@ rm -f core conftest.err conftest.$ac_obj
       
 37182  	ld_shlibs=no
       
 37183        fi
       
 37184        ;;
       
 37185  
       
 37186      os2*)
       
 37187        hardcode_libdir_flag_spec='-L$libdir'
       
 37188        hardcode_minus_L=yes
       
 37189        allow_undefined_flag=unsupported
       
 37190 -      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'
       
 37191 +      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'
       
 37192        old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
       
 37193        ;;
       
 37194  
       
 37195      osf3*)
       
 37196        if test "$GCC" = yes; then
       
 37197  	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
       
 37198 -	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'
       
 37199 +	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'
       
 37200        else
       
 37201  	allow_undefined_flag=' -expect_unresolved \*'
       
 37202 -	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'
       
 37203 +	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'
       
 37204        fi
       
 37205        archive_cmds_need_lc='no'
       
 37206        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
       
 37207        hardcode_libdir_separator=:
       
 37208        ;;
       
 37209  
       
 37210      osf4* | osf5*)	# as osf3* with the addition of -msym flag
       
 37211        if test "$GCC" = yes; then
       
 37212  	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
       
 37213 -	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'
       
 37214 +	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'
       
 37215  	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
       
 37216        else
       
 37217  	allow_undefined_flag=' -expect_unresolved \*'
       
 37218 -	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'
       
 37219 +	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'
       
 37220  	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~
       
 37221 -	$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'
       
 37222 +	$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'
       
 37223  
       
 37224  	# Both c and cxx compiler support -rpath directly
       
 37225  	hardcode_libdir_flag_spec='-rpath $libdir'
       
 37226        fi
       
 37227        archive_cmds_need_lc='no'
       
 37228        hardcode_libdir_separator=:
       
 37229        ;;
       
 37230  
       
 37231      solaris*)
       
 37232        no_undefined_flag=' -z defs'
       
 37233        if test "$GCC" = yes; then
       
 37234  	wlarc='${wl}'
       
 37235 -	archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 37236 +	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 37237  	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 37238 -	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       
 37239 +	  $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'
       
 37240        else
       
 37241  	case `$CC -V 2>&1` in
       
 37242  	*"Compilers 5.0"*)
       
 37243  	  wlarc=''
       
 37244  	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 37245  	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 37246  	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
       
 37247  	  ;;
       
 37248 @@ -9373,54 +10413,60 @@ x|xyes)
       
 37249        # FIXME: we may have to deal with multi-command sequences.
       
 37250        ;;
       
 37251      '$CC '*)
       
 37252        # Test whether the compiler implicitly links with -lc since on some
       
 37253        # systems, -lgcc has to come before -lc. If gcc already passes -lc
       
 37254        # to ld, don't add -lc before -lgcc.
       
 37255        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
       
 37256  $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
       
 37257 -      $RM conftest*
       
 37258 -      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 37259 -
       
 37260 -      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
       
 37261 +if ${lt_cv_archive_cmds_need_lc+:} false; then :
       
 37262 +  $as_echo_n "(cached) " >&6
       
 37263 +else
       
 37264 +  $RM conftest*
       
 37265 +	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 37266 +
       
 37267 +	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
       
 37268    (eval $ac_compile) 2>&5
       
 37269    ac_status=$?
       
 37270    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 37271    test $ac_status = 0; } 2>conftest.err; then
       
 37272 -        soname=conftest
       
 37273 -        lib=conftest
       
 37274 -        libobjs=conftest.$ac_objext
       
 37275 -        deplibs=
       
 37276 -        wl=$lt_prog_compiler_wl
       
 37277 -	pic_flag=$lt_prog_compiler_pic
       
 37278 -        compiler_flags=-v
       
 37279 -        linker_flags=-v
       
 37280 -        verstring=
       
 37281 -        output_objdir=.
       
 37282 -        libname=conftest
       
 37283 -        lt_save_allow_undefined_flag=$allow_undefined_flag
       
 37284 -        allow_undefined_flag=
       
 37285 -        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
       
 37286 +	  soname=conftest
       
 37287 +	  lib=conftest
       
 37288 +	  libobjs=conftest.$ac_objext
       
 37289 +	  deplibs=
       
 37290 +	  wl=$lt_prog_compiler_wl
       
 37291 +	  pic_flag=$lt_prog_compiler_pic
       
 37292 +	  compiler_flags=-v
       
 37293 +	  linker_flags=-v
       
 37294 +	  verstring=
       
 37295 +	  output_objdir=.
       
 37296 +	  libname=conftest
       
 37297 +	  lt_save_allow_undefined_flag=$allow_undefined_flag
       
 37298 +	  allow_undefined_flag=
       
 37299 +	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
       
 37300    (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
       
 37301    ac_status=$?
       
 37302    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 37303    test $ac_status = 0; }
       
 37304 -        then
       
 37305 -	  archive_cmds_need_lc=no
       
 37306 -        else
       
 37307 -	  archive_cmds_need_lc=yes
       
 37308 -        fi
       
 37309 -        allow_undefined_flag=$lt_save_allow_undefined_flag
       
 37310 -      else
       
 37311 -        cat conftest.err 1>&5
       
 37312 -      fi
       
 37313 -      $RM conftest*
       
 37314 -      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
       
 37315 -$as_echo "$archive_cmds_need_lc" >&6; }
       
 37316 +	  then
       
 37317 +	    lt_cv_archive_cmds_need_lc=no
       
 37318 +	  else
       
 37319 +	    lt_cv_archive_cmds_need_lc=yes
       
 37320 +	  fi
       
 37321 +	  allow_undefined_flag=$lt_save_allow_undefined_flag
       
 37322 +	else
       
 37323 +	  cat conftest.err 1>&5
       
 37324 +	fi
       
 37325 +	$RM conftest*
       
 37326 +
       
 37327 +fi
       
 37328 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
       
 37329 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
       
 37330 +      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
       
 37331        ;;
       
 37332      esac
       
 37333    fi
       
 37334    ;;
       
 37335  esac
       
 37336  
       
 37337  
       
 37338  
       
 37339 @@ -9568,52 +10614,54 @@ esac
       
 37340  
       
 37341  
       
 37342  
       
 37343  
       
 37344  
       
 37345  
       
 37346  
       
 37347  
       
 37348 -
       
 37349 -
       
 37350 -
       
 37351 -
       
 37352 -
       
 37353    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
       
 37354  $as_echo_n "checking dynamic linker characteristics... " >&6; }
       
 37355  
       
 37356  if test "$GCC" = yes; then
       
 37357    case $host_os in
       
 37358      darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
       
 37359      *) lt_awk_arg="/^libraries:/" ;;
       
 37360    esac
       
 37361 -  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
       
 37362 -  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
       
 37363 +  case $host_os in
       
 37364 +    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
       
 37365 +    *) lt_sed_strip_eq="s,=/,/,g" ;;
       
 37366 +  esac
       
 37367 +  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
       
 37368 +  case $lt_search_path_spec in
       
 37369 +  *\;*)
       
 37370      # if the path contains ";" then we assume it to be the separator
       
 37371      # otherwise default to the standard path separator (i.e. ":") - it is
       
 37372      # assumed that no part of a normal pathname contains ";" but that should
       
 37373      # okay in the real world where ";" in dirpaths is itself problematic.
       
 37374 -    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
       
 37375 -  else
       
 37376 -    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
       
 37377 -  fi
       
 37378 +    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
       
 37379 +    ;;
       
 37380 +  *)
       
 37381 +    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
       
 37382 +    ;;
       
 37383 +  esac
       
 37384    # Ok, now we have the path, separated by spaces, we can step through it
       
 37385    # and add multilib dir if necessary.
       
 37386    lt_tmp_lt_search_path_spec=
       
 37387    lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
       
 37388    for lt_sys_path in $lt_search_path_spec; do
       
 37389      if test -d "$lt_sys_path/$lt_multi_os_dir"; then
       
 37390        lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
       
 37391      else
       
 37392        test -d "$lt_sys_path" && \
       
 37393  	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
       
 37394      fi
       
 37395    done
       
 37396 -  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
       
 37397 +  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
       
 37398  BEGIN {RS=" "; FS="/|\n";} {
       
 37399    lt_foo="";
       
 37400    lt_count=0;
       
 37401    for (lt_i = NF; lt_i > 0; lt_i--) {
       
 37402      if ($lt_i != "" && $lt_i != ".") {
       
 37403        if ($lt_i == "..") {
       
 37404          lt_count++;
       
 37405        } else {
       
 37406 @@ -9623,17 +10671,23 @@ BEGIN {RS=" "; FS="/|\n";} {
       
 37407            lt_count--;
       
 37408          }
       
 37409        }
       
 37410      }
       
 37411    }
       
 37412    if (lt_foo != "") { lt_freq[lt_foo]++; }
       
 37413    if (lt_freq[lt_foo] == 1) { print lt_foo; }
       
 37414  }'`
       
 37415 -  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
       
 37416 +  # AWK program above erroneously prepends '/' to C:/dos/paths
       
 37417 +  # for these hosts.
       
 37418 +  case $host_os in
       
 37419 +    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
       
 37420 +      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
       
 37421 +  esac
       
 37422 +  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
       
 37423  else
       
 37424    sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
       
 37425  fi
       
 37426  library_names_spec=
       
 37427  libname_spec='lib$name'
       
 37428  soname_spec=
       
 37429  shrext_cmds=".so"
       
 37430  postinstall_cmds=
       
 37431 @@ -9649,26 +10703,26 @@ need_lib_prefix=unknown
       
 37432  hardcode_into_libs=no
       
 37433  
       
 37434  # when you set need_version to no, make sure it does not cause -set_version
       
 37435  # flags to be left without arguments
       
 37436  need_version=unknown
       
 37437  
       
 37438  case $host_os in
       
 37439  aix3*)
       
 37440 -  version_type=linux
       
 37441 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37442    library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
       
 37443    shlibpath_var=LIBPATH
       
 37444  
       
 37445    # AIX 3 has no versioning support, so we append a major version to the name.
       
 37446    soname_spec='${libname}${release}${shared_ext}$major'
       
 37447    ;;
       
 37448  
       
 37449  aix[4-9]*)
       
 37450 -  version_type=linux
       
 37451 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37452    need_lib_prefix=no
       
 37453    need_version=no
       
 37454    hardcode_into_libs=yes
       
 37455    if test "$host_cpu" = ia64; then
       
 37456      # AIX 5 supports IA64
       
 37457      library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
       
 37458      shlibpath_var=LD_LIBRARY_PATH
       
 37459    else
       
 37460 @@ -9711,29 +10765,29 @@ amigaos*)
       
 37461    powerpc)
       
 37462      # Since July 2007 AmigaOS4 officially supports .so libraries.
       
 37463      # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
       
 37464      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 37465      ;;
       
 37466    m68k)
       
 37467      library_names_spec='$libname.ixlibrary $libname.a'
       
 37468      # Create ${libname}_ixlibrary.a entries in /sys/libs.
       
 37469 -    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'
       
 37470 +    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'
       
 37471      ;;
       
 37472    esac
       
 37473    ;;
       
 37474  
       
 37475  beos*)
       
 37476    library_names_spec='${libname}${shared_ext}'
       
 37477    dynamic_linker="$host_os ld.so"
       
 37478    shlibpath_var=LIBRARY_PATH
       
 37479    ;;
       
 37480  
       
 37481  bsdi[45]*)
       
 37482 -  version_type=linux
       
 37483 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37484    need_version=no
       
 37485    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 37486    soname_spec='${libname}${release}${shared_ext}$major'
       
 37487    finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
       
 37488    shlibpath_var=LD_LIBRARY_PATH
       
 37489    sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
       
 37490    sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
       
 37491    # the default ld.so.conf also contains /usr/contrib/lib and
       
 37492 @@ -9742,18 +10796,19 @@ bsdi[45]*)
       
 37493    ;;
       
 37494  
       
 37495  cygwin* | mingw* | pw32* | cegcc*)
       
 37496    version_type=windows
       
 37497    shrext_cmds=".dll"
       
 37498    need_version=no
       
 37499    need_lib_prefix=no
       
 37500  
       
 37501 -  case $GCC,$host_os in
       
 37502 -  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
       
 37503 +  case $GCC,$cc_basename in
       
 37504 +  yes,*)
       
 37505 +    # gcc
       
 37506      library_names_spec='$libname.dll.a'
       
 37507      # DLL is installed to $(libdir)/../bin by postinstall_cmds
       
 37508      postinstall_cmds='base_file=`basename \${file}`~
       
 37509        dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
       
 37510        dldir=$destdir/`dirname \$dlpath`~
       
 37511        test -d \$dldir || mkdir -p \$dldir~
       
 37512        $install_prog $dir/$dlname \$dldir/$dlname~
       
 37513        chmod a+x \$dldir/$dlname~
       
 37514 @@ -9764,46 +10819,93 @@ cygwin* | mingw* | pw32* | cegcc*)
       
 37515        dlpath=$dir/\$dldll~
       
 37516         $RM \$dlpath'
       
 37517      shlibpath_overrides_runpath=yes
       
 37518  
       
 37519      case $host_os in
       
 37520      cygwin*)
       
 37521        # Cygwin DLLs use 'cyg' prefix rather than 'lib'
       
 37522        soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
       
 37523 -      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
       
 37524 +
       
 37525 +      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
       
 37526        ;;
       
 37527      mingw* | cegcc*)
       
 37528        # MinGW DLLs use traditional 'lib' prefix
       
 37529        soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
       
 37530 -      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
       
 37531 -      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
       
 37532 -        # It is most probably a Windows format PATH printed by
       
 37533 -        # mingw gcc, but we are running on Cygwin. Gcc prints its search
       
 37534 -        # path with ; separators, and with drive letters. We can handle the
       
 37535 -        # drive letters (cygwin fileutils understands them), so leave them,
       
 37536 -        # especially as we might pass files found there to a mingw objdump,
       
 37537 -        # which wouldn't understand a cygwinified path. Ahh.
       
 37538 -        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
       
 37539 -      else
       
 37540 -        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
       
 37541 -      fi
       
 37542        ;;
       
 37543      pw32*)
       
 37544        # pw32 DLLs use 'pw' prefix rather than 'lib'
       
 37545        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
       
 37546        ;;
       
 37547      esac
       
 37548 +    dynamic_linker='Win32 ld.exe'
       
 37549 +    ;;
       
 37550 +
       
 37551 +  *,cl*)
       
 37552 +    # Native MSVC
       
 37553 +    libname_spec='$name'
       
 37554 +    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
       
 37555 +    library_names_spec='${libname}.dll.lib'
       
 37556 +
       
 37557 +    case $build_os in
       
 37558 +    mingw*)
       
 37559 +      sys_lib_search_path_spec=
       
 37560 +      lt_save_ifs=$IFS
       
 37561 +      IFS=';'
       
 37562 +      for lt_path in $LIB
       
 37563 +      do
       
 37564 +        IFS=$lt_save_ifs
       
 37565 +        # Let DOS variable expansion print the short 8.3 style file name.
       
 37566 +        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
       
 37567 +        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
       
 37568 +      done
       
 37569 +      IFS=$lt_save_ifs
       
 37570 +      # Convert to MSYS style.
       
 37571 +      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
       
 37572 +      ;;
       
 37573 +    cygwin*)
       
 37574 +      # Convert to unix form, then to dos form, then back to unix form
       
 37575 +      # but this time dos style (no spaces!) so that the unix form looks
       
 37576 +      # like /cygdrive/c/PROGRA~1:/cygdr...
       
 37577 +      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
       
 37578 +      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
       
 37579 +      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       
 37580 +      ;;
       
 37581 +    *)
       
 37582 +      sys_lib_search_path_spec="$LIB"
       
 37583 +      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
       
 37584 +        # It is most probably a Windows format PATH.
       
 37585 +        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
       
 37586 +      else
       
 37587 +        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       
 37588 +      fi
       
 37589 +      # FIXME: find the short name or the path components, as spaces are
       
 37590 +      # common. (e.g. "Program Files" -> "PROGRA~1")
       
 37591 +      ;;
       
 37592 +    esac
       
 37593 +
       
 37594 +    # DLL is installed to $(libdir)/../bin by postinstall_cmds
       
 37595 +    postinstall_cmds='base_file=`basename \${file}`~
       
 37596 +      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
       
 37597 +      dldir=$destdir/`dirname \$dlpath`~
       
 37598 +      test -d \$dldir || mkdir -p \$dldir~
       
 37599 +      $install_prog $dir/$dlname \$dldir/$dlname'
       
 37600 +    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
       
 37601 +      dlpath=$dir/\$dldll~
       
 37602 +       $RM \$dlpath'
       
 37603 +    shlibpath_overrides_runpath=yes
       
 37604 +    dynamic_linker='Win32 link.exe'
       
 37605      ;;
       
 37606  
       
 37607    *)
       
 37608 +    # Assume MSVC wrapper
       
 37609      library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
       
 37610 -    ;;
       
 37611 -  esac
       
 37612 -  dynamic_linker='Win32 ld.exe'
       
 37613 +    dynamic_linker='Win32 ld.exe'
       
 37614 +    ;;
       
 37615 +  esac
       
 37616    # FIXME: first we should search . and the directory the executable is in
       
 37617    shlibpath_var=PATH
       
 37618    ;;
       
 37619  
       
 37620  darwin* | rhapsody*)
       
 37621    dynamic_linker="$host_os dyld"
       
 37622    version_type=darwin
       
 37623    need_lib_prefix=no
       
 37624 @@ -9814,36 +10916,32 @@ darwin* | rhapsody*)
       
 37625    shlibpath_var=DYLD_LIBRARY_PATH
       
 37626    shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
       
 37627  
       
 37628    sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
       
 37629    sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
       
 37630    ;;
       
 37631  
       
 37632  dgux*)
       
 37633 -  version_type=linux
       
 37634 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37635    need_lib_prefix=no
       
 37636    need_version=no
       
 37637    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
       
 37638    soname_spec='${libname}${release}${shared_ext}$major'
       
 37639    shlibpath_var=LD_LIBRARY_PATH
       
 37640    ;;
       
 37641  
       
 37642 -freebsd1*)
       
 37643 -  dynamic_linker=no
       
 37644 -  ;;
       
 37645 -
       
 37646  freebsd* | dragonfly*)
       
 37647    # DragonFly does not have aout.  When/if they implement a new
       
 37648    # versioning mechanism, adjust this.
       
 37649    if test -x /usr/bin/objformat; then
       
 37650      objformat=`/usr/bin/objformat`
       
 37651    else
       
 37652      case $host_os in
       
 37653 -    freebsd[123]*) objformat=aout ;;
       
 37654 +    freebsd[23].*) objformat=aout ;;
       
 37655      *) objformat=elf ;;
       
 37656      esac
       
 37657    fi
       
 37658    version_type=freebsd-$objformat
       
 37659    case $version_type in
       
 37660      freebsd-elf*)
       
 37661        library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
       
 37662        need_version=no
       
 37663 @@ -9851,17 +10949,17 @@ freebsd* | dragonfly*)
       
 37664        ;;
       
 37665      freebsd-*)
       
 37666        library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
       
 37667        need_version=yes
       
 37668        ;;
       
 37669    esac
       
 37670    shlibpath_var=LD_LIBRARY_PATH
       
 37671    case $host_os in
       
 37672 -  freebsd2*)
       
 37673 +  freebsd2.*)
       
 37674      shlibpath_overrides_runpath=yes
       
 37675      ;;
       
 37676    freebsd3.[01]* | freebsdelf3.[01]*)
       
 37677      shlibpath_overrides_runpath=yes
       
 37678      hardcode_into_libs=yes
       
 37679      ;;
       
 37680    freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
       
 37681    freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
       
 37682 @@ -9871,22 +10969,36 @@ freebsd* | dragonfly*)
       
 37683    *) # from 4.6 on, and DragonFly
       
 37684      shlibpath_overrides_runpath=yes
       
 37685      hardcode_into_libs=yes
       
 37686      ;;
       
 37687    esac
       
 37688    ;;
       
 37689  
       
 37690  gnu*)
       
 37691 -  version_type=linux
       
 37692 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37693    need_lib_prefix=no
       
 37694    need_version=no
       
 37695    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
       
 37696    soname_spec='${libname}${release}${shared_ext}$major'
       
 37697    shlibpath_var=LD_LIBRARY_PATH
       
 37698 +  shlibpath_overrides_runpath=no
       
 37699 +  hardcode_into_libs=yes
       
 37700 +  ;;
       
 37701 +
       
 37702 +haiku*)
       
 37703 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37704 +  need_lib_prefix=no
       
 37705 +  need_version=no
       
 37706 +  dynamic_linker="$host_os runtime_loader"
       
 37707 +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
       
 37708 +  soname_spec='${libname}${release}${shared_ext}$major'
       
 37709 +  shlibpath_var=LIBRARY_PATH
       
 37710 +  shlibpath_overrides_runpath=yes
       
 37711 +  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
       
 37712    hardcode_into_libs=yes
       
 37713    ;;
       
 37714  
       
 37715  hpux9* | hpux10* | hpux11*)
       
 37716    # Give a soname corresponding to the major version so that dld.sl refuses to
       
 37717    # link against other versions.
       
 37718    version_type=sunos
       
 37719    need_lib_prefix=no
       
 37720 @@ -9922,38 +11034,40 @@ hpux9* | hpux10* | hpux11*)
       
 37721      shrext_cmds='.sl'
       
 37722      dynamic_linker="$host_os dld.sl"
       
 37723      shlibpath_var=SHLIB_PATH
       
 37724      shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
       
 37725      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 37726      soname_spec='${libname}${release}${shared_ext}$major'
       
 37727      ;;
       
 37728    esac
       
 37729 -  # HP-UX runs *really* slowly unless shared libraries are mode 555.
       
 37730 +  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
       
 37731    postinstall_cmds='chmod 555 $lib'
       
 37732 +  # or fails outright, so override atomically:
       
 37733 +  install_override_mode=555
       
 37734    ;;
       
 37735  
       
 37736  interix[3-9]*)
       
 37737 -  version_type=linux
       
 37738 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37739    need_lib_prefix=no
       
 37740    need_version=no
       
 37741    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
       
 37742    soname_spec='${libname}${release}${shared_ext}$major'
       
 37743    dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
       
 37744    shlibpath_var=LD_LIBRARY_PATH
       
 37745    shlibpath_overrides_runpath=no
       
 37746    hardcode_into_libs=yes
       
 37747    ;;
       
 37748  
       
 37749  irix5* | irix6* | nonstopux*)
       
 37750    case $host_os in
       
 37751      nonstopux*) version_type=nonstopux ;;
       
 37752      *)
       
 37753  	if test "$lt_cv_prog_gnu_ld" = yes; then
       
 37754 -		version_type=linux
       
 37755 +		version_type=linux # correct to gnu/linux during the next big refactor
       
 37756  	else
       
 37757  		version_type=irix
       
 37758  	fi ;;
       
 37759    esac
       
 37760    need_lib_prefix=no
       
 37761    need_version=no
       
 37762    soname_spec='${libname}${release}${shared_ext}$major'
       
 37763    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
       
 37764 @@ -9980,64 +11094,74 @@ irix5* | irix6* | nonstopux*)
       
 37765    hardcode_into_libs=yes
       
 37766    ;;
       
 37767  
       
 37768  # No shared lib support for Linux oldld, aout, or coff.
       
 37769  linux*oldld* | linux*aout* | linux*coff*)
       
 37770    dynamic_linker=no
       
 37771    ;;
       
 37772  
       
 37773 -# This must be Linux ELF.
       
 37774 -linux* | k*bsd*-gnu)
       
 37775 -  version_type=linux
       
 37776 +# This must be glibc/ELF.
       
 37777 +linux* | k*bsd*-gnu | kopensolaris*-gnu)
       
 37778 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37779    need_lib_prefix=no
       
 37780    need_version=no
       
 37781    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 37782    soname_spec='${libname}${release}${shared_ext}$major'
       
 37783    finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
       
 37784    shlibpath_var=LD_LIBRARY_PATH
       
 37785    shlibpath_overrides_runpath=no
       
 37786 +
       
 37787    # Some binutils ld are patched to set DT_RUNPATH
       
 37788 -  save_LDFLAGS=$LDFLAGS
       
 37789 -  save_libdir=$libdir
       
 37790 -  eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
       
 37791 -       LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
       
 37792 -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 37793 +  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
       
 37794 +  $as_echo_n "(cached) " >&6
       
 37795 +else
       
 37796 +  lt_cv_shlibpath_overrides_runpath=no
       
 37797 +    save_LDFLAGS=$LDFLAGS
       
 37798 +    save_libdir=$libdir
       
 37799 +    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
       
 37800 +	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
       
 37801 +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 37802  /* end confdefs.h.  */
       
 37803  
       
 37804  int
       
 37805  main ()
       
 37806  {
       
 37807  
       
 37808    ;
       
 37809    return 0;
       
 37810  }
       
 37811  _ACEOF
       
 37812  if ac_fn_c_try_link "$LINENO"; then :
       
 37813    if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
       
 37814 -  shlibpath_overrides_runpath=yes
       
 37815 +  lt_cv_shlibpath_overrides_runpath=yes
       
 37816  fi
       
 37817  fi
       
 37818  rm -f core conftest.err conftest.$ac_objext \
       
 37819      conftest$ac_exeext conftest.$ac_ext
       
 37820 -  LDFLAGS=$save_LDFLAGS
       
 37821 -  libdir=$save_libdir
       
 37822 +    LDFLAGS=$save_LDFLAGS
       
 37823 +    libdir=$save_libdir
       
 37824 +
       
 37825 +fi
       
 37826 +
       
 37827 +  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
       
 37828  
       
 37829    # This implies no fast_install, which is unacceptable.
       
 37830    # Some rework will be needed to allow for fast_install
       
 37831    # before this can be enabled.
       
 37832    hardcode_into_libs=yes
       
 37833  
       
 37834    # Add ABI-specific directories to the system library path.
       
 37835    sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
       
 37836  
       
 37837    # Append ld.so.conf contents to the search path
       
 37838    if test -f /etc/ld.so.conf; then
       
 37839 -    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' ' '`
       
 37840 +    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' ' '`
       
 37841      sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
       
 37842 +
       
 37843    fi
       
 37844  
       
 37845    # We used to test for /lib/ld.so.1 and disable shared libraries on
       
 37846    # powerpc, because MkLinux only supported shared libraries with the
       
 37847    # GNU dynamic linker.  Since this was broken with cross compilers,
       
 37848    # most powerpc-linux boxes support dynamic linking these days and
       
 37849    # people can always --disable-shared, the test was removed, and we
       
 37850    # assume the GNU/Linux dynamic linker is in use.
       
 37851 @@ -10058,17 +11182,17 @@ netbsd*)
       
 37852      dynamic_linker='NetBSD ld.elf_so'
       
 37853    fi
       
 37854    shlibpath_var=LD_LIBRARY_PATH
       
 37855    shlibpath_overrides_runpath=yes
       
 37856    hardcode_into_libs=yes
       
 37857    ;;
       
 37858  
       
 37859  newsos6)
       
 37860 -  version_type=linux
       
 37861 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37862    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 37863    shlibpath_var=LD_LIBRARY_PATH
       
 37864    shlibpath_overrides_runpath=yes
       
 37865    ;;
       
 37866  
       
 37867  *nto* | *qnx*)
       
 37868    version_type=qnx
       
 37869    need_lib_prefix=no
       
 37870 @@ -10127,17 +11251,17 @@ osf3* | osf4* | osf5*)
       
 37871    sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
       
 37872    ;;
       
 37873  
       
 37874  rdos*)
       
 37875    dynamic_linker=no
       
 37876    ;;
       
 37877  
       
 37878  solaris*)
       
 37879 -  version_type=linux
       
 37880 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37881    need_lib_prefix=no
       
 37882    need_version=no
       
 37883    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 37884    soname_spec='${libname}${release}${shared_ext}$major'
       
 37885    shlibpath_var=LD_LIBRARY_PATH
       
 37886    shlibpath_overrides_runpath=yes
       
 37887    hardcode_into_libs=yes
       
 37888    # ldd complains unless libraries are executable
       
 37889 @@ -10152,17 +11276,17 @@ sunos4*)
       
 37890    shlibpath_overrides_runpath=yes
       
 37891    if test "$with_gnu_ld" = yes; then
       
 37892      need_lib_prefix=no
       
 37893    fi
       
 37894    need_version=yes
       
 37895    ;;
       
 37896  
       
 37897  sysv4 | sysv4.3*)
       
 37898 -  version_type=linux
       
 37899 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37900    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 37901    soname_spec='${libname}${release}${shared_ext}$major'
       
 37902    shlibpath_var=LD_LIBRARY_PATH
       
 37903    case $host_vendor in
       
 37904      sni)
       
 37905        shlibpath_overrides_runpath=no
       
 37906        need_lib_prefix=no
       
 37907        runpath_var=LD_RUN_PATH
       
 37908 @@ -10176,17 +11300,17 @@ sysv4 | sysv4.3*)
       
 37909        shlibpath_overrides_runpath=no
       
 37910        sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
       
 37911        ;;
       
 37912    esac
       
 37913    ;;
       
 37914  
       
 37915  sysv4*MP*)
       
 37916    if test -d /usr/nec ;then
       
 37917 -    version_type=linux
       
 37918 +    version_type=linux # correct to gnu/linux during the next big refactor
       
 37919      library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
       
 37920      soname_spec='$libname${shared_ext}.$major'
       
 37921      shlibpath_var=LD_LIBRARY_PATH
       
 37922    fi
       
 37923    ;;
       
 37924  
       
 37925  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
       
 37926    version_type=freebsd-elf
       
 37927 @@ -10207,27 +11331,27 @@ sysv5* | sco3.2v5* | sco5v6* | unixware*
       
 37928  	;;
       
 37929      esac
       
 37930    fi
       
 37931    sys_lib_dlsearch_path_spec='/usr/lib'
       
 37932    ;;
       
 37933  
       
 37934  tpf*)
       
 37935    # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
       
 37936 -  version_type=linux
       
 37937 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37938    need_lib_prefix=no
       
 37939    need_version=no
       
 37940    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 37941    shlibpath_var=LD_LIBRARY_PATH
       
 37942    shlibpath_overrides_runpath=no
       
 37943    hardcode_into_libs=yes
       
 37944    ;;
       
 37945  
       
 37946  uts4*)
       
 37947 -  version_type=linux
       
 37948 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 37949    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 37950    soname_spec='${libname}${release}${shared_ext}$major'
       
 37951    shlibpath_var=LD_LIBRARY_PATH
       
 37952    ;;
       
 37953  
       
 37954  *)
       
 37955    dynamic_linker=no
       
 37956    ;;
       
 37957 @@ -10329,16 +11453,21 @@ fi
       
 37958  
       
 37959  
       
 37960  
       
 37961  
       
 37962  
       
 37963  
       
 37964  
       
 37965  
       
 37966 +
       
 37967 +
       
 37968 +
       
 37969 +
       
 37970 +
       
 37971    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
       
 37972  $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
       
 37973  hardcode_action=
       
 37974  if test -n "$hardcode_libdir_flag_spec" ||
       
 37975     test -n "$runpath_var" ||
       
 37976     test "X$hardcode_automatic" = "Xyes" ; then
       
 37977  
       
 37978    # We can hardcode non-existent directories.
       
 37979 @@ -10401,17 +11530,17 @@ else
       
 37980      lt_cv_dlopen="dlopen"
       
 37981      lt_cv_dlopen_libs=
       
 37982      ;;
       
 37983  
       
 37984    darwin*)
       
 37985    # if libdl is installed we need to link against it
       
 37986      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
       
 37987  $as_echo_n "checking for dlopen in -ldl... " >&6; }
       
 37988 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
       
 37989 +if ${ac_cv_lib_dl_dlopen+:} false; then :
       
 37990    $as_echo_n "(cached) " >&6
       
 37991  else
       
 37992    ac_check_lib_save_LIBS=$LIBS
       
 37993  LIBS="-ldl  $LIBS"
       
 37994  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 37995  /* end confdefs.h.  */
       
 37996  
       
 37997  /* Override any GCC internal prototype to avoid an error.
       
 37998 @@ -10435,36 +11564,36 @@ else
       
 37999    ac_cv_lib_dl_dlopen=no
       
 38000  fi
       
 38001  rm -f core conftest.err conftest.$ac_objext \
       
 38002      conftest$ac_exeext conftest.$ac_ext
       
 38003  LIBS=$ac_check_lib_save_LIBS
       
 38004  fi
       
 38005  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
       
 38006  $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
       
 38007 -if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
       
 38008 +if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
       
 38009    lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
       
 38010  else
       
 38011  
       
 38012      lt_cv_dlopen="dyld"
       
 38013      lt_cv_dlopen_libs=
       
 38014      lt_cv_dlopen_self=yes
       
 38015  
       
 38016  fi
       
 38017  
       
 38018      ;;
       
 38019  
       
 38020    *)
       
 38021      ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
       
 38022 -if test "x$ac_cv_func_shl_load" = x""yes; then :
       
 38023 +if test "x$ac_cv_func_shl_load" = xyes; then :
       
 38024    lt_cv_dlopen="shl_load"
       
 38025  else
       
 38026    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
       
 38027  $as_echo_n "checking for shl_load in -ldld... " >&6; }
       
 38028 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
       
 38029 +if ${ac_cv_lib_dld_shl_load+:} false; then :
       
 38030    $as_echo_n "(cached) " >&6
       
 38031  else
       
 38032    ac_check_lib_save_LIBS=$LIBS
       
 38033  LIBS="-ldld  $LIBS"
       
 38034  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38035  /* end confdefs.h.  */
       
 38036  
       
 38037  /* Override any GCC internal prototype to avoid an error.
       
 38038 @@ -10488,26 +11617,26 @@ else
       
 38039    ac_cv_lib_dld_shl_load=no
       
 38040  fi
       
 38041  rm -f core conftest.err conftest.$ac_objext \
       
 38042      conftest$ac_exeext conftest.$ac_ext
       
 38043  LIBS=$ac_check_lib_save_LIBS
       
 38044  fi
       
 38045  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
       
 38046  $as_echo "$ac_cv_lib_dld_shl_load" >&6; }
       
 38047 -if test "x$ac_cv_lib_dld_shl_load" = x""yes; then :
       
 38048 +if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
       
 38049    lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
       
 38050  else
       
 38051    ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
       
 38052 -if test "x$ac_cv_func_dlopen" = x""yes; then :
       
 38053 +if test "x$ac_cv_func_dlopen" = xyes; then :
       
 38054    lt_cv_dlopen="dlopen"
       
 38055  else
       
 38056    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
       
 38057  $as_echo_n "checking for dlopen in -ldl... " >&6; }
       
 38058 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
       
 38059 +if ${ac_cv_lib_dl_dlopen+:} false; then :
       
 38060    $as_echo_n "(cached) " >&6
       
 38061  else
       
 38062    ac_check_lib_save_LIBS=$LIBS
       
 38063  LIBS="-ldl  $LIBS"
       
 38064  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38065  /* end confdefs.h.  */
       
 38066  
       
 38067  /* Override any GCC internal prototype to avoid an error.
       
 38068 @@ -10531,22 +11660,22 @@ else
       
 38069    ac_cv_lib_dl_dlopen=no
       
 38070  fi
       
 38071  rm -f core conftest.err conftest.$ac_objext \
       
 38072      conftest$ac_exeext conftest.$ac_ext
       
 38073  LIBS=$ac_check_lib_save_LIBS
       
 38074  fi
       
 38075  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
       
 38076  $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
       
 38077 -if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
       
 38078 +if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
       
 38079    lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
       
 38080  else
       
 38081    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
       
 38082  $as_echo_n "checking for dlopen in -lsvld... " >&6; }
       
 38083 -if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
       
 38084 +if ${ac_cv_lib_svld_dlopen+:} false; then :
       
 38085    $as_echo_n "(cached) " >&6
       
 38086  else
       
 38087    ac_check_lib_save_LIBS=$LIBS
       
 38088  LIBS="-lsvld  $LIBS"
       
 38089  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38090  /* end confdefs.h.  */
       
 38091  
       
 38092  /* Override any GCC internal prototype to avoid an error.
       
 38093 @@ -10570,22 +11699,22 @@ else
       
 38094    ac_cv_lib_svld_dlopen=no
       
 38095  fi
       
 38096  rm -f core conftest.err conftest.$ac_objext \
       
 38097      conftest$ac_exeext conftest.$ac_ext
       
 38098  LIBS=$ac_check_lib_save_LIBS
       
 38099  fi
       
 38100  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
       
 38101  $as_echo "$ac_cv_lib_svld_dlopen" >&6; }
       
 38102 -if test "x$ac_cv_lib_svld_dlopen" = x""yes; then :
       
 38103 +if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
       
 38104    lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
       
 38105  else
       
 38106    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
       
 38107  $as_echo_n "checking for dld_link in -ldld... " >&6; }
       
 38108 -if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
       
 38109 +if ${ac_cv_lib_dld_dld_link+:} false; then :
       
 38110    $as_echo_n "(cached) " >&6
       
 38111  else
       
 38112    ac_check_lib_save_LIBS=$LIBS
       
 38113  LIBS="-ldld  $LIBS"
       
 38114  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38115  /* end confdefs.h.  */
       
 38116  
       
 38117  /* Override any GCC internal prototype to avoid an error.
       
 38118 @@ -10609,17 +11738,17 @@ else
       
 38119    ac_cv_lib_dld_dld_link=no
       
 38120  fi
       
 38121  rm -f core conftest.err conftest.$ac_objext \
       
 38122      conftest$ac_exeext conftest.$ac_ext
       
 38123  LIBS=$ac_check_lib_save_LIBS
       
 38124  fi
       
 38125  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
       
 38126  $as_echo "$ac_cv_lib_dld_dld_link" >&6; }
       
 38127 -if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
       
 38128 +if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
       
 38129    lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
       
 38130  fi
       
 38131  
       
 38132  
       
 38133  fi
       
 38134  
       
 38135  
       
 38136  fi
       
 38137 @@ -10650,26 +11779,26 @@ fi
       
 38138      save_LDFLAGS="$LDFLAGS"
       
 38139      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
       
 38140  
       
 38141      save_LIBS="$LIBS"
       
 38142      LIBS="$lt_cv_dlopen_libs $LIBS"
       
 38143  
       
 38144      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
       
 38145  $as_echo_n "checking whether a program can dlopen itself... " >&6; }
       
 38146 -if test "${lt_cv_dlopen_self+set}" = set; then :
       
 38147 +if ${lt_cv_dlopen_self+:} false; then :
       
 38148    $as_echo_n "(cached) " >&6
       
 38149  else
       
 38150    	  if test "$cross_compiling" = yes; then :
       
 38151    lt_cv_dlopen_self=cross
       
 38152  else
       
 38153    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
       
 38154    lt_status=$lt_dlunknown
       
 38155    cat > conftest.$ac_ext <<_LT_EOF
       
 38156 -#line 10661 "configure"
       
 38157 +#line $LINENO "configure"
       
 38158  #include "confdefs.h"
       
 38159  
       
 38160  #if HAVE_DLFCN_H
       
 38161  #include <dlfcn.h>
       
 38162  #endif
       
 38163  
       
 38164  #include <stdio.h>
       
 38165  
       
 38166 @@ -10700,26 +11829,36 @@ else
       
 38167  #        else
       
 38168  #          define LT_DLLAZY_OR_NOW	0
       
 38169  #        endif
       
 38170  #      endif
       
 38171  #    endif
       
 38172  #  endif
       
 38173  #endif
       
 38174  
       
 38175 -void fnord() { int i=42;}
       
 38176 +/* When -fvisbility=hidden is used, assume the code has been annotated
       
 38177 +   correspondingly for the symbols needed.  */
       
 38178 +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
       
 38179 +int fnord () __attribute__((visibility("default")));
       
 38180 +#endif
       
 38181 +
       
 38182 +int fnord () { return 42; }
       
 38183  int main ()
       
 38184  {
       
 38185    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
       
 38186    int status = $lt_dlunknown;
       
 38187  
       
 38188    if (self)
       
 38189      {
       
 38190        if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
       
 38191 -      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
       
 38192 +      else
       
 38193 +        {
       
 38194 +	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
       
 38195 +          else puts (dlerror ());
       
 38196 +	}
       
 38197        /* dlclose (self); */
       
 38198      }
       
 38199    else
       
 38200      puts (dlerror ());
       
 38201  
       
 38202    return status;
       
 38203  }
       
 38204  _LT_EOF
       
 38205 @@ -10746,26 +11885,26 @@ rm -fr conftest*
       
 38206  fi
       
 38207  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
       
 38208  $as_echo "$lt_cv_dlopen_self" >&6; }
       
 38209  
       
 38210      if test "x$lt_cv_dlopen_self" = xyes; then
       
 38211        wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
       
 38212        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
       
 38213  $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
       
 38214 -if test "${lt_cv_dlopen_self_static+set}" = set; then :
       
 38215 +if ${lt_cv_dlopen_self_static+:} false; then :
       
 38216    $as_echo_n "(cached) " >&6
       
 38217  else
       
 38218    	  if test "$cross_compiling" = yes; then :
       
 38219    lt_cv_dlopen_self_static=cross
       
 38220  else
       
 38221    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
       
 38222    lt_status=$lt_dlunknown
       
 38223    cat > conftest.$ac_ext <<_LT_EOF
       
 38224 -#line 10757 "configure"
       
 38225 +#line $LINENO "configure"
       
 38226  #include "confdefs.h"
       
 38227  
       
 38228  #if HAVE_DLFCN_H
       
 38229  #include <dlfcn.h>
       
 38230  #endif
       
 38231  
       
 38232  #include <stdio.h>
       
 38233  
       
 38234 @@ -10796,26 +11935,36 @@ else
       
 38235  #        else
       
 38236  #          define LT_DLLAZY_OR_NOW	0
       
 38237  #        endif
       
 38238  #      endif
       
 38239  #    endif
       
 38240  #  endif
       
 38241  #endif
       
 38242  
       
 38243 -void fnord() { int i=42;}
       
 38244 +/* When -fvisbility=hidden is used, assume the code has been annotated
       
 38245 +   correspondingly for the symbols needed.  */
       
 38246 +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
       
 38247 +int fnord () __attribute__((visibility("default")));
       
 38248 +#endif
       
 38249 +
       
 38250 +int fnord () { return 42; }
       
 38251  int main ()
       
 38252  {
       
 38253    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
       
 38254    int status = $lt_dlunknown;
       
 38255  
       
 38256    if (self)
       
 38257      {
       
 38258        if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
       
 38259 -      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
       
 38260 +      else
       
 38261 +        {
       
 38262 +	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
       
 38263 +          else puts (dlerror ());
       
 38264 +	}
       
 38265        /* dlclose (self); */
       
 38266      }
       
 38267    else
       
 38268      puts (dlerror ());
       
 38269  
       
 38270    return status;
       
 38271  }
       
 38272  _LT_EOF
       
 38273 @@ -10974,26 +12123,1043 @@ CC="$lt_save_CC"
       
 38274  
       
 38275  
       
 38276  
       
 38277  
       
 38278  
       
 38279  
       
 38280  
       
 38281  
       
 38282 +
       
 38283 +
       
 38284          ac_config_commands="$ac_config_commands libtool"
       
 38285  
       
 38286  
       
 38287  
       
 38288  
       
 38289  # Only expand once:
       
 38290  
       
 38291  
       
 38292  
       
 38293  
       
 38294 +# Test for 64-bit build.
       
 38295 +# The cast to long int works around a bug in the HP C Compiler
       
 38296 +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
       
 38297 +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
       
 38298 +# This bug is HP SR number 8606223364.
       
 38299 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
       
 38300 +$as_echo_n "checking size of size_t... " >&6; }
       
 38301 +if ${ac_cv_sizeof_size_t+:} false; then :
       
 38302 +  $as_echo_n "(cached) " >&6
       
 38303 +else
       
 38304 +  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t"        "$ac_includes_default"; then :
       
 38305 +
       
 38306 +else
       
 38307 +  if test "$ac_cv_type_size_t" = yes; then
       
 38308 +     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 38309 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 38310 +as_fn_error 77 "cannot compute sizeof (size_t)
       
 38311 +See \`config.log' for more details" "$LINENO" 5; }
       
 38312 +   else
       
 38313 +     ac_cv_sizeof_size_t=0
       
 38314 +   fi
       
 38315 +fi
       
 38316 +
       
 38317 +fi
       
 38318 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
       
 38319 +$as_echo "$ac_cv_sizeof_size_t" >&6; }
       
 38320 +
       
 38321 +
       
 38322 +
       
 38323 +cat >>confdefs.h <<_ACEOF
       
 38324 +#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
       
 38325 +_ACEOF
       
 38326 +
       
 38327 +
       
 38328 +
       
 38329 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5
       
 38330 +$as_echo_n "checking for C compiler vendor... " >&6; }
       
 38331 +if ${ax_cv_c_compiler_vendor+:} false; then :
       
 38332 +  $as_echo_n "(cached) " >&6
       
 38333 +else
       
 38334 +  # note: don't check for gcc first since some other compilers define __GNUC__
       
 38335 +  vendors="intel:     __ICC,__ECC,__INTEL_COMPILER
       
 38336 +           ibm:       __xlc__,__xlC__,__IBMC__,__IBMCPP__
       
 38337 +           pathscale: __PATHCC__,__PATHSCALE__
       
 38338 +           clang:     __clang__
       
 38339 +           gnu:       __GNUC__
       
 38340 +           sun:       __SUNPRO_C,__SUNPRO_CC
       
 38341 +           hp:        __HP_cc,__HP_aCC
       
 38342 +           dec:       __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
       
 38343 +           borland:   __BORLANDC__,__TURBOC__
       
 38344 +           comeau:    __COMO__
       
 38345 +           cray:      _CRAYC
       
 38346 +           kai:       __KCC
       
 38347 +           lcc:       __LCC__
       
 38348 +           sgi:       __sgi,sgi
       
 38349 +           microsoft: _MSC_VER
       
 38350 +           metrowerks: __MWERKS__
       
 38351 +           watcom:    __WATCOMC__
       
 38352 +           portland:  __PGI
       
 38353 +           unknown:   UNKNOWN"
       
 38354 +  for ventest in $vendors; do
       
 38355 +    case $ventest in
       
 38356 +      *:) vendor=$ventest; continue ;;
       
 38357 +      *)  vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
       
 38358 +    esac
       
 38359 +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38360 +/* end confdefs.h.  */
       
 38361 +
       
 38362 +int
       
 38363 +main ()
       
 38364 +{
       
 38365 +
       
 38366 +      #if !($vencpp)
       
 38367 +        thisisanerror;
       
 38368 +      #endif
       
 38369 +
       
 38370 +  ;
       
 38371 +  return 0;
       
 38372 +}
       
 38373 +_ACEOF
       
 38374 +if ac_fn_c_try_compile "$LINENO"; then :
       
 38375 +  break
       
 38376 +fi
       
 38377 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 38378 +  done
       
 38379 +  ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1`
       
 38380 +
       
 38381 +fi
       
 38382 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5
       
 38383 +$as_echo "$ax_cv_c_compiler_vendor" >&6; }
       
 38384 +
       
 38385 +
       
 38386 +
       
 38387 +
       
 38388 +
       
 38389 +
       
 38390 +# Check whether --enable-portable-binary was given.
       
 38391 +if test "${enable_portable_binary+set}" = set; then :
       
 38392 +  enableval=$enable_portable_binary; acx_maxopt_portable=$enableval
       
 38393 +else
       
 38394 +  acx_maxopt_portable=no
       
 38395 +fi
       
 38396 +
       
 38397 +
       
 38398 +# Try to determine "good" native compiler flags if none specified via CFLAGS
       
 38399 +if test "$ac_test_CFLAGS" != "set"; then
       
 38400 +  CFLAGS=""
       
 38401 +  case $ax_cv_c_compiler_vendor in
       
 38402 +    dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
       
 38403 +	 if test "x$acx_maxopt_portable" = xno; then
       
 38404 +           CFLAGS="$CFLAGS -arch host"
       
 38405 +         fi;;
       
 38406 +
       
 38407 +    sun) CFLAGS="-native -fast -xO5 -dalign"
       
 38408 +	 if test "x$acx_maxopt_portable" = xyes; then
       
 38409 +	   CFLAGS="$CFLAGS -xarch=generic"
       
 38410 +         fi;;
       
 38411 +
       
 38412 +    hp)  CFLAGS="+Oall +Optrs_ansi +DSnative"
       
 38413 +	 if test "x$acx_maxopt_portable" = xyes; then
       
 38414 +	   CFLAGS="$CFLAGS +DAportable"
       
 38415 +	 fi;;
       
 38416 +
       
 38417 +    ibm) if test "x$acx_maxopt_portable" = xno; then
       
 38418 +           xlc_opt="-qarch=auto -qtune=auto"
       
 38419 +	 else
       
 38420 +           xlc_opt="-qtune=auto"
       
 38421 +	 fi
       
 38422 +         as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$xlc_opt" | $as_tr_sh`
       
 38423 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5
       
 38424 +$as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; }
       
 38425 +if eval \${$as_CACHEVAR+:} false; then :
       
 38426 +  $as_echo_n "(cached) " >&6
       
 38427 +else
       
 38428 +
       
 38429 +  ax_check_save_flags=$CFLAGS
       
 38430 +  CFLAGS="$CFLAGS  $xlc_opt"
       
 38431 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38432 +/* end confdefs.h.  */
       
 38433 +
       
 38434 +int
       
 38435 +main ()
       
 38436 +{
       
 38437 +
       
 38438 +  ;
       
 38439 +  return 0;
       
 38440 +}
       
 38441 +_ACEOF
       
 38442 +if ac_fn_c_try_compile "$LINENO"; then :
       
 38443 +  eval "$as_CACHEVAR=yes"
       
 38444 +else
       
 38445 +  eval "$as_CACHEVAR=no"
       
 38446 +fi
       
 38447 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 38448 +  CFLAGS=$ax_check_save_flags
       
 38449 +fi
       
 38450 +eval ac_res=\$$as_CACHEVAR
       
 38451 +	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
       
 38452 +$as_echo "$ac_res" >&6; }
       
 38453 +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
       
 38454 +  CFLAGS="-O3 -qansialias -w $xlc_opt"
       
 38455 +else
       
 38456 +  CFLAGS="-O3 -qansialias -w"
       
 38457 +                echo "******************************************************"
       
 38458 +                echo "*  You seem to have the IBM  C compiler.  It is      *"
       
 38459 +                echo "*  recommended for best performance that you use:    *"
       
 38460 +                echo "*                                                    *"
       
 38461 +                echo "*    CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
       
 38462 +                echo "*                      ^^^        ^^^                *"
       
 38463 +                echo "*  where xxx is pwr2, pwr3, 604, or whatever kind of *"
       
 38464 +                echo "*  CPU you have.  (Set the CFLAGS environment var.   *"
       
 38465 +                echo "*  and re-run configure.)  For more info, man cc.    *"
       
 38466 +                echo "******************************************************"
       
 38467 +fi
       
 38468 +
       
 38469 +         ;;
       
 38470 +
       
 38471 +    intel) CFLAGS="-O3 -ansi_alias"
       
 38472 +	if test "x$acx_maxopt_portable" = xno; then
       
 38473 +	  icc_archflag=unknown
       
 38474 +	  icc_flags=""
       
 38475 +	  case $host_cpu in
       
 38476 +	    i686*|x86_64*)
       
 38477 +              # icc accepts gcc assembly syntax, so these should work:
       
 38478 +
       
 38479 +ac_ext=c
       
 38480 +ac_cpp='$CPP $CPPFLAGS'
       
 38481 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38482 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38483 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38484 +
       
 38485 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
       
 38486 +$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
       
 38487 +if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
       
 38488 +  $as_echo_n "(cached) " >&6
       
 38489 +else
       
 38490 +  if test "$cross_compiling" = yes; then :
       
 38491 +  ax_cv_gcc_x86_cpuid_0=unknown
       
 38492 +else
       
 38493 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38494 +/* end confdefs.h.  */
       
 38495 +#include <stdio.h>
       
 38496 +int
       
 38497 +main ()
       
 38498 +{
       
 38499 +
       
 38500 +     int op = 0, eax, ebx, ecx, edx;
       
 38501 +     FILE *f;
       
 38502 +      __asm__("cpuid"
       
 38503 +        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
       
 38504 +        : "a" (op));
       
 38505 +     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
       
 38506 +     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
       
 38507 +     fclose(f);
       
 38508 +     return 0;
       
 38509 +
       
 38510 +  ;
       
 38511 +  return 0;
       
 38512 +}
       
 38513 +_ACEOF
       
 38514 +if ac_fn_c_try_run "$LINENO"; then :
       
 38515 +  ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
       
 38516 +else
       
 38517 +  ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
       
 38518 +fi
       
 38519 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
       
 38520 +  conftest.$ac_objext conftest.beam conftest.$ac_ext
       
 38521 +fi
       
 38522 +
       
 38523 +fi
       
 38524 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
       
 38525 +$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
       
 38526 +ac_ext=c
       
 38527 +ac_cpp='$CPP $CPPFLAGS'
       
 38528 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38529 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38530 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38531 +
       
 38532 +
       
 38533 +
       
 38534 +ac_ext=c
       
 38535 +ac_cpp='$CPP $CPPFLAGS'
       
 38536 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38537 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38538 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38539 +
       
 38540 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
       
 38541 +$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
       
 38542 +if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
       
 38543 +  $as_echo_n "(cached) " >&6
       
 38544 +else
       
 38545 +  if test "$cross_compiling" = yes; then :
       
 38546 +  ax_cv_gcc_x86_cpuid_1=unknown
       
 38547 +else
       
 38548 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38549 +/* end confdefs.h.  */
       
 38550 +#include <stdio.h>
       
 38551 +int
       
 38552 +main ()
       
 38553 +{
       
 38554 +
       
 38555 +     int op = 1, eax, ebx, ecx, edx;
       
 38556 +     FILE *f;
       
 38557 +      __asm__("cpuid"
       
 38558 +        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
       
 38559 +        : "a" (op));
       
 38560 +     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
       
 38561 +     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
       
 38562 +     fclose(f);
       
 38563 +     return 0;
       
 38564 +
       
 38565 +  ;
       
 38566 +  return 0;
       
 38567 +}
       
 38568 +_ACEOF
       
 38569 +if ac_fn_c_try_run "$LINENO"; then :
       
 38570 +  ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
       
 38571 +else
       
 38572 +  ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
       
 38573 +fi
       
 38574 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
       
 38575 +  conftest.$ac_objext conftest.beam conftest.$ac_ext
       
 38576 +fi
       
 38577 +
       
 38578 +fi
       
 38579 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
       
 38580 +$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
       
 38581 +ac_ext=c
       
 38582 +ac_cpp='$CPP $CPPFLAGS'
       
 38583 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38584 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38585 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38586 +
       
 38587 +
       
 38588 +	      case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
       
 38589 +                *:756e6547:*:*) # Intel
       
 38590 +                  case $ax_cv_gcc_x86_cpuid_1 in
       
 38591 +                    *6a?:*[234]:*:*|*6[789b]?:*:*:*) icc_flags="-xK";;
       
 38592 +                    *f3[347]:*:*:*|*f41347:*:*:*) icc_flags="-xP -xN -xW -xK";;
       
 38593 +                    *f??:*:*:*) icc_flags="-xN -xW -xK";;
       
 38594 +                  esac ;;
       
 38595 +              esac ;;
       
 38596 +          esac
       
 38597 +          if test "x$icc_flags" != x; then
       
 38598 +            for flag in $icc_flags; do
       
 38599 +              as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
       
 38600 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
       
 38601 +$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
       
 38602 +if eval \${$as_CACHEVAR+:} false; then :
       
 38603 +  $as_echo_n "(cached) " >&6
       
 38604 +else
       
 38605 +
       
 38606 +  ax_check_save_flags=$CFLAGS
       
 38607 +  CFLAGS="$CFLAGS  $flag"
       
 38608 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38609 +/* end confdefs.h.  */
       
 38610 +
       
 38611 +int
       
 38612 +main ()
       
 38613 +{
       
 38614 +
       
 38615 +  ;
       
 38616 +  return 0;
       
 38617 +}
       
 38618 +_ACEOF
       
 38619 +if ac_fn_c_try_compile "$LINENO"; then :
       
 38620 +  eval "$as_CACHEVAR=yes"
       
 38621 +else
       
 38622 +  eval "$as_CACHEVAR=no"
       
 38623 +fi
       
 38624 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 38625 +  CFLAGS=$ax_check_save_flags
       
 38626 +fi
       
 38627 +eval ac_res=\$$as_CACHEVAR
       
 38628 +	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
       
 38629 +$as_echo "$ac_res" >&6; }
       
 38630 +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
       
 38631 +  icc_archflag=$flag; break
       
 38632 +else
       
 38633 +  :
       
 38634 +fi
       
 38635 +
       
 38636 +            done
       
 38637 +          fi
       
 38638 +          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5
       
 38639 +$as_echo_n "checking for icc architecture flag... " >&6; }
       
 38640 +	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5
       
 38641 +$as_echo "$icc_archflag" >&6; }
       
 38642 +          if test "x$icc_archflag" != xunknown; then
       
 38643 +            CFLAGS="$CFLAGS $icc_archflag"
       
 38644 +          fi
       
 38645 +        fi
       
 38646 +	;;
       
 38647 +
       
 38648 +    gnu)
       
 38649 +     # default optimization flags for gcc on all systems
       
 38650 +     CFLAGS="-O3 -fomit-frame-pointer"
       
 38651 +
       
 38652 +     # -malign-double for x86 systems
       
 38653 +     # LIBFFI -- DON'T DO THIS - CHANGES ABI
       
 38654 +     # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double")
       
 38655 +
       
 38656 +     #  -fstrict-aliasing for gcc-2.95+
       
 38657 +     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5
       
 38658 +$as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; }
       
 38659 +if ${ax_cv_check_cflags___fstrict_aliasing+:} false; then :
       
 38660 +  $as_echo_n "(cached) " >&6
       
 38661 +else
       
 38662 +
       
 38663 +  ax_check_save_flags=$CFLAGS
       
 38664 +  CFLAGS="$CFLAGS  -fstrict-aliasing"
       
 38665 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38666 +/* end confdefs.h.  */
       
 38667 +
       
 38668 +int
       
 38669 +main ()
       
 38670 +{
       
 38671 +
       
 38672 +  ;
       
 38673 +  return 0;
       
 38674 +}
       
 38675 +_ACEOF
       
 38676 +if ac_fn_c_try_compile "$LINENO"; then :
       
 38677 +  ax_cv_check_cflags___fstrict_aliasing=yes
       
 38678 +else
       
 38679 +  ax_cv_check_cflags___fstrict_aliasing=no
       
 38680 +fi
       
 38681 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 38682 +  CFLAGS=$ax_check_save_flags
       
 38683 +fi
       
 38684 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstrict_aliasing" >&5
       
 38685 +$as_echo "$ax_cv_check_cflags___fstrict_aliasing" >&6; }
       
 38686 +if test x"$ax_cv_check_cflags___fstrict_aliasing" = xyes; then :
       
 38687 +  CFLAGS="$CFLAGS -fstrict-aliasing"
       
 38688 +else
       
 38689 +  :
       
 38690 +fi
       
 38691 +
       
 38692 +
       
 38693 +     # note that we enable "unsafe" fp optimization with other compilers, too
       
 38694 +     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5
       
 38695 +$as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; }
       
 38696 +if ${ax_cv_check_cflags___ffast_math+:} false; then :
       
 38697 +  $as_echo_n "(cached) " >&6
       
 38698 +else
       
 38699 +
       
 38700 +  ax_check_save_flags=$CFLAGS
       
 38701 +  CFLAGS="$CFLAGS  -ffast-math"
       
 38702 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38703 +/* end confdefs.h.  */
       
 38704 +
       
 38705 +int
       
 38706 +main ()
       
 38707 +{
       
 38708 +
       
 38709 +  ;
       
 38710 +  return 0;
       
 38711 +}
       
 38712 +_ACEOF
       
 38713 +if ac_fn_c_try_compile "$LINENO"; then :
       
 38714 +  ax_cv_check_cflags___ffast_math=yes
       
 38715 +else
       
 38716 +  ax_cv_check_cflags___ffast_math=no
       
 38717 +fi
       
 38718 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 38719 +  CFLAGS=$ax_check_save_flags
       
 38720 +fi
       
 38721 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___ffast_math" >&5
       
 38722 +$as_echo "$ax_cv_check_cflags___ffast_math" >&6; }
       
 38723 +if test x"$ax_cv_check_cflags___ffast_math" = xyes; then :
       
 38724 +  CFLAGS="$CFLAGS -ffast-math"
       
 38725 +else
       
 38726 +  :
       
 38727 +fi
       
 38728 +
       
 38729 +
       
 38730 +
       
 38731 +
       
 38732 +
       
 38733 +
       
 38734 +# Check whether --with-gcc-arch was given.
       
 38735 +if test "${with_gcc_arch+set}" = set; then :
       
 38736 +  withval=$with_gcc_arch; ax_gcc_arch=$withval
       
 38737 +else
       
 38738 +  ax_gcc_arch=yes
       
 38739 +fi
       
 38740 +
       
 38741 +
       
 38742 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
       
 38743 +$as_echo_n "checking for gcc architecture flag... " >&6; }
       
 38744 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
       
 38745 +$as_echo "" >&6; }
       
 38746 +if ${ax_cv_gcc_archflag+:} false; then :
       
 38747 +  $as_echo_n "(cached) " >&6
       
 38748 +else
       
 38749 +
       
 38750 +ax_cv_gcc_archflag="unknown"
       
 38751 +
       
 38752 +if test "$GCC" = yes; then
       
 38753 +
       
 38754 +if test "x$ax_gcc_arch" = xyes; then
       
 38755 +ax_gcc_arch=""
       
 38756 +if test "$cross_compiling" = no; then
       
 38757 +case $host_cpu in
       
 38758 +  i[3456]86*|x86_64*) # use cpuid codes
       
 38759 +
       
 38760 +ac_ext=c
       
 38761 +ac_cpp='$CPP $CPPFLAGS'
       
 38762 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38763 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38764 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38765 +
       
 38766 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
       
 38767 +$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
       
 38768 +if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
       
 38769 +  $as_echo_n "(cached) " >&6
       
 38770 +else
       
 38771 +  if test "$cross_compiling" = yes; then :
       
 38772 +  ax_cv_gcc_x86_cpuid_0=unknown
       
 38773 +else
       
 38774 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38775 +/* end confdefs.h.  */
       
 38776 +#include <stdio.h>
       
 38777 +int
       
 38778 +main ()
       
 38779 +{
       
 38780 +
       
 38781 +     int op = 0, eax, ebx, ecx, edx;
       
 38782 +     FILE *f;
       
 38783 +      __asm__("cpuid"
       
 38784 +        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
       
 38785 +        : "a" (op));
       
 38786 +     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
       
 38787 +     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
       
 38788 +     fclose(f);
       
 38789 +     return 0;
       
 38790 +
       
 38791 +  ;
       
 38792 +  return 0;
       
 38793 +}
       
 38794 +_ACEOF
       
 38795 +if ac_fn_c_try_run "$LINENO"; then :
       
 38796 +  ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
       
 38797 +else
       
 38798 +  ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
       
 38799 +fi
       
 38800 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
       
 38801 +  conftest.$ac_objext conftest.beam conftest.$ac_ext
       
 38802 +fi
       
 38803 +
       
 38804 +fi
       
 38805 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
       
 38806 +$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
       
 38807 +ac_ext=c
       
 38808 +ac_cpp='$CPP $CPPFLAGS'
       
 38809 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38810 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38811 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38812 +
       
 38813 +
       
 38814 +
       
 38815 +ac_ext=c
       
 38816 +ac_cpp='$CPP $CPPFLAGS'
       
 38817 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38818 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38819 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38820 +
       
 38821 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
       
 38822 +$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
       
 38823 +if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
       
 38824 +  $as_echo_n "(cached) " >&6
       
 38825 +else
       
 38826 +  if test "$cross_compiling" = yes; then :
       
 38827 +  ax_cv_gcc_x86_cpuid_1=unknown
       
 38828 +else
       
 38829 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38830 +/* end confdefs.h.  */
       
 38831 +#include <stdio.h>
       
 38832 +int
       
 38833 +main ()
       
 38834 +{
       
 38835 +
       
 38836 +     int op = 1, eax, ebx, ecx, edx;
       
 38837 +     FILE *f;
       
 38838 +      __asm__("cpuid"
       
 38839 +        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
       
 38840 +        : "a" (op));
       
 38841 +     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
       
 38842 +     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
       
 38843 +     fclose(f);
       
 38844 +     return 0;
       
 38845 +
       
 38846 +  ;
       
 38847 +  return 0;
       
 38848 +}
       
 38849 +_ACEOF
       
 38850 +if ac_fn_c_try_run "$LINENO"; then :
       
 38851 +  ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
       
 38852 +else
       
 38853 +  ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
       
 38854 +fi
       
 38855 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
       
 38856 +  conftest.$ac_objext conftest.beam conftest.$ac_ext
       
 38857 +fi
       
 38858 +
       
 38859 +fi
       
 38860 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
       
 38861 +$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
       
 38862 +ac_ext=c
       
 38863 +ac_cpp='$CPP $CPPFLAGS'
       
 38864 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38865 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38866 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38867 +
       
 38868 +
       
 38869 +     case $ax_cv_gcc_x86_cpuid_0 in
       
 38870 +       *:756e6547:*:*) # Intel
       
 38871 +          case $ax_cv_gcc_x86_cpuid_1 in
       
 38872 +	    *5[48]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
       
 38873 +	    *5??:*:*:*) ax_gcc_arch=pentium ;;
       
 38874 +	    *0?6[3456]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
       
 38875 +	    *0?6a?:*[01]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
       
 38876 +	    *0?6a?:*[234]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
       
 38877 +	    *0?6[9de]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
       
 38878 +	    *0?6[78b]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
       
 38879 +	    *0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;;
       
 38880 +	    *1?6[7d]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;;
       
 38881 +	    *1?6[aef]?:*:*:*|*2?6[5cef]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;;
       
 38882 +	    *1?6c?:*:*:*|*[23]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;;
       
 38883 +	    *2?6[ad]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
       
 38884 +	    *0?6??:*:*:*) ax_gcc_arch=pentiumpro ;;
       
 38885 +	    *6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;;
       
 38886 +	    ?000?f3[347]:*:*:*|?000?f41347:*:*:*|?000?f6?:*:*:*)
       
 38887 +		case $host_cpu in
       
 38888 +	          x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
       
 38889 +	          *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
       
 38890 +	        esac ;;
       
 38891 +	    ?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
       
 38892 +          esac ;;
       
 38893 +       *:68747541:*:*) # AMD
       
 38894 +          case $ax_cv_gcc_x86_cpuid_1 in
       
 38895 +	    *5[67]?:*:*:*) ax_gcc_arch=k6 ;;
       
 38896 +	    *5[8d]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
       
 38897 +	    *5[9]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
       
 38898 +	    *60?:*:*:*) ax_gcc_arch=k7 ;;
       
 38899 +	    *6[12]?:*:*:*) ax_gcc_arch="athlon k7" ;;
       
 38900 +	    *6[34]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
       
 38901 +	    *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
       
 38902 +	    *6[68a]?:*:*:*)
       
 38903 +
       
 38904 +ac_ext=c
       
 38905 +ac_cpp='$CPP $CPPFLAGS'
       
 38906 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38907 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38908 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38909 +
       
 38910 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x80000006 output" >&5
       
 38911 +$as_echo_n "checking for x86 cpuid 0x80000006 output... " >&6; }
       
 38912 +if ${ax_cv_gcc_x86_cpuid_0x80000006+:} false; then :
       
 38913 +  $as_echo_n "(cached) " >&6
       
 38914 +else
       
 38915 +  if test "$cross_compiling" = yes; then :
       
 38916 +  ax_cv_gcc_x86_cpuid_0x80000006=unknown
       
 38917 +else
       
 38918 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 38919 +/* end confdefs.h.  */
       
 38920 +#include <stdio.h>
       
 38921 +int
       
 38922 +main ()
       
 38923 +{
       
 38924 +
       
 38925 +     int op = 0x80000006, eax, ebx, ecx, edx;
       
 38926 +     FILE *f;
       
 38927 +      __asm__("cpuid"
       
 38928 +        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
       
 38929 +        : "a" (op));
       
 38930 +     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
       
 38931 +     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
       
 38932 +     fclose(f);
       
 38933 +     return 0;
       
 38934 +
       
 38935 +  ;
       
 38936 +  return 0;
       
 38937 +}
       
 38938 +_ACEOF
       
 38939 +if ac_fn_c_try_run "$LINENO"; then :
       
 38940 +  ax_cv_gcc_x86_cpuid_0x80000006=`cat conftest_cpuid`; rm -f conftest_cpuid
       
 38941 +else
       
 38942 +  ax_cv_gcc_x86_cpuid_0x80000006=unknown; rm -f conftest_cpuid
       
 38943 +fi
       
 38944 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
       
 38945 +  conftest.$ac_objext conftest.beam conftest.$ac_ext
       
 38946 +fi
       
 38947 +
       
 38948 +fi
       
 38949 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000006" >&5
       
 38950 +$as_echo "$ax_cv_gcc_x86_cpuid_0x80000006" >&6; }
       
 38951 +ac_ext=c
       
 38952 +ac_cpp='$CPP $CPPFLAGS'
       
 38953 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 38954 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 38955 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 38956 +
       
 38957 + # L2 cache size
       
 38958 +	       case $ax_cv_gcc_x86_cpuid_0x80000006 in
       
 38959 +                 *:*:*[1-9a-f]??????:*) # (L2 = ecx >> 16) >= 256
       
 38960 +			ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
       
 38961 +                 *) ax_gcc_arch="athlon-4 athlon k7" ;;
       
 38962 +	       esac ;;
       
 38963 +	    ?00??f[4cef8b]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
       
 38964 +	    ?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
       
 38965 +	    ?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
       
 38966 +	    ?00??f??:*:*:*) ax_gcc_arch="k8" ;;
       
 38967 +	    ?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;;
       
 38968 +	    ?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;;
       
 38969 +	    *f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;;
       
 38970 +          esac ;;
       
 38971 +	*:746e6543:*:*) # IDT
       
 38972 +	   case $ax_cv_gcc_x86_cpuid_1 in
       
 38973 +	     *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
       
 38974 +	     *58?:*:*:*) ax_gcc_arch=winchip2 ;;
       
 38975 +	     *6[78]?:*:*:*) ax_gcc_arch=c3 ;;
       
 38976 +	     *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
       
 38977 +	   esac ;;
       
 38978 +     esac
       
 38979 +     if test x"$ax_gcc_arch" = x; then # fallback
       
 38980 +	case $host_cpu in
       
 38981 +	  i586*) ax_gcc_arch=pentium ;;
       
 38982 +	  i686*) ax_gcc_arch=pentiumpro ;;
       
 38983 +        esac
       
 38984 +     fi
       
 38985 +     ;;
       
 38986 +
       
 38987 +  sparc*)
       
 38988 +     # Extract the first word of "prtdiag", so it can be a program name with args.
       
 38989 +set dummy prtdiag; ac_word=$2
       
 38990 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
       
 38991 +$as_echo_n "checking for $ac_word... " >&6; }
       
 38992 +if ${ac_cv_path_PRTDIAG+:} false; then :
       
 38993 +  $as_echo_n "(cached) " >&6
       
 38994 +else
       
 38995 +  case $PRTDIAG in
       
 38996 +  [\\/]* | ?:[\\/]*)
       
 38997 +  ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path.
       
 38998 +  ;;
       
 38999 +  *)
       
 39000 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 39001 +as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/"
       
 39002 +for as_dir in $as_dummy
       
 39003 +do
       
 39004 +  IFS=$as_save_IFS
       
 39005 +  test -z "$as_dir" && as_dir=.
       
 39006 +    for ac_exec_ext in '' $ac_executable_extensions; do
       
 39007 +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
       
 39008 +    ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext"
       
 39009 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
       
 39010 +    break 2
       
 39011 +  fi
       
 39012 +done
       
 39013 +  done
       
 39014 +IFS=$as_save_IFS
       
 39015 +
       
 39016 +  test -z "$ac_cv_path_PRTDIAG" && ac_cv_path_PRTDIAG="prtdiag"
       
 39017 +  ;;
       
 39018 +esac
       
 39019 +fi
       
 39020 +PRTDIAG=$ac_cv_path_PRTDIAG
       
 39021 +if test -n "$PRTDIAG"; then
       
 39022 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5
       
 39023 +$as_echo "$PRTDIAG" >&6; }
       
 39024 +else
       
 39025 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
       
 39026 +$as_echo "no" >&6; }
       
 39027 +fi
       
 39028 +
       
 39029 +
       
 39030 +     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`
       
 39031 +     cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters`
       
 39032 +     case $cputype in
       
 39033 +         *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
       
 39034 +         *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
       
 39035 +         *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
       
 39036 +         *supersparc*|*tms390z5[05]*) ax_gcc_arch="supersparc v8" ;;
       
 39037 +         *hypersparc*|*rt62[056]*) ax_gcc_arch="hypersparc v8" ;;
       
 39038 +         *cypress*) ax_gcc_arch=cypress ;;
       
 39039 +     esac ;;
       
 39040 +
       
 39041 +  alphaev5) ax_gcc_arch=ev5 ;;
       
 39042 +  alphaev56) ax_gcc_arch=ev56 ;;
       
 39043 +  alphapca56) ax_gcc_arch="pca56 ev56" ;;
       
 39044 +  alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
       
 39045 +  alphaev6) ax_gcc_arch=ev6 ;;
       
 39046 +  alphaev67) ax_gcc_arch=ev67 ;;
       
 39047 +  alphaev68) ax_gcc_arch="ev68 ev67" ;;
       
 39048 +  alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
       
 39049 +  alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
       
 39050 +  alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
       
 39051 +
       
 39052 +  powerpc*)
       
 39053 +     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`
       
 39054 +     cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
       
 39055 +     case $cputype in
       
 39056 +       *750*) ax_gcc_arch="750 G3" ;;
       
 39057 +       *740[0-9]*) ax_gcc_arch="$cputype 7400 G4" ;;
       
 39058 +       *74[4-5][0-9]*) ax_gcc_arch="$cputype 7450 G4" ;;
       
 39059 +       *74[0-9][0-9]*) ax_gcc_arch="$cputype G4" ;;
       
 39060 +       *970*) ax_gcc_arch="970 G5 power4";;
       
 39061 +       *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
       
 39062 +       *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
       
 39063 +       603ev|8240) ax_gcc_arch="$cputype 603e 603";;
       
 39064 +       *) ax_gcc_arch=$cputype ;;
       
 39065 +     esac
       
 39066 +     ax_gcc_arch="$ax_gcc_arch powerpc"
       
 39067 +     ;;
       
 39068 +esac
       
 39069 +fi # not cross-compiling
       
 39070 +fi # guess arch
       
 39071 +
       
 39072 +if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
       
 39073 +for arch in $ax_gcc_arch; do
       
 39074 +  if test "x$acx_maxopt_portable" = xyes; then # if we require portable code
       
 39075 +    flags="-mtune=$arch"
       
 39076 +    # -mcpu=$arch and m$arch generate nonportable code on every arch except
       
 39077 +    # x86.  And some other arches (e.g. Alpha) don't accept -mtune.  Grrr.
       
 39078 +    case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
       
 39079 +  else
       
 39080 +    flags="-march=$arch -mcpu=$arch -m$arch"
       
 39081 +  fi
       
 39082 +  for flag in $flags; do
       
 39083 +    as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
       
 39084 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
       
 39085 +$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
       
 39086 +if eval \${$as_CACHEVAR+:} false; then :
       
 39087 +  $as_echo_n "(cached) " >&6
       
 39088 +else
       
 39089 +
       
 39090 +  ax_check_save_flags=$CFLAGS
       
 39091 +  CFLAGS="$CFLAGS  $flag"
       
 39092 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 39093 +/* end confdefs.h.  */
       
 39094 +
       
 39095 +int
       
 39096 +main ()
       
 39097 +{
       
 39098 +
       
 39099 +  ;
       
 39100 +  return 0;
       
 39101 +}
       
 39102 +_ACEOF
       
 39103 +if ac_fn_c_try_compile "$LINENO"; then :
       
 39104 +  eval "$as_CACHEVAR=yes"
       
 39105 +else
       
 39106 +  eval "$as_CACHEVAR=no"
       
 39107 +fi
       
 39108 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 39109 +  CFLAGS=$ax_check_save_flags
       
 39110 +fi
       
 39111 +eval ac_res=\$$as_CACHEVAR
       
 39112 +	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
       
 39113 +$as_echo "$ac_res" >&6; }
       
 39114 +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
       
 39115 +  ax_cv_gcc_archflag=$flag; break
       
 39116 +else
       
 39117 +  :
       
 39118 +fi
       
 39119 +
       
 39120 +  done
       
 39121 +  test "x$ax_cv_gcc_archflag" = xunknown || break
       
 39122 +done
       
 39123 +fi
       
 39124 +
       
 39125 +fi # $GCC=yes
       
 39126 +
       
 39127 +fi
       
 39128 +
       
 39129 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
       
 39130 +$as_echo_n "checking for gcc architecture flag... " >&6; }
       
 39131 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5
       
 39132 +$as_echo "$ax_cv_gcc_archflag" >&6; }
       
 39133 +if test "x$ax_cv_gcc_archflag" = xunknown; then
       
 39134 +  :
       
 39135 +else
       
 39136 +  CFLAGS="$CFLAGS $ax_cv_gcc_archflag"
       
 39137 +fi
       
 39138 +
       
 39139 +     ;;
       
 39140 +  esac
       
 39141 +
       
 39142 +  if test -z "$CFLAGS"; then
       
 39143 +	echo ""
       
 39144 +	echo "********************************************************"
       
 39145 +        echo "* WARNING: Don't know the best CFLAGS for this system  *"
       
 39146 +        echo "* Use ./configure CFLAGS=... to specify your own flags *"
       
 39147 +	echo "* (otherwise, a default of CFLAGS=-O3 will be used)    *"
       
 39148 +	echo "********************************************************"
       
 39149 +	echo ""
       
 39150 +        CFLAGS="-O3"
       
 39151 +  fi
       
 39152 +
       
 39153 +  as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CFLAGS" | $as_tr_sh`
       
 39154 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5
       
 39155 +$as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; }
       
 39156 +if eval \${$as_CACHEVAR+:} false; then :
       
 39157 +  $as_echo_n "(cached) " >&6
       
 39158 +else
       
 39159 +
       
 39160 +  ax_check_save_flags=$CFLAGS
       
 39161 +  CFLAGS="$CFLAGS  $CFLAGS"
       
 39162 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 39163 +/* end confdefs.h.  */
       
 39164 +
       
 39165 +int
       
 39166 +main ()
       
 39167 +{
       
 39168 +
       
 39169 +  ;
       
 39170 +  return 0;
       
 39171 +}
       
 39172 +_ACEOF
       
 39173 +if ac_fn_c_try_compile "$LINENO"; then :
       
 39174 +  eval "$as_CACHEVAR=yes"
       
 39175 +else
       
 39176 +  eval "$as_CACHEVAR=no"
       
 39177 +fi
       
 39178 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 39179 +  CFLAGS=$ax_check_save_flags
       
 39180 +fi
       
 39181 +eval ac_res=\$$as_CACHEVAR
       
 39182 +	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
       
 39183 +$as_echo "$ac_res" >&6; }
       
 39184 +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
       
 39185 +  :
       
 39186 +else
       
 39187 +
       
 39188 +	echo ""
       
 39189 +        echo "********************************************************"
       
 39190 +        echo "* WARNING: The guessed CFLAGS don't seem to work with  *"
       
 39191 +        echo "* your compiler.                                       *"
       
 39192 +        echo "* Use ./configure CFLAGS=... to specify your own flags *"
       
 39193 +        echo "********************************************************"
       
 39194 +        echo ""
       
 39195 +        CFLAGS=""
       
 39196 +
       
 39197 +fi
       
 39198 +
       
 39199 +
       
 39200 +fi
       
 39201 +
       
 39202 +# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro
       
 39203 +# compiler.
       
 39204 +if test "$ax_cv_c_compiler_vendor" != "sun"; then
       
 39205 +  if ${CFLAGS+:} false; then :
       
 39206 +  case " $CFLAGS " in
       
 39207 +    *"  "*)
       
 39208 +      { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains "; } >&5
       
 39209 +  (: CFLAGS already contains ) 2>&5
       
 39210 +  ac_status=$?
       
 39211 +  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 39212 +  test $ac_status = 0; }
       
 39213 +      ;;
       
 39214 +    *)
       
 39215 +      { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \""; } >&5
       
 39216 +  (: CFLAGS="$CFLAGS ") 2>&5
       
 39217 +  ac_status=$?
       
 39218 +  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 39219 +  test $ac_status = 0; }
       
 39220 +      CFLAGS="$CFLAGS "
       
 39221 +      ;;
       
 39222 +   esac
       
 39223 +else
       
 39224 +  CFLAGS=""
       
 39225 +fi
       
 39226 +
       
 39227 +ac_ext=c
       
 39228 +ac_cpp='$CPP $CPPFLAGS'
       
 39229 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 39230 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 39231 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 39232 +
       
 39233 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for maximum warnings" >&5
       
 39234 +$as_echo_n "checking CFLAGS for maximum warnings... " >&6; }
       
 39235 +if ${ac_cv_cflags_warn_all+:} false; then :
       
 39236 +  $as_echo_n "(cached) " >&6
       
 39237 +else
       
 39238 +  ac_cv_cflags_warn_all="no, unknown"
       
 39239 +ac_save_CFLAGS="$CFLAGS"
       
 39240 +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"    #
       
 39241 +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
       
 39242 +   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 39243 +/* end confdefs.h.  */
       
 39244 +
       
 39245 +int
       
 39246 +main ()
       
 39247 +{
       
 39248 +
       
 39249 +  ;
       
 39250 +  return 0;
       
 39251 +}
       
 39252 +_ACEOF
       
 39253 +if ac_fn_c_try_compile "$LINENO"; then :
       
 39254 +  ac_cv_cflags_warn_all=`echo $ac_arg | sed -e 's,.*% *,,'` ; break
       
 39255 +fi
       
 39256 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 39257 +done
       
 39258 +CFLAGS="$ac_save_CFLAGS"
       
 39259 +
       
 39260 +fi
       
 39261 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5
       
 39262 +$as_echo "$ac_cv_cflags_warn_all" >&6; }
       
 39263 +
       
 39264 +case ".$ac_cv_cflags_warn_all" in
       
 39265 +     .ok|.ok,*)  ;;
       
 39266 +   .|.no|.no,*)  ;;
       
 39267 +   *) if ${CFLAGS+:} false; then :
       
 39268 +  case " $CFLAGS " in
       
 39269 +    *" $ac_cv_cflags_warn_all "*)
       
 39270 +      { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$ac_cv_cflags_warn_all"; } >&5
       
 39271 +  (: CFLAGS already contains $ac_cv_cflags_warn_all) 2>&5
       
 39272 +  ac_status=$?
       
 39273 +  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 39274 +  test $ac_status = 0; }
       
 39275 +      ;;
       
 39276 +    *)
       
 39277 +      { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ac_cv_cflags_warn_all\""; } >&5
       
 39278 +  (: CFLAGS="$CFLAGS $ac_cv_cflags_warn_all") 2>&5
       
 39279 +  ac_status=$?
       
 39280 +  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 39281 +  test $ac_status = 0; }
       
 39282 +      CFLAGS="$CFLAGS $ac_cv_cflags_warn_all"
       
 39283 +      ;;
       
 39284 +   esac
       
 39285 +else
       
 39286 +  CFLAGS="$ac_cv_cflags_warn_all"
       
 39287 +fi
       
 39288 + ;;
       
 39289 +esac
       
 39290 +
       
 39291 +ac_ext=c
       
 39292 +ac_cpp='$CPP $CPPFLAGS'
       
 39293 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
       
 39294 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
       
 39295 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
       
 39296 +
       
 39297 +
       
 39298 +fi
       
 39299 +
       
 39300 +if test "x$GCC" = "xyes"; then
       
 39301 +  CFLAGS="$CFLAGS -fexceptions"
       
 39302 +  touch local.exp
       
 39303 +else
       
 39304 +  cat > local.exp <<EOF
       
 39305 +set CC_FOR_TARGET "$CC"
       
 39306 +EOF
       
 39307 +fi
       
 39308 +
       
 39309  
       
 39310  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
       
 39311  $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
       
 39312      # Check whether --enable-maintainer-mode was given.
       
 39313  if test "${enable_maintainer_mode+set}" = set; then :
       
 39314    enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
       
 39315  else
       
 39316    USE_MAINTAINER_MODE=no
       
 39317 @@ -11011,61 +13177,61 @@ fi
       
 39318  
       
 39319    MAINT=$MAINTAINER_MODE_TRUE
       
 39320  
       
 39321  
       
 39322  
       
 39323  for ac_header in sys/mman.h
       
 39324  do :
       
 39325    ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
       
 39326 -if test "x$ac_cv_header_sys_mman_h" = x""yes; then :
       
 39327 +if test "x$ac_cv_header_sys_mman_h" = xyes; then :
       
 39328    cat >>confdefs.h <<_ACEOF
       
 39329  #define HAVE_SYS_MMAN_H 1
       
 39330  _ACEOF
       
 39331  
       
 39332  fi
       
 39333  
       
 39334  done
       
 39335  
       
 39336  for ac_func in mmap
       
 39337  do :
       
 39338    ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
       
 39339 -if test "x$ac_cv_func_mmap" = x""yes; then :
       
 39340 +if test "x$ac_cv_func_mmap" = xyes; then :
       
 39341    cat >>confdefs.h <<_ACEOF
       
 39342  #define HAVE_MMAP 1
       
 39343  _ACEOF
       
 39344  
       
 39345  fi
       
 39346  done
       
 39347  
       
 39348  
       
 39349  ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
       
 39350 -if test "x$ac_cv_header_sys_mman_h" = x""yes; then :
       
 39351 +if test "x$ac_cv_header_sys_mman_h" = xyes; then :
       
 39352    libffi_header_sys_mman_h=yes
       
 39353  else
       
 39354    libffi_header_sys_mman_h=no
       
 39355  fi
       
 39356  
       
 39357  
       
 39358  ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
       
 39359 -if test "x$ac_cv_func_mmap" = x""yes; then :
       
 39360 +if test "x$ac_cv_func_mmap" = xyes; then :
       
 39361    libffi_func_mmap=yes
       
 39362  else
       
 39363    libffi_func_mmap=no
       
 39364  fi
       
 39365  
       
 39366  if test "$libffi_header_sys_mman_h" != yes \
       
 39367   || test "$libffi_func_mmap" != yes; then
       
 39368     ac_cv_func_mmap_file=no
       
 39369     ac_cv_func_mmap_dev_zero=no
       
 39370     ac_cv_func_mmap_anon=no
       
 39371  else
       
 39372     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5
       
 39373  $as_echo_n "checking whether read-only mmap of a plain file works... " >&6; }
       
 39374 -if test "${ac_cv_func_mmap_file+set}" = set; then :
       
 39375 +if ${ac_cv_func_mmap_file+:} false; then :
       
 39376    $as_echo_n "(cached) " >&6
       
 39377  else
       
 39378    # Add a system to this blacklist if
       
 39379     # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
       
 39380     # memory area containing the same data that you'd get if you applied
       
 39381     # read() to the same fd.  The only system known to have a problem here
       
 39382     # is VMS, where text files have record structure.
       
 39383     case "$host_os" in
       
 39384 @@ -11074,17 +13240,17 @@ else
       
 39385       *)
       
 39386  	ac_cv_func_mmap_file=yes;;
       
 39387     esac
       
 39388  fi
       
 39389  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5
       
 39390  $as_echo "$ac_cv_func_mmap_file" >&6; }
       
 39391     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5
       
 39392  $as_echo_n "checking whether mmap from /dev/zero works... " >&6; }
       
 39393 -if test "${ac_cv_func_mmap_dev_zero+set}" = set; then :
       
 39394 +if ${ac_cv_func_mmap_dev_zero+:} false; then :
       
 39395    $as_echo_n "(cached) " >&6
       
 39396  else
       
 39397    # Add a system to this blacklist if it has mmap() but /dev/zero
       
 39398     # does not exist, or if mmapping /dev/zero does not give anonymous
       
 39399     # zeroed pages with both the following properties:
       
 39400     # 1. If you map N consecutive pages in with one call, and then
       
 39401     #    unmap any subset of those pages, the pages that were not
       
 39402     #    explicitly unmapped remain accessible.
       
 39403 @@ -11100,17 +13266,17 @@ else
       
 39404     esac
       
 39405  fi
       
 39406  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5
       
 39407  $as_echo "$ac_cv_func_mmap_dev_zero" >&6; }
       
 39408  
       
 39409     # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
       
 39410     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5
       
 39411  $as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; }
       
 39412 -if test "${ac_cv_decl_map_anon+set}" = set; then :
       
 39413 +if ${ac_cv_decl_map_anon+:} false; then :
       
 39414    $as_echo_n "(cached) " >&6
       
 39415  else
       
 39416    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 39417  /* end confdefs.h.  */
       
 39418  #include <sys/types.h>
       
 39419  #include <sys/mman.h>
       
 39420  #include <unistd.h>
       
 39421  
       
 39422 @@ -11136,17 +13302,17 @@ fi
       
 39423  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5
       
 39424  $as_echo "$ac_cv_decl_map_anon" >&6; }
       
 39425  
       
 39426     if test $ac_cv_decl_map_anon = no; then
       
 39427       ac_cv_func_mmap_anon=no
       
 39428     else
       
 39429       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5
       
 39430  $as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; }
       
 39431 -if test "${ac_cv_func_mmap_anon+set}" = set; then :
       
 39432 +if ${ac_cv_func_mmap_anon+:} false; then :
       
 39433    $as_echo_n "(cached) " >&6
       
 39434  else
       
 39435    # Add a system to this blacklist if it has mmap() and MAP_ANON or
       
 39436     # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
       
 39437     # doesn't give anonymous zeroed pages with the same properties listed
       
 39438     # above for use of /dev/zero.
       
 39439     # Systems known to be in this category are Windows, VMS, and SCO Unix.
       
 39440     case "$host_os" in
       
 39441 @@ -11183,114 +13349,197 @@ fi
       
 39442    TESTSUBDIR_FALSE='#'
       
 39443  else
       
 39444    TESTSUBDIR_TRUE='#'
       
 39445    TESTSUBDIR_FALSE=
       
 39446  fi
       
 39447  
       
 39448  
       
 39449  TARGETDIR="unknown"
       
 39450 +HAVE_LONG_DOUBLE_VARIANT=0
       
 39451  case "$host" in
       
 39452 +  aarch64*-*-*)
       
 39453 +	TARGET=AARCH64; TARGETDIR=aarch64
       
 39454 +	;;
       
 39455 +
       
 39456    alpha*-*-*)
       
 39457  	TARGET=ALPHA; TARGETDIR=alpha;
       
 39458  	# Support 128-bit long double, changeable via command-line switch.
       
 39459  	HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
       
 39460  	;;
       
 39461  
       
 39462 +  arc*-*-*)
       
 39463 +	TARGET=ARC; TARGETDIR=arc
       
 39464 +	;;
       
 39465 +
       
 39466    arm*-*-*)
       
 39467  	TARGET=ARM; TARGETDIR=arm
       
 39468  	;;
       
 39469  
       
 39470    amd64-*-freebsd* | amd64-*-openbsd*)
       
 39471  	TARGET=X86_64; TARGETDIR=x86
       
 39472    	;;
       
 39473  
       
 39474    amd64-*-freebsd*)
       
 39475  	TARGET=X86_64; TARGETDIR=x86
       
 39476 +  	;;
       
 39477 +
       
 39478 +  amd64-*-freebsd*)
       
 39479 +	TARGET=X86_64; TARGETDIR=x86
       
 39480  	;;
       
 39481  
       
 39482    avr32*-*-*)
       
 39483  	TARGET=AVR32; TARGETDIR=avr32
       
 39484  	;;
       
 39485  
       
 39486 +  bfin*)
       
 39487 +  	TARGET=BFIN; TARGETDIR=bfin
       
 39488 +  	;;
       
 39489 +
       
 39490    cris-*-*)
       
 39491  	TARGET=LIBFFI_CRIS; TARGETDIR=cris
       
 39492  	;;
       
 39493  
       
 39494    frv-*-*)
       
 39495  	TARGET=FRV; TARGETDIR=frv
       
 39496  	;;
       
 39497  
       
 39498 -  hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*)
       
 39499 +  hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
       
 39500  	TARGET=PA_LINUX; TARGETDIR=pa
       
 39501  	;;
       
 39502    hppa*64-*-hpux*)
       
 39503  	TARGET=PA64_HPUX; TARGETDIR=pa
       
 39504  	;;
       
 39505    hppa*-*-hpux*)
       
 39506  	TARGET=PA_HPUX; TARGETDIR=pa
       
 39507  	;;
       
 39508  
       
 39509    i?86-*-freebsd* | i?86-*-openbsd*)
       
 39510  	TARGET=X86_FREEBSD; TARGETDIR=x86
       
 39511  	;;
       
 39512 -  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2*)
       
 39513 +  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*)
       
 39514  	TARGET=X86_WIN32; TARGETDIR=x86
       
 39515 -	# All mingw/cygwin/win32 builds require this for sharedlib
       
 39516 -	AM_LTLDFLAGS="-no-undefined"
       
 39517 +	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
       
 39518 +	# We must also check with_cross_host to decide if this is a native
       
 39519 +	# or cross-build and select where to install dlls appropriately.
       
 39520 +	if test -n "$with_cross_host" &&
       
 39521 +	   test x"$with_cross_host" != x"no"; then
       
 39522 +	  AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
       
 39523 +	else
       
 39524 +	  AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
       
 39525 +	fi
       
 39526  	;;
       
 39527    i?86-*-darwin*)
       
 39528  	TARGET=X86_DARWIN; TARGETDIR=x86
       
 39529  	;;
       
 39530    i?86-*-solaris2.1[0-9]*)
       
 39531 -	TARGET=X86_64; TARGETDIR=x86
       
 39532 -	;;
       
 39533 -  i?86-*-*)
       
 39534 -	TARGET=X86; TARGETDIR=x86
       
 39535 +	TARGETDIR=x86
       
 39536 +	if test $ac_cv_sizeof_size_t = 4; then
       
 39537 +	  TARGET=X86;
       
 39538 +	else
       
 39539 +	  TARGET=X86_64;
       
 39540 +	fi
       
 39541 +	;;
       
 39542 +
       
 39543 +  x86_64-*-darwin*)
       
 39544 +	TARGET=X86_DARWIN; TARGETDIR=x86
       
 39545 +	;;
       
 39546 +
       
 39547 +  x86_64-*-cygwin* | x86_64-*-mingw*)
       
 39548 +	TARGET=X86_WIN64; TARGETDIR=x86
       
 39549 +	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
       
 39550 +	# We must also check with_cross_host to decide if this is a native
       
 39551 +	# or cross-build and select where to install dlls appropriately.
       
 39552 +	if test -n "$with_cross_host" &&
       
 39553 +	   test x"$with_cross_host" != x"no"; then
       
 39554 +	  AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
       
 39555 +	else
       
 39556 +	  AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
       
 39557 +	fi
       
 39558 +	;;
       
 39559 +
       
 39560 +  i?86-*-* | x86_64-*-*)
       
 39561 +	TARGETDIR=x86
       
 39562 +	if test $ac_cv_sizeof_size_t = 4; then
       
 39563 +	  case "$host" in
       
 39564 +	    *-gnux32)
       
 39565 +	      TARGET=X86_64
       
 39566 +	      ;;
       
 39567 +	    *)
       
 39568 +	      TARGET=X86
       
 39569 +	      ;;
       
 39570 +          esac
       
 39571 +	else
       
 39572 +	  TARGET=X86_64;
       
 39573 +	fi
       
 39574  	;;
       
 39575  
       
 39576    ia64*-*-*)
       
 39577  	TARGET=IA64; TARGETDIR=ia64
       
 39578  	;;
       
 39579  
       
 39580    m32r*-*-*)
       
 39581  	TARGET=M32R; TARGETDIR=m32r
       
 39582  	;;
       
 39583  
       
 39584    m68k-*-*)
       
 39585  	TARGET=M68K; TARGETDIR=m68k
       
 39586  	;;
       
 39587  
       
 39588 -  mips-sgi-irix5.* | mips-sgi-irix6.*)
       
 39589 +  m88k-*-*)
       
 39590 +	TARGET=M88K; TARGETDIR=m88k
       
 39591 +	;;
       
 39592 +
       
 39593 +  microblaze*-*-*)
       
 39594 +	TARGET=MICROBLAZE; TARGETDIR=microblaze
       
 39595 +	;;
       
 39596 +
       
 39597 +  moxie-*-*)
       
 39598 +	TARGET=MOXIE; TARGETDIR=moxie
       
 39599 +	;;
       
 39600 +
       
 39601 +  metag-*-*)
       
 39602 +	TARGET=METAG; TARGETDIR=metag
       
 39603 +	;;
       
 39604 +
       
 39605 +  mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
       
 39606  	TARGET=MIPS; TARGETDIR=mips
       
 39607  	;;
       
 39608    mips*-*linux* | mips*-*-openbsd*)
       
 39609  	# Support 128-bit long double for NewABI.
       
 39610  	HAVE_LONG_DOUBLE='defined(__mips64)'
       
 39611  	TARGET=MIPS; TARGETDIR=mips
       
 39612  	;;
       
 39613  
       
 39614 -  moxie-*-*)
       
 39615 -        TARGET=MOXIE; TARGETDIR=moxie
       
 39616 +  nios2*-linux*)
       
 39617 +	TARGET=NIOS2; TARGETDIR=nios2
       
 39618  	;;
       
 39619  
       
 39620    powerpc*-*-linux* | powerpc-*-sysv*)
       
 39621  	TARGET=POWERPC; TARGETDIR=powerpc
       
 39622 +	HAVE_LONG_DOUBLE_VARIANT=1
       
 39623 +	;;
       
 39624 +  powerpc-*-amigaos*)
       
 39625 +	TARGET=POWERPC; TARGETDIR=powerpc
       
 39626  	;;
       
 39627    powerpc-*-beos*)
       
 39628  	TARGET=POWERPC; TARGETDIR=powerpc
       
 39629  	;;
       
 39630 -  powerpc-*-darwin*)
       
 39631 +  powerpc-*-darwin* | powerpc64-*-darwin*)
       
 39632  	TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
       
 39633  	;;
       
 39634    powerpc-*-aix* | rs6000-*-aix*)
       
 39635  	TARGET=POWERPC_AIX; TARGETDIR=powerpc
       
 39636  	;;
       
 39637    powerpc-*-freebsd* | powerpc-*-openbsd*)
       
 39638  	TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
       
 39639 +	HAVE_LONG_DOUBLE_VARIANT=1
       
 39640 +	;;
       
 39641 +  powerpc64-*-freebsd*)
       
 39642 +	TARGET=POWERPC; TARGETDIR=powerpc
       
 39643  	;;
       
 39644    powerpc*-*-rtems*)
       
 39645  	TARGET=POWERPC; TARGETDIR=powerpc
       
 39646  	;;
       
 39647  
       
 39648    s390-*-* | s390x-*-*)
       
 39649  	TARGET=S390; TARGETDIR=s390
       
 39650  	;;
       
 39651 @@ -11301,44 +13550,53 @@ case "$host" in
       
 39652    sh64-*-* | sh5*-*-*)
       
 39653  	TARGET=SH64; TARGETDIR=sh64
       
 39654  	;;
       
 39655  
       
 39656    sparc*-*-*)
       
 39657  	TARGET=SPARC; TARGETDIR=sparc
       
 39658  	;;
       
 39659  
       
 39660 -  x86_64-*-darwin*)
       
 39661 -	TARGET=X86_DARWIN; TARGETDIR=x86
       
 39662 -	;;
       
 39663 -
       
 39664 -  x86_64-*-cygwin* | x86_64-*-mingw*)
       
 39665 -	TARGET=X86_WIN64; TARGETDIR=x86
       
 39666 -	;;
       
 39667 -
       
 39668 -  x86_64-*-*)
       
 39669 -	TARGET=X86_64; TARGETDIR=x86
       
 39670 -	;;
       
 39671 +  tile*-*)
       
 39672 +        TARGET=TILE; TARGETDIR=tile
       
 39673 +        ;;
       
 39674 +
       
 39675 +  vax-*-*)
       
 39676 +	TARGET=VAX; TARGETDIR=vax
       
 39677 +	;;
       
 39678 +
       
 39679 +  xtensa*-*)
       
 39680 +	TARGET=XTENSA; TARGETDIR=xtensa
       
 39681 +	;;
       
 39682 +
       
 39683  esac
       
 39684  
       
 39685  
       
 39686  
       
 39687  
       
 39688  if test $TARGETDIR = unknown; then
       
 39689 -  as_fn_error "\"libffi has not been ported to $host.\"" "$LINENO" 5
       
 39690 +  as_fn_error $? "\"libffi has not been ported to $host.\"" "$LINENO" 5
       
 39691  fi
       
 39692  
       
 39693   if test x$TARGET = xMIPS; then
       
 39694    MIPS_TRUE=
       
 39695    MIPS_FALSE='#'
       
 39696  else
       
 39697    MIPS_TRUE='#'
       
 39698    MIPS_FALSE=
       
 39699  fi
       
 39700  
       
 39701 + if test x$TARGET = xBFIN; then
       
 39702 +  BFIN_TRUE=
       
 39703 +  BFIN_FALSE='#'
       
 39704 +else
       
 39705 +  BFIN_TRUE='#'
       
 39706 +  BFIN_FALSE=
       
 39707 +fi
       
 39708 +
       
 39709   if test x$TARGET = xSPARC; then
       
 39710    SPARC_TRUE=
       
 39711    SPARC_FALSE='#'
       
 39712  else
       
 39713    SPARC_TRUE='#'
       
 39714    SPARC_FALSE=
       
 39715  fi
       
 39716  
       
 39717 @@ -11377,16 +13635,32 @@ fi
       
 39718   if test x$TARGET = xX86_DARWIN; then
       
 39719    X86_DARWIN_TRUE=
       
 39720    X86_DARWIN_FALSE='#'
       
 39721  else
       
 39722    X86_DARWIN_TRUE='#'
       
 39723    X86_DARWIN_FALSE=
       
 39724  fi
       
 39725  
       
 39726 + if test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 4; then
       
 39727 +  X86_DARWIN32_TRUE=
       
 39728 +  X86_DARWIN32_FALSE='#'
       
 39729 +else
       
 39730 +  X86_DARWIN32_TRUE='#'
       
 39731 +  X86_DARWIN32_FALSE=
       
 39732 +fi
       
 39733 +
       
 39734 + if test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 8; then
       
 39735 +  X86_DARWIN64_TRUE=
       
 39736 +  X86_DARWIN64_FALSE='#'
       
 39737 +else
       
 39738 +  X86_DARWIN64_TRUE='#'
       
 39739 +  X86_DARWIN64_FALSE=
       
 39740 +fi
       
 39741 +
       
 39742   if test x$TARGET = xALPHA; then
       
 39743    ALPHA_TRUE=
       
 39744    ALPHA_FALSE='#'
       
 39745  else
       
 39746    ALPHA_TRUE='#'
       
 39747    ALPHA_FALSE=
       
 39748  fi
       
 39749  
       
 39750 @@ -11409,24 +13683,56 @@ fi
       
 39751   if test x$TARGET = xM68K; then
       
 39752    M68K_TRUE=
       
 39753    M68K_FALSE='#'
       
 39754  else
       
 39755    M68K_TRUE='#'
       
 39756    M68K_FALSE=
       
 39757  fi
       
 39758  
       
 39759 + if test x$TARGET = xM88K; then
       
 39760 +  M88K_TRUE=
       
 39761 +  M88K_FALSE='#'
       
 39762 +else
       
 39763 +  M88K_TRUE='#'
       
 39764 +  M88K_FALSE=
       
 39765 +fi
       
 39766 +
       
 39767 + if test x$TARGET = xMICROBLAZE; then
       
 39768 +  MICROBLAZE_TRUE=
       
 39769 +  MICROBLAZE_FALSE='#'
       
 39770 +else
       
 39771 +  MICROBLAZE_TRUE='#'
       
 39772 +  MICROBLAZE_FALSE=
       
 39773 +fi
       
 39774 +
       
 39775 + if test x$TARGET = xMETAG; then
       
 39776 +  METAG_TRUE=
       
 39777 +  METAG_FALSE='#'
       
 39778 +else
       
 39779 +  METAG_TRUE='#'
       
 39780 +  METAG_FALSE=
       
 39781 +fi
       
 39782 +
       
 39783   if test x$TARGET = xMOXIE; then
       
 39784    MOXIE_TRUE=
       
 39785    MOXIE_FALSE='#'
       
 39786  else
       
 39787    MOXIE_TRUE='#'
       
 39788    MOXIE_FALSE=
       
 39789  fi
       
 39790  
       
 39791 + if test x$TARGET = xNIOS2; then
       
 39792 +  NIOS2_TRUE=
       
 39793 +  NIOS2_FALSE='#'
       
 39794 +else
       
 39795 +  NIOS2_TRUE='#'
       
 39796 +  NIOS2_FALSE=
       
 39797 +fi
       
 39798 +
       
 39799   if test x$TARGET = xPOWERPC; then
       
 39800    POWERPC_TRUE=
       
 39801    POWERPC_FALSE='#'
       
 39802  else
       
 39803    POWERPC_TRUE='#'
       
 39804    POWERPC_FALSE=
       
 39805  fi
       
 39806  
       
 39807 @@ -11449,16 +13755,32 @@ fi
       
 39808   if test x$TARGET = xPOWERPC_FREEBSD; then
       
 39809    POWERPC_FREEBSD_TRUE=
       
 39810    POWERPC_FREEBSD_FALSE='#'
       
 39811  else
       
 39812    POWERPC_FREEBSD_TRUE='#'
       
 39813    POWERPC_FREEBSD_FALSE=
       
 39814  fi
       
 39815  
       
 39816 + if test x$TARGET = xAARCH64; then
       
 39817 +  AARCH64_TRUE=
       
 39818 +  AARCH64_FALSE='#'
       
 39819 +else
       
 39820 +  AARCH64_TRUE='#'
       
 39821 +  AARCH64_FALSE=
       
 39822 +fi
       
 39823 +
       
 39824 + if test x$TARGET = xARC; then
       
 39825 +  ARC_TRUE=
       
 39826 +  ARC_FALSE='#'
       
 39827 +else
       
 39828 +  ARC_TRUE='#'
       
 39829 +  ARC_FALSE=
       
 39830 +fi
       
 39831 +
       
 39832   if test x$TARGET = xARM; then
       
 39833    ARM_TRUE=
       
 39834    ARM_FALSE='#'
       
 39835  else
       
 39836    ARM_TRUE='#'
       
 39837    ARM_FALSE=
       
 39838  fi
       
 39839  
       
 39840 @@ -11537,20 +13859,44 @@ fi
       
 39841   if test x$TARGET = xPA64_HPUX; then
       
 39842    PA64_HPUX_TRUE=
       
 39843    PA64_HPUX_FALSE='#'
       
 39844  else
       
 39845    PA64_HPUX_TRUE='#'
       
 39846    PA64_HPUX_FALSE=
       
 39847  fi
       
 39848  
       
 39849 + if test x$TARGET = xTILE; then
       
 39850 +  TILE_TRUE=
       
 39851 +  TILE_FALSE='#'
       
 39852 +else
       
 39853 +  TILE_TRUE='#'
       
 39854 +  TILE_FALSE=
       
 39855 +fi
       
 39856 +
       
 39857 + if test x$TARGET = xVAX; then
       
 39858 +  VAX_TRUE=
       
 39859 +  VAX_FALSE='#'
       
 39860 +else
       
 39861 +  VAX_TRUE='#'
       
 39862 +  VAX_FALSE=
       
 39863 +fi
       
 39864 +
       
 39865 + if test x$TARGET = xXTENSA; then
       
 39866 +  XTENSA_TRUE=
       
 39867 +  XTENSA_FALSE='#'
       
 39868 +else
       
 39869 +  XTENSA_TRUE='#'
       
 39870 +  XTENSA_FALSE=
       
 39871 +fi
       
 39872 +
       
 39873  
       
 39874  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
       
 39875  $as_echo_n "checking for ANSI C header files... " >&6; }
       
 39876 -if test "${ac_cv_header_stdc+set}" = set; then :
       
 39877 +if ${ac_cv_header_stdc+:} false; then :
       
 39878    $as_echo_n "(cached) " >&6
       
 39879  else
       
 39880    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 39881  /* end confdefs.h.  */
       
 39882  #include <stdlib.h>
       
 39883  #include <stdarg.h>
       
 39884  #include <string.h>
       
 39885  #include <float.h>
       
 39886 @@ -11653,29 +13999,40 @@ if test $ac_cv_header_stdc = yes; then
       
 39887  
       
 39888  $as_echo "#define STDC_HEADERS 1" >>confdefs.h
       
 39889  
       
 39890  fi
       
 39891  
       
 39892  for ac_func in memcpy
       
 39893  do :
       
 39894    ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy"
       
 39895 -if test "x$ac_cv_func_memcpy" = x""yes; then :
       
 39896 +if test "x$ac_cv_func_memcpy" = xyes; then :
       
 39897    cat >>confdefs.h <<_ACEOF
       
 39898  #define HAVE_MEMCPY 1
       
 39899  _ACEOF
       
 39900  
       
 39901  fi
       
 39902  done
       
 39903  
       
 39904 +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
       
 39905 +if test "x$ac_cv_type_size_t" = xyes; then :
       
 39906 +
       
 39907 +else
       
 39908 +
       
 39909 +cat >>confdefs.h <<_ACEOF
       
 39910 +#define size_t unsigned int
       
 39911 +_ACEOF
       
 39912 +
       
 39913 +fi
       
 39914 +
       
 39915  # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
       
 39916  # for constant arguments.  Useless!
       
 39917  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
       
 39918  $as_echo_n "checking for working alloca.h... " >&6; }
       
 39919 -if test "${ac_cv_working_alloca_h+set}" = set; then :
       
 39920 +if ${ac_cv_working_alloca_h+:} false; then :
       
 39921    $as_echo_n "(cached) " >&6
       
 39922  else
       
 39923    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 39924  /* end confdefs.h.  */
       
 39925  #include <alloca.h>
       
 39926  int
       
 39927  main ()
       
 39928  {
       
 39929 @@ -11698,17 +14055,17 @@ fi
       
 39930  if test $ac_cv_working_alloca_h = yes; then
       
 39931  
       
 39932  $as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
       
 39933  
       
 39934  fi
       
 39935  
       
 39936  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
       
 39937  $as_echo_n "checking for alloca... " >&6; }
       
 39938 -if test "${ac_cv_func_alloca_works+set}" = set; then :
       
 39939 +if ${ac_cv_func_alloca_works+:} false; then :
       
 39940    $as_echo_n "(cached) " >&6
       
 39941  else
       
 39942    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 39943  /* end confdefs.h.  */
       
 39944  #ifdef __GNUC__
       
 39945  # define alloca __builtin_alloca
       
 39946  #else
       
 39947  # ifdef _MSC_VER
       
 39948 @@ -11717,17 +14074,17 @@ else
       
 39949  # else
       
 39950  #  ifdef HAVE_ALLOCA_H
       
 39951  #   include <alloca.h>
       
 39952  #  else
       
 39953  #   ifdef _AIX
       
 39954   #pragma alloca
       
 39955  #   else
       
 39956  #    ifndef alloca /* predefined by HP cc +Olibcalls */
       
 39957 -char *alloca ();
       
 39958 +void *alloca (size_t);
       
 39959  #    endif
       
 39960  #   endif
       
 39961  #  endif
       
 39962  # endif
       
 39963  #endif
       
 39964  
       
 39965  int
       
 39966  main ()
       
 39967 @@ -11761,17 +14118,17 @@ else
       
 39968  
       
 39969  ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
       
 39970  
       
 39971  $as_echo "#define C_ALLOCA 1" >>confdefs.h
       
 39972  
       
 39973  
       
 39974  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
       
 39975  $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
       
 39976 -if test "${ac_cv_os_cray+set}" = set; then :
       
 39977 +if ${ac_cv_os_cray+:} false; then :
       
 39978    $as_echo_n "(cached) " >&6
       
 39979  else
       
 39980    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 39981  /* end confdefs.h.  */
       
 39982  #if defined CRAY && ! defined CRAY2
       
 39983  webecray
       
 39984  #else
       
 39985  wenotbecray
       
 39986 @@ -11788,58 +14145,54 @@ rm -f conftest*
       
 39987  
       
 39988  fi
       
 39989  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
       
 39990  $as_echo "$ac_cv_os_cray" >&6; }
       
 39991  if test $ac_cv_os_cray = yes; then
       
 39992    for ac_func in _getb67 GETB67 getb67; do
       
 39993      as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
       
 39994  ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
       
 39995 -eval as_val=\$$as_ac_var
       
 39996 -   if test "x$as_val" = x""yes; then :
       
 39997 +if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
       
 39998  
       
 39999  cat >>confdefs.h <<_ACEOF
       
 40000  #define CRAY_STACKSEG_END $ac_func
       
 40001  _ACEOF
       
 40002  
       
 40003      break
       
 40004  fi
       
 40005  
       
 40006    done
       
 40007  fi
       
 40008  
       
 40009  { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
       
 40010  $as_echo_n "checking stack direction for C alloca... " >&6; }
       
 40011 -if test "${ac_cv_c_stack_direction+set}" = set; then :
       
 40012 +if ${ac_cv_c_stack_direction+:} false; then :
       
 40013    $as_echo_n "(cached) " >&6
       
 40014  else
       
 40015    if test "$cross_compiling" = yes; then :
       
 40016    ac_cv_c_stack_direction=0
       
 40017  else
       
 40018    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 40019  /* end confdefs.h.  */
       
 40020  $ac_includes_default
       
 40021  int
       
 40022 -find_stack_direction ()
       
 40023 -{
       
 40024 -  static char *addr = 0;
       
 40025 -  auto char dummy;
       
 40026 -  if (addr == 0)
       
 40027 -    {
       
 40028 -      addr = &dummy;
       
 40029 -      return find_stack_direction ();
       
 40030 -    }
       
 40031 -  else
       
 40032 -    return (&dummy > addr) ? 1 : -1;
       
 40033 -}
       
 40034 -
       
 40035 -int
       
 40036 -main ()
       
 40037 -{
       
 40038 -  return find_stack_direction () < 0;
       
 40039 +find_stack_direction (int *addr, int depth)
       
 40040 +{
       
 40041 +  int dir, dummy = 0;
       
 40042 +  if (! addr)
       
 40043 +    addr = &dummy;
       
 40044 +  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
       
 40045 +  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
       
 40046 +  return dir + dummy;
       
 40047 +}
       
 40048 +
       
 40049 +int
       
 40050 +main (int argc, char **argv)
       
 40051 +{
       
 40052 +  return find_stack_direction (0, argc + !argv + 20) < 0;
       
 40053  }
       
 40054  _ACEOF
       
 40055  if ac_fn_c_try_run "$LINENO"; then :
       
 40056    ac_cv_c_stack_direction=1
       
 40057  else
       
 40058    ac_cv_c_stack_direction=-1
       
 40059  fi
       
 40060  rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
       
 40061 @@ -11858,28 +14211,27 @@ fi
       
 40062  
       
 40063  
       
 40064  # The cast to long int works around a bug in the HP C Compiler
       
 40065  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
       
 40066  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
       
 40067  # This bug is HP SR number 8606223364.
       
 40068  { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
       
 40069  $as_echo_n "checking size of double... " >&6; }
       
 40070 -if test "${ac_cv_sizeof_double+set}" = set; then :
       
 40071 +if ${ac_cv_sizeof_double+:} false; then :
       
 40072    $as_echo_n "(cached) " >&6
       
 40073  else
       
 40074    if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double"        "$ac_includes_default"; then :
       
 40075  
       
 40076  else
       
 40077    if test "$ac_cv_type_double" = yes; then
       
 40078       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 40079  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 40080 -{ as_fn_set_status 77
       
 40081 -as_fn_error "cannot compute sizeof (double)
       
 40082 -See \`config.log' for more details." "$LINENO" 5; }; }
       
 40083 +as_fn_error 77 "cannot compute sizeof (double)
       
 40084 +See \`config.log' for more details" "$LINENO" 5; }
       
 40085     else
       
 40086       ac_cv_sizeof_double=0
       
 40087     fi
       
 40088  fi
       
 40089  
       
 40090  fi
       
 40091  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5
       
 40092  $as_echo "$ac_cv_sizeof_double" >&6; }
       
 40093 @@ -11892,28 +14244,27 @@ cat >>confdefs.h <<_ACEOF
       
 40094  
       
 40095  
       
 40096  # The cast to long int works around a bug in the HP C Compiler
       
 40097  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
       
 40098  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
       
 40099  # This bug is HP SR number 8606223364.
       
 40100  { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5
       
 40101  $as_echo_n "checking size of long double... " >&6; }
       
 40102 -if test "${ac_cv_sizeof_long_double+set}" = set; then :
       
 40103 +if ${ac_cv_sizeof_long_double+:} false; then :
       
 40104    $as_echo_n "(cached) " >&6
       
 40105  else
       
 40106    if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double"        "$ac_includes_default"; then :
       
 40107  
       
 40108  else
       
 40109    if test "$ac_cv_type_long_double" = yes; then
       
 40110       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
       
 40111  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
       
 40112 -{ as_fn_set_status 77
       
 40113 -as_fn_error "cannot compute sizeof (long double)
       
 40114 -See \`config.log' for more details." "$LINENO" 5; }; }
       
 40115 +as_fn_error 77 "cannot compute sizeof (long double)
       
 40116 +See \`config.log' for more details" "$LINENO" 5; }
       
 40117     else
       
 40118       ac_cv_sizeof_long_double=0
       
 40119     fi
       
 40120  fi
       
 40121  
       
 40122  fi
       
 40123  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5
       
 40124  $as_echo "$ac_cv_sizeof_long_double" >&6; }
       
 40125 @@ -11924,30 +14275,38 @@ cat >>confdefs.h <<_ACEOF
       
 40126  #define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double
       
 40127  _ACEOF
       
 40128  
       
 40129  
       
 40130  
       
 40131  # Also AC_SUBST this variable for ffi.h.
       
 40132  if test -z "$HAVE_LONG_DOUBLE"; then
       
 40133    HAVE_LONG_DOUBLE=0
       
 40134 -  if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
       
 40135 -    if test $ac_cv_sizeof_long_double != 0; then
       
 40136 +  if test $ac_cv_sizeof_long_double != 0; then
       
 40137 +    if test $HAVE_LONG_DOUBLE_VARIANT != 0; then
       
 40138 +
       
 40139 +$as_echo "#define HAVE_LONG_DOUBLE_VARIANT 1" >>confdefs.h
       
 40140 +
       
 40141        HAVE_LONG_DOUBLE=1
       
 40142 +    else
       
 40143 +      if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
       
 40144 +        HAVE_LONG_DOUBLE=1
       
 40145  
       
 40146  $as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
       
 40147  
       
 40148 -    fi
       
 40149 -  fi
       
 40150 -fi
       
 40151 +      fi
       
 40152 +    fi
       
 40153 +  fi
       
 40154 +fi
       
 40155 +
       
 40156  
       
 40157  
       
 40158   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
       
 40159  $as_echo_n "checking whether byte ordering is bigendian... " >&6; }
       
 40160 -if test "${ac_cv_c_bigendian+set}" = set; then :
       
 40161 +if ${ac_cv_c_bigendian+:} false; then :
       
 40162    $as_echo_n "(cached) " >&6
       
 40163  else
       
 40164    ac_cv_c_bigendian=unknown
       
 40165      # See if we're dealing with a universal compiler.
       
 40166      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 40167  /* end confdefs.h.  */
       
 40168  #ifndef __APPLE_CC__
       
 40169  	       not a universal capable compiler
       
 40170 @@ -12155,59 +14514,60 @@ fi
       
 40171     no)
       
 40172        ;; #(
       
 40173     universal)
       
 40174  
       
 40175  $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
       
 40176  
       
 40177       ;; #(
       
 40178     *)
       
 40179 -     as_fn_error "unknown endianness
       
 40180 +     as_fn_error $? "unknown endianness
       
 40181   presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
       
 40182   esac
       
 40183  
       
 40184  
       
 40185  { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .cfi pseudo-op support" >&5
       
 40186  $as_echo_n "checking assembler .cfi pseudo-op support... " >&6; }
       
 40187 -if test "${libffi_cv_as_cfi_pseudo_op+set}" = set; then :
       
 40188 -  $as_echo_n "(cached) " >&6
       
 40189 -else
       
 40190 -
       
 40191 -    libffi_cv_as_cfi_pseudo_op=unknown
       
 40192 +if ${gcc_cv_as_cfi_pseudo_op+:} false; then :
       
 40193 +  $as_echo_n "(cached) " >&6
       
 40194 +else
       
 40195 +
       
 40196 +    gcc_cv_as_cfi_pseudo_op=unknown
       
 40197      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 40198  /* end confdefs.h.  */
       
 40199  asm (".cfi_startproc\n\t.cfi_endproc");
       
 40200  int
       
 40201  main ()
       
 40202  {
       
 40203  
       
 40204    ;
       
 40205    return 0;
       
 40206  }
       
 40207  _ACEOF
       
 40208  if ac_fn_c_try_compile "$LINENO"; then :
       
 40209 -  libffi_cv_as_cfi_pseudo_op=yes
       
 40210 -else
       
 40211 -  libffi_cv_as_cfi_pseudo_op=no
       
 40212 +  gcc_cv_as_cfi_pseudo_op=yes
       
 40213 +else
       
 40214 +  gcc_cv_as_cfi_pseudo_op=no
       
 40215  fi
       
 40216  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       
 40217  
       
 40218  fi
       
 40219 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_cfi_pseudo_op" >&5
       
 40220 -$as_echo "$libffi_cv_as_cfi_pseudo_op" >&6; }
       
 40221 -if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then
       
 40222 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_pseudo_op" >&5
       
 40223 +$as_echo "$gcc_cv_as_cfi_pseudo_op" >&6; }
       
 40224 + if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then
       
 40225  
       
 40226  $as_echo "#define HAVE_AS_CFI_PSEUDO_OP 1" >>confdefs.h
       
 40227  
       
 40228 -fi
       
 40229 + fi
       
 40230 +
       
 40231  
       
 40232  if test x$TARGET = xSPARC; then
       
 40233      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5
       
 40234  $as_echo_n "checking assembler and linker support unaligned pc related relocs... " >&6; }
       
 40235 -if test "${libffi_cv_as_sparc_ua_pcrel+set}" = set; then :
       
 40236 +if ${libffi_cv_as_sparc_ua_pcrel+:} false; then :
       
 40237    $as_echo_n "(cached) " >&6
       
 40238  else
       
 40239  
       
 40240  	save_CFLAGS="$CFLAGS"
       
 40241  	save_LDFLAGS="$LDFLAGS"
       
 40242  	CFLAGS="$CFLAGS -fpic"
       
 40243  	LDFLAGS="$LDFLAGS -shared"
       
 40244  	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 40245 @@ -12236,29 +14596,29 @@ fi
       
 40246      if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then
       
 40247  
       
 40248  $as_echo "#define HAVE_AS_SPARC_UA_PCREL 1" >>confdefs.h
       
 40249  
       
 40250      fi
       
 40251  
       
 40252      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .register pseudo-op support" >&5
       
 40253  $as_echo_n "checking assembler .register pseudo-op support... " >&6; }
       
 40254 -if test "${libffi_cv_as_register_pseudo_op+set}" = set; then :
       
 40255 +if ${libffi_cv_as_register_pseudo_op+:} false; then :
       
 40256    $as_echo_n "(cached) " >&6
       
 40257  else
       
 40258  
       
 40259         libffi_cv_as_register_pseudo_op=unknown
       
 40260         # Check if we have .register
       
 40261         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 40262  /* end confdefs.h.  */
       
 40263 +
       
 40264 +int
       
 40265 +main ()
       
 40266 +{
       
 40267  asm (".register %g2, #scratch");
       
 40268 -int
       
 40269 -main ()
       
 40270 -{
       
 40271 -
       
 40272    ;
       
 40273    return 0;
       
 40274  }
       
 40275  _ACEOF
       
 40276  if ac_fn_c_try_compile "$LINENO"; then :
       
 40277    libffi_cv_as_register_pseudo_op=yes
       
 40278  else
       
 40279    libffi_cv_as_register_pseudo_op=no
       
 40280 @@ -12273,50 +14633,50 @@ fi
       
 40281  $as_echo "#define HAVE_AS_REGISTER_PSEUDO_OP 1" >>confdefs.h
       
 40282  
       
 40283      fi
       
 40284  fi
       
 40285  
       
 40286  if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
       
 40287      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5
       
 40288  $as_echo_n "checking assembler supports pc related relocs... " >&6; }
       
 40289 -if test "${libffi_cv_as_x86_pcrel+set}" = set; then :
       
 40290 +if ${libffi_cv_as_x86_pcrel+:} false; then :
       
 40291    $as_echo_n "(cached) " >&6
       
 40292  else
       
 40293  
       
 40294  	libffi_cv_as_x86_pcrel=no
       
 40295  	echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
       
 40296 -	if $CC $CFLAGS -c conftest.s > /dev/null; then
       
 40297 +	if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then
       
 40298  	    libffi_cv_as_x86_pcrel=yes
       
 40299  	fi
       
 40300  
       
 40301  fi
       
 40302  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5
       
 40303  $as_echo "$libffi_cv_as_x86_pcrel" >&6; }
       
 40304      if test "x$libffi_cv_as_x86_pcrel" = xyes; then
       
 40305  
       
 40306  $as_echo "#define HAVE_AS_X86_PCREL 1" >>confdefs.h
       
 40307  
       
 40308      fi
       
 40309  
       
 40310      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .ascii pseudo-op support" >&5
       
 40311  $as_echo_n "checking assembler .ascii pseudo-op support... " >&6; }
       
 40312 -if test "${libffi_cv_as_ascii_pseudo_op+set}" = set; then :
       
 40313 +if ${libffi_cv_as_ascii_pseudo_op+:} false; then :
       
 40314    $as_echo_n "(cached) " >&6
       
 40315  else
       
 40316  
       
 40317         libffi_cv_as_ascii_pseudo_op=unknown
       
 40318         # Check if we have .ascii
       
 40319         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 40320  /* end confdefs.h.  */
       
 40321 -asm (".ascii \"string\"");
       
 40322 -int
       
 40323 -main ()
       
 40324 -{
       
 40325 -
       
 40326 +
       
 40327 +int
       
 40328 +main ()
       
 40329 +{
       
 40330 +asm (".ascii \\"string\\"");
       
 40331    ;
       
 40332    return 0;
       
 40333  }
       
 40334  _ACEOF
       
 40335  if ac_fn_c_try_compile "$LINENO"; then :
       
 40336    libffi_cv_as_ascii_pseudo_op=yes
       
 40337  else
       
 40338    libffi_cv_as_ascii_pseudo_op=no
       
 40339 @@ -12329,29 +14689,29 @@ fi
       
 40340      if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then
       
 40341  
       
 40342  $as_echo "#define HAVE_AS_ASCII_PSEUDO_OP 1" >>confdefs.h
       
 40343  
       
 40344      fi
       
 40345  
       
 40346      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .string pseudo-op support" >&5
       
 40347  $as_echo_n "checking assembler .string pseudo-op support... " >&6; }
       
 40348 -if test "${libffi_cv_as_string_pseudo_op+set}" = set; then :
       
 40349 +if ${libffi_cv_as_string_pseudo_op+:} false; then :
       
 40350    $as_echo_n "(cached) " >&6
       
 40351  else
       
 40352  
       
 40353         libffi_cv_as_string_pseudo_op=unknown
       
 40354         # Check if we have .string
       
 40355         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
       
 40356  /* end confdefs.h.  */
       
 40357 -asm (".string \"string\"");
       
 40358 -int
       
 40359 -main ()
       
 40360 -{
       
 40361 -
       
 40362 +
       
 40363 +int
       
 40364 +main ()
       
 40365 +{
       
 40366 +asm (".string \\"string\\"");
       
 40367    ;
       
 40368    return 0;
       
 40369  }
       
 40370  _ACEOF
       
 40371  if ac_fn_c_try_compile "$LINENO"; then :
       
 40372    libffi_cv_as_string_pseudo_op=yes
       
 40373  else
       
 40374    libffi_cv_as_string_pseudo_op=no
       
 40375 @@ -12363,20 +14723,30 @@ fi
       
 40376  $as_echo "$libffi_cv_as_string_pseudo_op" >&6; }
       
 40377      if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
       
 40378  
       
 40379  $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h
       
 40380  
       
 40381      fi
       
 40382  fi
       
 40383  
       
 40384 -if test x$TARGET = xX86_WIN64; then
       
 40385 -    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5
       
 40386 +# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
       
 40387 +# Check whether --enable-pax_emutramp was given.
       
 40388 +if test "${enable_pax_emutramp+set}" = set; then :
       
 40389 +  enableval=$enable_pax_emutramp; if test "$enable_pax_emutramp" = "yes"; then
       
 40390 +
       
 40391 +$as_echo "#define FFI_MMAP_EXEC_EMUTRAMP_PAX 1" >>confdefs.h
       
 40392 +
       
 40393 +  fi
       
 40394 +fi
       
 40395 +
       
 40396 +
       
 40397 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5
       
 40398  $as_echo_n "checking for _ prefix in compiled symbols... " >&6; }
       
 40399 -if test "${lt_cv_sys_symbol_underscore+set}" = set; then :
       
 40400 +if ${lt_cv_sys_symbol_underscore+:} false; then :
       
 40401    $as_echo_n "(cached) " >&6
       
 40402  else
       
 40403    lt_cv_sys_symbol_underscore=no
       
 40404    cat > conftest.$ac_ext <<_LT_EOF
       
 40405  void nm_test_func(){}
       
 40406  int main(){nm_test_func;return 0;}
       
 40407  _LT_EOF
       
 40408    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
       
 40409 @@ -12411,36 +14781,50 @@ int main(){nm_test_func;return 0;}
       
 40410    rm -rf conftest*
       
 40411  
       
 40412  fi
       
 40413  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5
       
 40414  $as_echo "$lt_cv_sys_symbol_underscore" >&6; }
       
 40415    sys_symbol_underscore=$lt_cv_sys_symbol_underscore
       
 40416  
       
 40417  
       
 40418 -    if test "x$sys_symbol_underscore" = xyes; then
       
 40419 +if test "x$sys_symbol_underscore" = xyes; then
       
 40420  
       
 40421  $as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h
       
 40422  
       
 40423 -    fi
       
 40424 -fi
       
 40425 -
       
 40426 +fi
       
 40427 +
       
 40428 +FFI_EXEC_TRAMPOLINE_TABLE=0
       
 40429  case "$target" in
       
 40430 -     # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
       
 40431 -     *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
 40432 +     *arm*-apple-darwin*)
       
 40433 +       FFI_EXEC_TRAMPOLINE_TABLE=1
       
 40434 +
       
 40435 +$as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
       
 40436 +
       
 40437 +     ;;
       
 40438 +     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
       
 40439  
       
 40440  $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
       
 40441  
       
 40442       ;;
       
 40443  esac
       
 40444 + if test x$FFI_EXEC_TRAMPOLINE_TABLE = x1; then
       
 40445 +  FFI_EXEC_TRAMPOLINE_TABLE_TRUE=
       
 40446 +  FFI_EXEC_TRAMPOLINE_TABLE_FALSE='#'
       
 40447 +else
       
 40448 +  FFI_EXEC_TRAMPOLINE_TABLE_TRUE='#'
       
 40449 +  FFI_EXEC_TRAMPOLINE_TABLE_FALSE=
       
 40450 +fi
       
 40451 +
       
 40452 +
       
 40453  
       
 40454  if test x$TARGET = xX86_64; then
       
 40455      { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5
       
 40456  $as_echo_n "checking toolchain supports unwind section type... " >&6; }
       
 40457 -if test "${libffi_cv_as_x86_64_unwind_section_type+set}" = set; then :
       
 40458 +if ${libffi_cv_as_x86_64_unwind_section_type+:} false; then :
       
 40459    $as_echo_n "(cached) " >&6
       
 40460  else
       
 40461  
       
 40462          cat  > conftest1.s << EOF
       
 40463  .text
       
 40464  .globl foo
       
 40465  foo:
       
 40466  jmp bar
       
 40467 @@ -12466,77 +14850,80 @@ fi
       
 40468  $as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; }
       
 40469      if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
       
 40470  
       
 40471  $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h
       
 40472  
       
 40473      fi
       
 40474  fi
       
 40475  
       
 40476 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
       
 40477 +if test "x$GCC" = "xyes"; then
       
 40478 +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
       
 40479  $as_echo_n "checking whether .eh_frame section should be read-only... " >&6; }
       
 40480 -if test "${libffi_cv_ro_eh_frame+set}" = set; then :
       
 40481 -  $as_echo_n "(cached) " >&6
       
 40482 -else
       
 40483 -
       
 40484 -	libffi_cv_ro_eh_frame=no
       
 40485 -	echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
       
 40486 -	if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
       
 40487 -	    if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
       
 40488 -		libffi_cv_ro_eh_frame=yes
       
 40489 -	    elif grep '.section.*eh_frame.*#alloc' conftest.c \
       
 40490 -		 | grep -v '#write' > /dev/null; then
       
 40491 -		libffi_cv_ro_eh_frame=yes
       
 40492 -	    fi
       
 40493 -	fi
       
 40494 -	rm -f conftest.*
       
 40495 +if ${libffi_cv_ro_eh_frame+:} false; then :
       
 40496 +  $as_echo_n "(cached) " >&6
       
 40497 +else
       
 40498 +
       
 40499 +  	libffi_cv_ro_eh_frame=no
       
 40500 +  	echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
       
 40501 +  	if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then
       
 40502 +	    objdump -h conftest.o > conftest.dump 2>&1
       
 40503 +	    libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1`
       
 40504 +	    libffi_test_line=`expr $libffi_eh_frame_line + 1`p
       
 40505 +	    sed -n $libffi_test_line conftest.dump > conftest.line
       
 40506 +  	    if grep READONLY conftest.line > /dev/null; then
       
 40507 +  		libffi_cv_ro_eh_frame=yes
       
 40508 +  	    fi
       
 40509 +  	fi
       
 40510 +  	rm -f conftest.*
       
 40511  
       
 40512  fi
       
 40513  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5
       
 40514  $as_echo "$libffi_cv_ro_eh_frame" >&6; }
       
 40515 -if test "x$libffi_cv_ro_eh_frame" = xyes; then
       
 40516 +  if test "x$libffi_cv_ro_eh_frame" = xyes; then
       
 40517  
       
 40518  $as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h
       
 40519  
       
 40520  
       
 40521  $as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h
       
 40522  
       
 40523 -else
       
 40524 +  else
       
 40525  
       
 40526  $as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h
       
 40527  
       
 40528 -fi
       
 40529 -
       
 40530 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
       
 40531 +  fi
       
 40532 +
       
 40533 +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
       
 40534  $as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; }
       
 40535 -if test "${libffi_cv_hidden_visibility_attribute+set}" = set; then :
       
 40536 -  $as_echo_n "(cached) " >&6
       
 40537 -else
       
 40538 -
       
 40539 -	echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
       
 40540 -	libffi_cv_hidden_visibility_attribute=no
       
 40541 -	if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
       
 40542 +if ${libffi_cv_hidden_visibility_attribute+:} false; then :
       
 40543 +  $as_echo_n "(cached) " >&6
       
 40544 +else
       
 40545 +
       
 40546 +  	echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1  ; }' > conftest.c
       
 40547 +  	libffi_cv_hidden_visibility_attribute=no
       
 40548 +  	if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
       
 40549    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
       
 40550    (eval $ac_try) 2>&5
       
 40551    ac_status=$?
       
 40552    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 40553    test $ac_status = 0; }; }; then
       
 40554 -	    if grep '\.hidden.*foo' conftest.s >/dev/null; then
       
 40555 -		libffi_cv_hidden_visibility_attribute=yes
       
 40556 -	    fi
       
 40557 -	fi
       
 40558 -	rm -f conftest.*
       
 40559 +  	    if grep '\.hidden.*foo' conftest.s >/dev/null; then
       
 40560 +  		libffi_cv_hidden_visibility_attribute=yes
       
 40561 +  	    fi
       
 40562 +  	fi
       
 40563 +  	rm -f conftest.*
       
 40564  
       
 40565  fi
       
 40566  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5
       
 40567  $as_echo "$libffi_cv_hidden_visibility_attribute" >&6; }
       
 40568 -if test $libffi_cv_hidden_visibility_attribute = yes; then
       
 40569 +  if test $libffi_cv_hidden_visibility_attribute = yes; then
       
 40570  
       
 40571  $as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h
       
 40572  
       
 40573 +  fi
       
 40574  fi
       
 40575  
       
 40576  
       
 40577  
       
 40578  
       
 40579  
       
 40580  
       
 40581  
       
 40582 @@ -12563,16 +14950,24 @@ fi
       
 40583  if test "${enable_structs+set}" = set; then :
       
 40584    enableval=$enable_structs; if test "$enable_structs" = "no"; then
       
 40585  
       
 40586  $as_echo "#define FFI_NO_STRUCTS 1" >>confdefs.h
       
 40587  
       
 40588    fi
       
 40589  fi
       
 40590  
       
 40591 + if test "$enable_debug" = "yes"; then
       
 40592 +  FFI_DEBUG_TRUE=
       
 40593 +  FFI_DEBUG_FALSE='#'
       
 40594 +else
       
 40595 +  FFI_DEBUG_TRUE='#'
       
 40596 +  FFI_DEBUG_FALSE=
       
 40597 +fi
       
 40598 +
       
 40599  
       
 40600  # Check whether --enable-raw-api was given.
       
 40601  if test "${enable_raw_api+set}" = set; then :
       
 40602    enableval=$enable_raw_api; if test "$enable_raw_api" = "no"; then
       
 40603  
       
 40604  $as_echo "#define FFI_NO_RAW_API 1" >>confdefs.h
       
 40605  
       
 40606    fi
       
 40607 @@ -12584,37 +14979,37 @@ if test "${enable_purify_safety+set}" = 
       
 40608    enableval=$enable_purify_safety; if test "$enable_purify_safety" = "yes"; then
       
 40609  
       
 40610  $as_echo "#define USING_PURIFY 1" >>confdefs.h
       
 40611  
       
 40612    fi
       
 40613  fi
       
 40614  
       
 40615  
       
 40616 -if test -n "$with_cross_host" &&
       
 40617 -   test x"$with_cross_host" != x"no"; then
       
 40618 -  toolexecdir='$(exec_prefix)/$(target_alias)'
       
 40619 -  toolexeclibdir='$(toolexecdir)/lib'
       
 40620 -else
       
 40621 -  toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
       
 40622 +# These variables are only ever used when we cross-build to X86_WIN32.
       
 40623 +# And we only support this with GCC, so...
       
 40624 +if test "x$GCC" = "xyes"; then
       
 40625 +  if test -n "$with_cross_host" &&
       
 40626 +     test x"$with_cross_host" != x"no"; then
       
 40627 +    toolexecdir='$(exec_prefix)/$(target_alias)'
       
 40628 +    toolexeclibdir='$(toolexecdir)/lib'
       
 40629 +  else
       
 40630 +    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
       
 40631 +    toolexeclibdir='$(libdir)'
       
 40632 +  fi
       
 40633 +  multi_os_directory=`$CC -print-multi-os-directory`
       
 40634 +  case $multi_os_directory in
       
 40635 +    .) ;; # Avoid trailing /.
       
 40636 +    ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
       
 40637 +  esac
       
 40638 +
       
 40639 +else
       
 40640    toolexeclibdir='$(libdir)'
       
 40641  fi
       
 40642 -multi_os_directory=`$CC -print-multi-os-directory`
       
 40643 -case $multi_os_directory in
       
 40644 -  .) ;; # Avoid trailing /.
       
 40645 -  *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
       
 40646 -esac
       
 40647 -
       
 40648 -
       
 40649 -
       
 40650 -if test "${multilib}" = "yes"; then
       
 40651 -  multilib_arg="--enable-multilib"
       
 40652 -else
       
 40653 -  multilib_arg=
       
 40654 -fi
       
 40655 +
       
 40656  
       
 40657  ac_config_commands="$ac_config_commands include"
       
 40658  
       
 40659  ac_config_commands="$ac_config_commands src"
       
 40660  
       
 40661  
       
 40662  ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h"
       
 40663  
       
 40664 @@ -12681,192 +15076,268 @@ cat >confcache <<\_ACEOF
       
 40665       t clear
       
 40666       :clear
       
 40667       s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
       
 40668       t end
       
 40669       s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
       
 40670       :end' >>confcache
       
 40671  if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
       
 40672    if test -w "$cache_file"; then
       
 40673 -    test "x$cache_file" != "x/dev/null" &&
       
 40674 +    if test "x$cache_file" != "x/dev/null"; then
       
 40675        { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
       
 40676  $as_echo "$as_me: updating cache $cache_file" >&6;}
       
 40677 -    cat confcache >$cache_file
       
 40678 +      if test ! -f "$cache_file" || test -h "$cache_file"; then
       
 40679 +	cat confcache >"$cache_file"
       
 40680 +      else
       
 40681 +        case $cache_file in #(
       
 40682 +        */* | ?:*)
       
 40683 +	  mv -f confcache "$cache_file"$$ &&
       
 40684 +	  mv -f "$cache_file"$$ "$cache_file" ;; #(
       
 40685 +        *)
       
 40686 +	  mv -f confcache "$cache_file" ;;
       
 40687 +	esac
       
 40688 +      fi
       
 40689 +    fi
       
 40690    else
       
 40691      { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
       
 40692  $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
       
 40693    fi
       
 40694  fi
       
 40695  rm -f confcache
       
 40696  
       
 40697  test "x$prefix" = xNONE && prefix=$ac_default_prefix
       
 40698  # Let make expand exec_prefix.
       
 40699  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
       
 40700  
       
 40701  DEFS=-DHAVE_CONFIG_H
       
 40702  
       
 40703  ac_libobjs=
       
 40704  ac_ltlibobjs=
       
 40705 +U=
       
 40706  for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
       
 40707    # 1. Remove the extension, and $U if already installed.
       
 40708    ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
       
 40709    ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
       
 40710    # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
       
 40711    #    will be set to the directory where LIBOBJS objects are built.
       
 40712    as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
       
 40713    as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
       
 40714  done
       
 40715  LIBOBJS=$ac_libobjs
       
 40716  
       
 40717  LTLIBOBJS=$ac_ltlibobjs
       
 40718  
       
 40719  
       
 40720 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
       
 40721 +$as_echo_n "checking that generated files are newer than configure... " >&6; }
       
 40722 +   if test -n "$am_sleep_pid"; then
       
 40723 +     # Hide warnings about reused PIDs.
       
 40724 +     wait $am_sleep_pid 2>/dev/null
       
 40725 +   fi
       
 40726 +   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
       
 40727 +$as_echo "done" >&6; }
       
 40728   if test -n "$EXEEXT"; then
       
 40729    am__EXEEXT_TRUE=
       
 40730    am__EXEEXT_FALSE='#'
       
 40731  else
       
 40732    am__EXEEXT_TRUE='#'
       
 40733    am__EXEEXT_FALSE=
       
 40734  fi
       
 40735  
       
 40736  if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
       
 40737 -  as_fn_error "conditional \"AMDEP\" was never defined.
       
 40738 +  as_fn_error $? "conditional \"AMDEP\" was never defined.
       
 40739  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40740  fi
       
 40741  if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
       
 40742 -  as_fn_error "conditional \"am__fastdepCC\" was never defined.
       
 40743 +  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
       
 40744  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40745  fi
       
 40746  if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
       
 40747 -  as_fn_error "conditional \"am__fastdepCCAS\" was never defined.
       
 40748 +  as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
       
 40749  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40750  fi
       
 40751  if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
       
 40752 -  as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
       
 40753 +  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
       
 40754  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40755  fi
       
 40756  if test -z "${TESTSUBDIR_TRUE}" && test -z "${TESTSUBDIR_FALSE}"; then
       
 40757 -  as_fn_error "conditional \"TESTSUBDIR\" was never defined.
       
 40758 +  as_fn_error $? "conditional \"TESTSUBDIR\" was never defined.
       
 40759  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40760  fi
       
 40761  if test -z "${MIPS_TRUE}" && test -z "${MIPS_FALSE}"; then
       
 40762 -  as_fn_error "conditional \"MIPS\" was never defined.
       
 40763 +  as_fn_error $? "conditional \"MIPS\" was never defined.
       
 40764  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40765  fi
       
 40766 +if test -z "${BFIN_TRUE}" && test -z "${BFIN_FALSE}"; then
       
 40767 +  as_fn_error $? "conditional \"BFIN\" was never defined.
       
 40768 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40769 +fi
       
 40770  if test -z "${SPARC_TRUE}" && test -z "${SPARC_FALSE}"; then
       
 40771 -  as_fn_error "conditional \"SPARC\" was never defined.
       
 40772 +  as_fn_error $? "conditional \"SPARC\" was never defined.
       
 40773  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40774  fi
       
 40775  if test -z "${X86_TRUE}" && test -z "${X86_FALSE}"; then
       
 40776 -  as_fn_error "conditional \"X86\" was never defined.
       
 40777 +  as_fn_error $? "conditional \"X86\" was never defined.
       
 40778  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40779  fi
       
 40780  if test -z "${X86_FREEBSD_TRUE}" && test -z "${X86_FREEBSD_FALSE}"; then
       
 40781 -  as_fn_error "conditional \"X86_FREEBSD\" was never defined.
       
 40782 +  as_fn_error $? "conditional \"X86_FREEBSD\" was never defined.
       
 40783  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40784  fi
       
 40785  if test -z "${X86_WIN32_TRUE}" && test -z "${X86_WIN32_FALSE}"; then
       
 40786 -  as_fn_error "conditional \"X86_WIN32\" was never defined.
       
 40787 +  as_fn_error $? "conditional \"X86_WIN32\" was never defined.
       
 40788  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40789  fi
       
 40790  if test -z "${X86_WIN64_TRUE}" && test -z "${X86_WIN64_FALSE}"; then
       
 40791 -  as_fn_error "conditional \"X86_WIN64\" was never defined.
       
 40792 +  as_fn_error $? "conditional \"X86_WIN64\" was never defined.
       
 40793  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40794  fi
       
 40795  if test -z "${X86_DARWIN_TRUE}" && test -z "${X86_DARWIN_FALSE}"; then
       
 40796 -  as_fn_error "conditional \"X86_DARWIN\" was never defined.
       
 40797 +  as_fn_error $? "conditional \"X86_DARWIN\" was never defined.
       
 40798  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40799  fi
       
 40800 +if test -z "${X86_DARWIN32_TRUE}" && test -z "${X86_DARWIN32_FALSE}"; then
       
 40801 +  as_fn_error $? "conditional \"X86_DARWIN32\" was never defined.
       
 40802 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40803 +fi
       
 40804 +if test -z "${X86_DARWIN64_TRUE}" && test -z "${X86_DARWIN64_FALSE}"; then
       
 40805 +  as_fn_error $? "conditional \"X86_DARWIN64\" was never defined.
       
 40806 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40807 +fi
       
 40808  if test -z "${ALPHA_TRUE}" && test -z "${ALPHA_FALSE}"; then
       
 40809 -  as_fn_error "conditional \"ALPHA\" was never defined.
       
 40810 +  as_fn_error $? "conditional \"ALPHA\" was never defined.
       
 40811  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40812  fi
       
 40813  if test -z "${IA64_TRUE}" && test -z "${IA64_FALSE}"; then
       
 40814 -  as_fn_error "conditional \"IA64\" was never defined.
       
 40815 +  as_fn_error $? "conditional \"IA64\" was never defined.
       
 40816  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40817  fi
       
 40818  if test -z "${M32R_TRUE}" && test -z "${M32R_FALSE}"; then
       
 40819 -  as_fn_error "conditional \"M32R\" was never defined.
       
 40820 +  as_fn_error $? "conditional \"M32R\" was never defined.
       
 40821  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40822  fi
       
 40823  if test -z "${M68K_TRUE}" && test -z "${M68K_FALSE}"; then
       
 40824 -  as_fn_error "conditional \"M68K\" was never defined.
       
 40825 +  as_fn_error $? "conditional \"M68K\" was never defined.
       
 40826  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40827  fi
       
 40828 +if test -z "${M88K_TRUE}" && test -z "${M88K_FALSE}"; then
       
 40829 +  as_fn_error $? "conditional \"M88K\" was never defined.
       
 40830 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40831 +fi
       
 40832 +if test -z "${MICROBLAZE_TRUE}" && test -z "${MICROBLAZE_FALSE}"; then
       
 40833 +  as_fn_error $? "conditional \"MICROBLAZE\" was never defined.
       
 40834 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40835 +fi
       
 40836 +if test -z "${METAG_TRUE}" && test -z "${METAG_FALSE}"; then
       
 40837 +  as_fn_error $? "conditional \"METAG\" was never defined.
       
 40838 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40839 +fi
       
 40840  if test -z "${MOXIE_TRUE}" && test -z "${MOXIE_FALSE}"; then
       
 40841 -  as_fn_error "conditional \"MOXIE\" was never defined.
       
 40842 +  as_fn_error $? "conditional \"MOXIE\" was never defined.
       
 40843  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40844  fi
       
 40845 +if test -z "${NIOS2_TRUE}" && test -z "${NIOS2_FALSE}"; then
       
 40846 +  as_fn_error $? "conditional \"NIOS2\" was never defined.
       
 40847 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40848 +fi
       
 40849  if test -z "${POWERPC_TRUE}" && test -z "${POWERPC_FALSE}"; then
       
 40850 -  as_fn_error "conditional \"POWERPC\" was never defined.
       
 40851 +  as_fn_error $? "conditional \"POWERPC\" was never defined.
       
 40852  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40853  fi
       
 40854  if test -z "${POWERPC_AIX_TRUE}" && test -z "${POWERPC_AIX_FALSE}"; then
       
 40855 -  as_fn_error "conditional \"POWERPC_AIX\" was never defined.
       
 40856 +  as_fn_error $? "conditional \"POWERPC_AIX\" was never defined.
       
 40857  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40858  fi
       
 40859  if test -z "${POWERPC_DARWIN_TRUE}" && test -z "${POWERPC_DARWIN_FALSE}"; then
       
 40860 -  as_fn_error "conditional \"POWERPC_DARWIN\" was never defined.
       
 40861 +  as_fn_error $? "conditional \"POWERPC_DARWIN\" was never defined.
       
 40862  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40863  fi
       
 40864  if test -z "${POWERPC_FREEBSD_TRUE}" && test -z "${POWERPC_FREEBSD_FALSE}"; then
       
 40865 -  as_fn_error "conditional \"POWERPC_FREEBSD\" was never defined.
       
 40866 +  as_fn_error $? "conditional \"POWERPC_FREEBSD\" was never defined.
       
 40867  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40868  fi
       
 40869 +if test -z "${AARCH64_TRUE}" && test -z "${AARCH64_FALSE}"; then
       
 40870 +  as_fn_error $? "conditional \"AARCH64\" was never defined.
       
 40871 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40872 +fi
       
 40873 +if test -z "${ARC_TRUE}" && test -z "${ARC_FALSE}"; then
       
 40874 +  as_fn_error $? "conditional \"ARC\" was never defined.
       
 40875 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40876 +fi
       
 40877  if test -z "${ARM_TRUE}" && test -z "${ARM_FALSE}"; then
       
 40878 -  as_fn_error "conditional \"ARM\" was never defined.
       
 40879 +  as_fn_error $? "conditional \"ARM\" was never defined.
       
 40880  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40881  fi
       
 40882  if test -z "${AVR32_TRUE}" && test -z "${AVR32_FALSE}"; then
       
 40883 -  as_fn_error "conditional \"AVR32\" was never defined.
       
 40884 +  as_fn_error $? "conditional \"AVR32\" was never defined.
       
 40885  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40886  fi
       
 40887  if test -z "${LIBFFI_CRIS_TRUE}" && test -z "${LIBFFI_CRIS_FALSE}"; then
       
 40888 -  as_fn_error "conditional \"LIBFFI_CRIS\" was never defined.
       
 40889 +  as_fn_error $? "conditional \"LIBFFI_CRIS\" was never defined.
       
 40890  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40891  fi
       
 40892  if test -z "${FRV_TRUE}" && test -z "${FRV_FALSE}"; then
       
 40893 -  as_fn_error "conditional \"FRV\" was never defined.
       
 40894 +  as_fn_error $? "conditional \"FRV\" was never defined.
       
 40895  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40896  fi
       
 40897  if test -z "${S390_TRUE}" && test -z "${S390_FALSE}"; then
       
 40898 -  as_fn_error "conditional \"S390\" was never defined.
       
 40899 +  as_fn_error $? "conditional \"S390\" was never defined.
       
 40900  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40901  fi
       
 40902  if test -z "${X86_64_TRUE}" && test -z "${X86_64_FALSE}"; then
       
 40903 -  as_fn_error "conditional \"X86_64\" was never defined.
       
 40904 +  as_fn_error $? "conditional \"X86_64\" was never defined.
       
 40905  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40906  fi
       
 40907  if test -z "${SH_TRUE}" && test -z "${SH_FALSE}"; then
       
 40908 -  as_fn_error "conditional \"SH\" was never defined.
       
 40909 +  as_fn_error $? "conditional \"SH\" was never defined.
       
 40910  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40911  fi
       
 40912  if test -z "${SH64_TRUE}" && test -z "${SH64_FALSE}"; then
       
 40913 -  as_fn_error "conditional \"SH64\" was never defined.
       
 40914 +  as_fn_error $? "conditional \"SH64\" was never defined.
       
 40915  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40916  fi
       
 40917  if test -z "${PA_LINUX_TRUE}" && test -z "${PA_LINUX_FALSE}"; then
       
 40918 -  as_fn_error "conditional \"PA_LINUX\" was never defined.
       
 40919 +  as_fn_error $? "conditional \"PA_LINUX\" was never defined.
       
 40920  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40921  fi
       
 40922  if test -z "${PA_HPUX_TRUE}" && test -z "${PA_HPUX_FALSE}"; then
       
 40923 -  as_fn_error "conditional \"PA_HPUX\" was never defined.
       
 40924 +  as_fn_error $? "conditional \"PA_HPUX\" was never defined.
       
 40925  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40926  fi
       
 40927  if test -z "${PA64_HPUX_TRUE}" && test -z "${PA64_HPUX_FALSE}"; then
       
 40928 -  as_fn_error "conditional \"PA64_HPUX\" was never defined.
       
 40929 +  as_fn_error $? "conditional \"PA64_HPUX\" was never defined.
       
 40930  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40931  fi
       
 40932 -
       
 40933 +if test -z "${TILE_TRUE}" && test -z "${TILE_FALSE}"; then
       
 40934 +  as_fn_error $? "conditional \"TILE\" was never defined.
       
 40935 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40936 +fi
       
 40937 +if test -z "${VAX_TRUE}" && test -z "${VAX_FALSE}"; then
       
 40938 +  as_fn_error $? "conditional \"VAX\" was never defined.
       
 40939 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40940 +fi
       
 40941 +if test -z "${XTENSA_TRUE}" && test -z "${XTENSA_FALSE}"; then
       
 40942 +  as_fn_error $? "conditional \"XTENSA\" was never defined.
       
 40943 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40944 +fi
       
 40945 +
       
 40946 +if test -z "${FFI_EXEC_TRAMPOLINE_TABLE_TRUE}" && test -z "${FFI_EXEC_TRAMPOLINE_TABLE_FALSE}"; then
       
 40947 +  as_fn_error $? "conditional \"FFI_EXEC_TRAMPOLINE_TABLE\" was never defined.
       
 40948 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40949 +fi
       
 40950  if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then
       
 40951 -  as_fn_error "conditional \"FFI_DEBUG\" was never defined.
       
 40952 +  as_fn_error $? "conditional \"FFI_DEBUG\" was never defined.
       
 40953  Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40954  fi
       
 40955 -
       
 40956 -: ${CONFIG_STATUS=./config.status}
       
 40957 +if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then
       
 40958 +  as_fn_error $? "conditional \"FFI_DEBUG\" was never defined.
       
 40959 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
       
 40960 +fi
       
 40961 +
       
 40962 +: "${CONFIG_STATUS=./config.status}"
       
 40963  ac_write_fail=0
       
 40964  ac_clean_files_save=$ac_clean_files
       
 40965  ac_clean_files="$ac_clean_files $CONFIG_STATUS"
       
 40966  { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
       
 40967  $as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
       
 40968  as_write_fail=0
       
 40969  cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
       
 40970  #! $SHELL
       
 40971 @@ -12957,16 +15428,17 @@ fi
       
 40972  # IFS
       
 40973  # We need space, tab and new line, in precisely that order.  Quoting is
       
 40974  # there to prevent editors from complaining about space-tab.
       
 40975  # (If _AS_PATH_WALK were called with IFS unset, it would disable word
       
 40976  # splitting by setting IFS to empty value.)
       
 40977  IFS=" ""	$as_nl"
       
 40978  
       
 40979  # Find who we are.  Look in the path if we contain no directory separator.
       
 40980 +as_myself=
       
 40981  case $0 in #((
       
 40982    *[\\/]* ) as_myself=$0 ;;
       
 40983    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
       
 40984  for as_dir in $PATH
       
 40985  do
       
 40986    IFS=$as_save_IFS
       
 40987    test -z "$as_dir" && as_dir=.
       
 40988      test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
       
 40989 @@ -13002,29 +15474,29 @@ LC_ALL=C
       
 40990  export LC_ALL
       
 40991  LANGUAGE=C
       
 40992  export LANGUAGE
       
 40993  
       
 40994  # CDPATH.
       
 40995  (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
       
 40996  
       
 40997  
       
 40998 -# as_fn_error ERROR [LINENO LOG_FD]
       
 40999 -# ---------------------------------
       
 41000 +# as_fn_error STATUS ERROR [LINENO LOG_FD]
       
 41001 +# ----------------------------------------
       
 41002  # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
       
 41003  # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
       
 41004 -# script with status $?, using 1 if that was 0.
       
 41005 +# script with STATUS, using 1 if that was 0.
       
 41006  as_fn_error ()
       
 41007  {
       
 41008 -  as_status=$?; test $as_status -eq 0 && as_status=1
       
 41009 -  if test "$3"; then
       
 41010 -    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
       
 41011 -    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
       
 41012 -  fi
       
 41013 -  $as_echo "$as_me: error: $1" >&2
       
 41014 +  as_status=$1; test $as_status -eq 0 && as_status=1
       
 41015 +  if test "$4"; then
       
 41016 +    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
       
 41017 +    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
       
 41018 +  fi
       
 41019 +  $as_echo "$as_me: error: $2" >&2
       
 41020    as_fn_exit $as_status
       
 41021  } # as_fn_error
       
 41022  
       
 41023  
       
 41024  # as_fn_set_status STATUS
       
 41025  # -----------------------
       
 41026  # Set $? to STATUS, without forking.
       
 41027  as_fn_set_status ()
       
 41028 @@ -13152,26 +15624,26 @@ else
       
 41029    mkdir conf$$.dir 2>/dev/null
       
 41030  fi
       
 41031  if (echo >conf$$.file) 2>/dev/null; then
       
 41032    if ln -s conf$$.file conf$$ 2>/dev/null; then
       
 41033      as_ln_s='ln -s'
       
 41034      # ... but there are two gotchas:
       
 41035      # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
       
 41036      # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
       
 41037 -    # In both cases, we have to default to `cp -p'.
       
 41038 +    # In both cases, we have to default to `cp -pR'.
       
 41039      ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
       
 41040 -      as_ln_s='cp -p'
       
 41041 +      as_ln_s='cp -pR'
       
 41042    elif ln conf$$.file conf$$ 2>/dev/null; then
       
 41043      as_ln_s=ln
       
 41044    else
       
 41045 -    as_ln_s='cp -p'
       
 41046 -  fi
       
 41047 -else
       
 41048 -  as_ln_s='cp -p'
       
 41049 +    as_ln_s='cp -pR'
       
 41050 +  fi
       
 41051 +else
       
 41052 +  as_ln_s='cp -pR'
       
 41053  fi
       
 41054  rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
       
 41055  rmdir conf$$.dir 2>/dev/null
       
 41056  
       
 41057  
       
 41058  # as_fn_mkdir_p
       
 41059  # -------------
       
 41060  # Create "$as_dir" as a directory, including parents if necessary.
       
 41061 @@ -13210,49 +15682,37 @@ as_fn_mkdir_p ()
       
 41062  	  /^X\(\/\).*/{
       
 41063  	    s//\1/
       
 41064  	    q
       
 41065  	  }
       
 41066  	  s/.*/./; q'`
       
 41067        test -d "$as_dir" && break
       
 41068      done
       
 41069      test -z "$as_dirs" || eval "mkdir $as_dirs"
       
 41070 -  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
       
 41071 +  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
       
 41072  
       
 41073  
       
 41074  } # as_fn_mkdir_p
       
 41075  if mkdir -p . 2>/dev/null; then
       
 41076    as_mkdir_p='mkdir -p "$as_dir"'
       
 41077  else
       
 41078    test -d ./-p && rmdir ./-p
       
 41079    as_mkdir_p=false
       
 41080  fi
       
 41081  
       
 41082 -if test -x / >/dev/null 2>&1; then
       
 41083 -  as_test_x='test -x'
       
 41084 -else
       
 41085 -  if ls -dL / >/dev/null 2>&1; then
       
 41086 -    as_ls_L_option=L
       
 41087 -  else
       
 41088 -    as_ls_L_option=
       
 41089 -  fi
       
 41090 -  as_test_x='
       
 41091 -    eval sh -c '\''
       
 41092 -      if test -d "$1"; then
       
 41093 -	test -d "$1/.";
       
 41094 -      else
       
 41095 -	case $1 in #(
       
 41096 -	-*)set "./$1";;
       
 41097 -	esac;
       
 41098 -	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
       
 41099 -	???[sx]*):;;*)false;;esac;fi
       
 41100 -    '\'' sh
       
 41101 -  '
       
 41102 -fi
       
 41103 -as_executable_p=$as_test_x
       
 41104 +
       
 41105 +# as_fn_executable_p FILE
       
 41106 +# -----------------------
       
 41107 +# Test if FILE is an executable regular file.
       
 41108 +as_fn_executable_p ()
       
 41109 +{
       
 41110 +  test -f "$1" && test -x "$1"
       
 41111 +} # as_fn_executable_p
       
 41112 +as_test_x='test -x'
       
 41113 +as_executable_p=as_fn_executable_p
       
 41114  
       
 41115  # Sed expression to map a string onto a valid CPP name.
       
 41116  as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
       
 41117  
       
 41118  # Sed expression to map a string onto a valid variable name.
       
 41119  as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
       
 41120  
       
 41121  
       
 41122 @@ -13263,18 +15723,18 @@ exec 6>&1
       
 41123  _ASEOF
       
 41124  test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
       
 41125  
       
 41126  cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
       
 41127  # Save the log message, to keep $0 and so on meaningful, and to
       
 41128  # report actual input values of CONFIG_FILES etc. instead of their
       
 41129  # values after options handling.
       
 41130  ac_log="
       
 41131 -This file was extended by libffi $as_me 3.0.10rc0, which was
       
 41132 -generated by GNU Autoconf 2.65.  Invocation command line was
       
 41133 +This file was extended by libffi $as_me 3.1-rc1, which was
       
 41134 +generated by GNU Autoconf 2.69.  Invocation command line was
       
 41135  
       
 41136    CONFIG_FILES    = $CONFIG_FILES
       
 41137    CONFIG_HEADERS  = $CONFIG_HEADERS
       
 41138    CONFIG_LINKS    = $CONFIG_LINKS
       
 41139    CONFIG_COMMANDS = $CONFIG_COMMANDS
       
 41140    $ $0 $@
       
 41141  
       
 41142  on `(hostname || uname -n) 2>/dev/null | sed 1q`
       
 41143 @@ -13327,27 +15787,27 @@ Configuration headers:
       
 41144  $config_headers
       
 41145  
       
 41146  Configuration links:
       
 41147  $config_links
       
 41148  
       
 41149  Configuration commands:
       
 41150  $config_commands
       
 41151  
       
 41152 -Report bugs to <http://gcc.gnu.org/bugs.html>."
       
 41153 +Report bugs to <http://github.com/atgreen/libffi/issues>."
       
 41154  
       
 41155  _ACEOF
       
 41156  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
       
 41157  ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
       
 41158  ac_cs_version="\\
       
 41159 -libffi config.status 3.0.10rc0
       
 41160 -configured by $0, generated by GNU Autoconf 2.65,
       
 41161 +libffi config.status 3.1-rc1
       
 41162 +configured by $0, generated by GNU Autoconf 2.69,
       
 41163    with options \\"\$ac_cs_config\\"
       
 41164  
       
 41165 -Copyright (C) 2009 Free Software Foundation, Inc.
       
 41166 +Copyright (C) 2012 Free Software Foundation, Inc.
       
 41167  This config.status script is free software; the Free Software Foundation
       
 41168  gives unlimited permission to copy, distribute and modify it."
       
 41169  
       
 41170  ac_pwd='$ac_pwd'
       
 41171  srcdir='$srcdir'
       
 41172  INSTALL='$INSTALL'
       
 41173  MKDIR_P='$MKDIR_P'
       
 41174  AWK='$AWK'
       
 41175 @@ -13355,21 +15815,26 @@ test -n "\$AWK" || AWK=awk
       
 41176  _ACEOF
       
 41177  
       
 41178  cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
       
 41179  # The default lists apply if the user does not specify any file.
       
 41180  ac_need_defaults=:
       
 41181  while test $# != 0
       
 41182  do
       
 41183    case $1 in
       
 41184 -  --*=*)
       
 41185 +  --*=?*)
       
 41186      ac_option=`expr "X$1" : 'X\([^=]*\)='`
       
 41187      ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
       
 41188      ac_shift=:
       
 41189      ;;
       
 41190 +  --*=)
       
 41191 +    ac_option=`expr "X$1" : 'X\([^=]*\)='`
       
 41192 +    ac_optarg=
       
 41193 +    ac_shift=:
       
 41194 +    ;;
       
 41195    *)
       
 41196      ac_option=$1
       
 41197      ac_optarg=$2
       
 41198      ac_shift=shift
       
 41199      ;;
       
 41200    esac
       
 41201  
       
 41202    case $ac_option in
       
 41203 @@ -13381,38 +15846,39 @@ do
       
 41204    --config | --confi | --conf | --con | --co | --c )
       
 41205      $as_echo "$ac_cs_config"; exit ;;
       
 41206    --debug | --debu | --deb | --de | --d | -d )
       
 41207      debug=: ;;
       
 41208    --file | --fil | --fi | --f )
       
 41209      $ac_shift
       
 41210      case $ac_optarg in
       
 41211      *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
       
 41212 +    '') as_fn_error $? "missing file argument" ;;
       
 41213      esac
       
 41214      as_fn_append CONFIG_FILES " '$ac_optarg'"
       
 41215      ac_need_defaults=false;;
       
 41216    --header | --heade | --head | --hea )
       
 41217      $ac_shift
       
 41218      case $ac_optarg in
       
 41219      *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
       
 41220      esac
       
 41221      as_fn_append CONFIG_HEADERS " '$ac_optarg'"
       
 41222      ac_need_defaults=false;;
       
 41223    --he | --h)
       
 41224      # Conflict between --help and --header
       
 41225 -    as_fn_error "ambiguous option: \`$1'
       
 41226 +    as_fn_error $? "ambiguous option: \`$1'
       
 41227  Try \`$0 --help' for more information.";;
       
 41228    --help | --hel | -h )
       
 41229      $as_echo "$ac_cs_usage"; exit ;;
       
 41230    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
       
 41231    | -silent | --silent | --silen | --sile | --sil | --si | --s)
       
 41232      ac_cs_silent=: ;;
       
 41233  
       
 41234    # This is an error.
       
 41235 -  -*) as_fn_error "unrecognized option: \`$1'
       
 41236 +  -*) as_fn_error $? "unrecognized option: \`$1'
       
 41237  Try \`$0 --help' for more information." ;;
       
 41238  
       
 41239    *) as_fn_append ac_config_targets " $1"
       
 41240       ac_need_defaults=false ;;
       
 41241  
       
 41242    esac
       
 41243    shift
       
 41244  done
       
 41245 @@ -13422,17 +15888,17 @@ ac_configure_extra_args=
       
 41246  if $ac_cs_silent; then
       
 41247    exec 6>/dev/null
       
 41248    ac_configure_extra_args="$ac_configure_extra_args --silent"
       
 41249  fi
       
 41250  
       
 41251  _ACEOF
       
 41252  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
       
 41253  if \$ac_cs_recheck; then
       
 41254 -  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
       
 41255 +  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
       
 41256    shift
       
 41257    \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
       
 41258    CONFIG_SHELL='$SHELL'
       
 41259    export CONFIG_SHELL
       
 41260    exec "\$@"
       
 41261  fi
       
 41262  
       
 41263  _ACEOF
       
 41264 @@ -13446,211 +15912,246 @@ exec 5>>config.log
       
 41265    $as_echo "$ac_log"
       
 41266  } >&5
       
 41267  
       
 41268  _ACEOF
       
 41269  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
       
 41270  #
       
 41271  # INIT-COMMANDS
       
 41272  #
       
 41273 +ax_enable_builddir_srcdir="$srcdir"                    # $srcdir
       
 41274 +ax_enable_builddir_host="$HOST"                        # $HOST / $host
       
 41275 +ax_enable_builddir_version="$VERSION"                  # $VERSION
       
 41276 +ax_enable_builddir_package="$PACKAGE"                  # $PACKAGE
       
 41277 +ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX
       
 41278 +ax_enable_builddir_sed="$ax_enable_builddir_sed"       # $SED
       
 41279 +ax_enable_builddir="$ax_enable_builddir"               # $SUB
       
 41280 +
       
 41281  AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
       
 41282  
       
 41283  
       
 41284  # The HP-UX ksh and POSIX shell print the target directory to stdout
       
 41285  # if CDPATH is set.
       
 41286  (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
       
 41287  
       
 41288  sed_quote_subst='$sed_quote_subst'
       
 41289  double_quote_subst='$double_quote_subst'
       
 41290  delay_variable_subst='$delay_variable_subst'
       
 41291 -macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
       
 41292 -macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
       
 41293 -enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
       
 41294 -enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
       
 41295 -pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
       
 41296 -enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
       
 41297 -host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
       
 41298 -host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
       
 41299 -host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
       
 41300 -build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
       
 41301 -build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
       
 41302 -build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
       
 41303 -SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
       
 41304 -Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
       
 41305 -GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
       
 41306 -EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
       
 41307 -FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
       
 41308 -LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
       
 41309 -NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
       
 41310 -LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
       
 41311 -max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
       
 41312 -ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
       
 41313 -exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
       
 41314 -lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
       
 41315 -lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
       
 41316 -lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
       
 41317 -reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
       
 41318 -reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41319 -OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
       
 41320 -deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
       
 41321 -file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
       
 41322 -AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
       
 41323 -AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
       
 41324 -STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
       
 41325 -RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
       
 41326 -old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41327 -old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41328 -old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41329 -CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
       
 41330 -CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
       
 41331 -compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
       
 41332 -GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
       
 41333 -lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
       
 41334 -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
       
 41335 -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"`'
       
 41336 -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"`'
       
 41337 -objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
       
 41338 -SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
       
 41339 -ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
       
 41340 -MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
       
 41341 -lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
       
 41342 -lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
       
 41343 -lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
       
 41344 -lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
       
 41345 -lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
       
 41346 -need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
       
 41347 -DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
       
 41348 -NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
       
 41349 -LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
       
 41350 -OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
       
 41351 -OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
       
 41352 -libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
       
 41353 -shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41354 -extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41355 -archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
       
 41356 -enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
       
 41357 -export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
       
 41358 -whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
       
 41359 -compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
       
 41360 -old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41361 -old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41362 -archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41363 -archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41364 -module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41365 -module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41366 -with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
       
 41367 -allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
       
 41368 -no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
       
 41369 -hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
       
 41370 -hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
       
 41371 -hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
       
 41372 -hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
       
 41373 -hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
       
 41374 -hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
       
 41375 -hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
       
 41376 -hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
       
 41377 -inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
       
 41378 -link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
       
 41379 -fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
       
 41380 -always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
       
 41381 -export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41382 -exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
       
 41383 -include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
       
 41384 -prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41385 -file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
       
 41386 -variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
       
 41387 -need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
       
 41388 -need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
       
 41389 -version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
       
 41390 -runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
       
 41391 -shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
       
 41392 -shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
       
 41393 -libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
       
 41394 -library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
       
 41395 -soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
       
 41396 -postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41397 -postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41398 -finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
       
 41399 -finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
       
 41400 -hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
       
 41401 -sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
       
 41402 -sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
       
 41403 -hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
       
 41404 -enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
       
 41405 -enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
       
 41406 -enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
       
 41407 -old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
       
 41408 -striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
       
 41409 +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
       
 41410 +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
       
 41411 +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
       
 41412 +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
       
 41413 +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
       
 41414 +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
       
 41415 +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
       
 41416 +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
       
 41417 +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
       
 41418 +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
       
 41419 +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
       
 41420 +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
       
 41421 +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
       
 41422 +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
       
 41423 +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
       
 41424 +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
       
 41425 +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
       
 41426 +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
       
 41427 +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
       
 41428 +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
       
 41429 +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
       
 41430 +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
       
 41431 +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
       
 41432 +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
       
 41433 +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
       
 41434 +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
       
 41435 +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
       
 41436 +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
       
 41437 +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
       
 41438 +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
       
 41439 +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
       
 41440 +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
       
 41441 +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
       
 41442 +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
       
 41443 +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
       
 41444 +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
       
 41445 +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
       
 41446 +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
       
 41447 +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
       
 41448 +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
       
 41449 +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
       
 41450 +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
       
 41451 +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
       
 41452 +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
       
 41453 +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
       
 41454 +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
       
 41455 +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
       
 41456 +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
       
 41457 +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
       
 41458 +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
       
 41459 +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
       
 41460 +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
       
 41461 +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
       
 41462 +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
       
 41463 +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
       
 41464 +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
       
 41465 +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"`'
       
 41466 +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
       
 41467 +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
       
 41468 +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
       
 41469 +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
       
 41470 +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
       
 41471 +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
       
 41472 +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
       
 41473 +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
       
 41474 +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
       
 41475 +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
       
 41476 +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
       
 41477 +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
       
 41478 +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
       
 41479 +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
       
 41480 +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
       
 41481 +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
       
 41482 +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
       
 41483 +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
       
 41484 +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
       
 41485 +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
       
 41486 +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
       
 41487 +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
       
 41488 +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
       
 41489 +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
       
 41490 +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
       
 41491 +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
       
 41492 +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
       
 41493 +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
       
 41494 +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
       
 41495 +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
       
 41496 +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
       
 41497 +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
       
 41498 +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
       
 41499 +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
       
 41500 +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
       
 41501 +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
       
 41502 +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
       
 41503 +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
       
 41504 +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
       
 41505 +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
       
 41506 +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
       
 41507 +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
       
 41508 +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
       
 41509 +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
       
 41510 +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
       
 41511 +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
       
 41512 +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
       
 41513 +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
       
 41514 +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
       
 41515 +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
       
 41516 +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
       
 41517 +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
       
 41518 +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
       
 41519 +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
       
 41520 +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
       
 41521 +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
       
 41522 +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
       
 41523 +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
       
 41524 +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
       
 41525 +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
       
 41526 +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
       
 41527 +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
       
 41528 +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
       
 41529 +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
       
 41530 +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
       
 41531 +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
       
 41532 +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
       
 41533 +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
       
 41534 +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
       
 41535 +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
       
 41536 +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
       
 41537 +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
       
 41538 +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
       
 41539  
       
 41540  LTCC='$LTCC'
       
 41541  LTCFLAGS='$LTCFLAGS'
       
 41542  compiler='$compiler_DEFAULT'
       
 41543  
       
 41544 +# A function that is used when there is no print builtin or printf.
       
 41545 +func_fallback_echo ()
       
 41546 +{
       
 41547 +  eval 'cat <<_LTECHO_EOF
       
 41548 +\$1
       
 41549 +_LTECHO_EOF'
       
 41550 +}
       
 41551 +
       
 41552  # Quote evaled strings.
       
 41553 -for var in SED \
       
 41554 +for var in SHELL \
       
 41555 +ECHO \
       
 41556 +PATH_SEPARATOR \
       
 41557 +SED \
       
 41558  GREP \
       
 41559  EGREP \
       
 41560  FGREP \
       
 41561  LD \
       
 41562  NM \
       
 41563  LN_S \
       
 41564  lt_SP2NL \
       
 41565  lt_NL2SP \
       
 41566  reload_flag \
       
 41567  OBJDUMP \
       
 41568  deplibs_check_method \
       
 41569  file_magic_cmd \
       
 41570 +file_magic_glob \
       
 41571 +want_nocaseglob \
       
 41572 +DLLTOOL \
       
 41573 +sharedlib_from_linklib_cmd \
       
 41574  AR \
       
 41575  AR_FLAGS \
       
 41576 +archiver_list_spec \
       
 41577  STRIP \
       
 41578  RANLIB \
       
 41579  CC \
       
 41580  CFLAGS \
       
 41581  compiler \
       
 41582  lt_cv_sys_global_symbol_pipe \
       
 41583  lt_cv_sys_global_symbol_to_cdecl \
       
 41584  lt_cv_sys_global_symbol_to_c_name_address \
       
 41585  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
       
 41586 -SHELL \
       
 41587 -ECHO \
       
 41588 +nm_file_list_spec \
       
 41589  lt_prog_compiler_no_builtin_flag \
       
 41590 +lt_prog_compiler_pic \
       
 41591  lt_prog_compiler_wl \
       
 41592 -lt_prog_compiler_pic \
       
 41593  lt_prog_compiler_static \
       
 41594  lt_cv_prog_compiler_c_o \
       
 41595  need_locks \
       
 41596 +MANIFEST_TOOL \
       
 41597  DSYMUTIL \
       
 41598  NMEDIT \
       
 41599  LIPO \
       
 41600  OTOOL \
       
 41601  OTOOL64 \
       
 41602  shrext_cmds \
       
 41603  export_dynamic_flag_spec \
       
 41604  whole_archive_flag_spec \
       
 41605  compiler_needs_object \
       
 41606  with_gnu_ld \
       
 41607  allow_undefined_flag \
       
 41608  no_undefined_flag \
       
 41609  hardcode_libdir_flag_spec \
       
 41610 -hardcode_libdir_flag_spec_ld \
       
 41611  hardcode_libdir_separator \
       
 41612 -fix_srcfile_path \
       
 41613  exclude_expsyms \
       
 41614  include_expsyms \
       
 41615  file_list_spec \
       
 41616  variables_saved_for_relink \
       
 41617  libname_spec \
       
 41618  library_names_spec \
       
 41619  soname_spec \
       
 41620 +install_override_mode \
       
 41621  finish_eval \
       
 41622  old_striplib \
       
 41623  striplib; do
       
 41624 -    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
       
 41625 +    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
       
 41626      *[\\\\\\\`\\"\\\$]*)
       
 41627 -      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       
 41628 +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       
 41629        ;;
       
 41630      *)
       
 41631        eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
       
 41632        ;;
       
 41633      esac
       
 41634  done
       
 41635  
       
 41636  # Double-quote double-evaled strings.
       
 41637 @@ -13662,37 +16163,32 @@ extract_expsyms_cmds \
       
 41638  old_archive_from_new_cmds \
       
 41639  old_archive_from_expsyms_cmds \
       
 41640  archive_cmds \
       
 41641  archive_expsym_cmds \
       
 41642  module_cmds \
       
 41643  module_expsym_cmds \
       
 41644  export_symbols_cmds \
       
 41645  prelink_cmds \
       
 41646 +postlink_cmds \
       
 41647  postinstall_cmds \
       
 41648  postuninstall_cmds \
       
 41649  finish_cmds \
       
 41650  sys_lib_search_path_spec \
       
 41651  sys_lib_dlsearch_path_spec; do
       
 41652 -    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
       
 41653 +    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
       
 41654      *[\\\\\\\`\\"\\\$]*)
       
 41655 -      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       
 41656 +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       
 41657        ;;
       
 41658      *)
       
 41659        eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
       
 41660        ;;
       
 41661      esac
       
 41662  done
       
 41663  
       
 41664 -# Fix-up fallback echo if it was mangled by the above quoting rules.
       
 41665 -case \$lt_ECHO in
       
 41666 -*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
       
 41667 -  ;;
       
 41668 -esac
       
 41669 -
       
 41670  ac_aux_dir='$ac_aux_dir'
       
 41671  xsi_shell='$xsi_shell'
       
 41672  lt_shell_append='$lt_shell_append'
       
 41673  
       
 41674  # See if we are running on zsh, and set the options which allow our
       
 41675  # commands through without removal of \ escapes INIT.
       
 41676  if test -n "\${ZSH_VERSION+set}" ; then
       
 41677     setopt NO_GLOB_SUBST
       
 41678 @@ -13713,29 +16209,30 @@ TARGETDIR="$TARGETDIR"
       
 41679  
       
 41680  cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
       
 41681  
       
 41682  # Handling of arguments.
       
 41683  for ac_config_target in $ac_config_targets
       
 41684  do
       
 41685    case $ac_config_target in
       
 41686      "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
       
 41687 +    "buildir") CONFIG_COMMANDS="$CONFIG_COMMANDS buildir" ;;
       
 41688      "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
       
 41689      "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
       
 41690      "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
       
 41691      "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;;
       
 41692      "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETDIR/ffitarget.h" ;;
       
 41693      "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
       
 41694      "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;;
       
 41695      "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
       
 41696      "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
       
 41697      "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
       
 41698      "libffi.pc") CONFIG_FILES="$CONFIG_FILES libffi.pc" ;;
       
 41699  
       
 41700 -  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
       
 41701 +  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
       
 41702    esac
       
 41703  done
       
 41704  
       
 41705  
       
 41706  # If the user did not use the arguments to specify the items to instantiate,
       
 41707  # then the envvar interface is used.  Set only those that are not.
       
 41708  # We use the long form for the default assignment because of an extremely
       
 41709  # bizarre bug on SunOS 4.1.3.
       
 41710 @@ -13749,82 +16246,84 @@ fi
       
 41711  # Have a temporary directory for convenience.  Make it in the build tree
       
 41712  # simply because there is no reason against having it here, and in addition,
       
 41713  # creating and moving files from /tmp can sometimes cause problems.
       
 41714  # Hook for its removal unless debugging.
       
 41715  # Note that there is a small window in which the directory will not be cleaned:
       
 41716  # after its creation but before its name has been assigned to `$tmp'.
       
 41717  $debug ||
       
 41718  {
       
 41719 -  tmp=
       
 41720 +  tmp= ac_tmp=
       
 41721    trap 'exit_status=$?
       
 41722 -  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
       
 41723 +  : "${ac_tmp:=$tmp}"
       
 41724 +  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
       
 41725  ' 0
       
 41726    trap 'as_fn_exit 1' 1 2 13 15
       
 41727  }
       
 41728  # Create a (secure) tmp directory for tmp files.
       
 41729  
       
 41730  {
       
 41731    tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
       
 41732 -  test -n "$tmp" && test -d "$tmp"
       
 41733 +  test -d "$tmp"
       
 41734  }  ||
       
 41735  {
       
 41736    tmp=./conf$$-$RANDOM
       
 41737    (umask 077 && mkdir "$tmp")
       
 41738 -} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
       
 41739 +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
       
 41740 +ac_tmp=$tmp
       
 41741  
       
 41742  # Set up the scripts for CONFIG_FILES section.
       
 41743  # No need to generate them if there are no CONFIG_FILES.
       
 41744  # This happens for instance with `./config.status config.h'.
       
 41745  if test -n "$CONFIG_FILES"; then
       
 41746  
       
 41747  
       
 41748  ac_cr=`echo X | tr X '\015'`
       
 41749  # On cygwin, bash can eat \r inside `` if the user requested igncr.
       
 41750  # But we know of no other shell where ac_cr would be empty at this
       
 41751  # point, so we can use a bashism as a fallback.
       
 41752  if test "x$ac_cr" = x; then
       
 41753    eval ac_cr=\$\'\\r\'
       
 41754  fi
       
 41755  ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
       
 41756  if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
       
 41757 -  ac_cs_awk_cr='\r'
       
 41758 +  ac_cs_awk_cr='\\r'
       
 41759  else
       
 41760    ac_cs_awk_cr=$ac_cr
       
 41761  fi
       
 41762  
       
 41763 -echo 'BEGIN {' >"$tmp/subs1.awk" &&
       
 41764 +echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
       
 41765  _ACEOF
       
 41766  
       
 41767  
       
 41768  {
       
 41769    echo "cat >conf$$subs.awk <<_ACEOF" &&
       
 41770    echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
       
 41771    echo "_ACEOF"
       
 41772  } >conf$$subs.sh ||
       
 41773 -  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
       
 41774 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
       
 41775 +  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
       
 41776 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
       
 41777  ac_delim='%!_!# '
       
 41778  for ac_last_try in false false false false false :; do
       
 41779    . ./conf$$subs.sh ||
       
 41780 -    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
       
 41781 +    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
       
 41782  
       
 41783    ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
       
 41784    if test $ac_delim_n = $ac_delim_num; then
       
 41785      break
       
 41786    elif $ac_last_try; then
       
 41787 -    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
       
 41788 +    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
       
 41789    else
       
 41790      ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
       
 41791    fi
       
 41792  done
       
 41793  rm -f conf$$subs.sh
       
 41794  
       
 41795  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
       
 41796 -cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
       
 41797 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
       
 41798  _ACEOF
       
 41799  sed -n '
       
 41800  h
       
 41801  s/^/S["/; s/!.*/"]=/
       
 41802  p
       
 41803  g
       
 41804  s/^[^!]*!//
       
 41805  :repl
       
 41806 @@ -13862,17 +16361,17 @@ t delim
       
 41807  /^[^""]/{
       
 41808    N
       
 41809    s/\n//
       
 41810  }
       
 41811  ' >>$CONFIG_STATUS || ac_write_fail=1
       
 41812  rm -f conf$$subs.awk
       
 41813  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
       
 41814  _ACAWK
       
 41815 -cat >>"\$tmp/subs1.awk" <<_ACAWK &&
       
 41816 +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
       
 41817    for (key in S) S_is_set[key] = 1
       
 41818    FS = ""
       
 41819  
       
 41820  }
       
 41821  {
       
 41822    line = $ 0
       
 41823    nfields = split(line, field, "@")
       
 41824    substed = 0
       
 41825 @@ -13894,59 +16393,67 @@ cat >>"\$tmp/subs1.awk" <<_ACAWK &&
       
 41826  
       
 41827  _ACAWK
       
 41828  _ACEOF
       
 41829  cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
       
 41830  if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
       
 41831    sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
       
 41832  else
       
 41833    cat
       
 41834 -fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
       
 41835 -  || as_fn_error "could not setup config files machinery" "$LINENO" 5
       
 41836 -_ACEOF
       
 41837 -
       
 41838 -# VPATH may cause trouble with some makes, so we remove $(srcdir),
       
 41839 -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
       
 41840 +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
       
 41841 +  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
       
 41842 +_ACEOF
       
 41843 +
       
 41844 +# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
       
 41845 +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
       
 41846  # trailing colons and then remove the whole line if VPATH becomes empty
       
 41847  # (actually we leave an empty line to preserve line numbers).
       
 41848  if test "x$srcdir" = x.; then
       
 41849 -  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
       
 41850 -s/:*\$(srcdir):*/:/
       
 41851 -s/:*\${srcdir}:*/:/
       
 41852 -s/:*@srcdir@:*/:/
       
 41853 -s/^\([^=]*=[	 ]*\):*/\1/
       
 41854 +  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
       
 41855 +h
       
 41856 +s///
       
 41857 +s/^/:/
       
 41858 +s/[	 ]*$/:/
       
 41859 +s/:\$(srcdir):/:/g
       
 41860 +s/:\${srcdir}:/:/g
       
 41861 +s/:@srcdir@:/:/g
       
 41862 +s/^:*//
       
 41863  s/:*$//
       
 41864 +x
       
 41865 +s/\(=[	 ]*\).*/\1/
       
 41866 +G
       
 41867 +s/\n//
       
 41868  s/^[^=]*=[	 ]*$//
       
 41869  }'
       
 41870  fi
       
 41871  
       
 41872  cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
       
 41873  fi # test -n "$CONFIG_FILES"
       
 41874  
       
 41875  # Set up the scripts for CONFIG_HEADERS section.
       
 41876  # No need to generate them if there are no CONFIG_HEADERS.
       
 41877  # This happens for instance with `./config.status Makefile'.
       
 41878  if test -n "$CONFIG_HEADERS"; then
       
 41879 -cat >"$tmp/defines.awk" <<\_ACAWK ||
       
 41880 +cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
       
 41881  BEGIN {
       
 41882  _ACEOF
       
 41883  
       
 41884  # Transform confdefs.h into an awk script `defines.awk', embedded as
       
 41885  # here-document in config.status, that substitutes the proper values into
       
 41886  # config.h.in to produce config.h.
       
 41887  
       
 41888  # Create a delimiter string that does not exist in confdefs.h, to ease
       
 41889  # handling of long lines.
       
 41890  ac_delim='%!_!# '
       
 41891  for ac_last_try in false false :; do
       
 41892 -  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
       
 41893 -  if test -z "$ac_t"; then
       
 41894 +  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
       
 41895 +  if test -z "$ac_tt"; then
       
 41896      break
       
 41897    elif $ac_last_try; then
       
 41898 -    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
       
 41899 +    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
       
 41900    else
       
 41901      ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
       
 41902    fi
       
 41903  done
       
 41904  
       
 41905  # For the awk script, D is an array of macro values keyed by name,
       
 41906  # likewise P contains macro parameters if any.  Preserve backslash
       
 41907  # newline sequences.
       
 41908 @@ -14021,30 +16528,30 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
       
 41909        next
       
 41910      }
       
 41911    }
       
 41912  }
       
 41913  { print }
       
 41914  _ACAWK
       
 41915  _ACEOF
       
 41916  cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
       
 41917 -  as_fn_error "could not setup config headers machinery" "$LINENO" 5
       
 41918 +  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
       
 41919  fi # test -n "$CONFIG_HEADERS"
       
 41920  
       
 41921  
       
 41922  eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS  :L $CONFIG_LINKS  :C $CONFIG_COMMANDS"
       
 41923  shift
       
 41924  for ac_tag
       
 41925  do
       
 41926    case $ac_tag in
       
 41927    :[FHLC]) ac_mode=$ac_tag; continue;;
       
 41928    esac
       
 41929    case $ac_mode$ac_tag in
       
 41930    :[FHL]*:*);;
       
 41931 -  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
       
 41932 +  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
       
 41933    :[FH]-) ac_tag=-:-;;
       
 41934    :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
       
 41935    esac
       
 41936    ac_save_IFS=$IFS
       
 41937    IFS=:
       
 41938    set x $ac_tag
       
 41939    IFS=$ac_save_IFS
       
 41940    shift
       
 41941 @@ -14053,26 +16560,26 @@ do
       
 41942  
       
 41943    case $ac_mode in
       
 41944    :L) ac_source=$1;;
       
 41945    :[FH])
       
 41946      ac_file_inputs=
       
 41947      for ac_f
       
 41948      do
       
 41949        case $ac_f in
       
 41950 -      -) ac_f="$tmp/stdin";;
       
 41951 +      -) ac_f="$ac_tmp/stdin";;
       
 41952        *) # Look for the file first in the build tree, then in the source tree
       
 41953  	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
       
 41954  	 # because $ac_f cannot contain `:'.
       
 41955  	 test -f "$ac_f" ||
       
 41956  	   case $ac_f in
       
 41957  	   [\\/$]*) false;;
       
 41958  	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
       
 41959  	   esac ||
       
 41960 -	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       
 41961 +	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       
 41962        esac
       
 41963        case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       
 41964        as_fn_append ac_file_inputs " '$ac_f'"
       
 41965      done
       
 41966  
       
 41967      # Let's still pretend it is `configure' which instantiates (i.e., don't
       
 41968      # use $as_me), people would be surprised to read:
       
 41969      #    /* config.h.  Generated by config.status.  */
       
 41970 @@ -14088,18 +16595,18 @@ do
       
 41971      case $configure_input in #(
       
 41972      *\&* | *\|* | *\\* )
       
 41973         ac_sed_conf_input=`$as_echo "$configure_input" |
       
 41974         sed 's/[\\\\&|]/\\\\&/g'`;; #(
       
 41975      *) ac_sed_conf_input=$configure_input;;
       
 41976      esac
       
 41977  
       
 41978      case $ac_tag in
       
 41979 -    *:-:* | *:-) cat >"$tmp/stdin" \
       
 41980 -      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
       
 41981 +    *:-:* | *:-) cat >"$ac_tmp/stdin" \
       
 41982 +      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
       
 41983      esac
       
 41984      ;;
       
 41985    esac
       
 41986  
       
 41987    ac_dir=`$as_dirname -- "$ac_file" ||
       
 41988  $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
       
 41989  	 X"$ac_file" : 'X\(//\)[^/]' \| \
       
 41990  	 X"$ac_file" : 'X\(//\)$' \| \
       
 41991 @@ -14225,56 +16732,57 @@ s&@top_srcdir@&$ac_top_srcdir&;t t
       
 41992  s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
       
 41993  s&@builddir@&$ac_builddir&;t t
       
 41994  s&@abs_builddir@&$ac_abs_builddir&;t t
       
 41995  s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
       
 41996  s&@INSTALL@&$ac_INSTALL&;t t
       
 41997  s&@MKDIR_P@&$ac_MKDIR_P&;t t
       
 41998  $ac_datarootdir_hack
       
 41999  "
       
 42000 -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
       
 42001 -  || as_fn_error "could not create $ac_file" "$LINENO" 5
       
 42002 +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
       
 42003 +  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
       
 42004  
       
 42005  test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
       
 42006 -  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
       
 42007 -  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
       
 42008 +  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
       
 42009 +  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
       
 42010 +      "$ac_tmp/out"`; test -z "$ac_out"; } &&
       
 42011    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
       
 42012 -which seems to be undefined.  Please make sure it is defined." >&5
       
 42013 +which seems to be undefined.  Please make sure it is defined" >&5
       
 42014  $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
       
 42015 -which seems to be undefined.  Please make sure it is defined." >&2;}
       
 42016 -
       
 42017 -  rm -f "$tmp/stdin"
       
 42018 +which seems to be undefined.  Please make sure it is defined" >&2;}
       
 42019 +
       
 42020 +  rm -f "$ac_tmp/stdin"
       
 42021    case $ac_file in
       
 42022 -  -) cat "$tmp/out" && rm -f "$tmp/out";;
       
 42023 -  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
       
 42024 +  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
       
 42025 +  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
       
 42026    esac \
       
 42027 -  || as_fn_error "could not create $ac_file" "$LINENO" 5
       
 42028 +  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
       
 42029   ;;
       
 42030    :H)
       
 42031    #
       
 42032    # CONFIG_HEADER
       
 42033    #
       
 42034    if test x"$ac_file" != x-; then
       
 42035      {
       
 42036        $as_echo "/* $configure_input  */" \
       
 42037 -      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
       
 42038 -    } >"$tmp/config.h" \
       
 42039 -      || as_fn_error "could not create $ac_file" "$LINENO" 5
       
 42040 -    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
       
 42041 +      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
       
 42042 +    } >"$ac_tmp/config.h" \
       
 42043 +      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
       
 42044 +    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
       
 42045        { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
       
 42046  $as_echo "$as_me: $ac_file is unchanged" >&6;}
       
 42047      else
       
 42048        rm -f "$ac_file"
       
 42049 -      mv "$tmp/config.h" "$ac_file" \
       
 42050 -	|| as_fn_error "could not create $ac_file" "$LINENO" 5
       
 42051 +      mv "$ac_tmp/config.h" "$ac_file" \
       
 42052 +	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
       
 42053      fi
       
 42054    else
       
 42055      $as_echo "/* $configure_input  */" \
       
 42056 -      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
       
 42057 -      || as_fn_error "could not create -" "$LINENO" 5
       
 42058 +      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
       
 42059 +      || as_fn_error $? "could not create -" "$LINENO" 5
       
 42060    fi
       
 42061  # Compute "$ac_file"'s index in $config_headers.
       
 42062  _am_arg="$ac_file"
       
 42063  _am_stamp_count=1
       
 42064  for _am_header in $config_headers :; do
       
 42065    case $_am_header in
       
 42066      $_am_arg | $_am_arg:* )
       
 42067        break ;;
       
 42068 @@ -14318,53 +16826,197 @@ echo "timestamp for $_am_arg" >`$as_dirn
       
 42069      if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
       
 42070        ac_source=$srcdir/$ac_source
       
 42071      fi
       
 42072  
       
 42073      { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5
       
 42074  $as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
       
 42075  
       
 42076      if test ! -r "$ac_source"; then
       
 42077 -      as_fn_error "$ac_source: file not found" "$LINENO" 5
       
 42078 +      as_fn_error $? "$ac_source: file not found" "$LINENO" 5
       
 42079      fi
       
 42080      rm -f "$ac_file"
       
 42081  
       
 42082      # Try a relative symlink, then a hard link, then a copy.
       
 42083 -    case $srcdir in
       
 42084 +    case $ac_source in
       
 42085      [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
       
 42086  	*) ac_rel_source=$ac_top_build_prefix$ac_source ;;
       
 42087      esac
       
 42088      ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
       
 42089        ln "$ac_source" "$ac_file" 2>/dev/null ||
       
 42090        cp -p "$ac_source" "$ac_file" ||
       
 42091 -      as_fn_error "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
       
 42092 +      as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
       
 42093    fi
       
 42094   ;;
       
 42095    :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
       
 42096  $as_echo "$as_me: executing $ac_file commands" >&6;}
       
 42097   ;;
       
 42098    esac
       
 42099  
       
 42100  
       
 42101    case $ac_file$ac_mode in
       
 42102 +    "buildir":C)   ac_top_srcdir="$ax_enable_builddir_srcdir"
       
 42103 +  if test ".$ax_enable_builddir" = ".." ; then
       
 42104 +    if test -f "$top_srcdir/Makefile" ; then
       
 42105 +      { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5
       
 42106 +$as_echo "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;}
       
 42107 +    else
       
 42108 +      { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5
       
 42109 +$as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;}
       
 42110 +    fi
       
 42111 +  else
       
 42112 +    if test -f "$ac_top_srcdir/Makefile" ; then
       
 42113 +      a=`grep "^VERSION " "$ac_top_srcdir/Makefile"` ; b=`grep "^VERSION " Makefile`
       
 42114 +      test "$a" != "$b" && rm "$ac_top_srcdir/Makefile"
       
 42115 +    fi
       
 42116 +    if test -f "$ac_top_srcdir/Makefile" ; then
       
 42117 +	echo "$ac_top_srcdir/Makefile : $ac_top_srcdir/Makefile.in" > $tmp/conftemp.mk
       
 42118 +	echo "	@ echo 'REMOVED,,,' >\$@" >> $tmp/conftemp.mk
       
 42119 +      eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null"
       
 42120 +      if grep '^REMOVED,,,' "$ac_top_srcdir/Makefile" >/dev/null
       
 42121 +      then rm $ac_top_srcdir/Makefile ; fi
       
 42122 +      cp $tmp/conftemp.mk $ac_top_srcdir/makefiles.mk~      ## DEBUGGING
       
 42123 +    fi
       
 42124 +    if test ! -f "$ac_top_srcdir/Makefile" ; then
       
 42125 +      { $as_echo "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5
       
 42126 +$as_echo "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;}
       
 42127 +      x='`' ; cat >$tmp/conftemp.sed <<_EOF
       
 42128 +/^\$/n
       
 42129 +x
       
 42130 +/^\$/bS
       
 42131 +x
       
 42132 +/\\\\\$/{H;d;}
       
 42133 +{H;s/.*//;x;}
       
 42134 +bM
       
 42135 +:S
       
 42136 +x
       
 42137 +/\\\\\$/{h;d;}
       
 42138 +{h;s/.*//;x;}
       
 42139 +:M
       
 42140 +s/\\(\\n\\)	/\\1 /g
       
 42141 +/^	/d
       
 42142 +/^[	 ]*[\\#]/d
       
 42143 +/^VPATH *=/d
       
 42144 +s/^srcdir *=.*/srcdir = ./
       
 42145 +s/^top_srcdir *=.*/top_srcdir = ./
       
 42146 +/[:=]/!d
       
 42147 +/^\\./d
       
 42148 +/ = /b
       
 42149 +/ .= /b
       
 42150 +/:/!b
       
 42151 +s/:.*/:/
       
 42152 +s/ /  /g
       
 42153 +s/ \\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/ \\1 \\1-all\\2/g
       
 42154 +s/^\\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/\\1 \\1-all\\2/
       
 42155 +s/  / /g
       
 42156 +/^all all-all[ :]/i\\
       
 42157 +all-configured : all-all
       
 42158 +s/ [a-zA-Z0-9-]*-all [a-zA-Z0-9-]*-all-all//g
       
 42159 +/-all-all/d
       
 42160 +a\\
       
 42161 +	@ HOST="\$(HOST)\" \\\\\\
       
 42162 +	; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
       
 42163 +	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
       
 42164 +	; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
       
 42165 +	; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\
       
 42166 +	; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
       
 42167 +	; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
       
 42168 +	; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
       
 42169 +	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 42170 +	; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done
       
 42171 +/dist-all *:/a\\
       
 42172 +	@ HOST="\$(HOST)\" \\\\\\
       
 42173 +	; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
       
 42174 +	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
       
 42175 +	; found=$x echo \$\$BUILD | wc -w $x \\\\\\
       
 42176 +	; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
       
 42177 +	; if test "\$\$found" -eq "0" ; then : \\\\\\
       
 42178 +	; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
       
 42179 +	; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 42180 +	; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
       
 42181 +	; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
       
 42182 +/dist-[a-zA-Z0-9]*-all *:/a\\
       
 42183 +	@ HOST="\$(HOST)\" \\\\\\
       
 42184 +	; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\
       
 42185 +	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
       
 42186 +	; found=$x echo \$\$BUILD | wc -w $x \\\\\\
       
 42187 +	; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
       
 42188 +	; if test "\$\$found" -eq "0" ; then : \\\\\\
       
 42189 +	; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
       
 42190 +	; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 42191 +	; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
       
 42192 +	; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
       
 42193 +/distclean-all *:/a\\
       
 42194 +	@ HOST="\$(HOST)\" \\\\\\
       
 42195 +	; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
       
 42196 +	; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\
       
 42197 +	; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
       
 42198 +	; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\
       
 42199 +	; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
       
 42200 +	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 42201 +	; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\
       
 42202 +	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 42203 +	; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\
       
 42204 +	; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\
       
 42205 +	; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile
       
 42206 +_EOF
       
 42207 +      cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefile.sed~"            ## DEBUGGING
       
 42208 +      $ax_enable_builddir_sed -f $tmp/conftemp.sed Makefile >$ac_top_srcdir/Makefile
       
 42209 +      if test -f "$ac_top_srcdir/Makefile.mk" ; then
       
 42210 +        { $as_echo "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5
       
 42211 +$as_echo "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;}
       
 42212 +        cat $ac_top_srcdir/Makefile.mk >>$ac_top_srcdir/Makefile
       
 42213 +      fi ; xxxx="####"
       
 42214 +      echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$ac_top_srcdir/Makefile
       
 42215 +      # sanity check
       
 42216 +      if grep '^; echo "MAKE ' $ac_top_srcdir/Makefile >/dev/null ; then
       
 42217 +        { $as_echo "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5
       
 42218 +$as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;}
       
 42219 +        $ax_enable_builddir_sed -e '/^@ HOST=/s/^/	/' -e '/^; /s/^/	/' $ac_top_srcdir/Makefile \
       
 42220 +          >$ac_top_srcdir/Makefile~
       
 42221 +        (test -s $ac_top_srcdir/Makefile~ && mv $ac_top_srcdir/Makefile~ $ac_top_srcdir/Makefile) 2>/dev/null
       
 42222 +      fi
       
 42223 +    else
       
 42224 +      xxxx="\\#\\#\\#\\#"
       
 42225 +      # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed
       
 42226 +      echo "s!^$xxxx [^|]* | *$ax_enable_builddir *\$!$xxxx ...... $ax_enable_builddir!" >$tmp/conftemp.sed
       
 42227 +      $ax_enable_builddir_sed -f "$tmp/conftemp.sed" "$ac_top_srcdir/Makefile" >$tmp/mkfile.tmp
       
 42228 +        cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefiles.sed~"         ## DEBUGGING
       
 42229 +        cp "$tmp/mkfile.tmp"   "$ac_top_srcdir/makefiles.out~"         ## DEBUGGING
       
 42230 +      if cmp -s "$ac_top_srcdir/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then
       
 42231 +        { $as_echo "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5
       
 42232 +$as_echo "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;}
       
 42233 +        rm "$tmp/mkfile.tmp"
       
 42234 +      else
       
 42235 +        { $as_echo "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5
       
 42236 +$as_echo "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;}
       
 42237 +        mv "$tmp/mkfile.tmp" "$ac_top_srcdir/Makefile"
       
 42238 +      fi
       
 42239 +    fi
       
 42240 +    { $as_echo "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5
       
 42241 +$as_echo "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;}
       
 42242 +    xxxx="####"
       
 42243 +    echo "$xxxx" "$ax_enable_builddir_host" "|$ax_enable_builddir" >>$ac_top_srcdir/Makefile
       
 42244 +  fi
       
 42245 + ;;
       
 42246      "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
       
 42247 -  # Autoconf 2.62 quotes --file arguments for eval, but not when files
       
 42248 +  # Older Autoconf quotes --file arguments for eval, but not when files
       
 42249    # are listed without --file.  Let's play safe and only enable the eval
       
 42250    # if we detect the quoting.
       
 42251    case $CONFIG_FILES in
       
 42252    *\'*) eval set x "$CONFIG_FILES" ;;
       
 42253    *)   set x $CONFIG_FILES ;;
       
 42254    esac
       
 42255    shift
       
 42256    for mf
       
 42257    do
       
 42258      # Strip MF so we end up with the name of the file.
       
 42259      mf=`echo "$mf" | sed -e 's/:.*$//'`
       
 42260      # Check whether this is an Automake generated Makefile or not.
       
 42261 -    # We used to match only the files named `Makefile.in', but
       
 42262 +    # We used to match only the files named 'Makefile.in', but
       
 42263      # some people rename them; so instead we look at the file content.
       
 42264      # Grep'ing the first line is not enough: some people post-process
       
 42265      # each Makefile.in and add a new line on top of each file to say so.
       
 42266      # Grep'ing the whole file is not good either: AIX grep has a line
       
 42267      # limit of 2048, but all sed's we know have understand at least 4000.
       
 42268      if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
       
 42269        dirpart=`$as_dirname -- "$mf" ||
       
 42270  $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
       
 42271 @@ -14388,31 +17040,29 @@ echo "timestamp for $_am_arg" >`$as_dirn
       
 42272  	    s//\1/
       
 42273  	    q
       
 42274  	  }
       
 42275  	  s/.*/./; q'`
       
 42276      else
       
 42277        continue
       
 42278      fi
       
 42279      # Extract the definition of DEPDIR, am__include, and am__quote
       
 42280 -    # from the Makefile without running `make'.
       
 42281 +    # from the Makefile without running 'make'.
       
 42282      DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
       
 42283      test -z "$DEPDIR" && continue
       
 42284      am__include=`sed -n 's/^am__include = //p' < "$mf"`
       
 42285 -    test -z "am__include" && continue
       
 42286 +    test -z "$am__include" && continue
       
 42287      am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
       
 42288 -    # When using ansi2knr, U may be empty or an underscore; expand it
       
 42289 -    U=`sed -n 's/^U = //p' < "$mf"`
       
 42290      # Find all dependency output files, they are included files with
       
 42291      # $(DEPDIR) in their names.  We invoke sed twice because it is the
       
 42292      # simplest approach to changing $(DEPDIR) to its actual value in the
       
 42293      # expansion.
       
 42294      for file in `sed -n "
       
 42295        s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
       
 42296 -	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
       
 42297 +	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       
 42298        # Make sure the directory exists.
       
 42299        test -f "$dirpart/$file" && continue
       
 42300        fdir=`$as_dirname -- "$file" ||
       
 42301  $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
       
 42302  	 X"$file" : 'X\(//\)[^/]' \| \
       
 42303  	 X"$file" : 'X\(//\)$' \| \
       
 42304  	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
       
 42305  $as_echo X"$file" |
       
 42306 @@ -14456,17 +17106,18 @@ echo "timestamp for $_am_arg" >`$as_dirn
       
 42307  #! $SHELL
       
 42308  
       
 42309  # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
       
 42310  # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
       
 42311  # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
       
 42312  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
       
 42313  #
       
 42314  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
       
 42315 -#                 2006, 2007, 2008 Free Software Foundation, Inc.
       
 42316 +#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
       
 42317 +#                 Foundation, Inc.
       
 42318  #   Written by Gordon Matzigkeit, 1996
       
 42319  #
       
 42320  #   This file is part of GNU Libtool.
       
 42321  #
       
 42322  # GNU Libtool is free software; you can redistribute it and/or
       
 42323  # modify it under the terms of the GNU General Public License as
       
 42324  # published by the Free Software Foundation; either version 2 of
       
 42325  # the License, or (at your option) any later version.
       
 42326 @@ -14504,16 +17155,25 @@ build_libtool_libs=$enable_shared
       
 42327  build_old_libs=$enable_static
       
 42328  
       
 42329  # What type of objects to build.
       
 42330  pic_mode=$pic_mode
       
 42331  
       
 42332  # Whether or not to optimize for fast installation.
       
 42333  fast_install=$enable_fast_install
       
 42334  
       
 42335 +# Shell to use when invoking shell scripts.
       
 42336 +SHELL=$lt_SHELL
       
 42337 +
       
 42338 +# An echo program that protects backslashes.
       
 42339 +ECHO=$lt_ECHO
       
 42340 +
       
 42341 +# The PATH separator for the build system.
       
 42342 +PATH_SEPARATOR=$lt_PATH_SEPARATOR
       
 42343 +
       
 42344  # The host system.
       
 42345  host_alias=$host_alias
       
 42346  host=$host
       
 42347  host_os=$host_os
       
 42348  
       
 42349  # The build system.
       
 42350  build_alias=$build_alias
       
 42351  build=$build
       
 42352 @@ -14553,41 +17213,63 @@ exeext=$exeext
       
 42353  lt_unset=$lt_unset
       
 42354  
       
 42355  # turn spaces into newlines.
       
 42356  SP2NL=$lt_lt_SP2NL
       
 42357  
       
 42358  # turn newlines into spaces.
       
 42359  NL2SP=$lt_lt_NL2SP
       
 42360  
       
 42361 -# How to create reloadable object files.
       
 42362 -reload_flag=$lt_reload_flag
       
 42363 -reload_cmds=$lt_reload_cmds
       
 42364 +# convert \$build file names to \$host format.
       
 42365 +to_host_file_cmd=$lt_cv_to_host_file_cmd
       
 42366 +
       
 42367 +# convert \$build files to toolchain format.
       
 42368 +to_tool_file_cmd=$lt_cv_to_tool_file_cmd
       
 42369  
       
 42370  # An object symbol dumper.
       
 42371  OBJDUMP=$lt_OBJDUMP
       
 42372  
       
 42373  # Method to check whether dependent libraries are shared objects.
       
 42374  deplibs_check_method=$lt_deplibs_check_method
       
 42375  
       
 42376 -# Command to use when deplibs_check_method == "file_magic".
       
 42377 +# Command to use when deplibs_check_method = "file_magic".
       
 42378  file_magic_cmd=$lt_file_magic_cmd
       
 42379  
       
 42380 +# How to find potential files when deplibs_check_method = "file_magic".
       
 42381 +file_magic_glob=$lt_file_magic_glob
       
 42382 +
       
 42383 +# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
       
 42384 +want_nocaseglob=$lt_want_nocaseglob
       
 42385 +
       
 42386 +# DLL creation program.
       
 42387 +DLLTOOL=$lt_DLLTOOL
       
 42388 +
       
 42389 +# Command to associate shared and link libraries.
       
 42390 +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
       
 42391 +
       
 42392  # The archiver.
       
 42393  AR=$lt_AR
       
 42394 +
       
 42395 +# Flags to create an archive.
       
 42396  AR_FLAGS=$lt_AR_FLAGS
       
 42397  
       
 42398 +# How to feed a file listing to the archiver.
       
 42399 +archiver_list_spec=$lt_archiver_list_spec
       
 42400 +
       
 42401  # A symbol stripping program.
       
 42402  STRIP=$lt_STRIP
       
 42403  
       
 42404  # Commands used to install an old-style archive.
       
 42405  RANLIB=$lt_RANLIB
       
 42406  old_postinstall_cmds=$lt_old_postinstall_cmds
       
 42407  old_postuninstall_cmds=$lt_old_postuninstall_cmds
       
 42408  
       
 42409 +# Whether to use a lock for old archive extraction.
       
 42410 +lock_old_archive_extraction=$lock_old_archive_extraction
       
 42411 +
       
 42412  # A C compiler.
       
 42413  LTCC=$lt_CC
       
 42414  
       
 42415  # LTCC compiler flags.
       
 42416  LTCFLAGS=$lt_CFLAGS
       
 42417  
       
 42418  # Take the output of nm and produce a listing of raw symbols and C names.
       
 42419  global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
       
 42420 @@ -14596,31 +17278,34 @@ global_symbol_pipe=$lt_lt_cv_sys_global_
       
 42421  global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
       
 42422  
       
 42423  # Transform the output of nm in a C name address pair.
       
 42424  global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
       
 42425  
       
 42426  # Transform the output of nm in a C name address pair when lib prefix is needed.
       
 42427  global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
       
 42428  
       
 42429 +# Specify filename containing input files for \$NM.
       
 42430 +nm_file_list_spec=$lt_nm_file_list_spec
       
 42431 +
       
 42432 +# The root where to search for dependent libraries,and in which our libraries should be installed.
       
 42433 +lt_sysroot=$lt_sysroot
       
 42434 +
       
 42435  # The name of the directory that contains temporary libtool files.
       
 42436  objdir=$objdir
       
 42437  
       
 42438 -# Shell to use when invoking shell scripts.
       
 42439 -SHELL=$lt_SHELL
       
 42440 -
       
 42441 -# An echo program that does not interpret backslashes.
       
 42442 -ECHO=$lt_ECHO
       
 42443 -
       
 42444  # Used to examine libraries when file_magic_cmd begins with "file".
       
 42445  MAGIC_CMD=$MAGIC_CMD
       
 42446  
       
 42447  # Must we lock files when doing compilation?
       
 42448  need_locks=$lt_need_locks
       
 42449  
       
 42450 +# Manifest tool.
       
 42451 +MANIFEST_TOOL=$lt_MANIFEST_TOOL
       
 42452 +
       
 42453  # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
       
 42454  DSYMUTIL=$lt_DSYMUTIL
       
 42455  
       
 42456  # Tool to change global to local symbols on Mac OS X.
       
 42457  NMEDIT=$lt_NMEDIT
       
 42458  
       
 42459  # Tool to manipulate fat objects and archives on Mac OS X.
       
 42460  LIPO=$lt_LIPO
       
 42461 @@ -14667,16 +17352,19 @@ libname_spec=$lt_libname_spec
       
 42462  
       
 42463  # List of archive names.  First name is the real one, the rest are links.
       
 42464  # The last name is the one that the linker finds with -lNAME
       
 42465  library_names_spec=$lt_library_names_spec
       
 42466  
       
 42467  # The coded name of the library, if different from the real name.
       
 42468  soname_spec=$lt_soname_spec
       
 42469  
       
 42470 +# Permission mode override for installation of shared libraries.
       
 42471 +install_override_mode=$lt_install_override_mode
       
 42472 +
       
 42473  # Command to use after installation of a shared archive.
       
 42474  postinstall_cmds=$lt_postinstall_cmds
       
 42475  
       
 42476  # Command to use after uninstallation of a shared archive.
       
 42477  postuninstall_cmds=$lt_postuninstall_cmds
       
 42478  
       
 42479  # Commands used to finish a libtool library installation in a directory.
       
 42480  finish_cmds=$lt_finish_cmds
       
 42481 @@ -14706,34 +17394,38 @@ dlopen_self_static=$enable_dlopen_self_s
       
 42482  # Commands to strip libraries.
       
 42483  old_striplib=$lt_old_striplib
       
 42484  striplib=$lt_striplib
       
 42485  
       
 42486  
       
 42487  # The linker used to build libraries.
       
 42488  LD=$lt_LD
       
 42489  
       
 42490 +# How to create reloadable object files.
       
 42491 +reload_flag=$lt_reload_flag
       
 42492 +reload_cmds=$lt_reload_cmds
       
 42493 +
       
 42494  # Commands used to build an old-style archive.
       
 42495  old_archive_cmds=$lt_old_archive_cmds
       
 42496  
       
 42497  # A language specific compiler.
       
 42498  CC=$lt_compiler
       
 42499  
       
 42500  # Is the compiler the GNU compiler?
       
 42501  with_gcc=$GCC
       
 42502  
       
 42503  # Compiler flag to turn off builtin functions.
       
 42504  no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
       
 42505  
       
 42506 +# Additional compiler flags for building library objects.
       
 42507 +pic_flag=$lt_lt_prog_compiler_pic
       
 42508 +
       
 42509  # How to pass a linker flag through the compiler.
       
 42510  wl=$lt_lt_prog_compiler_wl
       
 42511  
       
 42512 -# Additional compiler flags for building library objects.
       
 42513 -pic_flag=$lt_lt_prog_compiler_pic
       
 42514 -
       
 42515  # Compiler flag to prevent dynamic linking.
       
 42516  link_static_flag=$lt_lt_prog_compiler_static
       
 42517  
       
 42518  # Does compiler simultaneously support -c and -o options?
       
 42519  compiler_c_o=$lt_lt_cv_prog_compiler_c_o
       
 42520  
       
 42521  # Whether or not to add -lc for building shared libraries.
       
 42522  build_libtool_need_lc=$archive_cmds_need_lc
       
 42523 @@ -14773,20 +17465,16 @@ allow_undefined_flag=$lt_allow_undefined
       
 42524  
       
 42525  # Flag that enforces no undefined symbols.
       
 42526  no_undefined_flag=$lt_no_undefined_flag
       
 42527  
       
 42528  # Flag to hardcode \$libdir into a binary during linking.
       
 42529  # This must work even if \$libdir does not exist
       
 42530  hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
       
 42531  
       
 42532 -# If ld is used when linking, flag to hardcode \$libdir into a binary
       
 42533 -# during linking.  This must work even if \$libdir does not exist.
       
 42534 -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
       
 42535 -
       
 42536  # Whether we need a single "-rpath" flag with a separated argument.
       
 42537  hardcode_libdir_separator=$lt_hardcode_libdir_separator
       
 42538  
       
 42539  # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
       
 42540  # DIR into the resulting binary.
       
 42541  hardcode_direct=$hardcode_direct
       
 42542  
       
 42543  # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
       
 42544 @@ -14810,34 +17498,34 @@ hardcode_automatic=$hardcode_automatic
       
 42545  
       
 42546  # Set to yes if linker adds runtime paths of dependent libraries
       
 42547  # to runtime path list.
       
 42548  inherit_rpath=$inherit_rpath
       
 42549  
       
 42550  # Whether libtool must link a program against all its dependency libraries.
       
 42551  link_all_deplibs=$link_all_deplibs
       
 42552  
       
 42553 -# Fix the shell variable \$srcfile for the compiler.
       
 42554 -fix_srcfile_path=$lt_fix_srcfile_path
       
 42555 -
       
 42556  # Set to "yes" if exported symbols are required.
       
 42557  always_export_symbols=$always_export_symbols
       
 42558  
       
 42559  # The commands to list exported symbols.
       
 42560  export_symbols_cmds=$lt_export_symbols_cmds
       
 42561  
       
 42562  # Symbols that should not be listed in the preloaded symbols.
       
 42563  exclude_expsyms=$lt_exclude_expsyms
       
 42564  
       
 42565  # Symbols that must always be exported.
       
 42566  include_expsyms=$lt_include_expsyms
       
 42567  
       
 42568  # Commands necessary for linking programs (against libraries) with templates.
       
 42569  prelink_cmds=$lt_prelink_cmds
       
 42570  
       
 42571 +# Commands necessary for finishing linking programs.
       
 42572 +postlink_cmds=$lt_postlink_cmds
       
 42573 +
       
 42574  # Specify filename containing input files.
       
 42575  file_list_spec=$lt_file_list_spec
       
 42576  
       
 42577  # How to hardcode a shared library path into an executable.
       
 42578  hardcode_action=$hardcode_action
       
 42579  
       
 42580  # ### END LIBTOOL CONFIG
       
 42581  
       
 42582 @@ -14860,222 +17548,179 @@ fi
       
 42583  
       
 42584  ltmain="$ac_aux_dir/ltmain.sh"
       
 42585  
       
 42586  
       
 42587    # We use sed instead of cat because bash on DJGPP gets confused if
       
 42588    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
       
 42589    # text mode, it properly converts lines to CR/LF.  This bash problem
       
 42590    # is reportedly fixed, but why not run on old versions too?
       
 42591 -  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
       
 42592 -    || (rm -f "$cfgfile"; exit 1)
       
 42593 -
       
 42594 -  case $xsi_shell in
       
 42595 -  yes)
       
 42596 -    cat << \_LT_EOF >> "$cfgfile"
       
 42597 -
       
 42598 -# func_dirname file append nondir_replacement
       
 42599 -# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
       
 42600 -# otherwise set result to NONDIR_REPLACEMENT.
       
 42601 -func_dirname ()
       
 42602 -{
       
 42603 -  case ${1} in
       
 42604 -    */*) func_dirname_result="${1%/*}${2}" ;;
       
 42605 -    *  ) func_dirname_result="${3}" ;;
       
 42606 -  esac
       
 42607 -}
       
 42608 -
       
 42609 -# func_basename file
       
 42610 -func_basename ()
       
 42611 -{
       
 42612 -  func_basename_result="${1##*/}"
       
 42613 -}
       
 42614 -
       
 42615 -# func_dirname_and_basename file append nondir_replacement
       
 42616 -# perform func_basename and func_dirname in a single function
       
 42617 -# call:
       
 42618 -#   dirname:  Compute the dirname of FILE.  If nonempty,
       
 42619 -#             add APPEND to the result, otherwise set result
       
 42620 -#             to NONDIR_REPLACEMENT.
       
 42621 -#             value returned in "$func_dirname_result"
       
 42622 -#   basename: Compute filename of FILE.
       
 42623 -#             value retuned in "$func_basename_result"
       
 42624 -# Implementation must be kept synchronized with func_dirname
       
 42625 -# and func_basename. For efficiency, we do not delegate to
       
 42626 -# those functions but instead duplicate the functionality here.
       
 42627 -func_dirname_and_basename ()
       
 42628 -{
       
 42629 -  case ${1} in
       
 42630 -    */*) func_dirname_result="${1%/*}${2}" ;;
       
 42631 -    *  ) func_dirname_result="${3}" ;;
       
 42632 -  esac
       
 42633 -  func_basename_result="${1##*/}"
       
 42634 -}
       
 42635 -
       
 42636 -# func_stripname prefix suffix name
       
 42637 -# strip PREFIX and SUFFIX off of NAME.
       
 42638 -# PREFIX and SUFFIX must not contain globbing or regex special
       
 42639 -# characters, hashes, percent signs, but SUFFIX may contain a leading
       
 42640 -# dot (in which case that matches only a dot).
       
 42641 -func_stripname ()
       
 42642 -{
       
 42643 -  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
       
 42644 -  # positional parameters, so assign one to ordinary parameter first.
       
 42645 -  func_stripname_result=${3}
       
 42646 -  func_stripname_result=${func_stripname_result#"${1}"}
       
 42647 -  func_stripname_result=${func_stripname_result%"${2}"}
       
 42648 -}
       
 42649 -
       
 42650 -# func_opt_split
       
 42651 -func_opt_split ()
       
 42652 -{
       
 42653 -  func_opt_split_opt=${1%%=*}
       
 42654 -  func_opt_split_arg=${1#*=}
       
 42655 -}
       
 42656 -
       
 42657 -# func_lo2o object
       
 42658 -func_lo2o ()
       
 42659 -{
       
 42660 -  case ${1} in
       
 42661 -    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
       
 42662 -    *)    func_lo2o_result=${1} ;;
       
 42663 -  esac
       
 42664 -}
       
 42665 -
       
 42666 -# func_xform libobj-or-source
       
 42667 -func_xform ()
       
 42668 -{
       
 42669 -  func_xform_result=${1%.*}.lo
       
 42670 -}
       
 42671 -
       
 42672 -# func_arith arithmetic-term...
       
 42673 -func_arith ()
       
 42674 -{
       
 42675 -  func_arith_result=$(( $* ))
       
 42676 -}
       
 42677 -
       
 42678 -# func_len string
       
 42679 -# STRING may not start with a hyphen.
       
 42680 -func_len ()
       
 42681 -{
       
 42682 -  func_len_result=${#1}
       
 42683 -}
       
 42684 -
       
 42685 -_LT_EOF
       
 42686 -    ;;
       
 42687 -  *) # Bourne compatible functions.
       
 42688 -    cat << \_LT_EOF >> "$cfgfile"
       
 42689 -
       
 42690 -# func_dirname file append nondir_replacement
       
 42691 -# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
       
 42692 -# otherwise set result to NONDIR_REPLACEMENT.
       
 42693 -func_dirname ()
       
 42694 -{
       
 42695 -  # Extract subdirectory from the argument.
       
 42696 -  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
       
 42697 -  if test "X$func_dirname_result" = "X${1}"; then
       
 42698 -    func_dirname_result="${3}"
       
 42699 -  else
       
 42700 -    func_dirname_result="$func_dirname_result${2}"
       
 42701 -  fi
       
 42702 -}
       
 42703 -
       
 42704 -# func_basename file
       
 42705 -func_basename ()
       
 42706 -{
       
 42707 -  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
       
 42708 -}
       
 42709 -
       
 42710 -
       
 42711 -# func_stripname prefix suffix name
       
 42712 -# strip PREFIX and SUFFIX off of NAME.
       
 42713 -# PREFIX and SUFFIX must not contain globbing or regex special
       
 42714 -# characters, hashes, percent signs, but SUFFIX may contain a leading
       
 42715 -# dot (in which case that matches only a dot).
       
 42716 -# func_strip_suffix prefix name
       
 42717 -func_stripname ()
       
 42718 -{
       
 42719 -  case ${2} in
       
 42720 -    .*) func_stripname_result=`$ECHO "X${3}" \
       
 42721 -           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
       
 42722 -    *)  func_stripname_result=`$ECHO "X${3}" \
       
 42723 -           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
       
 42724 -  esac
       
 42725 -}
       
 42726 -
       
 42727 -# sed scripts:
       
 42728 -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
       
 42729 -my_sed_long_arg='1s/^-[^=]*=//'
       
 42730 -
       
 42731 -# func_opt_split
       
 42732 -func_opt_split ()
       
 42733 -{
       
 42734 -  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
       
 42735 -  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
       
 42736 -}
       
 42737 -
       
 42738 -# func_lo2o object
       
 42739 -func_lo2o ()
       
 42740 -{
       
 42741 -  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
       
 42742 -}
       
 42743 -
       
 42744 -# func_xform libobj-or-source
       
 42745 -func_xform ()
       
 42746 -{
       
 42747 -  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
       
 42748 -}
       
 42749 -
       
 42750 -# func_arith arithmetic-term...
       
 42751 -func_arith ()
       
 42752 -{
       
 42753 -  func_arith_result=`expr "$@"`
       
 42754 -}
       
 42755 -
       
 42756 -# func_len string
       
 42757 -# STRING may not start with a hyphen.
       
 42758 -func_len ()
       
 42759 -{
       
 42760 -  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
       
 42761 -}
       
 42762 -
       
 42763 -_LT_EOF
       
 42764 -esac
       
 42765 -
       
 42766 -case $lt_shell_append in
       
 42767 -  yes)
       
 42768 -    cat << \_LT_EOF >> "$cfgfile"
       
 42769 -
       
 42770 -# func_append var value
       
 42771 -# Append VALUE to the end of shell variable VAR.
       
 42772 -func_append ()
       
 42773 -{
       
 42774 -  eval "$1+=\$2"
       
 42775 -}
       
 42776 -_LT_EOF
       
 42777 -    ;;
       
 42778 -  *)
       
 42779 -    cat << \_LT_EOF >> "$cfgfile"
       
 42780 -
       
 42781 -# func_append var value
       
 42782 -# Append VALUE to the end of shell variable VAR.
       
 42783 -func_append ()
       
 42784 -{
       
 42785 -  eval "$1=\$$1\$2"
       
 42786 -}
       
 42787 -
       
 42788 -_LT_EOF
       
 42789 -    ;;
       
 42790 -  esac
       
 42791 -
       
 42792 -
       
 42793 -  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
       
 42794 -    || (rm -f "$cfgfile"; exit 1)
       
 42795 -
       
 42796 -  mv -f "$cfgfile" "$ofile" ||
       
 42797 +  sed '$q' "$ltmain" >> "$cfgfile" \
       
 42798 +     || (rm -f "$cfgfile"; exit 1)
       
 42799 +
       
 42800 +  if test x"$xsi_shell" = xyes; then
       
 42801 +  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
       
 42802 +func_dirname ()\
       
 42803 +{\
       
 42804 +\    case ${1} in\
       
 42805 +\      */*) func_dirname_result="${1%/*}${2}" ;;\
       
 42806 +\      *  ) func_dirname_result="${3}" ;;\
       
 42807 +\    esac\
       
 42808 +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
       
 42809 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42810 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42811 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42812 +
       
 42813 +
       
 42814 +  sed -e '/^func_basename ()$/,/^} # func_basename /c\
       
 42815 +func_basename ()\
       
 42816 +{\
       
 42817 +\    func_basename_result="${1##*/}"\
       
 42818 +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
       
 42819 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42820 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42821 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42822 +
       
 42823 +
       
 42824 +  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
       
 42825 +func_dirname_and_basename ()\
       
 42826 +{\
       
 42827 +\    case ${1} in\
       
 42828 +\      */*) func_dirname_result="${1%/*}${2}" ;;\
       
 42829 +\      *  ) func_dirname_result="${3}" ;;\
       
 42830 +\    esac\
       
 42831 +\    func_basename_result="${1##*/}"\
       
 42832 +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
       
 42833 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42834 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42835 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42836 +
       
 42837 +
       
 42838 +  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
       
 42839 +func_stripname ()\
       
 42840 +{\
       
 42841 +\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
       
 42842 +\    # positional parameters, so assign one to ordinary parameter first.\
       
 42843 +\    func_stripname_result=${3}\
       
 42844 +\    func_stripname_result=${func_stripname_result#"${1}"}\
       
 42845 +\    func_stripname_result=${func_stripname_result%"${2}"}\
       
 42846 +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
       
 42847 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42848 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42849 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42850 +
       
 42851 +
       
 42852 +  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
       
 42853 +func_split_long_opt ()\
       
 42854 +{\
       
 42855 +\    func_split_long_opt_name=${1%%=*}\
       
 42856 +\    func_split_long_opt_arg=${1#*=}\
       
 42857 +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
       
 42858 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42859 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42860 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42861 +
       
 42862 +
       
 42863 +  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
       
 42864 +func_split_short_opt ()\
       
 42865 +{\
       
 42866 +\    func_split_short_opt_arg=${1#??}\
       
 42867 +\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
       
 42868 +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
       
 42869 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42870 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42871 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42872 +
       
 42873 +
       
 42874 +  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
       
 42875 +func_lo2o ()\
       
 42876 +{\
       
 42877 +\    case ${1} in\
       
 42878 +\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
       
 42879 +\      *)    func_lo2o_result=${1} ;;\
       
 42880 +\    esac\
       
 42881 +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
       
 42882 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42883 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42884 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42885 +
       
 42886 +
       
 42887 +  sed -e '/^func_xform ()$/,/^} # func_xform /c\
       
 42888 +func_xform ()\
       
 42889 +{\
       
 42890 +    func_xform_result=${1%.*}.lo\
       
 42891 +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
       
 42892 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42893 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42894 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42895 +
       
 42896 +
       
 42897 +  sed -e '/^func_arith ()$/,/^} # func_arith /c\
       
 42898 +func_arith ()\
       
 42899 +{\
       
 42900 +    func_arith_result=$(( $* ))\
       
 42901 +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
       
 42902 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42903 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42904 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42905 +
       
 42906 +
       
 42907 +  sed -e '/^func_len ()$/,/^} # func_len /c\
       
 42908 +func_len ()\
       
 42909 +{\
       
 42910 +    func_len_result=${#1}\
       
 42911 +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
       
 42912 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42913 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42914 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42915 +
       
 42916 +fi
       
 42917 +
       
 42918 +if test x"$lt_shell_append" = xyes; then
       
 42919 +  sed -e '/^func_append ()$/,/^} # func_append /c\
       
 42920 +func_append ()\
       
 42921 +{\
       
 42922 +    eval "${1}+=\\${2}"\
       
 42923 +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
       
 42924 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42925 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42926 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42927 +
       
 42928 +
       
 42929 +  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
       
 42930 +func_append_quoted ()\
       
 42931 +{\
       
 42932 +\    func_quote_for_eval "${2}"\
       
 42933 +\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
       
 42934 +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
       
 42935 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42936 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42937 +test 0 -eq $? || _lt_function_replace_fail=:
       
 42938 +
       
 42939 +
       
 42940 +  # Save a `func_append' function call where possible by direct use of '+='
       
 42941 +  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
       
 42942 +    && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42943 +      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42944 +  test 0 -eq $? || _lt_function_replace_fail=:
       
 42945 +else
       
 42946 +  # Save a `func_append' function call even when '+=' is not available
       
 42947 +  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
       
 42948 +    && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 42949 +      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 42950 +  test 0 -eq $? || _lt_function_replace_fail=:
       
 42951 +fi
       
 42952 +
       
 42953 +if test x"$_lt_function_replace_fail" = x":"; then
       
 42954 +  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
       
 42955 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
       
 42956 +fi
       
 42957 +
       
 42958 +
       
 42959 +   mv -f "$cfgfile" "$ofile" ||
       
 42960      (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
       
 42961    chmod +x "$ofile"
       
 42962  
       
 42963   ;;
       
 42964      "include":C) test -d include || mkdir include ;;
       
 42965      "src":C)
       
 42966  test -d src || mkdir src
       
 42967  test -d src/$TARGETDIR || mkdir src/$TARGETDIR
       
 42968 @@ -15085,17 +17730,17 @@ test -d src/$TARGETDIR || mkdir src/$TAR
       
 42969  done # for ac_tag
       
 42970  
       
 42971  
       
 42972  as_fn_exit 0
       
 42973  _ACEOF
       
 42974  ac_clean_files=$ac_clean_files_save
       
 42975  
       
 42976  test $ac_write_fail = 0 ||
       
 42977 -  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
       
 42978 +  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
       
 42979  
       
 42980  
       
 42981  # configure is writing to config.log, and then calls config.status.
       
 42982  # config.status does its own redirection, appending to config.log.
       
 42983  # Unfortunately, on DOS this fails, as config.log is still kept open
       
 42984  # by configure, so config.status won't be able to write to it; its
       
 42985  # output is simply discarded.  So we exec the FD to /dev/null,
       
 42986  # effectively closing config.log, so it can be properly (re)opened and
       
 42987 @@ -15106,15 +17751,15 @@ if test "$no_create" != yes; then
       
 42988    ac_config_status_args=
       
 42989    test "$silent" = yes &&
       
 42990      ac_config_status_args="$ac_config_status_args --quiet"
       
 42991    exec 5>/dev/null
       
 42992    $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
       
 42993    exec 5>>config.log
       
 42994    # Use ||, not &&, to avoid exiting from the if with $? = 1, which
       
 42995    # would make configure fail if this is the last instruction.
       
 42996 -  $ac_cs_success || as_fn_exit $?
       
 42997 +  $ac_cs_success || as_fn_exit 1
       
 42998  fi
       
 42999  if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
       
 43000    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
       
 43001  $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
       
 43002  fi
       
 43003  
       
 43004 diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
       
 43005 --- a/js/src/ctypes/libffi/configure.ac
       
 43006 +++ b/js/src/ctypes/libffi/configure.ac
       
 43007 @@ -1,152 +1,261 @@
       
 43008  dnl Process this with autoconf to create configure
       
 43009  
       
 43010 -AC_PREREQ(2.63)
       
 43011 +AC_PREREQ(2.68)
       
 43012  
       
 43013 -AC_INIT([libffi], [3.0.10rc0], [http://gcc.gnu.org/bugs.html])
       
 43014 +AC_INIT([libffi], [3.1-rc1], [http://github.com/atgreen/libffi/issues])
       
 43015  AC_CONFIG_HEADERS([fficonfig.h])
       
 43016  
       
 43017  AC_CANONICAL_SYSTEM
       
 43018  target_alias=${target_alias-$host_alias}
       
 43019  
       
 43020 -. ${srcdir}/configure.host
       
 43021 +case "${host}" in
       
 43022 +  frv*-elf)
       
 43023 +    LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
       
 43024 +    ;;
       
 43025 +esac
       
 43026 +
       
 43027 +AX_ENABLE_BUILDDIR
       
 43028  
       
 43029  AM_INIT_AUTOMAKE
       
 43030  
       
 43031  # The same as in boehm-gc and libstdc++. Have to borrow it from there.
       
 43032  # We must force CC to /not/ be precious variables; otherwise
       
 43033  # the wrong, non-multilib-adjusted value will be used in multilibs.
       
 43034  # As a side effect, we have to subst CFLAGS ourselves.
       
 43035  # Also save and restore CFLAGS, since AC_PROG_CC will come up with
       
 43036  # defaults of its own if none are provided.
       
 43037  
       
 43038  m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
       
 43039  m4_define([_AC_ARG_VAR_PRECIOUS],[])
       
 43040  save_CFLAGS=$CFLAGS
       
 43041  AC_PROG_CC
       
 43042  CFLAGS=$save_CFLAGS
       
 43043  m4_undefine([_AC_ARG_VAR_PRECIOUS])
       
 43044 -m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
       
 43045 +m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
       
 43046  
       
 43047  AC_SUBST(CFLAGS)
       
 43048  
       
 43049  AM_PROG_AS
       
 43050  AM_PROG_CC_C_O
       
 43051  AC_PROG_LIBTOOL
       
 43052  AC_CONFIG_MACRO_DIR([m4])
       
 43053  
       
 43054 +# Test for 64-bit build.
       
 43055 +AC_CHECK_SIZEOF([size_t])
       
 43056 +
       
 43057 +AX_COMPILER_VENDOR
       
 43058 +AX_CC_MAXOPT
       
 43059 +# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro
       
 43060 +# compiler.
       
 43061 +if test "$ax_cv_c_compiler_vendor" != "sun"; then
       
 43062 +  AX_CFLAGS_WARN_ALL
       
 43063 +fi
       
 43064 +
       
 43065 +if test "x$GCC" = "xyes"; then
       
 43066 +  CFLAGS="$CFLAGS -fexceptions"
       
 43067 +  touch local.exp
       
 43068 +else
       
 43069 +  cat > local.exp <<EOF
       
 43070 +set CC_FOR_TARGET "$CC"
       
 43071 +EOF
       
 43072 +fi
       
 43073 +
       
 43074  AM_MAINTAINER_MODE
       
 43075  
       
 43076  AC_CHECK_HEADERS(sys/mman.h)
       
 43077  AC_CHECK_FUNCS(mmap)
       
 43078  AC_FUNC_MMAP_BLACKLIST
       
 43079  
       
 43080  dnl The -no-testsuite modules omit the test subdir.
       
 43081  AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
       
 43082  
       
 43083  TARGETDIR="unknown"
       
 43084 +HAVE_LONG_DOUBLE_VARIANT=0
       
 43085  case "$host" in
       
 43086 +  aarch64*-*-*)
       
 43087 +	TARGET=AARCH64; TARGETDIR=aarch64
       
 43088 +	;;
       
 43089 +
       
 43090    alpha*-*-*)
       
 43091  	TARGET=ALPHA; TARGETDIR=alpha;
       
 43092  	# Support 128-bit long double, changeable via command-line switch.
       
 43093  	HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
       
 43094  	;;
       
 43095  
       
 43096 +  arc*-*-*)
       
 43097 +	TARGET=ARC; TARGETDIR=arc
       
 43098 +	;;
       
 43099 +
       
 43100    arm*-*-*)
       
 43101  	TARGET=ARM; TARGETDIR=arm
       
 43102  	;;
       
 43103  
       
 43104    amd64-*-freebsd* | amd64-*-openbsd*)
       
 43105  	TARGET=X86_64; TARGETDIR=x86
       
 43106    	;;
       
 43107  
       
 43108    amd64-*-freebsd*)
       
 43109  	TARGET=X86_64; TARGETDIR=x86
       
 43110 +  	;;
       
 43111 +
       
 43112 +  amd64-*-freebsd*)
       
 43113 +	TARGET=X86_64; TARGETDIR=x86
       
 43114  	;;
       
 43115  
       
 43116    avr32*-*-*)
       
 43117  	TARGET=AVR32; TARGETDIR=avr32
       
 43118  	;;
       
 43119  
       
 43120 +  bfin*)
       
 43121 +  	TARGET=BFIN; TARGETDIR=bfin
       
 43122 +  	;;
       
 43123 +
       
 43124    cris-*-*)
       
 43125  	TARGET=LIBFFI_CRIS; TARGETDIR=cris
       
 43126  	;;
       
 43127  
       
 43128    frv-*-*)
       
 43129  	TARGET=FRV; TARGETDIR=frv
       
 43130  	;;
       
 43131  
       
 43132 -  hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*)
       
 43133 +  hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
       
 43134  	TARGET=PA_LINUX; TARGETDIR=pa
       
 43135  	;;
       
 43136    hppa*64-*-hpux*)
       
 43137  	TARGET=PA64_HPUX; TARGETDIR=pa
       
 43138  	;;
       
 43139    hppa*-*-hpux*)
       
 43140  	TARGET=PA_HPUX; TARGETDIR=pa
       
 43141  	;;
       
 43142  
       
 43143    i?86-*-freebsd* | i?86-*-openbsd*)
       
 43144  	TARGET=X86_FREEBSD; TARGETDIR=x86
       
 43145  	;;
       
 43146 -  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2*)
       
 43147 +  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*)
       
 43148  	TARGET=X86_WIN32; TARGETDIR=x86
       
 43149 -	# All mingw/cygwin/win32 builds require this for sharedlib
       
 43150 -	AM_LTLDFLAGS="-no-undefined"
       
 43151 +	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
       
 43152 +	# We must also check with_cross_host to decide if this is a native
       
 43153 +	# or cross-build and select where to install dlls appropriately.
       
 43154 +	if test -n "$with_cross_host" &&
       
 43155 +	   test x"$with_cross_host" != x"no"; then
       
 43156 +	  AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
       
 43157 +	else
       
 43158 +	  AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
       
 43159 +	fi
       
 43160  	;;
       
 43161    i?86-*-darwin*)
       
 43162  	TARGET=X86_DARWIN; TARGETDIR=x86
       
 43163  	;;
       
 43164    i?86-*-solaris2.1[[0-9]]*)
       
 43165 -	TARGET=X86_64; TARGETDIR=x86
       
 43166 +	TARGETDIR=x86
       
 43167 +	if test $ac_cv_sizeof_size_t = 4; then
       
 43168 +	  TARGET=X86; 
       
 43169 +	else
       
 43170 +	  TARGET=X86_64; 
       
 43171 +	fi	  
       
 43172  	;;
       
 43173 -  i?86-*-*)
       
 43174 -	TARGET=X86; TARGETDIR=x86
       
 43175 +
       
 43176 +  x86_64-*-darwin*)
       
 43177 +	TARGET=X86_DARWIN; TARGETDIR=x86
       
 43178 +	;;
       
 43179 +
       
 43180 +  x86_64-*-cygwin* | x86_64-*-mingw*)
       
 43181 +	TARGET=X86_WIN64; TARGETDIR=x86
       
 43182 +	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
       
 43183 +	# We must also check with_cross_host to decide if this is a native
       
 43184 +	# or cross-build and select where to install dlls appropriately.
       
 43185 +	if test -n "$with_cross_host" &&
       
 43186 +	   test x"$with_cross_host" != x"no"; then
       
 43187 +	  AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
       
 43188 +	else
       
 43189 +	  AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
       
 43190 +	fi
       
 43191 +	;;
       
 43192 +
       
 43193 +  i?86-*-* | x86_64-*-*)
       
 43194 +	TARGETDIR=x86
       
 43195 +	if test $ac_cv_sizeof_size_t = 4; then
       
 43196 +	  case "$host" in
       
 43197 +	    *-gnux32)
       
 43198 +	      TARGET=X86_64
       
 43199 +	      ;;
       
 43200 +	    *)
       
 43201 +	      TARGET=X86
       
 43202 +	      ;;
       
 43203 +          esac	
       
 43204 +	else
       
 43205 +	  TARGET=X86_64; 
       
 43206 +	fi	  
       
 43207  	;;
       
 43208  
       
 43209    ia64*-*-*)
       
 43210  	TARGET=IA64; TARGETDIR=ia64
       
 43211  	;;
       
 43212  
       
 43213    m32r*-*-*)
       
 43214  	TARGET=M32R; TARGETDIR=m32r
       
 43215  	;;
       
 43216  
       
 43217    m68k-*-*)
       
 43218  	TARGET=M68K; TARGETDIR=m68k
       
 43219  	;;
       
 43220  
       
 43221 -  mips-sgi-irix5.* | mips-sgi-irix6.*)
       
 43222 +  m88k-*-*)
       
 43223 +	TARGET=M88K; TARGETDIR=m88k
       
 43224 +	;;
       
 43225 +
       
 43226 +  microblaze*-*-*)
       
 43227 +	TARGET=MICROBLAZE; TARGETDIR=microblaze
       
 43228 +	;;
       
 43229 +
       
 43230 +  moxie-*-*)
       
 43231 +	TARGET=MOXIE; TARGETDIR=moxie
       
 43232 +	;;
       
 43233 +
       
 43234 +  metag-*-*)
       
 43235 +	TARGET=METAG; TARGETDIR=metag
       
 43236 +	;;
       
 43237 +
       
 43238 +  mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
       
 43239  	TARGET=MIPS; TARGETDIR=mips
       
 43240  	;;
       
 43241    mips*-*linux* | mips*-*-openbsd*)
       
 43242  	# Support 128-bit long double for NewABI.
       
 43243  	HAVE_LONG_DOUBLE='defined(__mips64)'
       
 43244  	TARGET=MIPS; TARGETDIR=mips
       
 43245  	;;
       
 43246  
       
 43247 -  moxie-*-*)
       
 43248 -        TARGET=MOXIE; TARGETDIR=moxie
       
 43249 +  nios2*-linux*)
       
 43250 +	TARGET=NIOS2; TARGETDIR=nios2
       
 43251  	;;
       
 43252  
       
 43253    powerpc*-*-linux* | powerpc-*-sysv*)
       
 43254  	TARGET=POWERPC; TARGETDIR=powerpc
       
 43255 +	HAVE_LONG_DOUBLE_VARIANT=1
       
 43256 +	;;
       
 43257 +  powerpc-*-amigaos*)
       
 43258 +	TARGET=POWERPC; TARGETDIR=powerpc
       
 43259  	;;
       
 43260    powerpc-*-beos*)
       
 43261  	TARGET=POWERPC; TARGETDIR=powerpc
       
 43262  	;;
       
 43263 -  powerpc-*-darwin*)
       
 43264 +  powerpc-*-darwin* | powerpc64-*-darwin*)
       
 43265  	TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
       
 43266  	;;
       
 43267    powerpc-*-aix* | rs6000-*-aix*)
       
 43268  	TARGET=POWERPC_AIX; TARGETDIR=powerpc
       
 43269  	;;
       
 43270    powerpc-*-freebsd* | powerpc-*-openbsd*)
       
 43271  	TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
       
 43272 +	HAVE_LONG_DOUBLE_VARIANT=1
       
 43273 +	;;
       
 43274 +  powerpc64-*-freebsd*)
       
 43275 +	TARGET=POWERPC; TARGETDIR=powerpc
       
 43276  	;;
       
 43277    powerpc*-*-rtems*)
       
 43278  	TARGET=POWERPC; TARGETDIR=powerpc
       
 43279  	;;
       
 43280  
       
 43281    s390-*-* | s390x-*-*)
       
 43282  	TARGET=S390; TARGETDIR=s390
       
 43283  	;;
       
 43284 @@ -157,96 +266,105 @@ case "$host" in
       
 43285    sh64-*-* | sh5*-*-*)
       
 43286  	TARGET=SH64; TARGETDIR=sh64
       
 43287  	;;
       
 43288  
       
 43289    sparc*-*-*)
       
 43290  	TARGET=SPARC; TARGETDIR=sparc
       
 43291  	;;
       
 43292  
       
 43293 -  x86_64-*-darwin*)
       
 43294 -	TARGET=X86_DARWIN; TARGETDIR=x86
       
 43295 +  tile*-*)
       
 43296 +        TARGET=TILE; TARGETDIR=tile
       
 43297 +        ;;
       
 43298 +
       
 43299 +  vax-*-*)
       
 43300 +	TARGET=VAX; TARGETDIR=vax
       
 43301  	;;
       
 43302  
       
 43303 -  x86_64-*-cygwin* | x86_64-*-mingw*)
       
 43304 -	TARGET=X86_WIN64; TARGETDIR=x86
       
 43305 +  xtensa*-*)
       
 43306 +	TARGET=XTENSA; TARGETDIR=xtensa
       
 43307  	;;
       
 43308  
       
 43309 -  x86_64-*-*)
       
 43310 -	TARGET=X86_64; TARGETDIR=x86
       
 43311 -	;;
       
 43312  esac
       
 43313  
       
 43314  AC_SUBST(AM_RUNTESTFLAGS)
       
 43315  AC_SUBST(AM_LTLDFLAGS)
       
 43316  
       
 43317  if test $TARGETDIR = unknown; then
       
 43318    AC_MSG_ERROR(["libffi has not been ported to $host."])
       
 43319  fi
       
 43320  
       
 43321  AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
       
 43322 +AM_CONDITIONAL(BFIN, test x$TARGET = xBFIN)
       
 43323  AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)
       
 43324  AM_CONDITIONAL(X86, test x$TARGET = xX86)
       
 43325  AM_CONDITIONAL(X86_FREEBSD, test x$TARGET = xX86_FREEBSD)
       
 43326  AM_CONDITIONAL(X86_WIN32, test x$TARGET = xX86_WIN32)
       
 43327  AM_CONDITIONAL(X86_WIN64, test x$TARGET = xX86_WIN64)
       
 43328  AM_CONDITIONAL(X86_DARWIN, test x$TARGET = xX86_DARWIN)
       
 43329 +AM_CONDITIONAL(X86_DARWIN32, test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 4)
       
 43330 +AM_CONDITIONAL(X86_DARWIN64, test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 8)
       
 43331  AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA)
       
 43332  AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
       
 43333  AM_CONDITIONAL(M32R, test x$TARGET = xM32R)
       
 43334  AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
       
 43335 +AM_CONDITIONAL(M88K, test x$TARGET = xM88K)
       
 43336 +AM_CONDITIONAL(MICROBLAZE, test x$TARGET = xMICROBLAZE)
       
 43337 +AM_CONDITIONAL(METAG, test x$TARGET = xMETAG)
       
 43338  AM_CONDITIONAL(MOXIE, test x$TARGET = xMOXIE)
       
 43339 +AM_CONDITIONAL(NIOS2, test x$TARGET = xNIOS2)
       
 43340  AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
       
 43341  AM_CONDITIONAL(POWERPC_AIX, test x$TARGET = xPOWERPC_AIX)
       
 43342  AM_CONDITIONAL(POWERPC_DARWIN, test x$TARGET = xPOWERPC_DARWIN)
       
 43343  AM_CONDITIONAL(POWERPC_FREEBSD, test x$TARGET = xPOWERPC_FREEBSD)
       
 43344 +AM_CONDITIONAL(AARCH64, test x$TARGET = xAARCH64)
       
 43345 +AM_CONDITIONAL(ARC, test x$TARGET = xARC)
       
 43346  AM_CONDITIONAL(ARM, test x$TARGET = xARM)
       
 43347  AM_CONDITIONAL(AVR32, test x$TARGET = xAVR32)
       
 43348  AM_CONDITIONAL(LIBFFI_CRIS, test x$TARGET = xLIBFFI_CRIS)
       
 43349  AM_CONDITIONAL(FRV, test x$TARGET = xFRV)
       
 43350  AM_CONDITIONAL(S390, test x$TARGET = xS390)
       
 43351  AM_CONDITIONAL(X86_64, test x$TARGET = xX86_64)
       
 43352  AM_CONDITIONAL(SH, test x$TARGET = xSH)
       
 43353  AM_CONDITIONAL(SH64, test x$TARGET = xSH64)
       
 43354  AM_CONDITIONAL(PA_LINUX, test x$TARGET = xPA_LINUX)
       
 43355  AM_CONDITIONAL(PA_HPUX, test x$TARGET = xPA_HPUX)
       
 43356  AM_CONDITIONAL(PA64_HPUX, test x$TARGET = xPA64_HPUX)
       
 43357 +AM_CONDITIONAL(TILE, test x$TARGET = xTILE)
       
 43358 +AM_CONDITIONAL(VAX, test x$TARGET = xVAX)
       
 43359 +AM_CONDITIONAL(XTENSA, test x$TARGET = xXTENSA)
       
 43360  
       
 43361  AC_HEADER_STDC
       
 43362  AC_CHECK_FUNCS(memcpy)
       
 43363  AC_FUNC_ALLOCA
       
 43364  
       
 43365  AC_CHECK_SIZEOF(double)
       
 43366  AC_CHECK_SIZEOF(long double)
       
 43367  
       
 43368  # Also AC_SUBST this variable for ffi.h.
       
 43369  if test -z "$HAVE_LONG_DOUBLE"; then
       
 43370    HAVE_LONG_DOUBLE=0
       
 43371 -  if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
       
 43372 -    if test $ac_cv_sizeof_long_double != 0; then
       
 43373 +  if test $ac_cv_sizeof_long_double != 0; then
       
 43374 +    if test $HAVE_LONG_DOUBLE_VARIANT != 0; then
       
 43375 +      AC_DEFINE(HAVE_LONG_DOUBLE_VARIANT, 1, [Define if you support more than one size of the long double type])
       
 43376        HAVE_LONG_DOUBLE=1
       
 43377 -      AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
       
 43378 +    else
       
 43379 +      if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
       
 43380 +        HAVE_LONG_DOUBLE=1
       
 43381 +        AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
       
 43382 +      fi
       
 43383      fi
       
 43384    fi
       
 43385  fi
       
 43386  AC_SUBST(HAVE_LONG_DOUBLE)
       
 43387 +AC_SUBST(HAVE_LONG_DOUBLE_VARIANT)
       
 43388  
       
 43389  AC_C_BIGENDIAN
       
 43390  
       
 43391 -AC_CACHE_CHECK([assembler .cfi pseudo-op support],
       
 43392 -    libffi_cv_as_cfi_pseudo_op, [
       
 43393 -    libffi_cv_as_cfi_pseudo_op=unknown
       
 43394 -    AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],,
       
 43395 -		   [libffi_cv_as_cfi_pseudo_op=yes],
       
 43396 -		   [libffi_cv_as_cfi_pseudo_op=no])
       
 43397 -])
       
 43398 -if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then
       
 43399 -    AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
       
 43400 -	      [Define if your assembler supports .cfi_* directives.])
       
 43401 -fi
       
 43402 +GCC_AS_CFI_PSEUDO_OP
       
 43403  
       
 43404  if test x$TARGET = xSPARC; then
       
 43405      AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
       
 43406  	libffi_cv_as_sparc_ua_pcrel, [
       
 43407  	save_CFLAGS="$CFLAGS"
       
 43408  	save_LDFLAGS="$LDFLAGS"
       
 43409  	CFLAGS="$CFLAGS -fpic"
       
 43410  	LDFLAGS="$LDFLAGS -shared"
       
 43411 @@ -259,82 +377,96 @@ if test x$TARGET = xSPARC; then
       
 43412  	AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
       
 43413  		  [Define if your assembler and linker support unaligned PC relative relocs.])
       
 43414      fi
       
 43415  
       
 43416      AC_CACHE_CHECK([assembler .register pseudo-op support],
       
 43417         libffi_cv_as_register_pseudo_op, [
       
 43418         libffi_cv_as_register_pseudo_op=unknown
       
 43419         # Check if we have .register
       
 43420 -       AC_TRY_COMPILE([asm (".register %g2, #scratch");],,
       
 43421 +       AC_TRY_COMPILE(,[asm (".register %g2, #scratch");],
       
 43422  		       [libffi_cv_as_register_pseudo_op=yes],
       
 43423  		       [libffi_cv_as_register_pseudo_op=no])
       
 43424      ])
       
 43425      if test "x$libffi_cv_as_register_pseudo_op" = xyes; then
       
 43426         AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
       
 43427  	       [Define if your assembler supports .register.])
       
 43428      fi
       
 43429  fi
       
 43430  
       
 43431  if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
       
 43432      AC_CACHE_CHECK([assembler supports pc related relocs],
       
 43433  	libffi_cv_as_x86_pcrel, [
       
 43434  	libffi_cv_as_x86_pcrel=no
       
 43435  	echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
       
 43436 -	if $CC $CFLAGS -c conftest.s > /dev/null; then
       
 43437 +	if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then
       
 43438  	    libffi_cv_as_x86_pcrel=yes
       
 43439  	fi
       
 43440  	])
       
 43441      if test "x$libffi_cv_as_x86_pcrel" = xyes; then
       
 43442  	AC_DEFINE(HAVE_AS_X86_PCREL, 1,
       
 43443  		  [Define if your assembler supports PC relative relocs.])
       
 43444      fi
       
 43445  
       
 43446      AC_CACHE_CHECK([assembler .ascii pseudo-op support],
       
 43447         libffi_cv_as_ascii_pseudo_op, [
       
 43448         libffi_cv_as_ascii_pseudo_op=unknown
       
 43449         # Check if we have .ascii
       
 43450 -       AC_TRY_COMPILE([asm (".ascii \"string\"");],,
       
 43451 +       AC_TRY_COMPILE(,[asm (".ascii \\"string\\"");],
       
 43452  		       [libffi_cv_as_ascii_pseudo_op=yes],
       
 43453  		       [libffi_cv_as_ascii_pseudo_op=no])
       
 43454      ])
       
 43455      if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then
       
 43456         AC_DEFINE(HAVE_AS_ASCII_PSEUDO_OP, 1,
       
 43457  	       [Define if your assembler supports .ascii.])
       
 43458      fi
       
 43459  
       
 43460      AC_CACHE_CHECK([assembler .string pseudo-op support],
       
 43461         libffi_cv_as_string_pseudo_op, [
       
 43462         libffi_cv_as_string_pseudo_op=unknown
       
 43463         # Check if we have .string
       
 43464 -       AC_TRY_COMPILE([asm (".string \"string\"");],,
       
 43465 +       AC_TRY_COMPILE(,[asm (".string \\"string\\"");],
       
 43466  		       [libffi_cv_as_string_pseudo_op=yes],
       
 43467  		       [libffi_cv_as_string_pseudo_op=no])
       
 43468      ])
       
 43469      if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
       
 43470         AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1,
       
 43471  	       [Define if your assembler supports .string.])
       
 43472      fi
       
 43473  fi
       
 43474  
       
 43475 -if test x$TARGET = xX86_WIN64; then
       
 43476 -    LT_SYS_SYMBOL_USCORE
       
 43477 -    if test "x$sys_symbol_underscore" = xyes; then
       
 43478 -        AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
       
 43479 -    fi
       
 43480 +# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
       
 43481 +AC_ARG_ENABLE(pax_emutramp,
       
 43482 +  [  --enable-pax_emutramp       enable pax emulated trampolines, for we can't use PROT_EXEC],
       
 43483 +  if test "$enable_pax_emutramp" = "yes"; then
       
 43484 +    AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1,
       
 43485 +      [Define this if you want to enable pax emulated trampolines])
       
 43486 +  fi)
       
 43487 +
       
 43488 +LT_SYS_SYMBOL_USCORE
       
 43489 +if test "x$sys_symbol_underscore" = xyes; then
       
 43490 +    AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
       
 43491  fi
       
 43492  
       
 43493 +FFI_EXEC_TRAMPOLINE_TABLE=0
       
 43494  case "$target" in
       
 43495 -     # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
       
 43496 -     *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
 43497 +     *arm*-apple-darwin*)
       
 43498 +       FFI_EXEC_TRAMPOLINE_TABLE=1
       
 43499 +       AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1,
       
 43500 +                 [Cannot use PROT_EXEC on this target, so, we revert to
       
 43501 +                   alternative means])
       
 43502 +     ;;
       
 43503 +     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
       
 43504         AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
       
 43505                   [Cannot use malloc on this target, so, we revert to
       
 43506                     alternative means])
       
 43507       ;;
       
 43508  esac
       
 43509 +AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1)
       
 43510 +AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE)
       
 43511  
       
 43512  if test x$TARGET = xX86_64; then
       
 43513      AC_CACHE_CHECK([toolchain supports unwind section type],
       
 43514  	libffi_cv_as_x86_64_unwind_section_type, [
       
 43515          cat  > conftest1.s << EOF
       
 43516  .text
       
 43517  .globl foo
       
 43518  foo:
       
 43519 @@ -357,54 +489,57 @@ EOF
       
 43520  	fi
       
 43521  	])
       
 43522      if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
       
 43523  	AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
       
 43524  		  [Define if your assembler supports unwind section type.])
       
 43525      fi
       
 43526  fi
       
 43527  
       
 43528 -AC_CACHE_CHECK([whether .eh_frame section should be read-only],
       
 43529 -    libffi_cv_ro_eh_frame, [
       
 43530 -	libffi_cv_ro_eh_frame=no
       
 43531 -	echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
       
 43532 -	if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
       
 43533 -	    if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
       
 43534 -		libffi_cv_ro_eh_frame=yes
       
 43535 -	    elif grep '.section.*eh_frame.*#alloc' conftest.c \
       
 43536 -		 | grep -v '#write' > /dev/null; then
       
 43537 -		libffi_cv_ro_eh_frame=yes
       
 43538 -	    fi
       
 43539 -	fi
       
 43540 -	rm -f conftest.*
       
 43541 -    ])
       
 43542 -if test "x$libffi_cv_ro_eh_frame" = xyes; then
       
 43543 -    AC_DEFINE(HAVE_RO_EH_FRAME, 1,
       
 43544 -	      [Define if .eh_frame sections should be read-only.])
       
 43545 -    AC_DEFINE(EH_FRAME_FLAGS, "a",
       
 43546 -	      [Define to the flags needed for the .section .eh_frame directive.])
       
 43547 -else
       
 43548 -    AC_DEFINE(EH_FRAME_FLAGS, "aw",
       
 43549 -	      [Define to the flags needed for the .section .eh_frame directive.])
       
 43550 -fi
       
 43551 +if test "x$GCC" = "xyes"; then
       
 43552 +  AC_CACHE_CHECK([whether .eh_frame section should be read-only],
       
 43553 +      libffi_cv_ro_eh_frame, [
       
 43554 +  	libffi_cv_ro_eh_frame=no
       
 43555 +  	echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
       
 43556 +  	if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then
       
 43557 +	    objdump -h conftest.o > conftest.dump 2>&1
       
 43558 +	    libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1`
       
 43559 +	    libffi_test_line=`expr $libffi_eh_frame_line + 1`p
       
 43560 +	    sed -n $libffi_test_line conftest.dump > conftest.line
       
 43561 +  	    if grep READONLY conftest.line > /dev/null; then
       
 43562 +  		libffi_cv_ro_eh_frame=yes
       
 43563 +  	    fi
       
 43564 +  	fi
       
 43565 +  	rm -f conftest.*
       
 43566 +      ])
       
 43567 +  if test "x$libffi_cv_ro_eh_frame" = xyes; then
       
 43568 +      AC_DEFINE(HAVE_RO_EH_FRAME, 1,
       
 43569 +  	      [Define if .eh_frame sections should be read-only.])
       
 43570 +      AC_DEFINE(EH_FRAME_FLAGS, "a",
       
 43571 +  	      [Define to the flags needed for the .section .eh_frame directive.  ])
       
 43572 +  else
       
 43573 +      AC_DEFINE(EH_FRAME_FLAGS, "aw",
       
 43574 +  	      [Define to the flags needed for the .section .eh_frame directive.  ])
       
 43575 +  fi
       
 43576  
       
 43577 -AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
       
 43578 -    libffi_cv_hidden_visibility_attribute, [
       
 43579 -	echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
       
 43580 -	libffi_cv_hidden_visibility_attribute=no
       
 43581 -	if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
       
 43582 -	    if grep '\.hidden.*foo' conftest.s >/dev/null; then
       
 43583 -		libffi_cv_hidden_visibility_attribute=yes
       
 43584 -	    fi
       
 43585 -	fi
       
 43586 -	rm -f conftest.*
       
 43587 -    ])
       
 43588 -if test $libffi_cv_hidden_visibility_attribute = yes; then
       
 43589 -    AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
       
 43590 -	      [Define if __attribute__((visibility("hidden"))) is supported.])
       
 43591 +  AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
       
 43592 +      libffi_cv_hidden_visibility_attribute, [
       
 43593 +  	echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1  ; }' > conftest.c
       
 43594 +  	libffi_cv_hidden_visibility_attribute=no
       
 43595 +  	if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
       
 43596 +  	    if grep '\.hidden.*foo' conftest.s >/dev/null; then
       
 43597 +  		libffi_cv_hidden_visibility_attribute=yes
       
 43598 +  	    fi
       
 43599 +  	fi
       
 43600 +  	rm -f conftest.*
       
 43601 +      ])
       
 43602 +  if test $libffi_cv_hidden_visibility_attribute = yes; then
       
 43603 +      AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
       
 43604 +  	      [Define if __attribute__((visibility("hidden"))) is supported.])
       
 43605 +  fi
       
 43606  fi
       
 43607  
       
 43608  AH_BOTTOM([
       
 43609  #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
       
 43610  #ifdef LIBFFI_ASM
       
 43611  #define FFI_HIDDEN(name) .hidden name
       
 43612  #else
       
 43613  #define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
       
 43614 @@ -428,53 +563,54 @@ AC_ARG_ENABLE(debug,
       
 43615    if test "$enable_debug" = "yes"; then
       
 43616      AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.])
       
 43617    fi)
       
 43618  AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
       
 43619  
       
 43620  AC_ARG_ENABLE(structs,
       
 43621  [  --disable-structs       omit code for struct support],
       
 43622    if test "$enable_structs" = "no"; then
       
 43623 -    AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this is you do not want support for aggregate types.])
       
 43624 +    AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.])
       
 43625    fi)
       
 43626 +AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
       
 43627  
       
 43628  AC_ARG_ENABLE(raw-api,
       
 43629  [  --disable-raw-api       make the raw api unavailable],
       
 43630    if test "$enable_raw_api" = "no"; then
       
 43631 -    AC_DEFINE(FFI_NO_RAW_API, 1, [Define this is you do not want support for the raw API.])
       
 43632 +    AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.])
       
 43633    fi)
       
 43634  
       
 43635  AC_ARG_ENABLE(purify-safety,
       
 43636  [  --enable-purify-safety  purify-safe mode],
       
 43637    if test "$enable_purify_safety" = "yes"; then
       
 43638      AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
       
 43639    fi)
       
 43640  
       
 43641 -if test -n "$with_cross_host" &&
       
 43642 -   test x"$with_cross_host" != x"no"; then
       
 43643 -  toolexecdir='$(exec_prefix)/$(target_alias)'
       
 43644 -  toolexeclibdir='$(toolexecdir)/lib'
       
 43645 +# These variables are only ever used when we cross-build to X86_WIN32.
       
 43646 +# And we only support this with GCC, so...
       
 43647 +if test "x$GCC" = "xyes"; then
       
 43648 +  if test -n "$with_cross_host" &&
       
 43649 +     test x"$with_cross_host" != x"no"; then
       
 43650 +    toolexecdir='$(exec_prefix)/$(target_alias)'
       
 43651 +    toolexeclibdir='$(toolexecdir)/lib'
       
 43652 +  else
       
 43653 +    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
       
 43654 +    toolexeclibdir='$(libdir)'
       
 43655 +  fi
       
 43656 +  multi_os_directory=`$CC -print-multi-os-directory`
       
 43657 +  case $multi_os_directory in
       
 43658 +    .) ;; # Avoid trailing /.
       
 43659 +    ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
       
 43660 +  esac
       
 43661 +  AC_SUBST(toolexecdir)
       
 43662  else
       
 43663 -  toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
       
 43664    toolexeclibdir='$(libdir)'
       
 43665  fi
       
 43666 -multi_os_directory=`$CC -print-multi-os-directory`
       
 43667 -case $multi_os_directory in
       
 43668 -  .) ;; # Avoid trailing /.
       
 43669 -  *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
       
 43670 -esac
       
 43671 -AC_SUBST(toolexecdir)
       
 43672  AC_SUBST(toolexeclibdir)
       
 43673  
       
 43674 -if test "${multilib}" = "yes"; then
       
 43675 -  multilib_arg="--enable-multilib"
       
 43676 -else
       
 43677 -  multilib_arg=
       
 43678 -fi
       
 43679 -
       
 43680  AC_CONFIG_COMMANDS(include, [test -d include || mkdir include])
       
 43681  AC_CONFIG_COMMANDS(src, [
       
 43682  test -d src || mkdir src
       
 43683  test -d src/$TARGETDIR || mkdir src/$TARGETDIR
       
 43684  ], [TARGETDIR="$TARGETDIR"])
       
 43685  
       
 43686  AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
       
 43687  
       
 43688 diff --git a/js/src/ctypes/libffi/configure.host b/js/src/ctypes/libffi/configure.host
       
 43689 deleted file mode 100644
       
 43690 --- a/js/src/ctypes/libffi/configure.host
       
 43691 +++ /dev/null
       
 43692 @@ -1,11 +0,0 @@
       
 43693 -# configure.host
       
 43694 -#
       
 43695 -# This shell script handles all host based configuration for libffi.
       
 43696 -# 
       
 43697 -
       
 43698 -# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
       
 43699 -case "${host}" in
       
 43700 -  frv*-elf)
       
 43701 -    LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
       
 43702 -    ;;
       
 43703 -esac
       
 43704 diff --git a/js/src/ctypes/libffi/depcomp b/js/src/ctypes/libffi/depcomp
       
 43705 --- a/js/src/ctypes/libffi/depcomp
       
 43706 +++ b/js/src/ctypes/libffi/depcomp
       
 43707 @@ -1,95 +1,178 @@
       
 43708  #! /bin/sh
       
 43709  # depcomp - compile a program generating dependencies as side-effects
       
 43710  
       
 43711 -scriptversion=2006-10-15.18
       
 43712 +scriptversion=2013-05-30.07; # UTC
       
 43713  
       
 43714 -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
       
 43715 -# Foundation, Inc.
       
 43716 +# Copyright (C) 1999-2013 Free Software Foundation, Inc.
       
 43717  
       
 43718  # This program is free software; you can redistribute it and/or modify
       
 43719  # it under the terms of the GNU General Public License as published by
       
 43720  # the Free Software Foundation; either version 2, or (at your option)
       
 43721  # any later version.
       
 43722  
       
 43723  # This program is distributed in the hope that it will be useful,
       
 43724  # but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 43725  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 43726  # GNU General Public License for more details.
       
 43727  
       
 43728  # You should have received a copy of the GNU General Public License
       
 43729 -# along with this program; if not, write to the Free Software
       
 43730 -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
       
 43731 -# 02110-1301, USA.
       
 43732 +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
       
 43733  
       
 43734  # As a special exception to the GNU General Public License, if you
       
 43735  # distribute this file as part of a program that contains a
       
 43736  # configuration script generated by Autoconf, you may include it under
       
 43737  # the same distribution terms that you use for the rest of that program.
       
 43738  
       
 43739  # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
       
 43740  
       
 43741  case $1 in
       
 43742    '')
       
 43743 -     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
       
 43744 -     exit 1;
       
 43745 -     ;;
       
 43746 +    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
       
 43747 +    exit 1;
       
 43748 +    ;;
       
 43749    -h | --h*)
       
 43750      cat <<\EOF
       
 43751  Usage: depcomp [--help] [--version] PROGRAM [ARGS]
       
 43752  
       
 43753  Run PROGRAMS ARGS to compile a file, generating dependencies
       
 43754  as side-effects.
       
 43755  
       
 43756  Environment variables:
       
 43757    depmode     Dependency tracking mode.
       
 43758 -  source      Source file read by `PROGRAMS ARGS'.
       
 43759 -  object      Object file output by `PROGRAMS ARGS'.
       
 43760 +  source      Source file read by 'PROGRAMS ARGS'.
       
 43761 +  object      Object file output by 'PROGRAMS ARGS'.
       
 43762    DEPDIR      directory where to store dependencies.
       
 43763    depfile     Dependency file to output.
       
 43764 -  tmpdepfile  Temporary file to use when outputing dependencies.
       
 43765 +  tmpdepfile  Temporary file to use when outputting dependencies.
       
 43766    libtool     Whether libtool is used (yes/no).
       
 43767  
       
 43768  Report bugs to <bug-automake@gnu.org>.
       
 43769  EOF
       
 43770      exit $?
       
 43771      ;;
       
 43772    -v | --v*)
       
 43773      echo "depcomp $scriptversion"
       
 43774      exit $?
       
 43775      ;;
       
 43776  esac
       
 43777  
       
 43778 +# Get the directory component of the given path, and save it in the
       
 43779 +# global variables '$dir'.  Note that this directory component will
       
 43780 +# be either empty or ending with a '/' character.  This is deliberate.
       
 43781 +set_dir_from ()
       
 43782 +{
       
 43783 +  case $1 in
       
 43784 +    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
       
 43785 +      *) dir=;;
       
 43786 +  esac
       
 43787 +}
       
 43788 +
       
 43789 +# Get the suffix-stripped basename of the given path, and save it the
       
 43790 +# global variable '$base'.
       
 43791 +set_base_from ()
       
 43792 +{
       
 43793 +  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
       
 43794 +}
       
 43795 +
       
 43796 +# If no dependency file was actually created by the compiler invocation,
       
 43797 +# we still have to create a dummy depfile, to avoid errors with the
       
 43798 +# Makefile "include basename.Plo" scheme.
       
 43799 +make_dummy_depfile ()
       
 43800 +{
       
 43801 +  echo "#dummy" > "$depfile"
       
 43802 +}
       
 43803 +
       
 43804 +# Factor out some common post-processing of the generated depfile.
       
 43805 +# Requires the auxiliary global variable '$tmpdepfile' to be set.
       
 43806 +aix_post_process_depfile ()
       
 43807 +{
       
 43808 +  # If the compiler actually managed to produce a dependency file,
       
 43809 +  # post-process it.
       
 43810 +  if test -f "$tmpdepfile"; then
       
 43811 +    # Each line is of the form 'foo.o: dependency.h'.
       
 43812 +    # Do two passes, one to just change these to
       
 43813 +    #   $object: dependency.h
       
 43814 +    # and one to simply output
       
 43815 +    #   dependency.h:
       
 43816 +    # which is needed to avoid the deleted-header problem.
       
 43817 +    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
       
 43818 +      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
       
 43819 +    } > "$depfile"
       
 43820 +    rm -f "$tmpdepfile"
       
 43821 +  else
       
 43822 +    make_dummy_depfile
       
 43823 +  fi
       
 43824 +}
       
 43825 +
       
 43826 +# A tabulation character.
       
 43827 +tab='	'
       
 43828 +# A newline character.
       
 43829 +nl='
       
 43830 +'
       
 43831 +# Character ranges might be problematic outside the C locale.
       
 43832 +# These definitions help.
       
 43833 +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
       
 43834 +lower=abcdefghijklmnopqrstuvwxyz
       
 43835 +digits=0123456789
       
 43836 +alpha=${upper}${lower}
       
 43837 +
       
 43838  if test -z "$depmode" || test -z "$source" || test -z "$object"; then
       
 43839    echo "depcomp: Variables source, object and depmode must be set" 1>&2
       
 43840    exit 1
       
 43841  fi
       
 43842  
       
 43843  # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
       
 43844  depfile=${depfile-`echo "$object" |
       
 43845    sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
       
 43846  tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
       
 43847  
       
 43848  rm -f "$tmpdepfile"
       
 43849  
       
 43850 +# Avoid interferences from the environment.
       
 43851 +gccflag= dashmflag=
       
 43852 +
       
 43853  # Some modes work just like other modes, but use different flags.  We
       
 43854  # parameterize here, but still list the modes in the big case below,
       
 43855  # to make depend.m4 easier to write.  Note that we *cannot* use a case
       
 43856  # here, because this file can only contain one case statement.
       
 43857  if test "$depmode" = hp; then
       
 43858    # HP compiler uses -M and no extra arg.
       
 43859    gccflag=-M
       
 43860    depmode=gcc
       
 43861  fi
       
 43862  
       
 43863  if test "$depmode" = dashXmstdout; then
       
 43864 -   # This is just like dashmstdout with a different argument.
       
 43865 -   dashmflag=-xM
       
 43866 -   depmode=dashmstdout
       
 43867 +  # This is just like dashmstdout with a different argument.
       
 43868 +  dashmflag=-xM
       
 43869 +  depmode=dashmstdout
       
 43870 +fi
       
 43871 +
       
 43872 +cygpath_u="cygpath -u -f -"
       
 43873 +if test "$depmode" = msvcmsys; then
       
 43874 +  # This is just like msvisualcpp but w/o cygpath translation.
       
 43875 +  # Just convert the backslash-escaped backslashes to single forward
       
 43876 +  # slashes to satisfy depend.m4
       
 43877 +  cygpath_u='sed s,\\\\,/,g'
       
 43878 +  depmode=msvisualcpp
       
 43879 +fi
       
 43880 +
       
 43881 +if test "$depmode" = msvc7msys; then
       
 43882 +  # This is just like msvc7 but w/o cygpath translation.
       
 43883 +  # Just convert the backslash-escaped backslashes to single forward
       
 43884 +  # slashes to satisfy depend.m4
       
 43885 +  cygpath_u='sed s,\\\\,/,g'
       
 43886 +  depmode=msvc7
       
 43887 +fi
       
 43888 +
       
 43889 +if test "$depmode" = xlc; then
       
 43890 +  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
       
 43891 +  gccflag=-qmakedep=gcc,-MF
       
 43892 +  depmode=gcc
       
 43893  fi
       
 43894  
       
 43895  case "$depmode" in
       
 43896  gcc3)
       
 43897  ## gcc 3 implements dependency tracking that does exactly what
       
 43898  ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
       
 43899  ## it if -MD -MP comes after the -MF stuff.  Hmm.
       
 43900  ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
       
 43901 @@ -102,64 +185,67 @@ gcc3)
       
 43902      -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
       
 43903      *)  set fnord "$@" "$arg" ;;
       
 43904      esac
       
 43905      shift # fnord
       
 43906      shift # $arg
       
 43907    done
       
 43908    "$@"
       
 43909    stat=$?
       
 43910 -  if test $stat -eq 0; then :
       
 43911 -  else
       
 43912 +  if test $stat -ne 0; then
       
 43913      rm -f "$tmpdepfile"
       
 43914      exit $stat
       
 43915    fi
       
 43916    mv "$tmpdepfile" "$depfile"
       
 43917    ;;
       
 43918  
       
 43919  gcc)
       
 43920 +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
       
 43921 +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
       
 43922 +## (see the conditional assignment to $gccflag above).
       
 43923  ## There are various ways to get dependency output from gcc.  Here's
       
 43924  ## why we pick this rather obscure method:
       
 43925  ## - Don't want to use -MD because we'd like the dependencies to end
       
 43926  ##   up in a subdir.  Having to rename by hand is ugly.
       
 43927  ##   (We might end up doing this anyway to support other compilers.)
       
 43928  ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
       
 43929 -##   -MM, not -M (despite what the docs say).
       
 43930 +##   -MM, not -M (despite what the docs say).  Also, it might not be
       
 43931 +##   supported by the other compilers which use the 'gcc' depmode.
       
 43932  ## - Using -M directly means running the compiler twice (even worse
       
 43933  ##   than renaming).
       
 43934    if test -z "$gccflag"; then
       
 43935      gccflag=-MD,
       
 43936    fi
       
 43937    "$@" -Wp,"$gccflag$tmpdepfile"
       
 43938    stat=$?
       
 43939 -  if test $stat -eq 0; then :
       
 43940 -  else
       
 43941 +  if test $stat -ne 0; then
       
 43942      rm -f "$tmpdepfile"
       
 43943      exit $stat
       
 43944    fi
       
 43945    rm -f "$depfile"
       
 43946    echo "$object : \\" > "$depfile"
       
 43947 -  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
       
 43948 -## The second -e expression handles DOS-style file names with drive letters.
       
 43949 +  # The second -e expression handles DOS-style file names with drive
       
 43950 +  # letters.
       
 43951    sed -e 's/^[^:]*: / /' \
       
 43952        -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
       
 43953 -## This next piece of magic avoids the `deleted header file' problem.
       
 43954 +## This next piece of magic avoids the "deleted header file" problem.
       
 43955  ## The problem is that when a header file which appears in a .P file
       
 43956  ## is deleted, the dependency causes make to die (because there is
       
 43957  ## typically no way to rebuild the header).  We avoid this by adding
       
 43958  ## dummy dependencies for each header file.  Too bad gcc doesn't do
       
 43959  ## this for us directly.
       
 43960 -  tr ' ' '
       
 43961 -' < "$tmpdepfile" |
       
 43962 -## Some versions of gcc put a space before the `:'.  On the theory
       
 43963 +## Some versions of gcc put a space before the ':'.  On the theory
       
 43964  ## that the space means something, we add a space to the output as
       
 43965 -## well.
       
 43966 +## well.  hp depmode also adds that space, but also prefixes the VPATH
       
 43967 +## to the object.  Take care to not repeat it in the output.
       
 43968  ## Some versions of the HPUX 10.20 sed can't process this invocation
       
 43969  ## correctly.  Breaking it into two sed invocations is a workaround.
       
 43970 -    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
       
 43971 +  tr ' ' "$nl" < "$tmpdepfile" \
       
 43972 +    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
       
 43973 +    | sed -e 's/$/ :/' >> "$depfile"
       
 43974    rm -f "$tmpdepfile"
       
 43975    ;;
       
 43976  
       
 43977  hp)
       
 43978    # This case exists only to let depend.m4 do its work.  It works by
       
 43979    # looking at the text of this script.  This case will never be run,
       
 43980    # since it is checked for above.
       
 43981    exit 1
       
 43982 @@ -167,250 +253,339 @@ hp)
       
 43983  
       
 43984  sgi)
       
 43985    if test "$libtool" = yes; then
       
 43986      "$@" "-Wp,-MDupdate,$tmpdepfile"
       
 43987    else
       
 43988      "$@" -MDupdate "$tmpdepfile"
       
 43989    fi
       
 43990    stat=$?
       
 43991 -  if test $stat -eq 0; then :
       
 43992 -  else
       
 43993 +  if test $stat -ne 0; then
       
 43994      rm -f "$tmpdepfile"
       
 43995      exit $stat
       
 43996    fi
       
 43997    rm -f "$depfile"
       
 43998  
       
 43999    if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
       
 44000      echo "$object : \\" > "$depfile"
       
 44001 -
       
 44002      # Clip off the initial element (the dependent).  Don't try to be
       
 44003      # clever and replace this with sed code, as IRIX sed won't handle
       
 44004      # lines with more than a fixed number of characters (4096 in
       
 44005      # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
       
 44006 -    # the IRIX cc adds comments like `#:fec' to the end of the
       
 44007 +    # the IRIX cc adds comments like '#:fec' to the end of the
       
 44008      # dependency line.
       
 44009 -    tr ' ' '
       
 44010 -' < "$tmpdepfile" \
       
 44011 -    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
       
 44012 -    tr '
       
 44013 -' ' ' >> $depfile
       
 44014 -    echo >> $depfile
       
 44015 -
       
 44016 +    tr ' ' "$nl" < "$tmpdepfile" \
       
 44017 +      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
       
 44018 +      | tr "$nl" ' ' >> "$depfile"
       
 44019 +    echo >> "$depfile"
       
 44020      # The second pass generates a dummy entry for each header file.
       
 44021 -    tr ' ' '
       
 44022 -' < "$tmpdepfile" \
       
 44023 -   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
       
 44024 -   >> $depfile
       
 44025 +    tr ' ' "$nl" < "$tmpdepfile" \
       
 44026 +      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
       
 44027 +      >> "$depfile"
       
 44028    else
       
 44029 -    # The sourcefile does not contain any dependencies, so just
       
 44030 -    # store a dummy comment line, to avoid errors with the Makefile
       
 44031 -    # "include basename.Plo" scheme.
       
 44032 -    echo "#dummy" > "$depfile"
       
 44033 +    make_dummy_depfile
       
 44034    fi
       
 44035    rm -f "$tmpdepfile"
       
 44036    ;;
       
 44037  
       
 44038 +xlc)
       
 44039 +  # This case exists only to let depend.m4 do its work.  It works by
       
 44040 +  # looking at the text of this script.  This case will never be run,
       
 44041 +  # since it is checked for above.
       
 44042 +  exit 1
       
 44043 +  ;;
       
 44044 +
       
 44045  aix)
       
 44046    # The C for AIX Compiler uses -M and outputs the dependencies
       
 44047    # in a .u file.  In older versions, this file always lives in the
       
 44048 -  # current directory.  Also, the AIX compiler puts `$object:' at the
       
 44049 +  # current directory.  Also, the AIX compiler puts '$object:' at the
       
 44050    # start of each line; $object doesn't have directory information.
       
 44051    # Version 6 uses the directory in both cases.
       
 44052 -  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
       
 44053 -  tmpdepfile="$stripped.u"
       
 44054 +  set_dir_from "$object"
       
 44055 +  set_base_from "$object"
       
 44056    if test "$libtool" = yes; then
       
 44057 +    tmpdepfile1=$dir$base.u
       
 44058 +    tmpdepfile2=$base.u
       
 44059 +    tmpdepfile3=$dir.libs/$base.u
       
 44060      "$@" -Wc,-M
       
 44061    else
       
 44062 +    tmpdepfile1=$dir$base.u
       
 44063 +    tmpdepfile2=$dir$base.u
       
 44064 +    tmpdepfile3=$dir$base.u
       
 44065      "$@" -M
       
 44066    fi
       
 44067    stat=$?
       
 44068 -
       
 44069 -  if test -f "$tmpdepfile"; then :
       
 44070 -  else
       
 44071 -    stripped=`echo "$stripped" | sed 's,^.*/,,'`
       
 44072 -    tmpdepfile="$stripped.u"
       
 44073 +  if test $stat -ne 0; then
       
 44074 +    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
       
 44075 +    exit $stat
       
 44076    fi
       
 44077  
       
 44078 -  if test $stat -eq 0; then :
       
 44079 -  else
       
 44080 +  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
       
 44081 +  do
       
 44082 +    test -f "$tmpdepfile" && break
       
 44083 +  done
       
 44084 +  aix_post_process_depfile
       
 44085 +  ;;
       
 44086 +
       
 44087 +tcc)
       
 44088 +  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
       
 44089 +  # FIXME: That version still under development at the moment of writing.
       
 44090 +  #        Make that this statement remains true also for stable, released
       
 44091 +  #        versions.
       
 44092 +  # It will wrap lines (doesn't matter whether long or short) with a
       
 44093 +  # trailing '\', as in:
       
 44094 +  #
       
 44095 +  #   foo.o : \
       
 44096 +  #    foo.c \
       
 44097 +  #    foo.h \
       
 44098 +  #
       
 44099 +  # It will put a trailing '\' even on the last line, and will use leading
       
 44100 +  # spaces rather than leading tabs (at least since its commit 0394caf7
       
 44101 +  # "Emit spaces for -MD").
       
 44102 +  "$@" -MD -MF "$tmpdepfile"
       
 44103 +  stat=$?
       
 44104 +  if test $stat -ne 0; then
       
 44105      rm -f "$tmpdepfile"
       
 44106      exit $stat
       
 44107    fi
       
 44108 -
       
 44109 -  if test -f "$tmpdepfile"; then
       
 44110 -    outname="$stripped.o"
       
 44111 -    # Each line is of the form `foo.o: dependent.h'.
       
 44112 -    # Do two passes, one to just change these to
       
 44113 -    # `$object: dependent.h' and one to simply `dependent.h:'.
       
 44114 -    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
       
 44115 -    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
       
 44116 -  else
       
 44117 -    # The sourcefile does not contain any dependencies, so just
       
 44118 -    # store a dummy comment line, to avoid errors with the Makefile
       
 44119 -    # "include basename.Plo" scheme.
       
 44120 -    echo "#dummy" > "$depfile"
       
 44121 -  fi
       
 44122 +  rm -f "$depfile"
       
 44123 +  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
       
 44124 +  # We have to change lines of the first kind to '$object: \'.
       
 44125 +  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
       
 44126 +  # And for each line of the second kind, we have to emit a 'dep.h:'
       
 44127 +  # dummy dependency, to avoid the deleted-header problem.
       
 44128 +  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
       
 44129    rm -f "$tmpdepfile"
       
 44130    ;;
       
 44131  
       
 44132 -icc)
       
 44133 -  # Intel's C compiler understands `-MD -MF file'.  However on
       
 44134 -  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
       
 44135 -  # ICC 7.0 will fill foo.d with something like
       
 44136 -  #    foo.o: sub/foo.c
       
 44137 -  #    foo.o: sub/foo.h
       
 44138 -  # which is wrong.  We want:
       
 44139 -  #    sub/foo.o: sub/foo.c
       
 44140 -  #    sub/foo.o: sub/foo.h
       
 44141 -  #    sub/foo.c:
       
 44142 -  #    sub/foo.h:
       
 44143 -  # ICC 7.1 will output
       
 44144 +## The order of this option in the case statement is important, since the
       
 44145 +## shell code in configure will try each of these formats in the order
       
 44146 +## listed in this file.  A plain '-MD' option would be understood by many
       
 44147 +## compilers, so we must ensure this comes after the gcc and icc options.
       
 44148 +pgcc)
       
 44149 +  # Portland's C compiler understands '-MD'.
       
 44150 +  # Will always output deps to 'file.d' where file is the root name of the
       
 44151 +  # source file under compilation, even if file resides in a subdirectory.
       
 44152 +  # The object file name does not affect the name of the '.d' file.
       
 44153 +  # pgcc 10.2 will output
       
 44154    #    foo.o: sub/foo.c sub/foo.h
       
 44155 -  # and will wrap long lines using \ :
       
 44156 +  # and will wrap long lines using '\' :
       
 44157    #    foo.o: sub/foo.c ... \
       
 44158    #     sub/foo.h ... \
       
 44159    #     ...
       
 44160 +  set_dir_from "$object"
       
 44161 +  # Use the source, not the object, to determine the base name, since
       
 44162 +  # that's sadly what pgcc will do too.
       
 44163 +  set_base_from "$source"
       
 44164 +  tmpdepfile=$base.d
       
 44165  
       
 44166 -  "$@" -MD -MF "$tmpdepfile"
       
 44167 -  stat=$?
       
 44168 -  if test $stat -eq 0; then :
       
 44169 -  else
       
 44170 +  # For projects that build the same source file twice into different object
       
 44171 +  # files, the pgcc approach of using the *source* file root name can cause
       
 44172 +  # problems in parallel builds.  Use a locking strategy to avoid stomping on
       
 44173 +  # the same $tmpdepfile.
       
 44174 +  lockdir=$base.d-lock
       
 44175 +  trap "
       
 44176 +    echo '$0: caught signal, cleaning up...' >&2
       
 44177 +    rmdir '$lockdir'
       
 44178 +    exit 1
       
 44179 +  " 1 2 13 15
       
 44180 +  numtries=100
       
 44181 +  i=$numtries
       
 44182 +  while test $i -gt 0; do
       
 44183 +    # mkdir is a portable test-and-set.
       
 44184 +    if mkdir "$lockdir" 2>/dev/null; then
       
 44185 +      # This process acquired the lock.
       
 44186 +      "$@" -MD
       
 44187 +      stat=$?
       
 44188 +      # Release the lock.
       
 44189 +      rmdir "$lockdir"
       
 44190 +      break
       
 44191 +    else
       
 44192 +      # If the lock is being held by a different process, wait
       
 44193 +      # until the winning process is done or we timeout.
       
 44194 +      while test -d "$lockdir" && test $i -gt 0; do
       
 44195 +        sleep 1
       
 44196 +        i=`expr $i - 1`
       
 44197 +      done
       
 44198 +    fi
       
 44199 +    i=`expr $i - 1`
       
 44200 +  done
       
 44201 +  trap - 1 2 13 15
       
 44202 +  if test $i -le 0; then
       
 44203 +    echo "$0: failed to acquire lock after $numtries attempts" >&2
       
 44204 +    echo "$0: check lockdir '$lockdir'" >&2
       
 44205 +    exit 1
       
 44206 +  fi
       
 44207 +
       
 44208 +  if test $stat -ne 0; then
       
 44209      rm -f "$tmpdepfile"
       
 44210      exit $stat
       
 44211    fi
       
 44212    rm -f "$depfile"
       
 44213    # Each line is of the form `foo.o: dependent.h',
       
 44214    # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
       
 44215    # Do two passes, one to just change these to
       
 44216    # `$object: dependent.h' and one to simply `dependent.h:'.
       
 44217    sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
       
 44218    # Some versions of the HPUX 10.20 sed can't process this invocation
       
 44219    # correctly.  Breaking it into two sed invocations is a workaround.
       
 44220 -  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
       
 44221 -    sed -e 's/$/ :/' >> "$depfile"
       
 44222 +  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
       
 44223 +    | sed -e 's/$/ :/' >> "$depfile"
       
 44224    rm -f "$tmpdepfile"
       
 44225    ;;
       
 44226  
       
 44227  hp2)
       
 44228    # The "hp" stanza above does not work with aCC (C++) and HP's ia64
       
 44229    # compilers, which have integrated preprocessors.  The correct option
       
 44230    # to use with these is +Maked; it writes dependencies to a file named
       
 44231    # 'foo.d', which lands next to the object file, wherever that
       
 44232    # happens to be.
       
 44233    # Much of this is similar to the tru64 case; see comments there.
       
 44234 -  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
       
 44235 -  test "x$dir" = "x$object" && dir=
       
 44236 -  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
       
 44237 +  set_dir_from  "$object"
       
 44238 +  set_base_from "$object"
       
 44239    if test "$libtool" = yes; then
       
 44240      tmpdepfile1=$dir$base.d
       
 44241      tmpdepfile2=$dir.libs/$base.d
       
 44242      "$@" -Wc,+Maked
       
 44243    else
       
 44244      tmpdepfile1=$dir$base.d
       
 44245      tmpdepfile2=$dir$base.d
       
 44246      "$@" +Maked
       
 44247    fi
       
 44248    stat=$?
       
 44249 -  if test $stat -eq 0; then :
       
 44250 -  else
       
 44251 +  if test $stat -ne 0; then
       
 44252       rm -f "$tmpdepfile1" "$tmpdepfile2"
       
 44253       exit $stat
       
 44254    fi
       
 44255  
       
 44256    for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
       
 44257    do
       
 44258      test -f "$tmpdepfile" && break
       
 44259    done
       
 44260    if test -f "$tmpdepfile"; then
       
 44261 -    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
       
 44262 -    # Add `dependent.h:' lines.
       
 44263 -    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
       
 44264 +    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
       
 44265 +    # Add 'dependent.h:' lines.
       
 44266 +    sed -ne '2,${
       
 44267 +               s/^ *//
       
 44268 +               s/ \\*$//
       
 44269 +               s/$/:/
       
 44270 +               p
       
 44271 +             }' "$tmpdepfile" >> "$depfile"
       
 44272    else
       
 44273 -    echo "#dummy" > "$depfile"
       
 44274 +    make_dummy_depfile
       
 44275    fi
       
 44276    rm -f "$tmpdepfile" "$tmpdepfile2"
       
 44277    ;;
       
 44278  
       
 44279  tru64)
       
 44280 -   # The Tru64 compiler uses -MD to generate dependencies as a side
       
 44281 -   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
       
 44282 -   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
       
 44283 -   # dependencies in `foo.d' instead, so we check for that too.
       
 44284 -   # Subdirectories are respected.
       
 44285 -   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
       
 44286 -   test "x$dir" = "x$object" && dir=
       
 44287 -   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
       
 44288 +  # The Tru64 compiler uses -MD to generate dependencies as a side
       
 44289 +  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
       
 44290 +  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
       
 44291 +  # dependencies in 'foo.d' instead, so we check for that too.
       
 44292 +  # Subdirectories are respected.
       
 44293 +  set_dir_from  "$object"
       
 44294 +  set_base_from "$object"
       
 44295  
       
 44296 -   if test "$libtool" = yes; then
       
 44297 -      # With Tru64 cc, shared objects can also be used to make a
       
 44298 -      # static library.  This mechanism is used in libtool 1.4 series to
       
 44299 -      # handle both shared and static libraries in a single compilation.
       
 44300 -      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
       
 44301 -      #
       
 44302 -      # With libtool 1.5 this exception was removed, and libtool now
       
 44303 -      # generates 2 separate objects for the 2 libraries.  These two
       
 44304 -      # compilations output dependencies in $dir.libs/$base.o.d and
       
 44305 -      # in $dir$base.o.d.  We have to check for both files, because
       
 44306 -      # one of the two compilations can be disabled.  We should prefer
       
 44307 -      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
       
 44308 -      # automatically cleaned when .libs/ is deleted, while ignoring
       
 44309 -      # the former would cause a distcleancheck panic.
       
 44310 -      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
       
 44311 -      tmpdepfile2=$dir$base.o.d          # libtool 1.5
       
 44312 -      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
       
 44313 -      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
       
 44314 -      "$@" -Wc,-MD
       
 44315 -   else
       
 44316 -      tmpdepfile1=$dir$base.o.d
       
 44317 -      tmpdepfile2=$dir$base.d
       
 44318 -      tmpdepfile3=$dir$base.d
       
 44319 -      tmpdepfile4=$dir$base.d
       
 44320 -      "$@" -MD
       
 44321 -   fi
       
 44322 +  if test "$libtool" = yes; then
       
 44323 +    # Libtool generates 2 separate objects for the 2 libraries.  These
       
 44324 +    # two compilations output dependencies in $dir.libs/$base.o.d and
       
 44325 +    # in $dir$base.o.d.  We have to check for both files, because
       
 44326 +    # one of the two compilations can be disabled.  We should prefer
       
 44327 +    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
       
 44328 +    # automatically cleaned when .libs/ is deleted, while ignoring
       
 44329 +    # the former would cause a distcleancheck panic.
       
 44330 +    tmpdepfile1=$dir$base.o.d          # libtool 1.5
       
 44331 +    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
       
 44332 +    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
       
 44333 +    "$@" -Wc,-MD
       
 44334 +  else
       
 44335 +    tmpdepfile1=$dir$base.d
       
 44336 +    tmpdepfile2=$dir$base.d
       
 44337 +    tmpdepfile3=$dir$base.d
       
 44338 +    "$@" -MD
       
 44339 +  fi
       
 44340  
       
 44341 -   stat=$?
       
 44342 -   if test $stat -eq 0; then :
       
 44343 -   else
       
 44344 -      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
       
 44345 -      exit $stat
       
 44346 -   fi
       
 44347 +  stat=$?
       
 44348 +  if test $stat -ne 0; then
       
 44349 +    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
       
 44350 +    exit $stat
       
 44351 +  fi
       
 44352  
       
 44353 -   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
       
 44354 -   do
       
 44355 -     test -f "$tmpdepfile" && break
       
 44356 -   done
       
 44357 -   if test -f "$tmpdepfile"; then
       
 44358 -      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
       
 44359 -      # That's a tab and a space in the [].
       
 44360 -      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
       
 44361 -   else
       
 44362 -      echo "#dummy" > "$depfile"
       
 44363 -   fi
       
 44364 -   rm -f "$tmpdepfile"
       
 44365 -   ;;
       
 44366 +  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
       
 44367 +  do
       
 44368 +    test -f "$tmpdepfile" && break
       
 44369 +  done
       
 44370 +  # Same post-processing that is required for AIX mode.
       
 44371 +  aix_post_process_depfile
       
 44372 +  ;;
       
 44373 +
       
 44374 +msvc7)
       
 44375 +  if test "$libtool" = yes; then
       
 44376 +    showIncludes=-Wc,-showIncludes
       
 44377 +  else
       
 44378 +    showIncludes=-showIncludes
       
 44379 +  fi
       
 44380 +  "$@" $showIncludes > "$tmpdepfile"
       
 44381 +  stat=$?
       
 44382 +  grep -v '^Note: including file: ' "$tmpdepfile"
       
 44383 +  if test $stat -ne 0; then
       
 44384 +    rm -f "$tmpdepfile"
       
 44385 +    exit $stat
       
 44386 +  fi
       
 44387 +  rm -f "$depfile"
       
 44388 +  echo "$object : \\" > "$depfile"
       
 44389 +  # The first sed program below extracts the file names and escapes
       
 44390 +  # backslashes for cygpath.  The second sed program outputs the file
       
 44391 +  # name when reading, but also accumulates all include files in the
       
 44392 +  # hold buffer in order to output them again at the end.  This only
       
 44393 +  # works with sed implementations that can handle large buffers.
       
 44394 +  sed < "$tmpdepfile" -n '
       
 44395 +/^Note: including file:  *\(.*\)/ {
       
 44396 +  s//\1/
       
 44397 +  s/\\/\\\\/g
       
 44398 +  p
       
 44399 +}' | $cygpath_u | sort -u | sed -n '
       
 44400 +s/ /\\ /g
       
 44401 +s/\(.*\)/'"$tab"'\1 \\/p
       
 44402 +s/.\(.*\) \\/\1:/
       
 44403 +H
       
 44404 +$ {
       
 44405 +  s/.*/'"$tab"'/
       
 44406 +  G
       
 44407 +  p
       
 44408 +}' >> "$depfile"
       
 44409 +  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
       
 44410 +  rm -f "$tmpdepfile"
       
 44411 +  ;;
       
 44412 +
       
 44413 +msvc7msys)
       
 44414 +  # This case exists only to let depend.m4 do its work.  It works by
       
 44415 +  # looking at the text of this script.  This case will never be run,
       
 44416 +  # since it is checked for above.
       
 44417 +  exit 1
       
 44418 +  ;;
       
 44419  
       
 44420  #nosideeffect)
       
 44421    # This comment above is used by automake to tell side-effect
       
 44422    # dependency tracking mechanisms from slower ones.
       
 44423  
       
 44424  dashmstdout)
       
 44425    # Important note: in order to support this mode, a compiler *must*
       
 44426    # always write the preprocessed file to stdout, regardless of -o.
       
 44427    "$@" || exit $?
       
 44428  
       
 44429    # Remove the call to Libtool.
       
 44430    if test "$libtool" = yes; then
       
 44431 -    while test $1 != '--mode=compile'; do
       
 44432 +    while test "X$1" != 'X--mode=compile'; do
       
 44433        shift
       
 44434      done
       
 44435      shift
       
 44436    fi
       
 44437  
       
 44438 -  # Remove `-o $object'.
       
 44439 +  # Remove '-o $object'.
       
 44440    IFS=" "
       
 44441    for arg
       
 44442    do
       
 44443      case $arg in
       
 44444      -o)
       
 44445        shift
       
 44446        ;;
       
 44447      $object)
       
 44448 @@ -420,93 +595,103 @@ dashmstdout)
       
 44449        set fnord "$@" "$arg"
       
 44450        shift # fnord
       
 44451        shift # $arg
       
 44452        ;;
       
 44453      esac
       
 44454    done
       
 44455  
       
 44456    test -z "$dashmflag" && dashmflag=-M
       
 44457 -  # Require at least two characters before searching for `:'
       
 44458 +  # Require at least two characters before searching for ':'
       
 44459    # in the target name.  This is to cope with DOS-style filenames:
       
 44460 -  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
       
 44461 +  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
       
 44462    "$@" $dashmflag |
       
 44463 -    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
       
 44464 +    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
       
 44465    rm -f "$depfile"
       
 44466    cat < "$tmpdepfile" > "$depfile"
       
 44467 -  tr ' ' '
       
 44468 -' < "$tmpdepfile" | \
       
 44469 -## Some versions of the HPUX 10.20 sed can't process this invocation
       
 44470 -## correctly.  Breaking it into two sed invocations is a workaround.
       
 44471 -    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
       
 44472 +  # Some versions of the HPUX 10.20 sed can't process this sed invocation
       
 44473 +  # correctly.  Breaking it into two sed invocations is a workaround.
       
 44474 +  tr ' ' "$nl" < "$tmpdepfile" \
       
 44475 +    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
       
 44476 +    | sed -e 's/$/ :/' >> "$depfile"
       
 44477    rm -f "$tmpdepfile"
       
 44478    ;;
       
 44479  
       
 44480  dashXmstdout)
       
 44481    # This case only exists to satisfy depend.m4.  It is never actually
       
 44482    # run, as this mode is specially recognized in the preamble.
       
 44483    exit 1
       
 44484    ;;
       
 44485  
       
 44486  makedepend)
       
 44487    "$@" || exit $?
       
 44488    # Remove any Libtool call
       
 44489    if test "$libtool" = yes; then
       
 44490 -    while test $1 != '--mode=compile'; do
       
 44491 +    while test "X$1" != 'X--mode=compile'; do
       
 44492        shift
       
 44493      done
       
 44494      shift
       
 44495    fi
       
 44496    # X makedepend
       
 44497    shift
       
 44498 -  cleared=no
       
 44499 -  for arg in "$@"; do
       
 44500 +  cleared=no eat=no
       
 44501 +  for arg
       
 44502 +  do
       
 44503      case $cleared in
       
 44504      no)
       
 44505        set ""; shift
       
 44506        cleared=yes ;;
       
 44507      esac
       
 44508 +    if test $eat = yes; then
       
 44509 +      eat=no
       
 44510 +      continue
       
 44511 +    fi
       
 44512      case "$arg" in
       
 44513      -D*|-I*)
       
 44514        set fnord "$@" "$arg"; shift ;;
       
 44515      # Strip any option that makedepend may not understand.  Remove
       
 44516      # the object too, otherwise makedepend will parse it as a source file.
       
 44517 +    -arch)
       
 44518 +      eat=yes ;;
       
 44519      -*|$object)
       
 44520        ;;
       
 44521      *)
       
 44522        set fnord "$@" "$arg"; shift ;;
       
 44523      esac
       
 44524    done
       
 44525 -  obj_suffix="`echo $object | sed 's/^.*\././'`"
       
 44526 +  obj_suffix=`echo "$object" | sed 's/^.*\././'`
       
 44527    touch "$tmpdepfile"
       
 44528    ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
       
 44529    rm -f "$depfile"
       
 44530 -  cat < "$tmpdepfile" > "$depfile"
       
 44531 -  sed '1,2d' "$tmpdepfile" | tr ' ' '
       
 44532 -' | \
       
 44533 -## Some versions of the HPUX 10.20 sed can't process this invocation
       
 44534 -## correctly.  Breaking it into two sed invocations is a workaround.
       
 44535 -    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
       
 44536 +  # makedepend may prepend the VPATH from the source file name to the object.
       
 44537 +  # No need to regex-escape $object, excess matching of '.' is harmless.
       
 44538 +  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
       
 44539 +  # Some versions of the HPUX 10.20 sed can't process the last invocation
       
 44540 +  # correctly.  Breaking it into two sed invocations is a workaround.
       
 44541 +  sed '1,2d' "$tmpdepfile" \
       
 44542 +    | tr ' ' "$nl" \
       
 44543 +    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
       
 44544 +    | sed -e 's/$/ :/' >> "$depfile"
       
 44545    rm -f "$tmpdepfile" "$tmpdepfile".bak
       
 44546    ;;
       
 44547  
       
 44548  cpp)
       
 44549    # Important note: in order to support this mode, a compiler *must*
       
 44550    # always write the preprocessed file to stdout.
       
 44551    "$@" || exit $?
       
 44552  
       
 44553    # Remove the call to Libtool.
       
 44554    if test "$libtool" = yes; then
       
 44555 -    while test $1 != '--mode=compile'; do
       
 44556 +    while test "X$1" != 'X--mode=compile'; do
       
 44557        shift
       
 44558      done
       
 44559      shift
       
 44560    fi
       
 44561  
       
 44562 -  # Remove `-o $object'.
       
 44563 +  # Remove '-o $object'.
       
 44564    IFS=" "
       
 44565    for arg
       
 44566    do
       
 44567      case $arg in
       
 44568      -o)
       
 44569        shift
       
 44570        ;;
       
 44571      $object)
       
 44572 @@ -515,58 +700,79 @@ cpp)
       
 44573      *)
       
 44574        set fnord "$@" "$arg"
       
 44575        shift # fnord
       
 44576        shift # $arg
       
 44577        ;;
       
 44578      esac
       
 44579    done
       
 44580  
       
 44581 -  "$@" -E |
       
 44582 -    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
       
 44583 -       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
       
 44584 -    sed '$ s: \\$::' > "$tmpdepfile"
       
 44585 +  "$@" -E \
       
 44586 +    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
       
 44587 +             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
       
 44588 +    | sed '$ s: \\$::' > "$tmpdepfile"
       
 44589    rm -f "$depfile"
       
 44590    echo "$object : \\" > "$depfile"
       
 44591    cat < "$tmpdepfile" >> "$depfile"
       
 44592    sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
       
 44593    rm -f "$tmpdepfile"
       
 44594    ;;
       
 44595  
       
 44596  msvisualcpp)
       
 44597    # Important note: in order to support this mode, a compiler *must*
       
 44598 -  # always write the preprocessed file to stdout, regardless of -o,
       
 44599 -  # because we must use -o when running libtool.
       
 44600 +  # always write the preprocessed file to stdout.
       
 44601    "$@" || exit $?
       
 44602 +
       
 44603 +  # Remove the call to Libtool.
       
 44604 +  if test "$libtool" = yes; then
       
 44605 +    while test "X$1" != 'X--mode=compile'; do
       
 44606 +      shift
       
 44607 +    done
       
 44608 +    shift
       
 44609 +  fi
       
 44610 +
       
 44611    IFS=" "
       
 44612    for arg
       
 44613    do
       
 44614      case "$arg" in
       
 44615 +    -o)
       
 44616 +      shift
       
 44617 +      ;;
       
 44618 +    $object)
       
 44619 +      shift
       
 44620 +      ;;
       
 44621      "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
       
 44622 -	set fnord "$@"
       
 44623 -	shift
       
 44624 -	shift
       
 44625 -	;;
       
 44626 +        set fnord "$@"
       
 44627 +        shift
       
 44628 +        shift
       
 44629 +        ;;
       
 44630      *)
       
 44631 -	set fnord "$@" "$arg"
       
 44632 -	shift
       
 44633 -	shift
       
 44634 -	;;
       
 44635 +        set fnord "$@" "$arg"
       
 44636 +        shift
       
 44637 +        shift
       
 44638 +        ;;
       
 44639      esac
       
 44640    done
       
 44641 -  "$@" -E |
       
 44642 -  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
       
 44643 +  "$@" -E 2>/dev/null |
       
 44644 +  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
       
 44645    rm -f "$depfile"
       
 44646    echo "$object : \\" > "$depfile"
       
 44647 -  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
       
 44648 -  echo "	" >> "$depfile"
       
 44649 -  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
       
 44650 +  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
       
 44651 +  echo "$tab" >> "$depfile"
       
 44652 +  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
       
 44653    rm -f "$tmpdepfile"
       
 44654    ;;
       
 44655  
       
 44656 +msvcmsys)
       
 44657 +  # This case exists only to let depend.m4 do its work.  It works by
       
 44658 +  # looking at the text of this script.  This case will never be run,
       
 44659 +  # since it is checked for above.
       
 44660 +  exit 1
       
 44661 +  ;;
       
 44662 +
       
 44663  none)
       
 44664    exec "$@"
       
 44665    ;;
       
 44666  
       
 44667  *)
       
 44668    echo "Unknown depmode $depmode" 1>&2
       
 44669    exit 1
       
 44670    ;;
       
 44671 @@ -575,10 +781,11 @@ esac
       
 44672  exit 0
       
 44673  
       
 44674  # Local Variables:
       
 44675  # mode: shell-script
       
 44676  # sh-indentation: 2
       
 44677  # eval: (add-hook 'write-file-hooks 'time-stamp)
       
 44678  # time-stamp-start: "scriptversion="
       
 44679  # time-stamp-format: "%:y-%02m-%02d.%02H"
       
 44680 -# time-stamp-end: "$"
       
 44681 +# time-stamp-time-zone: "UTC"
       
 44682 +# time-stamp-end: "; # UTC"
       
 44683  # End:
       
 44684 diff --git a/js/src/ctypes/libffi/doc/stamp-vti b/js/src/ctypes/libffi/doc/stamp-vti
       
 44685 --- a/js/src/ctypes/libffi/doc/stamp-vti
       
 44686 +++ b/js/src/ctypes/libffi/doc/stamp-vti
       
 44687 @@ -1,4 +1,4 @@
       
 44688 -@set UPDATED 14 February 2008
       
 44689 -@set UPDATED-MONTH February 2008
       
 44690 -@set EDITION 3.0.8
       
 44691 -@set VERSION 3.0.8
       
 44692 +@set UPDATED 25 March 2014
       
 44693 +@set UPDATED-MONTH March 2014
       
 44694 +@set EDITION 3.1-rc1
       
 44695 +@set VERSION 3.1-rc1
       
 44696 --- a/js/src/ctypes/libffi/fficonfig.h.in
       
 44697 +++ b/js/src/ctypes/libffi/fficonfig.h.in
       
 44698 @@ -12,23 +12,29 @@
       
 44699  #undef C_ALLOCA
       
 44700  
       
 44701  /* Define to the flags needed for the .section .eh_frame directive. */
       
 44702  #undef EH_FRAME_FLAGS
       
 44703  
       
 44704  /* Define this if you want extra debugging. */
       
 44705  #undef FFI_DEBUG
       
 44706  
       
 44707 +/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
       
 44708 +#undef FFI_EXEC_TRAMPOLINE_TABLE
       
 44709 +
       
 44710 +/* Define this if you want to enable pax emulated trampolines */
       
 44711 +#undef FFI_MMAP_EXEC_EMUTRAMP_PAX
       
 44712 +
       
 44713  /* Cannot use malloc on this target, so, we revert to alternative means */
       
 44714  #undef FFI_MMAP_EXEC_WRIT
       
 44715  
       
 44716 -/* Define this is you do not want support for the raw API. */
       
 44717 +/* Define this if you do not want support for the raw API. */
       
 44718  #undef FFI_NO_RAW_API
       
 44719  
       
 44720 -/* Define this is you do not want support for aggregate types. */
       
 44721 +/* Define this if you do not want support for aggregate types. */
       
 44722  #undef FFI_NO_STRUCTS
       
 44723  
       
 44724  /* Define to 1 if you have `alloca', as a function or macro. */
       
 44725  #undef HAVE_ALLOCA
       
 44726  
       
 44727  /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
       
 44728     */
       
 44729  #undef HAVE_ALLOCA_H
       
 44730 @@ -62,16 +68,19 @@
       
 44731  #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
       
 44732  
       
 44733  /* Define to 1 if you have the <inttypes.h> header file. */
       
 44734  #undef HAVE_INTTYPES_H
       
 44735  
       
 44736  /* Define if you have the long double type and it is bigger than a double */
       
 44737  #undef HAVE_LONG_DOUBLE
       
 44738  
       
 44739 +/* Define if you support more than one size of the long double type */
       
 44740 +#undef HAVE_LONG_DOUBLE_VARIANT
       
 44741 +
       
 44742  /* Define to 1 if you have the `memcpy' function. */
       
 44743  #undef HAVE_MEMCPY
       
 44744  
       
 44745  /* Define to 1 if you have the <memory.h> header file. */
       
 44746  #undef HAVE_MEMORY_H
       
 44747  
       
 44748  /* Define to 1 if you have the `mmap' function. */
       
 44749  #undef HAVE_MMAP
       
 44750 @@ -141,27 +150,33 @@
       
 44751  #undef PACKAGE_VERSION
       
 44752  
       
 44753  /* The size of `double', as computed by sizeof. */
       
 44754  #undef SIZEOF_DOUBLE
       
 44755  
       
 44756  /* The size of `long double', as computed by sizeof. */
       
 44757  #undef SIZEOF_LONG_DOUBLE
       
 44758  
       
 44759 +/* The size of `size_t', as computed by sizeof. */
       
 44760 +#undef SIZEOF_SIZE_T
       
 44761 +
       
 44762  /* If using the C implementation of alloca, define if you know the
       
 44763     direction of stack growth for your system; otherwise it will be
       
 44764     automatically deduced at runtime.
       
 44765  	STACK_DIRECTION > 0 => grows toward higher addresses
       
 44766  	STACK_DIRECTION < 0 => grows toward lower addresses
       
 44767  	STACK_DIRECTION = 0 => direction of growth unknown */
       
 44768  #undef STACK_DIRECTION
       
 44769  
       
 44770  /* Define to 1 if you have the ANSI C header files. */
       
 44771  #undef STDC_HEADERS
       
 44772  
       
 44773 +/* Define if symbols are underscored. */
       
 44774 +#undef SYMBOL_UNDERSCORE
       
 44775 +
       
 44776  /* Define this if you are using Purify and want to suppress spurious messages.
       
 44777     */
       
 44778  #undef USING_PURIFY
       
 44779  
       
 44780  /* Version number of package */
       
 44781  #undef VERSION
       
 44782  
       
 44783  /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
       
 44784 @@ -171,16 +186,19 @@
       
 44785  #  define WORDS_BIGENDIAN 1
       
 44786  # endif
       
 44787  #else
       
 44788  # ifndef WORDS_BIGENDIAN
       
 44789  #  undef WORDS_BIGENDIAN
       
 44790  # endif
       
 44791  #endif
       
 44792  
       
 44793 +/* Define to `unsigned int' if <sys/types.h> does not define. */
       
 44794 +#undef size_t
       
 44795 +
       
 44796  
       
 44797  #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
       
 44798  #ifdef LIBFFI_ASM
       
 44799  #define FFI_HIDDEN(name) .hidden name
       
 44800  #else
       
 44801  #define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
       
 44802  #endif
       
 44803  #else
       
 44804 diff --git a/js/src/ctypes/libffi/generate-darwin-source-and-headers.py b/js/src/ctypes/libffi/generate-darwin-source-and-headers.py
       
 44805 new file mode 100644
       
 44806 --- /dev/null
       
 44807 +++ b/js/src/ctypes/libffi/generate-darwin-source-and-headers.py
       
 44808 @@ -0,0 +1,209 @@
       
 44809 +#!/usr/bin/env python
       
 44810 +import subprocess
       
 44811 +import os
       
 44812 +import errno
       
 44813 +import collections
       
 44814 +import glob
       
 44815 +import argparse
       
 44816 +
       
 44817 +class Platform(object):
       
 44818 +    pass
       
 44819 +
       
 44820 +class simulator_platform(Platform):
       
 44821 +    directory = 'darwin_ios'
       
 44822 +    sdk = 'iphonesimulator'
       
 44823 +    arch = 'i386'
       
 44824 +    triple = 'i386-apple-darwin11'
       
 44825 +    version_min = '-miphoneos-version-min=5.1.1'
       
 44826 +
       
 44827 +    prefix = "#ifdef __i386__\n\n"
       
 44828 +    suffix = "\n\n#endif"
       
 44829 +    src_dir = 'x86'
       
 44830 +    src_files = ['darwin.S', 'win32.S', 'ffi.c']
       
 44831 +
       
 44832 +
       
 44833 +class simulator64_platform(Platform):
       
 44834 +    directory = 'darwin_ios'
       
 44835 +    sdk = 'iphonesimulator'
       
 44836 +    arch = 'x86_64'
       
 44837 +    triple = 'x86_64-apple-darwin13'
       
 44838 +    version_min = '-miphoneos-version-min=7.0'
       
 44839 +
       
 44840 +    prefix = "#ifdef __x86_64__\n\n"
       
 44841 +    suffix = "\n\n#endif"
       
 44842 +    src_dir = 'x86'
       
 44843 +    src_files = ['darwin64.S', 'ffi64.c']
       
 44844 +
       
 44845 +
       
 44846 +class device_platform(Platform):
       
 44847 +    directory = 'darwin_ios'
       
 44848 +    sdk = 'iphoneos'
       
 44849 +    arch = 'armv7'
       
 44850 +    triple = 'arm-apple-darwin11'
       
 44851 +    version_min = '-miphoneos-version-min=5.1.1'
       
 44852 +
       
 44853 +    prefix = "#ifdef __arm__\n\n"
       
 44854 +    suffix = "\n\n#endif"
       
 44855 +    src_dir = 'arm'
       
 44856 +    src_files = ['sysv.S', 'trampoline.S', 'ffi.c']
       
 44857 +
       
 44858 +
       
 44859 +class device64_platform(Platform):
       
 44860 +    directory = 'darwin_ios'
       
 44861 +    sdk = 'iphoneos'
       
 44862 +    arch = 'arm64'
       
 44863 +    triple = 'aarch64-apple-darwin13'
       
 44864 +    version_min = '-miphoneos-version-min=7.0'
       
 44865 +
       
 44866 +    prefix = "#ifdef __arm64__\n\n"
       
 44867 +    suffix = "\n\n#endif"
       
 44868 +    src_dir = 'aarch64'
       
 44869 +    src_files = ['sysv.S', 'ffi.c']
       
 44870 +
       
 44871 +
       
 44872 +class desktop32_platform(Platform):
       
 44873 +    directory = 'darwin_osx'
       
 44874 +    sdk = 'macosx'
       
 44875 +    arch = 'i386'
       
 44876 +    triple = 'i386-apple-darwin10'
       
 44877 +    version_min = '-mmacosx-version-min=10.6'
       
 44878 +    src_dir = 'x86'
       
 44879 +    src_files = ['darwin.S', 'win32.S', 'ffi.c']
       
 44880 +
       
 44881 +    prefix = "#ifdef __i386__\n\n"
       
 44882 +    suffix = "\n\n#endif"
       
 44883 +
       
 44884 +
       
 44885 +class desktop64_platform(Platform):
       
 44886 +    directory = 'darwin_osx'
       
 44887 +    sdk = 'macosx'
       
 44888 +    arch = 'x86_64'
       
 44889 +    triple = 'x86_64-apple-darwin10'
       
 44890 +    version_min = '-mmacosx-version-min=10.6'
       
 44891 +
       
 44892 +    prefix = "#ifdef __x86_64__\n\n"
       
 44893 +    suffix = "\n\n#endif"
       
 44894 +    src_dir = 'x86'
       
 44895 +    src_files = ['darwin64.S', 'ffi64.c']
       
 44896 +
       
 44897 +
       
 44898 +def mkdir_p(path):
       
 44899 +    try:
       
 44900 +        os.makedirs(path)
       
 44901 +    except OSError as exc:  # Python >2.5
       
 44902 +        if exc.errno == errno.EEXIST:
       
 44903 +            pass
       
 44904 +        else:
       
 44905 +            raise
       
 44906 +
       
 44907 +
       
 44908 +def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''):
       
 44909 +    mkdir_p(dst_dir)
       
 44910 +    out_filename = filename
       
 44911 +
       
 44912 +    if file_suffix:
       
 44913 +        split_name = os.path.splitext(filename)
       
 44914 +        out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
       
 44915 +
       
 44916 +    with open(os.path.join(src_dir, filename)) as in_file:
       
 44917 +        with open(os.path.join(dst_dir, out_filename), 'w') as out_file:
       
 44918 +            if prefix:
       
 44919 +                out_file.write(prefix)
       
 44920 +
       
 44921 +            out_file.write(in_file.read())
       
 44922 +
       
 44923 +            if suffix:
       
 44924 +                out_file.write(suffix)
       
 44925 +
       
 44926 +
       
 44927 +def list_files(src_dir, pattern=None, filelist=None):
       
 44928 +    if pattern: filelist = glob.iglob(os.path.join(src_dir, pattern))
       
 44929 +    for file in filelist:
       
 44930 +        yield os.path.basename(file)
       
 44931 +
       
 44932 +
       
 44933 +def copy_files(src_dir, dst_dir, pattern=None, filelist=None, file_suffix=None, prefix=None, suffix=None):
       
 44934 +    for filename in list_files(src_dir, pattern=pattern, filelist=filelist):
       
 44935 +        move_file(src_dir, dst_dir, filename, file_suffix=file_suffix, prefix=prefix, suffix=suffix)
       
 44936 +
       
 44937 +
       
 44938 +def copy_src_platform_files(platform):
       
 44939 +    src_dir = os.path.join('src', platform.src_dir)
       
 44940 +    dst_dir = os.path.join(platform.directory, 'src', platform.src_dir)
       
 44941 +    copy_files(src_dir, dst_dir, filelist=platform.src_files, file_suffix=platform.arch, prefix=platform.prefix, suffix=platform.suffix)
       
 44942 +
       
 44943 +
       
 44944 +def build_target(platform, platform_headers):
       
 44945 +    def xcrun_cmd(cmd):
       
 44946 +        return 'xcrun -sdk %s %s -arch %s' % (platform.sdk, cmd, platform.arch)
       
 44947 +
       
 44948 +    tag='%s-%s' % (platform.sdk, platform.arch)
       
 44949 +    build_dir = 'build_%s' % tag
       
 44950 +    mkdir_p(build_dir)
       
 44951 +    env = dict(CC=xcrun_cmd('clang'),
       
 44952 +               LD=xcrun_cmd('ld'),
       
 44953 +               CFLAGS='%s' % (platform.version_min))
       
 44954 +    working_dir = os.getcwd()
       
 44955 +    try:
       
 44956 +        os.chdir(build_dir)
       
 44957 +        subprocess.check_call(['../configure', '-host', platform.triple], env=env)
       
 44958 +    finally:
       
 44959 +        os.chdir(working_dir)
       
 44960 +
       
 44961 +    for src_dir in [build_dir, os.path.join(build_dir, 'include')]:
       
 44962 +        copy_files(src_dir,
       
 44963 +                   os.path.join(platform.directory, 'include'),
       
 44964 +                   pattern='*.h',
       
 44965 +                   file_suffix=platform.arch,
       
 44966 +                   prefix=platform.prefix,
       
 44967 +                   suffix=platform.suffix)
       
 44968 +
       
 44969 +        for filename in list_files(src_dir, pattern='*.h'):
       
 44970 +            platform_headers[filename].add((platform.prefix, platform.arch, platform.suffix))
       
 44971 +
       
 44972 +
       
 44973 +def make_tramp():
       
 44974 +    with open('src/arm/trampoline.S', 'w') as tramp_out:
       
 44975 +        p = subprocess.Popen(['bash', 'src/arm/gentramp.sh'], stdout=tramp_out)
       
 44976 +        p.wait()
       
 44977 +
       
 44978 +
       
 44979 +def generate_source_and_headers(generate_osx=True, generate_ios=True):
       
 44980 +    copy_files('src', 'darwin_common/src', pattern='*.c')
       
 44981 +    copy_files('include', 'darwin_common/include', pattern='*.h')
       
 44982 +
       
 44983 +    if generate_ios:
       
 44984 +        make_tramp()
       
 44985 +        copy_src_platform_files(simulator_platform)
       
 44986 +        copy_src_platform_files(simulator64_platform)
       
 44987 +        copy_src_platform_files(device_platform)
       
 44988 +        copy_src_platform_files(device64_platform)
       
 44989 +    if generate_osx:
       
 44990 +        copy_src_platform_files(desktop32_platform)
       
 44991 +        copy_src_platform_files(desktop64_platform)
       
 44992 +
       
 44993 +    platform_headers = collections.defaultdict(set)
       
 44994 +
       
 44995 +    if generate_ios:
       
 44996 +        build_target(simulator_platform, platform_headers)
       
 44997 +        build_target(simulator64_platform, platform_headers)
       
 44998 +        build_target(device_platform, platform_headers)
       
 44999 +        build_target(device64_platform, platform_headers)
       
 45000 +    if generate_osx:
       
 45001 +        build_target(desktop32_platform, platform_headers)
       
 45002 +        build_target(desktop64_platform, platform_headers)
       
 45003 +
       
 45004 +    mkdir_p('darwin_common/include')
       
 45005 +    for header_name, tag_tuples in platform_headers.iteritems():
       
 45006 +        basename, suffix = os.path.splitext(header_name)
       
 45007 +        with open(os.path.join('darwin_common/include', header_name), 'w') as header:
       
 45008 +            for tag_tuple in tag_tuples:
       
 45009 +                header.write('%s#include <%s_%s%s>\n%s\n' % (tag_tuple[0], basename, tag_tuple[1], suffix, tag_tuple[2]))
       
 45010 +
       
 45011 +if __name__ == '__main__':
       
 45012 +    parser = argparse.ArgumentParser()
       
 45013 +    parser.add_argument('--only-ios', action='store_true', default=False)
       
 45014 +    parser.add_argument('--only-osx', action='store_true', default=False)
       
 45015 +    args = parser.parse_args()
       
 45016 +
       
 45017 +    generate_source_and_headers(generate_osx=not args.only_ios, generate_ios=not args.only_osx)
       
 45018 diff --git a/js/src/ctypes/libffi/include/Makefile.in b/js/src/ctypes/libffi/include/Makefile.in
       
 45019 --- a/js/src/ctypes/libffi/include/Makefile.in
       
 45020 +++ b/js/src/ctypes/libffi/include/Makefile.in
       
 45021 @@ -1,26 +1,70 @@
       
 45022 -# Makefile.in generated by automake 1.11.1 from Makefile.am.
       
 45023 +# Makefile.in generated by automake 1.13.4 from Makefile.am.
       
 45024  # @configure_input@
       
 45025  
       
 45026 -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
       
 45027 -# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
       
 45028 -# Inc.
       
 45029 +# Copyright (C) 1994-2013 Free Software Foundation, Inc.
       
 45030 +
       
 45031  # This Makefile.in is free software; the Free Software Foundation
       
 45032  # gives unlimited permission to copy and/or distribute it,
       
 45033  # with or without modifications, as long as this notice is preserved.
       
 45034  
       
 45035  # This program is distributed in the hope that it will be useful,
       
 45036  # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
       
 45037  # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
       
 45038  # PARTICULAR PURPOSE.
       
 45039  
       
 45040  @SET_MAKE@
       
 45041  
       
 45042  VPATH = @srcdir@
       
 45043 +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
       
 45044 +am__make_running_with_option = \
       
 45045 +  case $${target_option-} in \
       
 45046 +      ?) ;; \
       
 45047 +      *) echo "am__make_running_with_option: internal error: invalid" \
       
 45048 +              "target option '$${target_option-}' specified" >&2; \
       
 45049 +         exit 1;; \
       
 45050 +  esac; \
       
 45051 +  has_opt=no; \
       
 45052 +  sane_makeflags=$$MAKEFLAGS; \
       
 45053 +  if $(am__is_gnu_make); then \
       
 45054 +    sane_makeflags=$$MFLAGS; \
       
 45055 +  else \
       
 45056 +    case $$MAKEFLAGS in \
       
 45057 +      *\\[\ \	]*) \
       
 45058 +        bs=\\; \
       
 45059 +        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
       
 45060 +          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
       
 45061 +    esac; \
       
 45062 +  fi; \
       
 45063 +  skip_next=no; \
       
 45064 +  strip_trailopt () \
       
 45065 +  { \
       
 45066 +    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
       
 45067 +  }; \
       
 45068 +  for flg in $$sane_makeflags; do \
       
 45069 +    test $$skip_next = yes && { skip_next=no; continue; }; \
       
 45070 +    case $$flg in \
       
 45071 +      *=*|--*) continue;; \
       
 45072 +        -*I) strip_trailopt 'I'; skip_next=yes;; \
       
 45073 +      -*I?*) strip_trailopt 'I';; \
       
 45074 +        -*O) strip_trailopt 'O'; skip_next=yes;; \
       
 45075 +      -*O?*) strip_trailopt 'O';; \
       
 45076 +        -*l) strip_trailopt 'l'; skip_next=yes;; \
       
 45077 +      -*l?*) strip_trailopt 'l';; \
       
 45078 +      -[dEDm]) skip_next=yes;; \
       
 45079 +      -[JT]) skip_next=yes;; \
       
 45080 +    esac; \
       
 45081 +    case $$flg in \
       
 45082 +      *$$target_option*) has_opt=yes; break;; \
       
 45083 +    esac; \
       
 45084 +  done; \
       
 45085 +  test $$has_opt = yes
       
 45086 +am__make_dryrun = (target_option=n; $(am__make_running_with_option))
       
 45087 +am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
       
 45088  pkgdatadir = $(datadir)/@PACKAGE@
       
 45089  pkgincludedir = $(includedir)/@PACKAGE@
       
 45090  pkglibdir = $(libdir)/@PACKAGE@
       
 45091  pkglibexecdir = $(libexecdir)/@PACKAGE@
       
 45092  am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
       
 45093  install_sh_DATA = $(install_sh) -c -m 644
       
 45094  install_sh_PROGRAM = $(install_sh) -c
       
 45095  install_sh_SCRIPT = $(install_sh) -c
       
 45096 @@ -31,29 +75,58 @@ PRE_INSTALL = :
       
 45097  POST_INSTALL = :
       
 45098  NORMAL_UNINSTALL = :
       
 45099  PRE_UNINSTALL = :
       
 45100  POST_UNINSTALL = :
       
 45101  build_triplet = @build@
       
 45102  host_triplet = @host@
       
 45103  target_triplet = @target@
       
 45104  subdir = include
       
 45105 -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
       
 45106 +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
       
 45107  	$(srcdir)/ffi.h.in
       
 45108  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
       
 45109 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
       
 45110 +am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
       
 45111 +	$(top_srcdir)/m4/ax_append_flag.m4 \
       
 45112 +	$(top_srcdir)/m4/ax_cc_maxopt.m4 \
       
 45113 +	$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
       
 45114 +	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
       
 45115 +	$(top_srcdir)/m4/ax_compiler_vendor.m4 \
       
 45116 +	$(top_srcdir)/m4/ax_configure_args.m4 \
       
 45117 +	$(top_srcdir)/m4/ax_enable_builddir.m4 \
       
 45118 +	$(top_srcdir)/m4/ax_gcc_archflag.m4 \
       
 45119 +	$(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
       
 45120 +	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
       
 45121 +	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
       
 45122 +	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
       
 45123  	$(top_srcdir)/configure.ac
       
 45124  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
       
 45125  	$(ACLOCAL_M4)
       
 45126  mkinstalldirs = $(install_sh) -d
       
 45127  CONFIG_HEADER = $(top_builddir)/fficonfig.h
       
 45128  CONFIG_CLEAN_FILES = ffi.h ffitarget.h
       
 45129  CONFIG_CLEAN_VPATH_FILES =
       
 45130 +AM_V_P = $(am__v_P_@AM_V@)
       
 45131 +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
       
 45132 +am__v_P_0 = false
       
 45133 +am__v_P_1 = :
       
 45134 +AM_V_GEN = $(am__v_GEN_@AM_V@)
       
 45135 +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
       
 45136 +am__v_GEN_0 = @echo "  GEN     " $@;
       
 45137 +am__v_GEN_1 = 
       
 45138 +AM_V_at = $(am__v_at_@AM_V@)
       
 45139 +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
       
 45140 +am__v_at_0 = @
       
 45141 +am__v_at_1 = 
       
 45142  SOURCES =
       
 45143  DIST_SOURCES =
       
 45144 +am__can_run_installinfo = \
       
 45145 +  case $$AM_UPDATE_INFO_DIR in \
       
 45146 +    n|no|NO) false;; \
       
 45147 +    *) (install-info --version) >/dev/null 2>&1;; \
       
 45148 +  esac
       
 45149  am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
       
 45150  am__vpath_adj = case $$p in \
       
 45151      $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
       
 45152      *) f=$$p;; \
       
 45153    esac;
       
 45154  am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
       
 45155  am__install_max = 40
       
 45156  am__nobase_strip_setup = \
       
 45157 @@ -65,24 +138,48 @@ am__nobase_list = $(am__nobase_strip_set
       
 45158    sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
       
 45159    $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
       
 45160      if (++n[$$2] == $(am__install_max)) \
       
 45161        { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
       
 45162      END { for (dir in files) print dir, files[dir] }'
       
 45163  am__base_list = \
       
 45164    sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
       
 45165    sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
       
 45166 +am__uninstall_files_from_dir = { \
       
 45167 +  test -z "$$files" \
       
 45168 +    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
       
 45169 +    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
       
 45170 +         $(am__cd) "$$dir" && rm -f $$files; }; \
       
 45171 +  }
       
 45172  am__installdirs = "$(DESTDIR)$(includesdir)"
       
 45173  HEADERS = $(nodist_includes_HEADERS)
       
 45174 +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
       
 45175 +# Read a list of newline-separated strings from the standard input,
       
 45176 +# and print each of them once, without duplicates.  Input order is
       
 45177 +# *not* preserved.
       
 45178 +am__uniquify_input = $(AWK) '\
       
 45179 +  BEGIN { nonempty = 0; } \
       
 45180 +  { items[$$0] = 1; nonempty = 1; } \
       
 45181 +  END { if (nonempty) { for (i in items) print i; }; } \
       
 45182 +'
       
 45183 +# Make sure the list of sources is unique.  This is necessary because,
       
 45184 +# e.g., the same source file might be shared among _SOURCES variables
       
 45185 +# for different programs/libraries.
       
 45186 +am__define_uniq_tagged_files = \
       
 45187 +  list='$(am__tagged_files)'; \
       
 45188 +  unique=`for i in $$list; do \
       
 45189 +    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
       
 45190 +  done | $(am__uniquify_input)`
       
 45191  ETAGS = etags
       
 45192  CTAGS = ctags
       
 45193  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
       
 45194  ACLOCAL = @ACLOCAL@
       
 45195  ALLOCA = @ALLOCA@
       
 45196  AMTAR = @AMTAR@
       
 45197 +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
       
 45198  AM_LTLDFLAGS = @AM_LTLDFLAGS@
       
 45199  AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@
       
 45200  AR = @AR@
       
 45201  AUTOCONF = @AUTOCONF@
       
 45202  AUTOHEADER = @AUTOHEADER@
       
 45203  AUTOMAKE = @AUTOMAKE@
       
 45204  AWK = @AWK@
       
 45205  CC = @CC@
       
 45206 @@ -91,75 +188,82 @@ CCASDEPMODE = @CCASDEPMODE@
       
 45207  CCASFLAGS = @CCASFLAGS@
       
 45208  CCDEPMODE = @CCDEPMODE@
       
 45209  CFLAGS = @CFLAGS@
       
 45210  CPP = @CPP@
       
 45211  CPPFLAGS = @CPPFLAGS@
       
 45212  CYGPATH_W = @CYGPATH_W@
       
 45213  DEFS = @DEFS@
       
 45214  DEPDIR = @DEPDIR@
       
 45215 +DLLTOOL = @DLLTOOL@
       
 45216  DSYMUTIL = @DSYMUTIL@
       
 45217  DUMPBIN = @DUMPBIN@
       
 45218  ECHO_C = @ECHO_C@
       
 45219  ECHO_N = @ECHO_N@
       
 45220  ECHO_T = @ECHO_T@
       
 45221  EGREP = @EGREP@
       
 45222  EXEEXT = @EXEEXT@
       
 45223 +FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
       
 45224  FGREP = @FGREP@
       
 45225  GREP = @GREP@
       
 45226  HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
       
 45227 +HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@
       
 45228  INSTALL = @INSTALL@
       
 45229  INSTALL_DATA = @INSTALL_DATA@
       
 45230  INSTALL_PROGRAM = @INSTALL_PROGRAM@
       
 45231  INSTALL_SCRIPT = @INSTALL_SCRIPT@
       
 45232  INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
       
 45233  LD = @LD@
       
 45234  LDFLAGS = @LDFLAGS@
       
 45235  LIBOBJS = @LIBOBJS@
       
 45236  LIBS = @LIBS@
       
 45237  LIBTOOL = @LIBTOOL@
       
 45238  LIPO = @LIPO@
       
 45239  LN_S = @LN_S@
       
 45240  LTLIBOBJS = @LTLIBOBJS@
       
 45241  MAINT = @MAINT@
       
 45242  MAKEINFO = @MAKEINFO@
       
 45243 +MANIFEST_TOOL = @MANIFEST_TOOL@
       
 45244  MKDIR_P = @MKDIR_P@
       
 45245  NM = @NM@
       
 45246  NMEDIT = @NMEDIT@
       
 45247  OBJDUMP = @OBJDUMP@
       
 45248  OBJEXT = @OBJEXT@
       
 45249  OTOOL = @OTOOL@
       
 45250  OTOOL64 = @OTOOL64@
       
 45251  PACKAGE = @PACKAGE@
       
 45252  PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
       
 45253  PACKAGE_NAME = @PACKAGE_NAME@
       
 45254  PACKAGE_STRING = @PACKAGE_STRING@
       
 45255  PACKAGE_TARNAME = @PACKAGE_TARNAME@
       
 45256  PACKAGE_URL = @PACKAGE_URL@
       
 45257  PACKAGE_VERSION = @PACKAGE_VERSION@
       
 45258  PATH_SEPARATOR = @PATH_SEPARATOR@
       
 45259 +PRTDIAG = @PRTDIAG@
       
 45260  RANLIB = @RANLIB@
       
 45261  SED = @SED@
       
 45262  SET_MAKE = @SET_MAKE@
       
 45263  SHELL = @SHELL@
       
 45264  STRIP = @STRIP@
       
 45265  TARGET = @TARGET@
       
 45266  TARGETDIR = @TARGETDIR@
       
 45267  VERSION = @VERSION@
       
 45268  abs_builddir = @abs_builddir@
       
 45269  abs_srcdir = @abs_srcdir@
       
 45270  abs_top_builddir = @abs_top_builddir@
       
 45271  abs_top_srcdir = @abs_top_srcdir@
       
 45272 +ac_ct_AR = @ac_ct_AR@
       
 45273  ac_ct_CC = @ac_ct_CC@
       
 45274  ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
       
 45275  am__include = @am__include@
       
 45276  am__leading_dot = @am__leading_dot@
       
 45277  am__quote = @am__quote@
       
 45278  am__tar = @am__tar@
       
 45279  am__untar = @am__untar@
       
 45280 +ax_enable_builddir_sed = @ax_enable_builddir_sed@
       
 45281  bindir = @bindir@
       
 45282  build = @build@
       
 45283  build_alias = @build_alias@
       
 45284  build_cpu = @build_cpu@
       
 45285  build_os = @build_os@
       
 45286  build_vendor = @build_vendor@
       
 45287  builddir = @builddir@
       
 45288  datadir = @datadir@
       
 45289 @@ -175,27 +279,27 @@ host_vendor = @host_vendor@
       
 45290  htmldir = @htmldir@
       
 45291  includedir = @includedir@
       
 45292  infodir = @infodir@
       
 45293  install_sh = @install_sh@
       
 45294  libdir = @libdir@
       
 45295  libexecdir = @libexecdir@
       
 45296  localedir = @localedir@
       
 45297  localstatedir = @localstatedir@
       
 45298 -lt_ECHO = @lt_ECHO@
       
 45299  mandir = @mandir@
       
 45300  mkdir_p = @mkdir_p@
       
 45301  oldincludedir = @oldincludedir@
       
 45302  pdfdir = @pdfdir@
       
 45303  prefix = @prefix@
       
 45304  program_transform_name = @program_transform_name@
       
 45305  psdir = @psdir@
       
 45306  sbindir = @sbindir@
       
 45307  sharedstatedir = @sharedstatedir@
       
 45308  srcdir = @srcdir@
       
 45309 +sys_symbol_underscore = @sys_symbol_underscore@
       
 45310  sysconfdir = @sysconfdir@
       
 45311  target = @target@
       
 45312  target_alias = @target_alias@
       
 45313  target_cpu = @target_cpu@
       
 45314  target_os = @target_os@
       
 45315  target_vendor = @target_vendor@
       
 45316  toolexecdir = @toolexecdir@
       
 45317  toolexeclibdir = @toolexeclibdir@
       
 45318 @@ -245,83 +349,84 @@ ffi.h: $(top_builddir)/config.status $(s
       
 45319  
       
 45320  mostlyclean-libtool:
       
 45321  	-rm -f *.lo
       
 45322  
       
 45323  clean-libtool:
       
 45324  	-rm -rf .libs _libs
       
 45325  install-nodist_includesHEADERS: $(nodist_includes_HEADERS)
       
 45326  	@$(NORMAL_INSTALL)
       
 45327 -	test -z "$(includesdir)" || $(MKDIR_P) "$(DESTDIR)$(includesdir)"
       
 45328  	@list='$(nodist_includes_HEADERS)'; test -n "$(includesdir)" || list=; \
       
 45329 +	if test -n "$$list"; then \
       
 45330 +	  echo " $(MKDIR_P) '$(DESTDIR)$(includesdir)'"; \
       
 45331 +	  $(MKDIR_P) "$(DESTDIR)$(includesdir)" || exit 1; \
       
 45332 +	fi; \
       
 45333  	for p in $$list; do \
       
 45334  	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
       
 45335  	  echo "$$d$$p"; \
       
 45336  	done | $(am__base_list) | \
       
 45337  	while read files; do \
       
 45338  	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includesdir)'"; \
       
 45339  	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includesdir)" || exit $$?; \
       
 45340  	done
       
 45341  
       
 45342  uninstall-nodist_includesHEADERS:
       
 45343  	@$(NORMAL_UNINSTALL)
       
 45344  	@list='$(nodist_includes_HEADERS)'; test -n "$(includesdir)" || list=; \
       
 45345  	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
       
 45346 -	test -n "$$files" || exit 0; \
       
 45347 -	echo " ( cd '$(DESTDIR)$(includesdir)' && rm -f" $$files ")"; \
       
 45348 -	cd "$(DESTDIR)$(includesdir)" && rm -f $$files
       
 45349 +	dir='$(DESTDIR)$(includesdir)'; $(am__uninstall_files_from_dir)
       
 45350  
       
 45351 -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
       
 45352 -	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
       
 45353 -	unique=`for i in $$list; do \
       
 45354 -	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
       
 45355 -	  done | \
       
 45356 -	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
       
 45357 -	      END { if (nonempty) { for (i in files) print i; }; }'`; \
       
 45358 -	mkid -fID $$unique
       
 45359 -tags: TAGS
       
 45360 +ID: $(am__tagged_files)
       
 45361 +	$(am__define_uniq_tagged_files); mkid -fID $$unique
       
 45362 +tags: tags-am
       
 45363 +TAGS: tags
       
 45364  
       
 45365 -TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
       
 45366 -		$(TAGS_FILES) $(LISP)
       
 45367 +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
       
 45368  	set x; \
       
 45369  	here=`pwd`; \
       
 45370 -	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
       
 45371 -	unique=`for i in $$list; do \
       
 45372 -	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
       
 45373 -	  done | \
       
 45374 -	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
       
 45375 -	      END { if (nonempty) { for (i in files) print i; }; }'`; \
       
 45376 +	$(am__define_uniq_tagged_files); \
       
 45377  	shift; \
       
 45378  	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
       
 45379  	  test -n "$$unique" || unique=$$empty_fix; \
       
 45380  	  if test $$# -gt 0; then \
       
 45381  	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
       
 45382  	      "$$@" $$unique; \
       
 45383  	  else \
       
 45384  	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
       
 45385  	      $$unique; \
       
 45386  	  fi; \
       
 45387  	fi
       
 45388 -ctags: CTAGS
       
 45389 -CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
       
 45390 -		$(TAGS_FILES) $(LISP)
       
 45391 -	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
       
 45392 -	unique=`for i in $$list; do \
       
 45393 -	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
       
 45394 -	  done | \
       
 45395 -	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
       
 45396 -	      END { if (nonempty) { for (i in files) print i; }; }'`; \
       
 45397 +ctags: ctags-am
       
 45398 +
       
 45399 +CTAGS: ctags
       
 45400 +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
       
 45401 +	$(am__define_uniq_tagged_files); \
       
 45402  	test -z "$(CTAGS_ARGS)$$unique" \
       
 45403  	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
       
 45404  	     $$unique
       
 45405  
       
 45406  GTAGS:
       
 45407  	here=`$(am__cd) $(top_builddir) && pwd` \
       
 45408  	  && $(am__cd) $(top_srcdir) \
       
 45409  	  && gtags -i $(GTAGS_ARGS) "$$here"
       
 45410 +cscopelist: cscopelist-am
       
 45411 +
       
 45412 +cscopelist-am: $(am__tagged_files)
       
 45413 +	list='$(am__tagged_files)'; \
       
 45414 +	case "$(srcdir)" in \
       
 45415 +	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
       
 45416 +	  *) sdir=$(subdir)/$(srcdir) ;; \
       
 45417 +	esac; \
       
 45418 +	for i in $$list; do \
       
 45419 +	  if test -f "$$i"; then \
       
 45420 +	    echo "$(subdir)/$$i"; \
       
 45421 +	  else \
       
 45422 +	    echo "$$sdir/$$i"; \
       
 45423 +	  fi; \
       
 45424 +	done >> $(top_builddir)/cscope.files
       
 45425  
       
 45426  distclean-tags:
       
 45427  	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
       
 45428  
       
 45429  distdir: $(DISTFILES)
       
 45430  	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
       
 45431  	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
       
 45432  	list='$(DISTFILES)'; \
       
 45433 @@ -363,20 +468,25 @@ install-exec: install-exec-am
       
 45434  install-data: install-data-am
       
 45435  uninstall: uninstall-am
       
 45436  
       
 45437  install-am: all-am
       
 45438  	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
       
 45439  
       
 45440  installcheck: installcheck-am
       
 45441  install-strip:
       
 45442 -	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 45443 -	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 45444 -	  `test -z '$(STRIP)' || \
       
 45445 -	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
       
 45446 +	if test -z '$(STRIP)'; then \
       
 45447 +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 45448 +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 45449 +	      install; \
       
 45450 +	else \
       
 45451 +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 45452 +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 45453 +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
       
 45454 +	fi
       
 45455  mostlyclean-generic:
       
 45456  
       
 45457  clean-generic:
       
 45458  
       
 45459  distclean-generic:
       
 45460  	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
       
 45461  	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
       
 45462  	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
       
 45463 @@ -447,25 +557,26 @@ pdf-am:
       
 45464  ps: ps-am
       
 45465  
       
 45466  ps-am:
       
 45467  
       
 45468  uninstall-am: uninstall-nodist_includesHEADERS
       
 45469  
       
 45470  .MAKE: install-am install-strip
       
 45471  
       
 45472 -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
       
 45473 -	clean-libtool ctags distclean distclean-generic \
       
 45474 -	distclean-libtool distclean-tags distdir dvi dvi-am html \
       
 45475 -	html-am info info-am install install-am install-data \
       
 45476 -	install-data-am install-dvi install-dvi-am install-exec \
       
 45477 -	install-exec-am install-html install-html-am install-info \
       
 45478 -	install-info-am install-man install-nodist_includesHEADERS \
       
 45479 -	install-pdf install-pdf-am install-ps install-ps-am \
       
 45480 -	install-strip installcheck installcheck-am installdirs \
       
 45481 -	maintainer-clean maintainer-clean-generic mostlyclean \
       
 45482 -	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
       
 45483 -	tags uninstall uninstall-am uninstall-nodist_includesHEADERS
       
 45484 +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
       
 45485 +	clean-libtool cscopelist-am ctags ctags-am distclean \
       
 45486 +	distclean-generic distclean-libtool distclean-tags distdir dvi \
       
 45487 +	dvi-am html html-am info info-am install install-am \
       
 45488 +	install-data install-data-am install-dvi install-dvi-am \
       
 45489 +	install-exec install-exec-am install-html install-html-am \
       
 45490 +	install-info install-info-am install-man \
       
 45491 +	install-nodist_includesHEADERS install-pdf install-pdf-am \
       
 45492 +	install-ps install-ps-am install-strip installcheck \
       
 45493 +	installcheck-am installdirs maintainer-clean \
       
 45494 +	maintainer-clean-generic mostlyclean mostlyclean-generic \
       
 45495 +	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
       
 45496 +	uninstall-am uninstall-nodist_includesHEADERS
       
 45497  
       
 45498  
       
 45499  # Tell versions [3.59,3.63) of GNU make to not export all variables.
       
 45500  # Otherwise a system limit (for SysV at least) may be exceeded.
       
 45501  .NOEXPORT:
       
 45502 diff --git a/js/src/ctypes/libffi/include/ffi.h.in b/js/src/ctypes/libffi/include/ffi.h.in
       
 45503 --- a/js/src/ctypes/libffi/include/ffi.h.in
       
 45504 +++ b/js/src/ctypes/libffi/include/ffi.h.in
       
 45505 @@ -1,21 +1,22 @@
       
 45506  /* -----------------------------------------------------------------*-C-*-
       
 45507 -   libffi @VERSION@ - Copyright (c) 1996-2003, 2007, 2008  Red Hat, Inc.
       
 45508 +   libffi @VERSION@ - Copyright (c) 2011 Anthony Green
       
 45509 +                    - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
       
 45510  
       
 45511 -   Permission is hereby granted, free of charge, to any person obtaining
       
 45512 -   a copy of this software and associated documentation files (the
       
 45513 -   ``Software''), to deal in the Software without restriction, including
       
 45514 -   without limitation the rights to use, copy, modify, merge, publish,
       
 45515 -   distribute, sublicense, and/or sell copies of the Software, and to
       
 45516 -   permit persons to whom the Software is furnished to do so, subject to
       
 45517 -   the following conditions:
       
 45518 +   Permission is hereby granted, free of charge, to any person
       
 45519 +   obtaining a copy of this software and associated documentation
       
 45520 +   files (the ``Software''), to deal in the Software without
       
 45521 +   restriction, including without limitation the rights to use, copy,
       
 45522 +   modify, merge, publish, distribute, sublicense, and/or sell copies
       
 45523 +   of the Software, and to permit persons to whom the Software is
       
 45524 +   furnished to do so, subject to the following conditions:
       
 45525  
       
 45526 -   The above copyright notice and this permission notice shall be included
       
 45527 -   in all copies or substantial portions of the Software.
       
 45528 +   The above copyright notice and this permission notice shall be
       
 45529 +   included in all copies or substantial portions of the Software.
       
 45530  
       
 45531     THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 45532     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 45533     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 45534     NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 45535     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 45536     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 45537     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 45538 @@ -80,21 +81,25 @@ extern "C" {
       
 45539  
       
 45540  #define FFI_64_BIT_MAX 9223372036854775807
       
 45541  
       
 45542  #ifdef LONG_LONG_MAX
       
 45543  # define FFI_LONG_LONG_MAX LONG_LONG_MAX
       
 45544  #else
       
 45545  # ifdef LLONG_MAX
       
 45546  #  define FFI_LONG_LONG_MAX LLONG_MAX
       
 45547 +#  ifdef _AIX52 /* or newer has C99 LLONG_MAX */
       
 45548 +#   undef FFI_64_BIT_MAX
       
 45549 +#   define FFI_64_BIT_MAX 9223372036854775807LL
       
 45550 +#  endif /* _AIX52 or newer */
       
 45551  # else
       
 45552  #  ifdef __GNUC__
       
 45553  #   define FFI_LONG_LONG_MAX __LONG_LONG_MAX__
       
 45554  #  endif
       
 45555 -#  ifdef _AIX
       
 45556 +#  ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */
       
 45557  #   ifndef __PPC64__
       
 45558  #    if defined (__IBMC__) || defined (__IBMCPP__)
       
 45559  #     define FFI_LONG_LONG_MAX LONGLONG_MAX
       
 45560  #    endif
       
 45561  #   endif /* __PPC64__ */
       
 45562  #   undef  FFI_64_BIT_MAX
       
 45563  #   define FFI_64_BIT_MAX 9223372036854775807LL
       
 45564  #  endif
       
 45565 @@ -156,32 +161,46 @@ typedef struct _ffi_type
       
 45566  # define ffi_type_slong        ffi_type_sint32
       
 45567  #elif LONG_MAX == FFI_64_BIT_MAX
       
 45568  # define ffi_type_ulong        ffi_type_uint64
       
 45569  # define ffi_type_slong        ffi_type_sint64
       
 45570  #else
       
 45571   #error "long size not supported"
       
 45572  #endif
       
 45573  
       
 45574 +/* Need minimal decorations for DLLs to works on Windows. */
       
 45575 +/* GCC has autoimport and autoexport.  Rely on Libtool to */
       
 45576 +/* help MSVC export from a DLL, but always declare data   */
       
 45577 +/* to be imported for MSVC clients.  This costs an extra  */
       
 45578 +/* indirection for MSVC clients using the static version  */
       
 45579 +/* of the library, but don't worry about that.  Besides,  */
       
 45580 +/* as a workaround, they can define FFI_BUILDING if they  */
       
 45581 +/* *know* they are going to link with the static library. */
       
 45582 +#if defined _MSC_VER && !defined FFI_BUILDING
       
 45583 +#define FFI_EXTERN extern __declspec(dllimport)
       
 45584 +#else
       
 45585 +#define FFI_EXTERN extern
       
 45586 +#endif
       
 45587 +
       
 45588  /* These are defined in types.c */
       
 45589 -extern ffi_type ffi_type_void;
       
 45590 -extern ffi_type ffi_type_uint8;
       
 45591 -extern ffi_type ffi_type_sint8;
       
 45592 -extern ffi_type ffi_type_uint16;
       
 45593 -extern ffi_type ffi_type_sint16;
       
 45594 -extern ffi_type ffi_type_uint32;
       
 45595 -extern ffi_type ffi_type_sint32;
       
 45596 -extern ffi_type ffi_type_uint64;
       
 45597 -extern ffi_type ffi_type_sint64;
       
 45598 -extern ffi_type ffi_type_float;
       
 45599 -extern ffi_type ffi_type_double;
       
 45600 -extern ffi_type ffi_type_pointer;
       
 45601 +FFI_EXTERN ffi_type ffi_type_void;
       
 45602 +FFI_EXTERN ffi_type ffi_type_uint8;
       
 45603 +FFI_EXTERN ffi_type ffi_type_sint8;
       
 45604 +FFI_EXTERN ffi_type ffi_type_uint16;
       
 45605 +FFI_EXTERN ffi_type ffi_type_sint16;
       
 45606 +FFI_EXTERN ffi_type ffi_type_uint32;
       
 45607 +FFI_EXTERN ffi_type ffi_type_sint32;
       
 45608 +FFI_EXTERN ffi_type ffi_type_uint64;
       
 45609 +FFI_EXTERN ffi_type ffi_type_sint64;
       
 45610 +FFI_EXTERN ffi_type ffi_type_float;
       
 45611 +FFI_EXTERN ffi_type ffi_type_double;
       
 45612 +FFI_EXTERN ffi_type ffi_type_pointer;
       
 45613  
       
 45614  #if @HAVE_LONG_DOUBLE@
       
 45615 -extern ffi_type ffi_type_longdouble;
       
 45616 +FFI_EXTERN ffi_type ffi_type_longdouble;
       
 45617  #else
       
 45618  #define ffi_type_longdouble ffi_type_double
       
 45619  #endif
       
 45620  #endif /* LIBFFI_HIDE_BASIC_TYPES */
       
 45621  
       
 45622  typedef enum {
       
 45623    FFI_OK = 0,
       
 45624    FFI_BAD_TYPEDEF,
       
 45625 @@ -197,16 +216,30 @@ typedef struct {
       
 45626    ffi_type *rtype;
       
 45627    unsigned bytes;
       
 45628    unsigned flags;
       
 45629  #ifdef FFI_EXTRA_CIF_FIELDS
       
 45630    FFI_EXTRA_CIF_FIELDS;
       
 45631  #endif
       
 45632  } ffi_cif;
       
 45633  
       
 45634 +#if HAVE_LONG_DOUBLE_VARIANT
       
 45635 +/* Used to adjust size/alignment of ffi types.  */
       
 45636 +void ffi_prep_types (ffi_abi abi);
       
 45637 +# endif
       
 45638 +
       
 45639 +/* Used internally, but overridden by some architectures */
       
 45640 +ffi_status ffi_prep_cif_core(ffi_cif *cif,
       
 45641 +			     ffi_abi abi,
       
 45642 +			     unsigned int isvariadic,
       
 45643 +			     unsigned int nfixedargs,
       
 45644 +			     unsigned int ntotalargs,
       
 45645 +			     ffi_type *rtype,
       
 45646 +			     ffi_type **atypes);
       
 45647 +
       
 45648  /* ---- Definitions for the raw API -------------------------------------- */
       
 45649  
       
 45650  #ifndef FFI_SIZEOF_ARG
       
 45651  # if LONG_MAX == 2147483647
       
 45652  #  define FFI_SIZEOF_ARG        4
       
 45653  # elif LONG_MAX == FFI_64_BIT_MAX
       
 45654  #  define FFI_SIZEOF_ARG        8
       
 45655  # endif
       
 45656 @@ -264,24 +297,32 @@ size_t ffi_java_raw_size (ffi_cif *cif);
       
 45657  /* ---- Definitions for closures ----------------------------------------- */
       
 45658  
       
 45659  #if FFI_CLOSURES
       
 45660  
       
 45661  #ifdef _MSC_VER
       
 45662  __declspec(align(8))
       
 45663  #endif
       
 45664  typedef struct {
       
 45665 +#if @FFI_EXEC_TRAMPOLINE_TABLE@
       
 45666 +  void *trampoline_table;
       
 45667 +  void *trampoline_table_entry;
       
 45668 +#else
       
 45669    char tramp[FFI_TRAMPOLINE_SIZE];
       
 45670 +#endif
       
 45671    ffi_cif   *cif;
       
 45672    void     (*fun)(ffi_cif*,void*,void**,void*);
       
 45673    void      *user_data;
       
 45674  #ifdef __GNUC__
       
 45675  } ffi_closure __attribute__((aligned (8)));
       
 45676  #else
       
 45677  } ffi_closure;
       
 45678 +# ifdef __sgi
       
 45679 +#  pragma pack 0
       
 45680 +# endif
       
 45681  #endif
       
 45682  
       
 45683  void *ffi_closure_alloc (size_t size, void **code);
       
 45684  void ffi_closure_free (void *);
       
 45685  
       
 45686  ffi_status
       
 45687  ffi_prep_closure (ffi_closure*,
       
 45688  		  ffi_cif *,
       
 45689 @@ -290,19 +331,26 @@ ffi_prep_closure (ffi_closure*,
       
 45690  
       
 45691  ffi_status
       
 45692  ffi_prep_closure_loc (ffi_closure*,
       
 45693  		      ffi_cif *,
       
 45694  		      void (*fun)(ffi_cif*,void*,void**,void*),
       
 45695  		      void *user_data,
       
 45696  		      void*codeloc);
       
 45697  
       
 45698 +#ifdef __sgi
       
 45699 +# pragma pack 8
       
 45700 +#endif
       
 45701  typedef struct {
       
 45702 +#if @FFI_EXEC_TRAMPOLINE_TABLE@
       
 45703 +  void *trampoline_table;
       
 45704 +  void *trampoline_table_entry;
       
 45705 +#else
       
 45706    char tramp[FFI_TRAMPOLINE_SIZE];
       
 45707 -
       
 45708 +#endif
       
 45709    ffi_cif   *cif;
       
 45710  
       
 45711  #if !FFI_NATIVE_RAW_API
       
 45712  
       
 45713    /* if this is enabled, then a raw closure has the same layout 
       
 45714       as a regular closure.  We use this to install an intermediate 
       
 45715       handler to do the transaltion, void** -> ffi_raw*. */
       
 45716  
       
 45717 @@ -312,17 +360,22 @@ typedef struct {
       
 45718  #endif
       
 45719  
       
 45720    void     (*fun)(ffi_cif*,void*,ffi_raw*,void*);
       
 45721    void      *user_data;
       
 45722  
       
 45723  } ffi_raw_closure;
       
 45724  
       
 45725  typedef struct {
       
 45726 +#if @FFI_EXEC_TRAMPOLINE_TABLE@
       
 45727 +  void *trampoline_table;
       
 45728 +  void *trampoline_table_entry;
       
 45729 +#else
       
 45730    char tramp[FFI_TRAMPOLINE_SIZE];
       
 45731 +#endif
       
 45732  
       
 45733    ffi_cif   *cif;
       
 45734  
       
 45735  #if !FFI_NATIVE_RAW_API
       
 45736  
       
 45737    /* if this is enabled, then a raw closure has the same layout 
       
 45738       as a regular closure.  We use this to install an intermediate 
       
 45739       handler to do the transaltion, void** -> ffi_raw*. */
       
 45740 @@ -368,16 +421,23 @@ ffi_prep_java_raw_closure_loc (ffi_java_
       
 45741  /* ---- Public interface definition -------------------------------------- */
       
 45742  
       
 45743  ffi_status ffi_prep_cif(ffi_cif *cif,
       
 45744  			ffi_abi abi,
       
 45745  			unsigned int nargs,
       
 45746  			ffi_type *rtype,
       
 45747  			ffi_type **atypes);
       
 45748  
       
 45749 +ffi_status ffi_prep_cif_var(ffi_cif *cif,
       
 45750 +			    ffi_abi abi,
       
 45751 +			    unsigned int nfixedargs,
       
 45752 +			    unsigned int ntotalargs,
       
 45753 +			    ffi_type *rtype,
       
 45754 +			    ffi_type **atypes);
       
 45755 +
       
 45756  void ffi_call(ffi_cif *cif,
       
 45757  	      void (*fn)(void),
       
 45758  	      void *rvalue,
       
 45759  	      void **avalue);
       
 45760  
       
 45761  /* Useful for eliminating compiler warnings */
       
 45762  #define FFI_FN(f) ((void (*)(void))f)
       
 45763  
       
 45764 diff --git a/js/src/ctypes/libffi/include/ffi_common.h b/js/src/ctypes/libffi/include/ffi_common.h
       
 45765 --- a/js/src/ctypes/libffi/include/ffi_common.h
       
 45766 +++ b/js/src/ctypes/libffi/include/ffi_common.h
       
 45767 @@ -1,50 +1,55 @@
       
 45768  /* -----------------------------------------------------------------------
       
 45769 -   ffi_common.h - Copyright (c) 1996  Red Hat, Inc.
       
 45770 -   Copyright (C) 2007 Free Software Foundation, Inc
       
 45771 -
       
 45772 +   ffi_common.h - Copyright (C) 2011, 2012, 2013  Anthony Green
       
 45773 +                  Copyright (C) 2007  Free Software Foundation, Inc
       
 45774 +                  Copyright (c) 1996  Red Hat, Inc.
       
 45775 +                  
       
 45776     Common internal definitions and macros. Only necessary for building
       
 45777     libffi.
       
 45778     ----------------------------------------------------------------------- */
       
 45779  
       
 45780  #ifndef FFI_COMMON_H
       
 45781  #define FFI_COMMON_H
       
 45782  
       
 45783  #ifdef __cplusplus
       
 45784  extern "C" {
       
 45785  #endif
       
 45786  
       
 45787  #include <fficonfig.h>
       
 45788  
       
 45789  /* Do not move this. Some versions of AIX are very picky about where
       
 45790     this is positioned. */
       
 45791  #ifdef __GNUC__
       
 45792 -/* mingw64 defines this already in malloc.h. */
       
 45793 -#ifndef alloca
       
 45794 -# define alloca __builtin_alloca
       
 45795 -#endif
       
 45796 +# if HAVE_ALLOCA_H
       
 45797 +#  include <alloca.h>
       
 45798 +# else
       
 45799 +  /* mingw64 defines this already in malloc.h. */
       
 45800 +#  ifndef alloca
       
 45801 +#    define alloca __builtin_alloca
       
 45802 +#  endif
       
 45803 +# endif
       
 45804  # define MAYBE_UNUSED __attribute__((__unused__))
       
 45805  #else
       
 45806  # define MAYBE_UNUSED
       
 45807  # if HAVE_ALLOCA_H
       
 45808  #  include <alloca.h>
       
 45809  # else
       
 45810  #  ifdef _AIX
       
 45811 - #pragma alloca
       
 45812 +#   pragma alloca
       
 45813  #  else
       
 45814  #   ifndef alloca /* predefined by HP cc +Olibcalls */
       
 45815  #    ifdef _MSC_VER
       
 45816  #     define alloca _alloca
       
 45817  #    else
       
 45818  char *alloca ();
       
 45819 -#    endif
       
 45820  #   endif
       
 45821  #  endif
       
 45822  # endif
       
 45823 +# endif
       
 45824  #endif
       
 45825  
       
 45826  /* Check for the existence of memcpy. */
       
 45827  #if STDC_HEADERS
       
 45828  # include <string.h>
       
 45829  #else
       
 45830  # ifndef HAVE_MEMCPY
       
 45831  #  define memcpy(d, s, n) bcopy ((s), (d), (n))
       
 45832 @@ -69,27 +74,29 @@ void ffi_type_test(ffi_type *a, char *fi
       
 45833  #define FFI_ASSERT_VALID_TYPE(x)
       
 45834  #endif
       
 45835  
       
 45836  #define ALIGN(v, a)  (((((size_t) (v))-1) | ((a)-1))+1)
       
 45837  #define ALIGN_DOWN(v, a) (((size_t) (v)) & -a)
       
 45838  
       
 45839  /* Perform machine dependent cif processing */
       
 45840  ffi_status ffi_prep_cif_machdep(ffi_cif *cif);
       
 45841 +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif,
       
 45842 +	 unsigned int nfixedargs, unsigned int ntotalargs);
       
 45843  
       
 45844  /* Extended cif, used in callback from assembly routine */
       
 45845  typedef struct
       
 45846  {
       
 45847    ffi_cif *cif;
       
 45848    void *rvalue;
       
 45849    void **avalue;
       
 45850  } extended_cif;
       
 45851  
       
 45852  /* Terse sized type definitions.  */
       
 45853 -#if defined(_MSC_VER) || defined(__sgi)
       
 45854 +#if defined(_MSC_VER) || defined(__sgi) || defined(__SUNPRO_C)
       
 45855  typedef unsigned char UINT8;
       
 45856  typedef signed char   SINT8;
       
 45857  typedef unsigned short UINT16;
       
 45858  typedef signed short   SINT16;
       
 45859  typedef unsigned int UINT32;
       
 45860  typedef signed int   SINT32;
       
 45861  # ifdef _MSC_VER
       
 45862  typedef unsigned __int64 UINT64;
       
 45863 @@ -107,16 +114,19 @@ typedef signed int   SINT16 __attribute_
       
 45864  typedef unsigned int UINT32 __attribute__((__mode__(__SI__)));
       
 45865  typedef signed int   SINT32 __attribute__((__mode__(__SI__)));
       
 45866  typedef unsigned int UINT64 __attribute__((__mode__(__DI__)));
       
 45867  typedef signed int   SINT64 __attribute__((__mode__(__DI__)));
       
 45868  #endif
       
 45869  
       
 45870  typedef float FLOAT32;
       
 45871  
       
 45872 +#ifndef __GNUC__
       
 45873 +#define __builtin_expect(x, expected_value) (x)
       
 45874 +#endif
       
 45875 +#define LIKELY(x)    __builtin_expect(!!(x),1)
       
 45876 +#define UNLIKELY(x)  __builtin_expect((x)!=0,0)
       
 45877  
       
 45878  #ifdef __cplusplus
       
 45879  }
       
 45880  #endif
       
 45881  
       
 45882  #endif
       
 45883 -
       
 45884 -
       
 45885 diff --git a/js/src/ctypes/libffi/install-sh b/js/src/ctypes/libffi/install-sh
       
 45886 --- a/js/src/ctypes/libffi/install-sh
       
 45887 +++ b/js/src/ctypes/libffi/install-sh
       
 45888 @@ -1,12 +1,12 @@
       
 45889  #!/bin/sh
       
 45890  # install - install a program, script, or datafile
       
 45891  
       
 45892 -scriptversion=2004-12-17.09
       
 45893 +scriptversion=2011-11-20.07; # UTC
       
 45894  
       
 45895  # This originates from X11R5 (mit/util/scripts/install.sh), which was
       
 45896  # later released in X11R6 (xc/config/util/install.sh) with the
       
 45897  # following copyright and license.
       
 45898  #
       
 45899  # Copyright (C) 1994 X Consortium
       
 45900  #
       
 45901  # Permission is hereby granted, free of charge, to any person obtaining a copy
       
 45902 @@ -30,294 +30,498 @@ scriptversion=2004-12-17.09
       
 45903  # be used in advertising or otherwise to promote the sale, use or other deal-
       
 45904  # ings in this Software without prior written authorization from the X Consor-
       
 45905  # tium.
       
 45906  #
       
 45907  #
       
 45908  # FSF changes to this file are in the public domain.
       
 45909  #
       
 45910  # Calling this script install-sh is preferred over install.sh, to prevent
       
 45911 -# `make' implicit rules from creating a file called install from it
       
 45912 +# 'make' implicit rules from creating a file called install from it
       
 45913  # when there is no Makefile.
       
 45914  #
       
 45915  # This script is compatible with the BSD install script, but was written
       
 45916 -# from scratch.  It can only install one file at a time, a restriction
       
 45917 -# shared with many OS's install programs.
       
 45918 +# from scratch.
       
 45919 +
       
 45920 +nl='
       
 45921 +'
       
 45922 +IFS=" ""	$nl"
       
 45923  
       
 45924  # set DOITPROG to echo to test this script
       
 45925  
       
 45926  # Don't use :- since 4.3BSD and earlier shells don't like it.
       
 45927 -doit="${DOITPROG-}"
       
 45928 +doit=${DOITPROG-}
       
 45929 +if test -z "$doit"; then
       
 45930 +  doit_exec=exec
       
 45931 +else
       
 45932 +  doit_exec=$doit
       
 45933 +fi
       
 45934  
       
 45935 -# put in absolute paths if you don't have them in your path; or use env. vars.
       
 45936 +# Put in absolute file names if you don't have them in your path;
       
 45937 +# or use environment vars.
       
 45938  
       
 45939 -mvprog="${MVPROG-mv}"
       
 45940 -cpprog="${CPPROG-cp}"
       
 45941 -chmodprog="${CHMODPROG-chmod}"
       
 45942 -chownprog="${CHOWNPROG-chown}"
       
 45943 -chgrpprog="${CHGRPPROG-chgrp}"
       
 45944 -stripprog="${STRIPPROG-strip}"
       
 45945 -rmprog="${RMPROG-rm}"
       
 45946 -mkdirprog="${MKDIRPROG-mkdir}"
       
 45947 +chgrpprog=${CHGRPPROG-chgrp}
       
 45948 +chmodprog=${CHMODPROG-chmod}
       
 45949 +chownprog=${CHOWNPROG-chown}
       
 45950 +cmpprog=${CMPPROG-cmp}
       
 45951 +cpprog=${CPPROG-cp}
       
 45952 +mkdirprog=${MKDIRPROG-mkdir}
       
 45953 +mvprog=${MVPROG-mv}
       
 45954 +rmprog=${RMPROG-rm}
       
 45955 +stripprog=${STRIPPROG-strip}
       
 45956  
       
 45957 -chmodcmd="$chmodprog 0755"
       
 45958 +posix_glob='?'
       
 45959 +initialize_posix_glob='
       
 45960 +  test "$posix_glob" != "?" || {
       
 45961 +    if (set -f) 2>/dev/null; then
       
 45962 +      posix_glob=
       
 45963 +    else
       
 45964 +      posix_glob=:
       
 45965 +    fi
       
 45966 +  }
       
 45967 +'
       
 45968 +
       
 45969 +posix_mkdir=
       
 45970 +
       
 45971 +# Desired mode of installed file.
       
 45972 +mode=0755
       
 45973 +
       
 45974 +chgrpcmd=
       
 45975 +chmodcmd=$chmodprog
       
 45976  chowncmd=
       
 45977 -chgrpcmd=
       
 45978 +mvcmd=$mvprog
       
 45979 +rmcmd="$rmprog -f"
       
 45980  stripcmd=
       
 45981 -rmcmd="$rmprog -f"
       
 45982 -mvcmd="$mvprog"
       
 45983 +
       
 45984  src=
       
 45985  dst=
       
 45986  dir_arg=
       
 45987 -dstarg=
       
 45988 +dst_arg=
       
 45989 +
       
 45990 +copy_on_change=false
       
 45991  no_target_directory=
       
 45992  
       
 45993 -usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
       
 45994 +usage="\
       
 45995 +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
       
 45996     or: $0 [OPTION]... SRCFILES... DIRECTORY
       
 45997     or: $0 [OPTION]... -t DIRECTORY SRCFILES...
       
 45998     or: $0 [OPTION]... -d DIRECTORIES...
       
 45999  
       
 46000  In the 1st form, copy SRCFILE to DSTFILE.
       
 46001  In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
       
 46002  In the 4th, create DIRECTORIES.
       
 46003  
       
 46004  Options:
       
 46005 --c         (ignored)
       
 46006 --d         create directories instead of installing files.
       
 46007 --g GROUP   $chgrpprog installed files to GROUP.
       
 46008 --m MODE    $chmodprog installed files to MODE.
       
 46009 --o USER    $chownprog installed files to USER.
       
 46010 --s         $stripprog installed files.
       
 46011 --t DIRECTORY  install into DIRECTORY.
       
 46012 --T         report an error if DSTFILE is a directory.
       
 46013 ---help     display this help and exit.
       
 46014 ---version  display version info and exit.
       
 46015 +     --help     display this help and exit.
       
 46016 +     --version  display version info and exit.
       
 46017 +
       
 46018 +  -c            (ignored)
       
 46019 +  -C            install only if different (preserve the last data modification time)
       
 46020 +  -d            create directories instead of installing files.
       
 46021 +  -g GROUP      $chgrpprog installed files to GROUP.
       
 46022 +  -m MODE       $chmodprog installed files to MODE.
       
 46023 +  -o USER       $chownprog installed files to USER.
       
 46024 +  -s            $stripprog installed files.
       
 46025 +  -t DIRECTORY  install into DIRECTORY.
       
 46026 +  -T            report an error if DSTFILE is a directory.
       
 46027  
       
 46028  Environment variables override the default commands:
       
 46029 -  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
       
 46030 +  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
       
 46031 +  RMPROG STRIPPROG
       
 46032  "
       
 46033  
       
 46034 -while test -n "$1"; do
       
 46035 +while test $# -ne 0; do
       
 46036    case $1 in
       
 46037 -    -c) shift
       
 46038 -        continue;;
       
 46039 +    -c) ;;
       
 46040  
       
 46041 -    -d) dir_arg=true
       
 46042 -        shift
       
 46043 -        continue;;
       
 46044 +    -C) copy_on_change=true;;
       
 46045 +
       
 46046 +    -d) dir_arg=true;;
       
 46047  
       
 46048      -g) chgrpcmd="$chgrpprog $2"
       
 46049 -        shift
       
 46050 -        shift
       
 46051 -        continue;;
       
 46052 +	shift;;
       
 46053  
       
 46054 -    --help) echo "$usage"; exit 0;;
       
 46055 +    --help) echo "$usage"; exit $?;;
       
 46056  
       
 46057 -    -m) chmodcmd="$chmodprog $2"
       
 46058 -        shift
       
 46059 -        shift
       
 46060 -        continue;;
       
 46061 +    -m) mode=$2
       
 46062 +	case $mode in
       
 46063 +	  *' '* | *'	'* | *'
       
 46064 +'*	  | *'*'* | *'?'* | *'['*)
       
 46065 +	    echo "$0: invalid mode: $mode" >&2
       
 46066 +	    exit 1;;
       
 46067 +	esac
       
 46068 +	shift;;
       
 46069  
       
 46070      -o) chowncmd="$chownprog $2"
       
 46071 -        shift
       
 46072 -        shift
       
 46073 -        continue;;
       
 46074 +	shift;;
       
 46075  
       
 46076 -    -s) stripcmd=$stripprog
       
 46077 -        shift
       
 46078 -        continue;;
       
 46079 +    -s) stripcmd=$stripprog;;
       
 46080  
       
 46081 -    -t) dstarg=$2
       
 46082 -	shift
       
 46083 -	shift
       
 46084 -	continue;;
       
 46085 +    -t) dst_arg=$2
       
 46086 +	# Protect names problematic for 'test' and other utilities.
       
 46087 +	case $dst_arg in
       
 46088 +	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
       
 46089 +	esac
       
 46090 +	shift;;
       
 46091  
       
 46092 -    -T) no_target_directory=true
       
 46093 -	shift
       
 46094 -	continue;;
       
 46095 +    -T) no_target_directory=true;;
       
 46096  
       
 46097 -    --version) echo "$0 $scriptversion"; exit 0;;
       
 46098 +    --version) echo "$0 $scriptversion"; exit $?;;
       
 46099  
       
 46100 -    *)  # When -d is used, all remaining arguments are directories to create.
       
 46101 -	# When -t is used, the destination is already specified.
       
 46102 -	test -n "$dir_arg$dstarg" && break
       
 46103 -        # Otherwise, the last argument is the destination.  Remove it from $@.
       
 46104 -	for arg
       
 46105 -	do
       
 46106 -          if test -n "$dstarg"; then
       
 46107 -	    # $@ is not empty: it contains at least $arg.
       
 46108 -	    set fnord "$@" "$dstarg"
       
 46109 -	    shift # fnord
       
 46110 -	  fi
       
 46111 -	  shift # arg
       
 46112 -	  dstarg=$arg
       
 46113 -	done
       
 46114 +    --)	shift
       
 46115  	break;;
       
 46116 +
       
 46117 +    -*)	echo "$0: invalid option: $1" >&2
       
 46118 +	exit 1;;
       
 46119 +
       
 46120 +    *)  break;;
       
 46121    esac
       
 46122 +  shift
       
 46123  done
       
 46124  
       
 46125 -if test -z "$1"; then
       
 46126 +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
       
 46127 +  # When -d is used, all remaining arguments are directories to create.
       
 46128 +  # When -t is used, the destination is already specified.
       
 46129 +  # Otherwise, the last argument is the destination.  Remove it from $@.
       
 46130 +  for arg
       
 46131 +  do
       
 46132 +    if test -n "$dst_arg"; then
       
 46133 +      # $@ is not empty: it contains at least $arg.
       
 46134 +      set fnord "$@" "$dst_arg"
       
 46135 +      shift # fnord
       
 46136 +    fi
       
 46137 +    shift # arg
       
 46138 +    dst_arg=$arg
       
 46139 +    # Protect names problematic for 'test' and other utilities.
       
 46140 +    case $dst_arg in
       
 46141 +      -* | [=\(\)!]) dst_arg=./$dst_arg;;
       
 46142 +    esac
       
 46143 +  done
       
 46144 +fi
       
 46145 +
       
 46146 +if test $# -eq 0; then
       
 46147    if test -z "$dir_arg"; then
       
 46148      echo "$0: no input file specified." >&2
       
 46149      exit 1
       
 46150    fi
       
 46151 -  # It's OK to call `install-sh -d' without argument.
       
 46152 +  # It's OK to call 'install-sh -d' without argument.
       
 46153    # This can happen when creating conditional directories.
       
 46154    exit 0
       
 46155  fi
       
 46156  
       
 46157 +if test -z "$dir_arg"; then
       
 46158 +  do_exit='(exit $ret); exit $ret'
       
 46159 +  trap "ret=129; $do_exit" 1
       
 46160 +  trap "ret=130; $do_exit" 2
       
 46161 +  trap "ret=141; $do_exit" 13
       
 46162 +  trap "ret=143; $do_exit" 15
       
 46163 +
       
 46164 +  # Set umask so as not to create temps with too-generous modes.
       
 46165 +  # However, 'strip' requires both read and write access to temps.
       
 46166 +  case $mode in
       
 46167 +    # Optimize common cases.
       
 46168 +    *644) cp_umask=133;;
       
 46169 +    *755) cp_umask=22;;
       
 46170 +
       
 46171 +    *[0-7])
       
 46172 +      if test -z "$stripcmd"; then
       
 46173 +	u_plus_rw=
       
 46174 +      else
       
 46175 +	u_plus_rw='% 200'
       
 46176 +      fi
       
 46177 +      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
       
 46178 +    *)
       
 46179 +      if test -z "$stripcmd"; then
       
 46180 +	u_plus_rw=
       
 46181 +      else
       
 46182 +	u_plus_rw=,u+rw
       
 46183 +      fi
       
 46184 +      cp_umask=$mode$u_plus_rw;;
       
 46185 +  esac
       
 46186 +fi
       
 46187 +
       
 46188  for src
       
 46189  do
       
 46190 -  # Protect names starting with `-'.
       
 46191 +  # Protect names problematic for 'test' and other utilities.
       
 46192    case $src in
       
 46193 -    -*) src=./$src ;;
       
 46194 +    -* | [=\(\)!]) src=./$src;;
       
 46195    esac
       
 46196  
       
 46197    if test -n "$dir_arg"; then
       
 46198      dst=$src
       
 46199 -    src=
       
 46200 +    dstdir=$dst
       
 46201 +    test -d "$dstdir"
       
 46202 +    dstdir_status=$?
       
 46203 +  else
       
 46204  
       
 46205 -    if test -d "$dst"; then
       
 46206 -      mkdircmd=:
       
 46207 -      chmodcmd=
       
 46208 -    else
       
 46209 -      mkdircmd=$mkdirprog
       
 46210 -    fi
       
 46211 -  else
       
 46212      # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
       
 46213      # might cause directories to be created, which would be especially bad
       
 46214      # if $src (and thus $dsttmp) contains '*'.
       
 46215      if test ! -f "$src" && test ! -d "$src"; then
       
 46216        echo "$0: $src does not exist." >&2
       
 46217        exit 1
       
 46218      fi
       
 46219  
       
 46220 -    if test -z "$dstarg"; then
       
 46221 +    if test -z "$dst_arg"; then
       
 46222        echo "$0: no destination specified." >&2
       
 46223        exit 1
       
 46224      fi
       
 46225 -
       
 46226 -    dst=$dstarg
       
 46227 -    # Protect names starting with `-'.
       
 46228 -    case $dst in
       
 46229 -      -*) dst=./$dst ;;
       
 46230 -    esac
       
 46231 +    dst=$dst_arg
       
 46232  
       
 46233      # If destination is a directory, append the input filename; won't work
       
 46234      # if double slashes aren't ignored.
       
 46235      if test -d "$dst"; then
       
 46236        if test -n "$no_target_directory"; then
       
 46237 -	echo "$0: $dstarg: Is a directory" >&2
       
 46238 +	echo "$0: $dst_arg: Is a directory" >&2
       
 46239  	exit 1
       
 46240        fi
       
 46241 -      dst=$dst/`basename "$src"`
       
 46242 +      dstdir=$dst
       
 46243 +      dst=$dstdir/`basename "$src"`
       
 46244 +      dstdir_status=0
       
 46245 +    else
       
 46246 +      # Prefer dirname, but fall back on a substitute if dirname fails.
       
 46247 +      dstdir=`
       
 46248 +	(dirname "$dst") 2>/dev/null ||
       
 46249 +	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
       
 46250 +	     X"$dst" : 'X\(//\)[^/]' \| \
       
 46251 +	     X"$dst" : 'X\(//\)$' \| \
       
 46252 +	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
       
 46253 +	echo X"$dst" |
       
 46254 +	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
       
 46255 +		   s//\1/
       
 46256 +		   q
       
 46257 +		 }
       
 46258 +		 /^X\(\/\/\)[^/].*/{
       
 46259 +		   s//\1/
       
 46260 +		   q
       
 46261 +		 }
       
 46262 +		 /^X\(\/\/\)$/{
       
 46263 +		   s//\1/
       
 46264 +		   q
       
 46265 +		 }
       
 46266 +		 /^X\(\/\).*/{
       
 46267 +		   s//\1/
       
 46268 +		   q
       
 46269 +		 }
       
 46270 +		 s/.*/./; q'
       
 46271 +      `
       
 46272 +
       
 46273 +      test -d "$dstdir"
       
 46274 +      dstdir_status=$?
       
 46275      fi
       
 46276    fi
       
 46277  
       
 46278 -  # This sed command emulates the dirname command.
       
 46279 -  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
       
 46280 +  obsolete_mkdir_used=false
       
 46281  
       
 46282 -  # Make sure that the destination directory exists.
       
 46283 +  if test $dstdir_status != 0; then
       
 46284 +    case $posix_mkdir in
       
 46285 +      '')
       
 46286 +	# Create intermediate dirs using mode 755 as modified by the umask.
       
 46287 +	# This is like FreeBSD 'install' as of 1997-10-28.
       
 46288 +	umask=`umask`
       
 46289 +	case $stripcmd.$umask in
       
 46290 +	  # Optimize common cases.
       
 46291 +	  *[2367][2367]) mkdir_umask=$umask;;
       
 46292 +	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
       
 46293  
       
 46294 -  # Skip lots of stat calls in the usual case.
       
 46295 -  if test ! -d "$dstdir"; then
       
 46296 -    defaultIFS='
       
 46297 -	 '
       
 46298 -    IFS="${IFS-$defaultIFS}"
       
 46299 +	  *[0-7])
       
 46300 +	    mkdir_umask=`expr $umask + 22 \
       
 46301 +	      - $umask % 100 % 40 + $umask % 20 \
       
 46302 +	      - $umask % 10 % 4 + $umask % 2
       
 46303 +	    `;;
       
 46304 +	  *) mkdir_umask=$umask,go-w;;
       
 46305 +	esac
       
 46306  
       
 46307 -    oIFS=$IFS
       
 46308 -    # Some sh's can't handle IFS=/ for some reason.
       
 46309 -    IFS='%'
       
 46310 -    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
       
 46311 -    shift
       
 46312 -    IFS=$oIFS
       
 46313 +	# With -d, create the new directory with the user-specified mode.
       
 46314 +	# Otherwise, rely on $mkdir_umask.
       
 46315 +	if test -n "$dir_arg"; then
       
 46316 +	  mkdir_mode=-m$mode
       
 46317 +	else
       
 46318 +	  mkdir_mode=
       
 46319 +	fi
       
 46320  
       
 46321 -    pathcomp=
       
 46322 +	posix_mkdir=false
       
 46323 +	case $umask in
       
 46324 +	  *[123567][0-7][0-7])
       
 46325 +	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
       
 46326 +	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
       
 46327 +	    ;;
       
 46328 +	  *)
       
 46329 +	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
       
 46330 +	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
       
 46331  
       
 46332 -    while test $# -ne 0 ; do
       
 46333 -      pathcomp=$pathcomp$1
       
 46334 +	    if (umask $mkdir_umask &&
       
 46335 +		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
       
 46336 +	    then
       
 46337 +	      if test -z "$dir_arg" || {
       
 46338 +		   # Check for POSIX incompatibilities with -m.
       
 46339 +		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
       
 46340 +		   # other-writable bit of parent directory when it shouldn't.
       
 46341 +		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
       
 46342 +		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
       
 46343 +		   case $ls_ld_tmpdir in
       
 46344 +		     d????-?r-*) different_mode=700;;
       
 46345 +		     d????-?--*) different_mode=755;;
       
 46346 +		     *) false;;
       
 46347 +		   esac &&
       
 46348 +		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
       
 46349 +		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
       
 46350 +		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
       
 46351 +		   }
       
 46352 +		 }
       
 46353 +	      then posix_mkdir=:
       
 46354 +	      fi
       
 46355 +	      rmdir "$tmpdir/d" "$tmpdir"
       
 46356 +	    else
       
 46357 +	      # Remove any dirs left behind by ancient mkdir implementations.
       
 46358 +	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
       
 46359 +	    fi
       
 46360 +	    trap '' 0;;
       
 46361 +	esac;;
       
 46362 +    esac
       
 46363 +
       
 46364 +    if
       
 46365 +      $posix_mkdir && (
       
 46366 +	umask $mkdir_umask &&
       
 46367 +	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
       
 46368 +      )
       
 46369 +    then :
       
 46370 +    else
       
 46371 +
       
 46372 +      # The umask is ridiculous, or mkdir does not conform to POSIX,
       
 46373 +      # or it failed possibly due to a race condition.  Create the
       
 46374 +      # directory the slow way, step by step, checking for races as we go.
       
 46375 +
       
 46376 +      case $dstdir in
       
 46377 +	/*) prefix='/';;
       
 46378 +	[-=\(\)!]*) prefix='./';;
       
 46379 +	*)  prefix='';;
       
 46380 +      esac
       
 46381 +
       
 46382 +      eval "$initialize_posix_glob"
       
 46383 +
       
 46384 +      oIFS=$IFS
       
 46385 +      IFS=/
       
 46386 +      $posix_glob set -f
       
 46387 +      set fnord $dstdir
       
 46388        shift
       
 46389 -      if test ! -d "$pathcomp"; then
       
 46390 -        $mkdirprog "$pathcomp"
       
 46391 -	# mkdir can fail with a `File exist' error in case several
       
 46392 -	# install-sh are creating the directory concurrently.  This
       
 46393 -	# is OK.
       
 46394 -	test -d "$pathcomp" || exit
       
 46395 +      $posix_glob set +f
       
 46396 +      IFS=$oIFS
       
 46397 +
       
 46398 +      prefixes=
       
 46399 +
       
 46400 +      for d
       
 46401 +      do
       
 46402 +	test X"$d" = X && continue
       
 46403 +
       
 46404 +	prefix=$prefix$d
       
 46405 +	if test -d "$prefix"; then
       
 46406 +	  prefixes=
       
 46407 +	else
       
 46408 +	  if $posix_mkdir; then
       
 46409 +	    (umask=$mkdir_umask &&
       
 46410 +	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
       
 46411 +	    # Don't fail if two instances are running concurrently.
       
 46412 +	    test -d "$prefix" || exit 1
       
 46413 +	  else
       
 46414 +	    case $prefix in
       
 46415 +	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
       
 46416 +	      *) qprefix=$prefix;;
       
 46417 +	    esac
       
 46418 +	    prefixes="$prefixes '$qprefix'"
       
 46419 +	  fi
       
 46420 +	fi
       
 46421 +	prefix=$prefix/
       
 46422 +      done
       
 46423 +
       
 46424 +      if test -n "$prefixes"; then
       
 46425 +	# Don't fail if two instances are running concurrently.
       
 46426 +	(umask $mkdir_umask &&
       
 46427 +	 eval "\$doit_exec \$mkdirprog $prefixes") ||
       
 46428 +	  test -d "$dstdir" || exit 1
       
 46429 +	obsolete_mkdir_used=true
       
 46430        fi
       
 46431 -      pathcomp=$pathcomp/
       
 46432 -    done
       
 46433 +    fi
       
 46434    fi
       
 46435  
       
 46436    if test -n "$dir_arg"; then
       
 46437 -    $doit $mkdircmd "$dst" \
       
 46438 -      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
       
 46439 -      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
       
 46440 -      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
       
 46441 -      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
       
 46442 -
       
 46443 +    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
       
 46444 +    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
       
 46445 +    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
       
 46446 +      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
       
 46447    else
       
 46448 -    dstfile=`basename "$dst"`
       
 46449  
       
 46450      # Make a couple of temp file names in the proper directory.
       
 46451      dsttmp=$dstdir/_inst.$$_
       
 46452      rmtmp=$dstdir/_rm.$$_
       
 46453  
       
 46454      # Trap to clean up those temp files at exit.
       
 46455      trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
       
 46456 -    trap '(exit $?); exit' 1 2 13 15
       
 46457  
       
 46458      # Copy the file name to the temp name.
       
 46459 -    $doit $cpprog "$src" "$dsttmp" &&
       
 46460 +    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
       
 46461  
       
 46462      # and set any options; do chmod last to preserve setuid bits.
       
 46463      #
       
 46464      # If any of these fail, we abort the whole thing.  If we want to
       
 46465      # ignore errors from any of these, just make sure not to ignore
       
 46466      # errors from the above "$doit $cpprog $src $dsttmp" command.
       
 46467      #
       
 46468 -    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
       
 46469 -      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
       
 46470 -      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
       
 46471 -      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
       
 46472 +    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
       
 46473 +    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
       
 46474 +    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
       
 46475 +    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
       
 46476  
       
 46477 -    # Now rename the file to the real destination.
       
 46478 -    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
       
 46479 -      || {
       
 46480 -	   # The rename failed, perhaps because mv can't rename something else
       
 46481 -	   # to itself, or perhaps because mv is so ancient that it does not
       
 46482 -	   # support -f.
       
 46483 +    # If -C, don't bother to copy if it wouldn't change the file.
       
 46484 +    if $copy_on_change &&
       
 46485 +       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
       
 46486 +       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
       
 46487  
       
 46488 -	   # Now remove or move aside any old file at destination location.
       
 46489 -	   # We try this two ways since rm can't unlink itself on some
       
 46490 -	   # systems and the destination file might be busy for other
       
 46491 -	   # reasons.  In this case, the final cleanup might fail but the new
       
 46492 -	   # file should still install successfully.
       
 46493 -	   {
       
 46494 -	     if test -f "$dstdir/$dstfile"; then
       
 46495 -	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
       
 46496 -	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
       
 46497 -	       || {
       
 46498 -		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
       
 46499 -		 (exit 1); exit 1
       
 46500 -	       }
       
 46501 -	     else
       
 46502 -	       :
       
 46503 -	     fi
       
 46504 -	   } &&
       
 46505 +       eval "$initialize_posix_glob" &&
       
 46506 +       $posix_glob set -f &&
       
 46507 +       set X $old && old=:$2:$4:$5:$6 &&
       
 46508 +       set X $new && new=:$2:$4:$5:$6 &&
       
 46509 +       $posix_glob set +f &&
       
 46510  
       
 46511 -	   # Now rename the file to the real destination.
       
 46512 -	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
       
 46513 -	 }
       
 46514 -    }
       
 46515 -  fi || { (exit 1); exit 1; }
       
 46516 +       test "$old" = "$new" &&
       
 46517 +       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
       
 46518 +    then
       
 46519 +      rm -f "$dsttmp"
       
 46520 +    else
       
 46521 +      # Rename the file to the real destination.
       
 46522 +      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
       
 46523 +
       
 46524 +      # The rename failed, perhaps because mv can't rename something else
       
 46525 +      # to itself, or perhaps because mv is so ancient that it does not
       
 46526 +      # support -f.
       
 46527 +      {
       
 46528 +	# Now remove or move aside any old file at destination location.
       
 46529 +	# We try this two ways since rm can't unlink itself on some
       
 46530 +	# systems and the destination file might be busy for other
       
 46531 +	# reasons.  In this case, the final cleanup might fail but the new
       
 46532 +	# file should still install successfully.
       
 46533 +	{
       
 46534 +	  test ! -f "$dst" ||
       
 46535 +	  $doit $rmcmd -f "$dst" 2>/dev/null ||
       
 46536 +	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
       
 46537 +	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
       
 46538 +	  } ||
       
 46539 +	  { echo "$0: cannot unlink or rename $dst" >&2
       
 46540 +	    (exit 1); exit 1
       
 46541 +	  }
       
 46542 +	} &&
       
 46543 +
       
 46544 +	# Now rename the file to the real destination.
       
 46545 +	$doit $mvcmd "$dsttmp" "$dst"
       
 46546 +      }
       
 46547 +    fi || exit 1
       
 46548 +
       
 46549 +    trap '' 0
       
 46550 +  fi
       
 46551  done
       
 46552  
       
 46553 -# The final little trick to "correctly" pass the exit status to the exit trap.
       
 46554 -{
       
 46555 -  (exit 0); exit 0
       
 46556 -}
       
 46557 -
       
 46558  # Local variables:
       
 46559  # eval: (add-hook 'write-file-hooks 'time-stamp)
       
 46560  # time-stamp-start: "scriptversion="
       
 46561  # time-stamp-format: "%:y-%02m-%02d.%02H"
       
 46562 -# time-stamp-end: "$"
       
 46563 +# time-stamp-time-zone: "UTC"
       
 46564 +# time-stamp-end: "; # UTC"
       
 46565  # End:
       
 46566 diff --git a/js/src/ctypes/libffi/libffi.pc.in b/js/src/ctypes/libffi/libffi.pc.in
       
 46567 --- a/js/src/ctypes/libffi/libffi.pc.in
       
 46568 +++ b/js/src/ctypes/libffi/libffi.pc.in
       
 46569 @@ -1,10 +1,11 @@
       
 46570  prefix=@prefix@
       
 46571  exec_prefix=@exec_prefix@
       
 46572  libdir=@libdir@
       
 46573 +toolexeclibdir=@toolexeclibdir@
       
 46574  includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
       
 46575  
       
 46576  Name: @PACKAGE_NAME@
       
 46577  Description: Library supporting Foreign Function Interfaces
       
 46578  Version: @PACKAGE_VERSION@
       
 46579 -Libs: -L${libdir} -lffi
       
 46580 +Libs: -L${toolexeclibdir} -lffi
       
 46581  Cflags: -I${includedir}
       
 46582 diff --git a/js/src/ctypes/libffi/libffi.xcodeproj/project.pbxproj b/js/src/ctypes/libffi/libffi.xcodeproj/project.pbxproj
       
 46583 new file mode 100644
       
 46584 --- /dev/null
       
 46585 +++ b/js/src/ctypes/libffi/libffi.xcodeproj/project.pbxproj
       
 46586 @@ -0,0 +1,637 @@
       
 46587 +// !$*UTF8*$!
       
 46588 +{
       
 46589 +	archiveVersion = 1;
       
 46590 +	classes = {
       
 46591 +	};
       
 46592 +	objectVersion = 46;
       
 46593 +	objects = {
       
 46594 +
       
 46595 +/* Begin PBXBuildFile section */
       
 46596 +		DBFA714A187F1D8600A76262 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713E187F1D8600A76262 /* ffi.h */; };
       
 46597 +		DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713F187F1D8600A76262 /* ffi_common.h */; };
       
 46598 +		DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7140187F1D8600A76262 /* fficonfig.h */; };
       
 46599 +		DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7141187F1D8600A76262 /* ffitarget.h */; };
       
 46600 +		DBFA714E187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; };
       
 46601 +		DBFA714F187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; };
       
 46602 +		DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; };
       
 46603 +		DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; };
       
 46604 +		DBFA7158187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; };
       
 46605 +		DBFA7159187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; };
       
 46606 +		DBFA715A187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; };
       
 46607 +		DBFA715B187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; };
       
 46608 +		DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716C187F1D9B00A76262 /* ffi_arm64.c */; };
       
 46609 +		DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716D187F1D9B00A76262 /* sysv_arm64.S */; };
       
 46610 +		DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716F187F1D9B00A76262 /* ffi_armv7.c */; };
       
 46611 +		DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7170187F1D9B00A76262 /* sysv_armv7.S */; };
       
 46612 +		DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */; };
       
 46613 +		DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */; };
       
 46614 +		DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7174187F1D9B00A76262 /* darwin_i386.S */; };
       
 46615 +		DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */; };
       
 46616 +		DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7176187F1D9B00A76262 /* ffi_i386.c */; };
       
 46617 +		DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7182187F1DA100A76262 /* ffi_i386.h */; };
       
 46618 +		DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7183187F1DA100A76262 /* ffi_x86_64.h */; };
       
 46619 +		DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7184187F1DA100A76262 /* fficonfig_i386.h */; };
       
 46620 +		DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */; };
       
 46621 +		DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7186187F1DA100A76262 /* ffitarget_i386.h */; };
       
 46622 +		DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */; };
       
 46623 +		DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */; };
       
 46624 +		DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718B187F1DA100A76262 /* darwin_i386.S */; };
       
 46625 +		DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */; };
       
 46626 +		DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718D187F1DA100A76262 /* ffi_i386.c */; };
       
 46627 +/* End PBXBuildFile section */
       
 46628 +
       
 46629 +/* Begin PBXCopyFilesBuildPhase section */
       
 46630 +		DB13B1641849DF1E0010F42D /* CopyFiles */ = {
       
 46631 +			isa = PBXCopyFilesBuildPhase;
       
 46632 +			buildActionMask = 8;
       
 46633 +			dstPath = "include/$(PRODUCT_NAME)";
       
 46634 +			dstSubfolderSpec = 16;
       
 46635 +			files = (
       
 46636 +			);
       
 46637 +			runOnlyForDeploymentPostprocessing = 1;
       
 46638 +		};
       
 46639 +/* End PBXCopyFilesBuildPhase section */
       
 46640 +
       
 46641 +/* Begin PBXFileReference section */
       
 46642 +		DB13B1661849DF1E0010F42D /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
       
 46643 +		DB13B1911849DF510010F42D /* ffi.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = ffi.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
       
 46644 +		DBFA713E187F1D8600A76262 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
       
 46645 +		DBFA713F187F1D8600A76262 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
       
 46646 +		DBFA7140187F1D8600A76262 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
       
 46647 +		DBFA7141187F1D8600A76262 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
       
 46648 +		DBFA7143187F1D8600A76262 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = "<group>"; };
       
 46649 +		DBFA7145187F1D8600A76262 /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = "<group>"; };
       
 46650 +		DBFA7147187F1D8600A76262 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = "<group>"; };
       
 46651 +		DBFA7148187F1D8600A76262 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = "<group>"; };
       
 46652 +		DBFA7149187F1D8600A76262 /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = "<group>"; };
       
 46653 +		DBFA715E187F1D9B00A76262 /* ffi_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm64.h; sourceTree = "<group>"; };
       
 46654 +		DBFA715F187F1D9B00A76262 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = "<group>"; };
       
 46655 +		DBFA7160187F1D9B00A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
       
 46656 +		DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
       
 46657 +		DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm64.h; sourceTree = "<group>"; };
       
 46658 +		DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = "<group>"; };
       
 46659 +		DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
       
 46660 +		DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
       
 46661 +		DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm64.h; sourceTree = "<group>"; };
       
 46662 +		DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = "<group>"; };
       
 46663 +		DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
       
 46664 +		DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
       
 46665 +		DBFA716C187F1D9B00A76262 /* ffi_arm64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_arm64.c; sourceTree = "<group>"; };
       
 46666 +		DBFA716D187F1D9B00A76262 /* sysv_arm64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_arm64.S; sourceTree = "<group>"; };
       
 46667 +		DBFA716F187F1D9B00A76262 /* ffi_armv7.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_armv7.c; sourceTree = "<group>"; };
       
 46668 +		DBFA7170187F1D9B00A76262 /* sysv_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_armv7.S; sourceTree = "<group>"; };
       
 46669 +		DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline_armv7.S; sourceTree = "<group>"; };
       
 46670 +		DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = "<group>"; };
       
 46671 +		DBFA7174187F1D9B00A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = "<group>"; };
       
 46672 +		DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = "<group>"; };
       
 46673 +		DBFA7176187F1D9B00A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = "<group>"; };
       
 46674 +		DBFA7182187F1DA100A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
       
 46675 +		DBFA7183187F1DA100A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
       
 46676 +		DBFA7184187F1DA100A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
       
 46677 +		DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
       
 46678 +		DBFA7186187F1DA100A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
       
 46679 +		DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
       
 46680 +		DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = "<group>"; };
       
 46681 +		DBFA718B187F1DA100A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = "<group>"; };
       
 46682 +		DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = "<group>"; };
       
 46683 +		DBFA718D187F1DA100A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = "<group>"; };
       
 46684 +/* End PBXFileReference section */
       
 46685 +
       
 46686 +/* Begin PBXGroup section */
       
 46687 +		DB13B15B1849DEB70010F42D = {
       
 46688 +			isa = PBXGroup;
       
 46689 +			children = (
       
 46690 +				DBFA713C187F1D8600A76262 /* darwin_common */,
       
 46691 +				DBFA715C187F1D9B00A76262 /* darwin_ios */,
       
 46692 +				DBFA7180187F1DA100A76262 /* darwin_osx */,
       
 46693 +				DB13B1671849DF1E0010F42D /* Products */,
       
 46694 +			);
       
 46695 +			sourceTree = "<group>";
       
 46696 +		};
       
 46697 +		DB13B1671849DF1E0010F42D /* Products */ = {
       
 46698 +			isa = PBXGroup;
       
 46699 +			children = (
       
 46700 +				DB13B1661849DF1E0010F42D /* libffi.a */,
       
 46701 +				DB13B1911849DF510010F42D /* ffi.dylib */,
       
 46702 +			);
       
 46703 +			name = Products;
       
 46704 +			sourceTree = "<group>";
       
 46705 +		};
       
 46706 +		DBFA713C187F1D8600A76262 /* darwin_common */ = {
       
 46707 +			isa = PBXGroup;
       
 46708 +			children = (
       
 46709 +				DBFA713D187F1D8600A76262 /* include */,
       
 46710 +				DBFA7142187F1D8600A76262 /* src */,
       
 46711 +			);
       
 46712 +			path = "darwin_common";
       
 46713 +			sourceTree = "<group>";
       
 46714 +		};
       
 46715 +		DBFA713D187F1D8600A76262 /* include */ = {
       
 46716 +			isa = PBXGroup;
       
 46717 +			children = (
       
 46718 +				DBFA713E187F1D8600A76262 /* ffi.h */,
       
 46719 +				DBFA713F187F1D8600A76262 /* ffi_common.h */,
       
 46720 +				DBFA7140187F1D8600A76262 /* fficonfig.h */,
       
 46721 +				DBFA7141187F1D8600A76262 /* ffitarget.h */,
       
 46722 +			);
       
 46723 +			path = include;
       
 46724 +			sourceTree = "<group>";
       
 46725 +		};
       
 46726 +		DBFA7142187F1D8600A76262 /* src */ = {
       
 46727 +			isa = PBXGroup;
       
 46728 +			children = (
       
 46729 +				DBFA7143187F1D8600A76262 /* closures.c */,
       
 46730 +				DBFA7145187F1D8600A76262 /* dlmalloc.c */,
       
 46731 +				DBFA7147187F1D8600A76262 /* prep_cif.c */,
       
 46732 +				DBFA7148187F1D8600A76262 /* raw_api.c */,
       
 46733 +				DBFA7149187F1D8600A76262 /* types.c */,
       
 46734 +			);
       
 46735 +			path = src;
       
 46736 +			sourceTree = "<group>";
       
 46737 +		};
       
 46738 +		DBFA715C187F1D9B00A76262 /* darwin_ios */ = {
       
 46739 +			isa = PBXGroup;
       
 46740 +			children = (
       
 46741 +				DBFA715D187F1D9B00A76262 /* include */,
       
 46742 +				DBFA716A187F1D9B00A76262 /* src */,
       
 46743 +			);
       
 46744 +			path = "darwin_ios";
       
 46745 +			sourceTree = "<group>";
       
 46746 +		};
       
 46747 +		DBFA715D187F1D9B00A76262 /* include */ = {
       
 46748 +			isa = PBXGroup;
       
 46749 +			children = (
       
 46750 +				DBFA715E187F1D9B00A76262 /* ffi_arm64.h */,
       
 46751 +				DBFA715F187F1D9B00A76262 /* ffi_armv7.h */,
       
 46752 +				DBFA7160187F1D9B00A76262 /* ffi_i386.h */,
       
 46753 +				DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */,
       
 46754 +				DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */,
       
 46755 +				DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */,
       
 46756 +				DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */,
       
 46757 +				DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */,
       
 46758 +				DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */,
       
 46759 +				DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */,
       
 46760 +				DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */,
       
 46761 +				DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */,
       
 46762 +			);
       
 46763 +			path = include;
       
 46764 +			sourceTree = "<group>";
       
 46765 +		};
       
 46766 +		DBFA716A187F1D9B00A76262 /* src */ = {
       
 46767 +			isa = PBXGroup;
       
 46768 +			children = (
       
 46769 +				DBFA716B187F1D9B00A76262 /* aarch64 */,
       
 46770 +				DBFA716E187F1D9B00A76262 /* arm */,
       
 46771 +				DBFA7172187F1D9B00A76262 /* x86 */,
       
 46772 +			);
       
 46773 +			path = src;
       
 46774 +			sourceTree = "<group>";
       
 46775 +		};
       
 46776 +		DBFA716B187F1D9B00A76262 /* aarch64 */ = {
       
 46777 +			isa = PBXGroup;
       
 46778 +			children = (
       
 46779 +				DBFA716C187F1D9B00A76262 /* ffi_arm64.c */,
       
 46780 +				DBFA716D187F1D9B00A76262 /* sysv_arm64.S */,
       
 46781 +			);
       
 46782 +			path = aarch64;
       
 46783 +			sourceTree = "<group>";
       
 46784 +		};
       
 46785 +		DBFA716E187F1D9B00A76262 /* arm */ = {
       
 46786 +			isa = PBXGroup;
       
 46787 +			children = (
       
 46788 +				DBFA716F187F1D9B00A76262 /* ffi_armv7.c */,
       
 46789 +				DBFA7170187F1D9B00A76262 /* sysv_armv7.S */,
       
 46790 +				DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */,
       
 46791 +			);
       
 46792 +			path = arm;
       
 46793 +			sourceTree = "<group>";
       
 46794 +		};
       
 46795 +		DBFA7172187F1D9B00A76262 /* x86 */ = {
       
 46796 +			isa = PBXGroup;
       
 46797 +			children = (
       
 46798 +				DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */,
       
 46799 +				DBFA7174187F1D9B00A76262 /* darwin_i386.S */,
       
 46800 +				DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */,
       
 46801 +				DBFA7176187F1D9B00A76262 /* ffi_i386.c */,
       
 46802 +			);
       
 46803 +			path = x86;
       
 46804 +			sourceTree = "<group>";
       
 46805 +		};
       
 46806 +		DBFA7180187F1DA100A76262 /* darwin_osx */ = {
       
 46807 +			isa = PBXGroup;
       
 46808 +			children = (
       
 46809 +				DBFA7181187F1DA100A76262 /* include */,
       
 46810 +				DBFA7188187F1DA100A76262 /* src */,
       
 46811 +			);
       
 46812 +			path = "darwin_osx";
       
 46813 +			sourceTree = "<group>";
       
 46814 +		};
       
 46815 +		DBFA7181187F1DA100A76262 /* include */ = {
       
 46816 +			isa = PBXGroup;
       
 46817 +			children = (
       
 46818 +				DBFA7182187F1DA100A76262 /* ffi_i386.h */,
       
 46819 +				DBFA7183187F1DA100A76262 /* ffi_x86_64.h */,
       
 46820 +				DBFA7184187F1DA100A76262 /* fficonfig_i386.h */,
       
 46821 +				DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */,
       
 46822 +				DBFA7186187F1DA100A76262 /* ffitarget_i386.h */,
       
 46823 +				DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */,
       
 46824 +			);
       
 46825 +			path = include;
       
 46826 +			sourceTree = "<group>";
       
 46827 +		};
       
 46828 +		DBFA7188187F1DA100A76262 /* src */ = {
       
 46829 +			isa = PBXGroup;
       
 46830 +			children = (
       
 46831 +				DBFA7189187F1DA100A76262 /* x86 */,
       
 46832 +			);
       
 46833 +			path = src;
       
 46834 +			sourceTree = "<group>";
       
 46835 +		};
       
 46836 +		DBFA7189187F1DA100A76262 /* x86 */ = {
       
 46837 +			isa = PBXGroup;
       
 46838 +			children = (
       
 46839 +				DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */,
       
 46840 +				DBFA718B187F1DA100A76262 /* darwin_i386.S */,
       
 46841 +				DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */,
       
 46842 +				DBFA718D187F1DA100A76262 /* ffi_i386.c */,
       
 46843 +			);
       
 46844 +			path = x86;
       
 46845 +			sourceTree = "<group>";
       
 46846 +		};
       
 46847 +/* End PBXGroup section */
       
 46848 +
       
 46849 +/* Begin PBXHeadersBuildPhase section */
       
 46850 +		DB13B18F1849DF510010F42D /* Headers */ = {
       
 46851 +			isa = PBXHeadersBuildPhase;
       
 46852 +			buildActionMask = 2147483647;
       
 46853 +			files = (
       
 46854 +				DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */,
       
 46855 +				DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */,
       
 46856 +				DBFA714A187F1D8600A76262 /* ffi.h in Headers */,
       
 46857 +				DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */,
       
 46858 +				DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */,
       
 46859 +				DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */,
       
 46860 +				DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */,
       
 46861 +				DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */,
       
 46862 +				DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */,
       
 46863 +				DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */,
       
 46864 +			);
       
 46865 +			runOnlyForDeploymentPostprocessing = 0;
       
 46866 +		};
       
 46867 +/* End PBXHeadersBuildPhase section */
       
 46868 +
       
 46869 +/* Begin PBXNativeTarget section */
       
 46870 +		DB13B1651849DF1E0010F42D /* libffi-iOS */ = {
       
 46871 +			isa = PBXNativeTarget;
       
 46872 +			buildConfigurationList = DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */;
       
 46873 +			buildPhases = (
       
 46874 +				DB13B3051849E01C0010F42D /* ShellScript */,
       
 46875 +				DB13B1621849DF1E0010F42D /* Sources */,
       
 46876 +				DB13B1641849DF1E0010F42D /* CopyFiles */,
       
 46877 +			);
       
 46878 +			buildRules = (
       
 46879 +			);
       
 46880 +			dependencies = (
       
 46881 +			);
       
 46882 +			name = "libffi-iOS";
       
 46883 +			productName = ffi;
       
 46884 +			productReference = DB13B1661849DF1E0010F42D /* libffi.a */;
       
 46885 +			productType = "com.apple.product-type.library.static";
       
 46886 +		};
       
 46887 +		DB13B1901849DF510010F42D /* libffi-Mac */ = {
       
 46888 +			isa = PBXNativeTarget;
       
 46889 +			buildConfigurationList = DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */;
       
 46890 +			buildPhases = (
       
 46891 +				DB13B3061849E0490010F42D /* ShellScript */,
       
 46892 +				DB13B18D1849DF510010F42D /* Sources */,
       
 46893 +				DB13B18F1849DF510010F42D /* Headers */,
       
 46894 +			);
       
 46895 +			buildRules = (
       
 46896 +			);
       
 46897 +			dependencies = (
       
 46898 +			);
       
 46899 +			name = "libffi-Mac";
       
 46900 +			productName = ffi;
       
 46901 +			productReference = DB13B1911849DF510010F42D /* ffi.dylib */;
       
 46902 +			productType = "com.apple.product-type.library.dynamic";
       
 46903 +		};
       
 46904 +/* End PBXNativeTarget section */
       
 46905 +
       
 46906 +/* Begin PBXProject section */
       
 46907 +		DB13B15C1849DEB70010F42D /* Project object */ = {
       
 46908 +			isa = PBXProject;
       
 46909 +			attributes = {
       
 46910 +				LastUpgradeCheck = 0510;
       
 46911 +			};
       
 46912 +			buildConfigurationList = DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */;
       
 46913 +			compatibilityVersion = "Xcode 3.2";
       
 46914 +			developmentRegion = English;
       
 46915 +			hasScannedForEncodings = 0;
       
 46916 +			knownRegions = (
       
 46917 +				en,
       
 46918 +			);
       
 46919 +			mainGroup = DB13B15B1849DEB70010F42D;
       
 46920 +			productRefGroup = DB13B1671849DF1E0010F42D /* Products */;
       
 46921 +			projectDirPath = "";
       
 46922 +			projectRoot = "";
       
 46923 +			targets = (
       
 46924 +				DB13B1651849DF1E0010F42D /* libffi-iOS */,
       
 46925 +				DB13B1901849DF510010F42D /* libffi-Mac */,
       
 46926 +			);
       
 46927 +		};
       
 46928 +/* End PBXProject section */
       
 46929 +
       
 46930 +/* Begin PBXShellScriptBuildPhase section */
       
 46931 +		DB13B3051849E01C0010F42D /* ShellScript */ = {
       
 46932 +			isa = PBXShellScriptBuildPhase;
       
 46933 +			buildActionMask = 2147483647;
       
 46934 +			files = (
       
 46935 +			);
       
 46936 +			inputPaths = (
       
 46937 +			);
       
 46938 +			outputPaths = (
       
 46939 +			);
       
 46940 +			runOnlyForDeploymentPostprocessing = 0;
       
 46941 +			shellPath = /bin/sh;
       
 46942 +			shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-ios";
       
 46943 +		};
       
 46944 +		DB13B3061849E0490010F42D /* ShellScript */ = {
       
 46945 +			isa = PBXShellScriptBuildPhase;
       
 46946 +			buildActionMask = 2147483647;
       
 46947 +			files = (
       
 46948 +			);
       
 46949 +			inputPaths = (
       
 46950 +			);
       
 46951 +			outputPaths = (
       
 46952 +			);
       
 46953 +			runOnlyForDeploymentPostprocessing = 0;
       
 46954 +			shellPath = /bin/sh;
       
 46955 +			shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-osx";
       
 46956 +		};
       
 46957 +/* End PBXShellScriptBuildPhase section */
       
 46958 +
       
 46959 +/* Begin PBXSourcesBuildPhase section */
       
 46960 +		DB13B1621849DF1E0010F42D /* Sources */ = {
       
 46961 +			isa = PBXSourcesBuildPhase;
       
 46962 +			buildActionMask = 2147483647;
       
 46963 +			files = (
       
 46964 +				DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */,
       
 46965 +				DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */,
       
 46966 +				DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */,
       
 46967 +				DBFA714E187F1D8600A76262 /* closures.c in Sources */,
       
 46968 +				DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */,
       
 46969 +				DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */,
       
 46970 +				DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */,
       
 46971 +				DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */,
       
 46972 +				DBFA7158187F1D8600A76262 /* raw_api.c in Sources */,
       
 46973 +				DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */,
       
 46974 +				DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */,
       
 46975 +				DBFA715A187F1D8600A76262 /* types.c in Sources */,
       
 46976 +				DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */,
       
 46977 +			);
       
 46978 +			runOnlyForDeploymentPostprocessing = 0;
       
 46979 +		};
       
 46980 +		DB13B18D1849DF510010F42D /* Sources */ = {
       
 46981 +			isa = PBXSourcesBuildPhase;
       
 46982 +			buildActionMask = 2147483647;
       
 46983 +			files = (
       
 46984 +				DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */,
       
 46985 +				DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */,
       
 46986 +				DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */,
       
 46987 +				DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */,
       
 46988 +				DBFA715B187F1D8600A76262 /* types.c in Sources */,
       
 46989 +				DBFA7159187F1D8600A76262 /* raw_api.c in Sources */,
       
 46990 +				DBFA714F187F1D8600A76262 /* closures.c in Sources */,
       
 46991 +				DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */,
       
 46992 +			);
       
 46993 +			runOnlyForDeploymentPostprocessing = 0;
       
 46994 +		};
       
 46995 +/* End PBXSourcesBuildPhase section */
       
 46996 +
       
 46997 +/* Begin XCBuildConfiguration section */
       
 46998 +		DB13B1601849DEB70010F42D /* Debug */ = {
       
 46999 +			isa = XCBuildConfiguration;
       
 47000 +			buildSettings = {
       
 47001 +				HEADER_SEARCH_PATHS = (
       
 47002 +					"$(inherited)",
       
 47003 +					"darwin_common/include",
       
 47004 +				);
       
 47005 +				ONLY_ACTIVE_ARCH = YES;
       
 47006 +			};
       
 47007 +			name = Debug;
       
 47008 +		};
       
 47009 +		DB13B1611849DEB70010F42D /* Release */ = {
       
 47010 +			isa = XCBuildConfiguration;
       
 47011 +			buildSettings = {
       
 47012 +				HEADER_SEARCH_PATHS = (
       
 47013 +					"$(inherited)",
       
 47014 +					"darwin_common/include",
       
 47015 +				);
       
 47016 +			};
       
 47017 +			name = Release;
       
 47018 +		};
       
 47019 +		DB13B1871849DF1E0010F42D /* Debug */ = {
       
 47020 +			isa = XCBuildConfiguration;
       
 47021 +			buildSettings = {
       
 47022 +				ALWAYS_SEARCH_USER_PATHS = NO;
       
 47023 +				ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
       
 47024 +				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
       
 47025 +				CLANG_CXX_LIBRARY = "libc++";
       
 47026 +				CLANG_ENABLE_MODULES = YES;
       
 47027 +				CLANG_ENABLE_OBJC_ARC = YES;
       
 47028 +				CLANG_WARN_BOOL_CONVERSION = YES;
       
 47029 +				CLANG_WARN_CONSTANT_CONVERSION = YES;
       
 47030 +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
       
 47031 +				CLANG_WARN_EMPTY_BODY = YES;
       
 47032 +				CLANG_WARN_ENUM_CONVERSION = YES;
       
 47033 +				CLANG_WARN_INT_CONVERSION = YES;
       
 47034 +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
       
 47035 +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
       
 47036 +				COPY_PHASE_STRIP = NO;
       
 47037 +				DSTROOT = /tmp/ffi.dst;
       
 47038 +				GCC_C_LANGUAGE_STANDARD = gnu99;
       
 47039 +				GCC_DYNAMIC_NO_PIC = NO;
       
 47040 +				GCC_OPTIMIZATION_LEVEL = 0;
       
 47041 +				GCC_PREPROCESSOR_DEFINITIONS = (
       
 47042 +					"DEBUG=1",
       
 47043 +					"$(inherited)",
       
 47044 +				);
       
 47045 +				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
       
 47046 +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
       
 47047 +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
       
 47048 +				GCC_WARN_UNDECLARED_SELECTOR = YES;
       
 47049 +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
       
 47050 +				GCC_WARN_UNUSED_FUNCTION = YES;
       
 47051 +				GCC_WARN_UNUSED_VARIABLE = YES;
       
 47052 +				HEADER_SEARCH_PATHS = (
       
 47053 +					"$(inherited)",
       
 47054 +					"darwin_ios/include",
       
 47055 +				);
       
 47056 +				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
       
 47057 +				"IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0;
       
 47058 +				OTHER_LDFLAGS = "-ObjC";
       
 47059 +				PRODUCT_NAME = ffi;
       
 47060 +				SDKROOT = iphoneos;
       
 47061 +				SKIP_INSTALL = YES;
       
 47062 +			};
       
 47063 +			name = Debug;
       
 47064 +		};
       
 47065 +		DB13B1881849DF1E0010F42D /* Release */ = {
       
 47066 +			isa = XCBuildConfiguration;
       
 47067 +			buildSettings = {
       
 47068 +				ALWAYS_SEARCH_USER_PATHS = NO;
       
 47069 +				ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
       
 47070 +				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
       
 47071 +				CLANG_CXX_LIBRARY = "libc++";
       
 47072 +				CLANG_ENABLE_MODULES = YES;
       
 47073 +				CLANG_ENABLE_OBJC_ARC = YES;
       
 47074 +				CLANG_WARN_BOOL_CONVERSION = YES;
       
 47075 +				CLANG_WARN_CONSTANT_CONVERSION = YES;
       
 47076 +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
       
 47077 +				CLANG_WARN_EMPTY_BODY = YES;
       
 47078 +				CLANG_WARN_ENUM_CONVERSION = YES;
       
 47079 +				CLANG_WARN_INT_CONVERSION = YES;
       
 47080 +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
       
 47081 +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
       
 47082 +				COPY_PHASE_STRIP = YES;
       
 47083 +				DSTROOT = /tmp/ffi.dst;
       
 47084 +				ENABLE_NS_ASSERTIONS = NO;
       
 47085 +				GCC_C_LANGUAGE_STANDARD = gnu99;
       
 47086 +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
       
 47087 +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
       
 47088 +				GCC_WARN_UNDECLARED_SELECTOR = YES;
       
 47089 +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
       
 47090 +				GCC_WARN_UNUSED_FUNCTION = YES;
       
 47091 +				GCC_WARN_UNUSED_VARIABLE = YES;
       
 47092 +				HEADER_SEARCH_PATHS = (
       
 47093 +					"$(inherited)",
       
 47094 +					"darwin_ios/include",
       
 47095 +				);
       
 47096 +				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
       
 47097 +				"IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0;
       
 47098 +				OTHER_LDFLAGS = "-ObjC";
       
 47099 +				PRODUCT_NAME = ffi;
       
 47100 +				SDKROOT = iphoneos;
       
 47101 +				SKIP_INSTALL = YES;
       
 47102 +				VALIDATE_PRODUCT = YES;
       
 47103 +			};
       
 47104 +			name = Release;
       
 47105 +		};
       
 47106 +		DB13B1B11849DF520010F42D /* Debug */ = {
       
 47107 +			isa = XCBuildConfiguration;
       
 47108 +			buildSettings = {
       
 47109 +				ALWAYS_SEARCH_USER_PATHS = NO;
       
 47110 +				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
       
 47111 +				CLANG_CXX_LIBRARY = "libc++";
       
 47112 +				CLANG_ENABLE_OBJC_ARC = YES;
       
 47113 +				CLANG_WARN_BOOL_CONVERSION = YES;
       
 47114 +				CLANG_WARN_CONSTANT_CONVERSION = YES;
       
 47115 +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
       
 47116 +				CLANG_WARN_EMPTY_BODY = YES;
       
 47117 +				CLANG_WARN_ENUM_CONVERSION = YES;
       
 47118 +				CLANG_WARN_INT_CONVERSION = YES;
       
 47119 +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
       
 47120 +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
       
 47121 +				COPY_PHASE_STRIP = NO;
       
 47122 +				DYLIB_COMPATIBILITY_VERSION = 1;
       
 47123 +				DYLIB_CURRENT_VERSION = 1;
       
 47124 +				GCC_C_LANGUAGE_STANDARD = gnu99;
       
 47125 +				GCC_DYNAMIC_NO_PIC = NO;
       
 47126 +				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
       
 47127 +				GCC_OPTIMIZATION_LEVEL = 0;
       
 47128 +				GCC_PREPROCESSOR_DEFINITIONS = (
       
 47129 +					"DEBUG=1",
       
 47130 +					"$(inherited)",
       
 47131 +				);
       
 47132 +				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
       
 47133 +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
       
 47134 +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
       
 47135 +				GCC_WARN_UNDECLARED_SELECTOR = YES;
       
 47136 +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
       
 47137 +				GCC_WARN_UNUSED_FUNCTION = YES;
       
 47138 +				GCC_WARN_UNUSED_VARIABLE = YES;
       
 47139 +				HEADER_SEARCH_PATHS = (
       
 47140 +					"$(inherited)",
       
 47141 +					"darwin_osx/include",
       
 47142 +				);
       
 47143 +				MACOSX_DEPLOYMENT_TARGET = 10.6;
       
 47144 +				ONLY_ACTIVE_ARCH = YES;
       
 47145 +				OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
       
 47146 +				PRODUCT_NAME = ffi;
       
 47147 +				SDKROOT = macosx;
       
 47148 +			};
       
 47149 +			name = Debug;
       
 47150 +		};
       
 47151 +		DB13B1B21849DF520010F42D /* Release */ = {
       
 47152 +			isa = XCBuildConfiguration;
       
 47153 +			buildSettings = {
       
 47154 +				ALWAYS_SEARCH_USER_PATHS = NO;
       
 47155 +				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
       
 47156 +				CLANG_CXX_LIBRARY = "libc++";
       
 47157 +				CLANG_ENABLE_OBJC_ARC = YES;
       
 47158 +				CLANG_WARN_BOOL_CONVERSION = YES;
       
 47159 +				CLANG_WARN_CONSTANT_CONVERSION = YES;
       
 47160 +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
       
 47161 +				CLANG_WARN_EMPTY_BODY = YES;
       
 47162 +				CLANG_WARN_ENUM_CONVERSION = YES;
       
 47163 +				CLANG_WARN_INT_CONVERSION = YES;
       
 47164 +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
       
 47165 +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
       
 47166 +				COPY_PHASE_STRIP = YES;
       
 47167 +				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
       
 47168 +				DYLIB_COMPATIBILITY_VERSION = 1;
       
 47169 +				DYLIB_CURRENT_VERSION = 1;
       
 47170 +				ENABLE_NS_ASSERTIONS = NO;
       
 47171 +				GCC_C_LANGUAGE_STANDARD = gnu99;
       
 47172 +				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
       
 47173 +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
       
 47174 +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
       
 47175 +				GCC_WARN_UNDECLARED_SELECTOR = YES;
       
 47176 +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
       
 47177 +				GCC_WARN_UNUSED_FUNCTION = YES;
       
 47178 +				GCC_WARN_UNUSED_VARIABLE = YES;
       
 47179 +				HEADER_SEARCH_PATHS = (
       
 47180 +					"$(inherited)",
       
 47181 +					"darwin_osx/include",
       
 47182 +				);
       
 47183 +				MACOSX_DEPLOYMENT_TARGET = 10.6;
       
 47184 +				OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
       
 47185 +				PRODUCT_NAME = ffi;
       
 47186 +				SDKROOT = macosx;
       
 47187 +			};
       
 47188 +			name = Release;
       
 47189 +		};
       
 47190 +/* End XCBuildConfiguration section */
       
 47191 +
       
 47192 +/* Begin XCConfigurationList section */
       
 47193 +		DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */ = {
       
 47194 +			isa = XCConfigurationList;
       
 47195 +			buildConfigurations = (
       
 47196 +				DB13B1601849DEB70010F42D /* Debug */,
       
 47197 +				DB13B1611849DEB70010F42D /* Release */,
       
 47198 +			);
       
 47199 +			defaultConfigurationIsVisible = 0;
       
 47200 +			defaultConfigurationName = Release;
       
 47201 +		};
       
 47202 +		DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */ = {
       
 47203 +			isa = XCConfigurationList;
       
 47204 +			buildConfigurations = (
       
 47205 +				DB13B1871849DF1E0010F42D /* Debug */,
       
 47206 +				DB13B1881849DF1E0010F42D /* Release */,
       
 47207 +			);
       
 47208 +			defaultConfigurationIsVisible = 0;
       
 47209 +			defaultConfigurationName = Release;
       
 47210 +		};
       
 47211 +		DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */ = {
       
 47212 +			isa = XCConfigurationList;
       
 47213 +			buildConfigurations = (
       
 47214 +				DB13B1B11849DF520010F42D /* Debug */,
       
 47215 +				DB13B1B21849DF520010F42D /* Release */,
       
 47216 +			);
       
 47217 +			defaultConfigurationIsVisible = 0;
       
 47218 +			defaultConfigurationName = Release;
       
 47219 +		};
       
 47220 +/* End XCConfigurationList section */
       
 47221 +	};
       
 47222 +	rootObject = DB13B15C1849DEB70010F42D /* Project object */;
       
 47223 +}
       
 47224 diff --git a/js/src/ctypes/libffi/libtool-ldflags b/js/src/ctypes/libffi/libtool-ldflags
       
 47225 new file mode 100644
       
 47226 --- /dev/null
       
 47227 +++ b/js/src/ctypes/libffi/libtool-ldflags
       
 47228 @@ -0,0 +1,106 @@
       
 47229 +#! /bin/sh
       
 47230 +
       
 47231 +# Script to translate LDFLAGS into a form suitable for use with libtool.
       
 47232 +
       
 47233 +# Copyright (C) 2005 Free Software Foundation, Inc.
       
 47234 +#
       
 47235 +# This file is free software; you can redistribute it and/or modify
       
 47236 +# it under the terms of the GNU General Public License as published by
       
 47237 +# the Free Software Foundation; either version 2 of the License, or
       
 47238 +# (at your option) any later version.
       
 47239 +# 
       
 47240 +# This program is distributed in the hope that it will be useful,
       
 47241 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 47242 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 47243 +# GNU General Public License for more details.
       
 47244 +# 
       
 47245 +# You should have received a copy of the GNU General Public License
       
 47246 +# along with this program; if not, write to the Free Software
       
 47247 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
       
 47248 +# MA 02110-1301, USA. 
       
 47249 +
       
 47250 +# Contributed by CodeSourcery, LLC.
       
 47251 +
       
 47252 +# This script is designed to be used from a Makefile that uses libtool
       
 47253 +# to build libraries as follows: 
       
 47254 +#
       
 47255 +#   LTLDFLAGS = $(shell libtool-ldflags $(LDFLAGS))
       
 47256 +#
       
 47257 +# Then, use (LTLDFLAGS) in place of $(LDFLAGS) in your link line.
       
 47258 +
       
 47259 +# The output of the script.  This string is built up as we process the
       
 47260 +# arguments.
       
 47261 +result=
       
 47262 +prev_arg=
       
 47263 +
       
 47264 +for arg
       
 47265 +do
       
 47266 +    case $arg in
       
 47267 +	-f*|--*)
       
 47268 +	    # Libtool does not ascribe any special meaning options
       
 47269 +	    # that begin with -f or with a double-dash.  So, it will
       
 47270 +	    # think these options are linker options, and prefix them
       
 47271 +	    # with "-Wl,".  Then, the compiler driver will ignore the
       
 47272 +	    # options.  So, we prefix these options with -Xcompiler to
       
 47273 +	    # make clear to libtool that they are in fact compiler
       
 47274 +	    # options.
       
 47275 +	    case $prev_arg in
       
 47276 +		-Xpreprocessor|-Xcompiler|-Xlinker)
       
 47277 +		    # This option is already prefixed; don't prefix it again.
       
 47278 +		    ;;
       
 47279 +		*)
       
 47280 +		    result="$result -Xcompiler"
       
 47281 +		    ;;
       
 47282 +	    esac
       
 47283 +	    ;;
       
 47284 +	*)
       
 47285 +	    # We do not want to add -Xcompiler to other options because
       
 47286 +	    # that would prevent libtool itself from recognizing them.
       
 47287 +	    ;;
       
 47288 +    esac
       
 47289 +    prev_arg=$arg
       
 47290 +
       
 47291 +    # If $(LDFLAGS) is (say):
       
 47292 +    #   a "b'c d" e
       
 47293 +    # then the user expects that:
       
 47294 +    #   $(LD) $(LDFLAGS)
       
 47295 +    # will pass three arguments to $(LD):
       
 47296 +    #   1) a
       
 47297 +    #   2) b'c d
       
 47298 +    #   3) e
       
 47299 +    # We must ensure, therefore, that the arguments are appropriately
       
 47300 +    # quoted so that using:
       
 47301 +    #   libtool --mode=link ... $(LTLDFLAGS)
       
 47302 +    # will result in the same number of arguments being passed to
       
 47303 +    # libtool.   In other words, when this script was invoked, the shell 
       
 47304 +    # removed one level of quoting, present in $(LDFLAGS); we have to put 
       
 47305 +    # it back.
       
 47306 +
       
 47307 +    # Quote any embedded single quotes.
       
 47308 +    case $arg in
       
 47309 +	*"'"*)
       
 47310 +	    # The following command creates the script:
       
 47311 +	    #   1s,^X,,;s|'|'"'"'|g
       
 47312 +	    # which removes a leading X, and then quotes and embedded single
       
 47313 +	    # quotes.
       
 47314 +	    sed_script="1s,^X,,;s|'|'\"'\"'|g"
       
 47315 +	    # Add a leading "X" so that if $arg starts with a dash,
       
 47316 +	    # the echo command will not try to interpret the argument
       
 47317 +	    # as a command-line option.
       
 47318 +	    arg="X$arg"
       
 47319 +	    # Generate the quoted string.
       
 47320 +	    quoted_arg=`echo "$arg" | sed -e "$sed_script"`
       
 47321 +	    ;;
       
 47322 +	*)
       
 47323 +	    quoted_arg=$arg
       
 47324 +	    ;;
       
 47325 +    esac
       
 47326 +    # Surround the entire argument with single quotes.
       
 47327 +    quoted_arg="'"$quoted_arg"'" 
       
 47328 +
       
 47329 +    # Add it to the string.
       
 47330 +    result="$result $quoted_arg"
       
 47331 +done
       
 47332 +
       
 47333 +# Output the string we have built up.
       
 47334 +echo "$result"
       
 47335 diff --git a/js/src/ctypes/libffi/libtool-version b/js/src/ctypes/libffi/libtool-version
       
 47336 --- a/js/src/ctypes/libffi/libtool-version
       
 47337 +++ b/js/src/ctypes/libffi/libtool-version
       
 47338 @@ -21,9 +21,9 @@
       
 47339  #
       
 47340  # 5. If any interfaces have been added since the last public release,
       
 47341  #    then increment age.
       
 47342  #
       
 47343  # 6. If any interfaces have been removed since the last public
       
 47344  #    release, then set age to 0.
       
 47345  #
       
 47346  # CURRENT:REVISION:AGE
       
 47347 -5:10:0
       
 47348 +6:1:0
       
 47349 diff --git a/js/src/ctypes/libffi/ltmain.sh b/js/src/ctypes/libffi/ltmain.sh
       
 47350 --- a/js/src/ctypes/libffi/ltmain.sh
       
 47351 +++ b/js/src/ctypes/libffi/ltmain.sh
       
 47352 @@ -1,14 +1,14 @@
       
 47353 -# Generated from ltmain.m4sh.
       
 47354 -
       
 47355 -# ltmain.sh (GNU libtool) 2.2.6b
       
 47356 +
       
 47357 +# libtool (GNU libtool) 2.4.2
       
 47358  # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
       
 47359  
       
 47360 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
       
 47361 +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
       
 47362 +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
       
 47363  # This is free software; see the source for copying conditions.  There is NO
       
 47364  # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
       
 47365  
       
 47366  # GNU Libtool is free software; you can redistribute it and/or modify
       
 47367  # it under the terms of the GNU General Public License as published by
       
 47368  # the Free Software Foundation; either version 2 of the License, or
       
 47369  # (at your option) any later version.
       
 47370  #
       
 47371 @@ -27,109 +27,125 @@
       
 47372  # can be downloaded from http://www.gnu.org/licenses/gpl.html,
       
 47373  # or obtained by writing to the Free Software Foundation, Inc.,
       
 47374  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       
 47375  
       
 47376  # Usage: $progname [OPTION]... [MODE-ARG]...
       
 47377  #
       
 47378  # Provide generalized library-building support services.
       
 47379  #
       
 47380 -#     --config             show all configuration variables
       
 47381 -#     --debug              enable verbose shell tracing
       
 47382 -# -n, --dry-run            display commands without modifying any files
       
 47383 -#     --features           display basic configuration information and exit
       
 47384 -#     --mode=MODE          use operation mode MODE
       
 47385 -#     --preserve-dup-deps  don't remove duplicate dependency libraries
       
 47386 -#     --quiet, --silent    don't print informational messages
       
 47387 -#     --tag=TAG            use configuration variables from tag TAG
       
 47388 -# -v, --verbose            print informational messages (default)
       
 47389 -#     --version            print version information
       
 47390 -# -h, --help               print short or long help message
       
 47391 +#       --config             show all configuration variables
       
 47392 +#       --debug              enable verbose shell tracing
       
 47393 +#   -n, --dry-run            display commands without modifying any files
       
 47394 +#       --features           display basic configuration information and exit
       
 47395 +#       --mode=MODE          use operation mode MODE
       
 47396 +#       --preserve-dup-deps  don't remove duplicate dependency libraries
       
 47397 +#       --quiet, --silent    don't print informational messages
       
 47398 +#       --no-quiet, --no-silent
       
 47399 +#                            print informational messages (default)
       
 47400 +#       --no-warn            don't display warning messages
       
 47401 +#       --tag=TAG            use configuration variables from tag TAG
       
 47402 +#   -v, --verbose            print more informational messages than default
       
 47403 +#       --no-verbose         don't print the extra informational messages
       
 47404 +#       --version            print version information
       
 47405 +#   -h, --help, --help-all   print short, long, or detailed help message
       
 47406  #
       
 47407  # MODE must be one of the following:
       
 47408  #
       
 47409 -#       clean              remove files from the build directory
       
 47410 -#       compile            compile a source file into a libtool object
       
 47411 -#       execute            automatically set library path, then run a program
       
 47412 -#       finish             complete the installation of libtool libraries
       
 47413 -#       install            install libraries or executables
       
 47414 -#       link               create a library or an executable
       
 47415 -#       uninstall          remove libraries from an installed directory
       
 47416 +#         clean              remove files from the build directory
       
 47417 +#         compile            compile a source file into a libtool object
       
 47418 +#         execute            automatically set library path, then run a program
       
 47419 +#         finish             complete the installation of libtool libraries
       
 47420 +#         install            install libraries or executables
       
 47421 +#         link               create a library or an executable
       
 47422 +#         uninstall          remove libraries from an installed directory
       
 47423  #
       
 47424 -# MODE-ARGS vary depending on the MODE.
       
 47425 +# MODE-ARGS vary depending on the MODE.  When passed as first option,
       
 47426 +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
       
 47427  # Try `$progname --help --mode=MODE' for a more detailed description of MODE.
       
 47428  #
       
 47429  # When reporting a bug, please describe a test case to reproduce it and
       
 47430  # include the following information:
       
 47431  #
       
 47432 -#       host-triplet:	$host
       
 47433 -#       shell:		$SHELL
       
 47434 -#       compiler:		$LTCC
       
 47435 -#       compiler flags:		$LTCFLAGS
       
 47436 -#       linker:		$LD (gnu? $with_gnu_ld)
       
 47437 -#       $progname:		(GNU libtool) 2.2.6b
       
 47438 -#       automake:		$automake_version
       
 47439 -#       autoconf:		$autoconf_version
       
 47440 +#         host-triplet:	$host
       
 47441 +#         shell:		$SHELL
       
 47442 +#         compiler:		$LTCC
       
 47443 +#         compiler flags:		$LTCFLAGS
       
 47444 +#         linker:		$LD (gnu? $with_gnu_ld)
       
 47445 +#         $progname:	(GNU libtool) 2.4.2
       
 47446 +#         automake:	$automake_version
       
 47447 +#         autoconf:	$autoconf_version
       
 47448  #
       
 47449  # Report bugs to <bug-libtool@gnu.org>.
       
 47450 -
       
 47451 -PROGRAM=ltmain.sh
       
 47452 +# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
       
 47453 +# General help using GNU software: <http://www.gnu.org/gethelp/>.
       
 47454 +
       
 47455 +PROGRAM=libtool
       
 47456  PACKAGE=libtool
       
 47457 -VERSION=2.2.6b
       
 47458 +VERSION=2.4.2
       
 47459  TIMESTAMP=""
       
 47460 -package_revision=1.3017
       
 47461 +package_revision=1.3337
       
 47462  
       
 47463  # Be Bourne compatible
       
 47464  if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
       
 47465    emulate sh
       
 47466    NULLCMD=:
       
 47467    # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
       
 47468    # is contrary to our usage.  Disable this feature.
       
 47469    alias -g '${1+"$@"}'='"$@"'
       
 47470    setopt NO_GLOB_SUBST
       
 47471  else
       
 47472    case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
       
 47473  fi
       
 47474  BIN_SH=xpg4; export BIN_SH # for Tru64
       
 47475  DUALCASE=1; export DUALCASE # for MKS sh
       
 47476  
       
 47477 +# A function that is used when there is no print builtin or printf.
       
 47478 +func_fallback_echo ()
       
 47479 +{
       
 47480 +  eval 'cat <<_LTECHO_EOF
       
 47481 +$1
       
 47482 +_LTECHO_EOF'
       
 47483 +}
       
 47484 +
       
 47485  # NLS nuisances: We save the old values to restore during execute mode.
       
 47486 -# Only set LANG and LC_ALL to C if already set.
       
 47487 -# These must not be set unconditionally because not all systems understand
       
 47488 -# e.g. LANG=C (notably SCO).
       
 47489  lt_user_locale=
       
 47490  lt_safe_locale=
       
 47491  for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
       
 47492  do
       
 47493    eval "if test \"\${$lt_var+set}\" = set; then
       
 47494            save_$lt_var=\$$lt_var
       
 47495            $lt_var=C
       
 47496  	  export $lt_var
       
 47497  	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
       
 47498  	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
       
 47499  	fi"
       
 47500  done
       
 47501 +LC_ALL=C
       
 47502 +LANGUAGE=C
       
 47503 +export LANGUAGE LC_ALL
       
 47504  
       
 47505  $lt_unset CDPATH
       
 47506  
       
 47507  
       
 47508 +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
       
 47509 +# is ksh but when the shell is invoked as "sh" and the current value of
       
 47510 +# the _XPG environment variable is not equal to 1 (one), the special
       
 47511 +# positional parameter $0, within a function call, is the name of the
       
 47512 +# function.
       
 47513 +progpath="$0"
       
 47514  
       
 47515  
       
 47516  
       
 47517  : ${CP="cp -f"}
       
 47518 -: ${ECHO="echo"}
       
 47519 -: ${EGREP="/bin/grep -E"}
       
 47520 -: ${FGREP="/bin/grep -F"}
       
 47521 -: ${GREP="/bin/grep"}
       
 47522 -: ${LN_S="ln -s"}
       
 47523 +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
       
 47524  : ${MAKE="make"}
       
 47525  : ${MKDIR="mkdir"}
       
 47526  : ${MV="mv -f"}
       
 47527  : ${RM="rm -f"}
       
 47528 -: ${SED="/bin/sed"}
       
 47529  : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
       
 47530  : ${Xsed="$SED -e 1s/^X//"}
       
 47531  
       
 47532  # Global variables:
       
 47533  EXIT_SUCCESS=0
       
 47534  EXIT_FAILURE=1
       
 47535  EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
       
 47536  EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
       
 47537 @@ -139,69 +155,240 @@ exit_status=$EXIT_SUCCESS
       
 47538  # Make sure IFS has a sensible default
       
 47539  lt_nl='
       
 47540  '
       
 47541  IFS=" 	$lt_nl"
       
 47542  
       
 47543  dirname="s,/[^/]*$,,"
       
 47544  basename="s,^.*/,,"
       
 47545  
       
 47546 +# func_dirname file append nondir_replacement
       
 47547 +# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
       
 47548 +# otherwise set result to NONDIR_REPLACEMENT.
       
 47549 +func_dirname ()
       
 47550 +{
       
 47551 +    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
       
 47552 +    if test "X$func_dirname_result" = "X${1}"; then
       
 47553 +      func_dirname_result="${3}"
       
 47554 +    else
       
 47555 +      func_dirname_result="$func_dirname_result${2}"
       
 47556 +    fi
       
 47557 +} # func_dirname may be replaced by extended shell implementation
       
 47558 +
       
 47559 +
       
 47560 +# func_basename file
       
 47561 +func_basename ()
       
 47562 +{
       
 47563 +    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
       
 47564 +} # func_basename may be replaced by extended shell implementation
       
 47565 +
       
 47566 +
       
 47567  # func_dirname_and_basename file append nondir_replacement
       
 47568  # perform func_basename and func_dirname in a single function
       
 47569  # call:
       
 47570  #   dirname:  Compute the dirname of FILE.  If nonempty,
       
 47571  #             add APPEND to the result, otherwise set result
       
 47572  #             to NONDIR_REPLACEMENT.
       
 47573  #             value returned in "$func_dirname_result"
       
 47574  #   basename: Compute filename of FILE.
       
 47575  #             value retuned in "$func_basename_result"
       
 47576  # Implementation must be kept synchronized with func_dirname
       
 47577  # and func_basename. For efficiency, we do not delegate to
       
 47578  # those functions but instead duplicate the functionality here.
       
 47579  func_dirname_and_basename ()
       
 47580  {
       
 47581 -  # Extract subdirectory from the argument.
       
 47582 -  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
       
 47583 -  if test "X$func_dirname_result" = "X${1}"; then
       
 47584 -    func_dirname_result="${3}"
       
 47585 -  else
       
 47586 -    func_dirname_result="$func_dirname_result${2}"
       
 47587 +    # Extract subdirectory from the argument.
       
 47588 +    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
       
 47589 +    if test "X$func_dirname_result" = "X${1}"; then
       
 47590 +      func_dirname_result="${3}"
       
 47591 +    else
       
 47592 +      func_dirname_result="$func_dirname_result${2}"
       
 47593 +    fi
       
 47594 +    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
       
 47595 +} # func_dirname_and_basename may be replaced by extended shell implementation
       
 47596 +
       
 47597 +
       
 47598 +# func_stripname prefix suffix name
       
 47599 +# strip PREFIX and SUFFIX off of NAME.
       
 47600 +# PREFIX and SUFFIX must not contain globbing or regex special
       
 47601 +# characters, hashes, percent signs, but SUFFIX may contain a leading
       
 47602 +# dot (in which case that matches only a dot).
       
 47603 +# func_strip_suffix prefix name
       
 47604 +func_stripname ()
       
 47605 +{
       
 47606 +    case ${2} in
       
 47607 +      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
       
 47608 +      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
       
 47609 +    esac
       
 47610 +} # func_stripname may be replaced by extended shell implementation
       
 47611 +
       
 47612 +
       
 47613 +# These SED scripts presuppose an absolute path with a trailing slash.
       
 47614 +pathcar='s,^/\([^/]*\).*$,\1,'
       
 47615 +pathcdr='s,^/[^/]*,,'
       
 47616 +removedotparts=':dotsl
       
 47617 +		s@/\./@/@g
       
 47618 +		t dotsl
       
 47619 +		s,/\.$,/,'
       
 47620 +collapseslashes='s@/\{1,\}@/@g'
       
 47621 +finalslash='s,/*$,/,'
       
 47622 +
       
 47623 +# func_normal_abspath PATH
       
 47624 +# Remove doubled-up and trailing slashes, "." path components,
       
 47625 +# and cancel out any ".." path components in PATH after making
       
 47626 +# it an absolute path.
       
 47627 +#             value returned in "$func_normal_abspath_result"
       
 47628 +func_normal_abspath ()
       
 47629 +{
       
 47630 +  # Start from root dir and reassemble the path.
       
 47631 +  func_normal_abspath_result=
       
 47632 +  func_normal_abspath_tpath=$1
       
 47633 +  func_normal_abspath_altnamespace=
       
 47634 +  case $func_normal_abspath_tpath in
       
 47635 +    "")
       
 47636 +      # Empty path, that just means $cwd.
       
 47637 +      func_stripname '' '/' "`pwd`"
       
 47638 +      func_normal_abspath_result=$func_stripname_result
       
 47639 +      return
       
 47640 +    ;;
       
 47641 +    # The next three entries are used to spot a run of precisely
       
 47642 +    # two leading slashes without using negated character classes;
       
 47643 +    # we take advantage of case's first-match behaviour.
       
 47644 +    ///*)
       
 47645 +      # Unusual form of absolute path, do nothing.
       
 47646 +    ;;
       
 47647 +    //*)
       
 47648 +      # Not necessarily an ordinary path; POSIX reserves leading '//'
       
 47649 +      # and for example Cygwin uses it to access remote file shares
       
 47650 +      # over CIFS/SMB, so we conserve a leading double slash if found.
       
 47651 +      func_normal_abspath_altnamespace=/
       
 47652 +    ;;
       
 47653 +    /*)
       
 47654 +      # Absolute path, do nothing.
       
 47655 +    ;;
       
 47656 +    *)
       
 47657 +      # Relative path, prepend $cwd.
       
 47658 +      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
       
 47659 +    ;;
       
 47660 +  esac
       
 47661 +  # Cancel out all the simple stuff to save iterations.  We also want
       
 47662 +  # the path to end with a slash for ease of parsing, so make sure
       
 47663 +  # there is one (and only one) here.
       
 47664 +  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
       
 47665 +        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
       
 47666 +  while :; do
       
 47667 +    # Processed it all yet?
       
 47668 +    if test "$func_normal_abspath_tpath" = / ; then
       
 47669 +      # If we ascended to the root using ".." the result may be empty now.
       
 47670 +      if test -z "$func_normal_abspath_result" ; then
       
 47671 +        func_normal_abspath_result=/
       
 47672 +      fi
       
 47673 +      break
       
 47674 +    fi
       
 47675 +    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
       
 47676 +        -e "$pathcar"`
       
 47677 +    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
       
 47678 +        -e "$pathcdr"`
       
 47679 +    # Figure out what to do with it
       
 47680 +    case $func_normal_abspath_tcomponent in
       
 47681 +      "")
       
 47682 +        # Trailing empty path component, ignore it.
       
 47683 +      ;;
       
 47684 +      ..)
       
 47685 +        # Parent dir; strip last assembled component from result.
       
 47686 +        func_dirname "$func_normal_abspath_result"
       
 47687 +        func_normal_abspath_result=$func_dirname_result
       
 47688 +      ;;
       
 47689 +      *)
       
 47690 +        # Actual path component, append it.
       
 47691 +        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
       
 47692 +      ;;
       
 47693 +    esac
       
 47694 +  done
       
 47695 +  # Restore leading double-slash if one was found on entry.
       
 47696 +  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
       
 47697 +}
       
 47698 +
       
 47699 +# func_relative_path SRCDIR DSTDIR
       
 47700 +# generates a relative path from SRCDIR to DSTDIR, with a trailing
       
 47701 +# slash if non-empty, suitable for immediately appending a filename
       
 47702 +# without needing to append a separator.
       
 47703 +#             value returned in "$func_relative_path_result"
       
 47704 +func_relative_path ()
       
 47705 +{
       
 47706 +  func_relative_path_result=
       
 47707 +  func_normal_abspath "$1"
       
 47708 +  func_relative_path_tlibdir=$func_normal_abspath_result
       
 47709 +  func_normal_abspath "$2"
       
 47710 +  func_relative_path_tbindir=$func_normal_abspath_result
       
 47711 +
       
 47712 +  # Ascend the tree starting from libdir
       
 47713 +  while :; do
       
 47714 +    # check if we have found a prefix of bindir
       
 47715 +    case $func_relative_path_tbindir in
       
 47716 +      $func_relative_path_tlibdir)
       
 47717 +        # found an exact match
       
 47718 +        func_relative_path_tcancelled=
       
 47719 +        break
       
 47720 +        ;;
       
 47721 +      $func_relative_path_tlibdir*)
       
 47722 +        # found a matching prefix
       
 47723 +        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
       
 47724 +        func_relative_path_tcancelled=$func_stripname_result
       
 47725 +        if test -z "$func_relative_path_result"; then
       
 47726 +          func_relative_path_result=.
       
 47727 +        fi
       
 47728 +        break
       
 47729 +        ;;
       
 47730 +      *)
       
 47731 +        func_dirname $func_relative_path_tlibdir
       
 47732 +        func_relative_path_tlibdir=${func_dirname_result}
       
 47733 +        if test "x$func_relative_path_tlibdir" = x ; then
       
 47734 +          # Have to descend all the way to the root!
       
 47735 +          func_relative_path_result=../$func_relative_path_result
       
 47736 +          func_relative_path_tcancelled=$func_relative_path_tbindir
       
 47737 +          break
       
 47738 +        fi
       
 47739 +        func_relative_path_result=../$func_relative_path_result
       
 47740 +        ;;
       
 47741 +    esac
       
 47742 +  done
       
 47743 +
       
 47744 +  # Now calculate path; take care to avoid doubling-up slashes.
       
 47745 +  func_stripname '' '/' "$func_relative_path_result"
       
 47746 +  func_relative_path_result=$func_stripname_result
       
 47747 +  func_stripname '/' '/' "$func_relative_path_tcancelled"
       
 47748 +  if test "x$func_stripname_result" != x ; then
       
 47749 +    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
       
 47750    fi
       
 47751 -  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
       
 47752 -}
       
 47753 -
       
 47754 -# Generated shell functions inserted here.
       
 47755 -
       
 47756 -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
       
 47757 -# is ksh but when the shell is invoked as "sh" and the current value of
       
 47758 -# the _XPG environment variable is not equal to 1 (one), the special
       
 47759 -# positional parameter $0, within a function call, is the name of the
       
 47760 -# function.
       
 47761 -progpath="$0"
       
 47762 +
       
 47763 +  # Normalisation. If bindir is libdir, return empty string,
       
 47764 +  # else relative path ending with a slash; either way, target
       
 47765 +  # file name can be directly appended.
       
 47766 +  if test ! -z "$func_relative_path_result"; then
       
 47767 +    func_stripname './' '' "$func_relative_path_result/"
       
 47768 +    func_relative_path_result=$func_stripname_result
       
 47769 +  fi
       
 47770 +}
       
 47771  
       
 47772  # The name of this program:
       
 47773 -# In the unlikely event $progname began with a '-', it would play havoc with
       
 47774 -# func_echo (imagine progname=-n), so we prepend ./ in that case:
       
 47775  func_dirname_and_basename "$progpath"
       
 47776  progname=$func_basename_result
       
 47777 -case $progname in
       
 47778 -  -*) progname=./$progname ;;
       
 47779 -esac
       
 47780  
       
 47781  # Make sure we have an absolute path for reexecution:
       
 47782  case $progpath in
       
 47783    [\\/]*|[A-Za-z]:\\*) ;;
       
 47784    *[\\/]*)
       
 47785       progdir=$func_dirname_result
       
 47786       progdir=`cd "$progdir" && pwd`
       
 47787       progpath="$progdir/$progname"
       
 47788       ;;
       
 47789    *)
       
 47790       save_IFS="$IFS"
       
 47791 -     IFS=:
       
 47792 +     IFS=${PATH_SEPARATOR-:}
       
 47793       for progdir in $PATH; do
       
 47794         IFS="$save_IFS"
       
 47795         test -x "$progdir/$progname" && break
       
 47796       done
       
 47797       IFS="$save_IFS"
       
 47798       test -n "$progdir" || progdir=`pwd`
       
 47799       progpath="$progdir/$progname"
       
 47800       ;;
       
 47801 @@ -210,16 +397,25 @@ esac
       
 47802  # Sed substitution that helps us do robust quoting.  It backslashifies
       
 47803  # metacharacters that are still active within double-quoted strings.
       
 47804  Xsed="${SED}"' -e 1s/^X//'
       
 47805  sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
       
 47806  
       
 47807  # Same as above, but do not quote variable references.
       
 47808  double_quote_subst='s/\(["`\\]\)/\\\1/g'
       
 47809  
       
 47810 +# Sed substitution that turns a string into a regex matching for the
       
 47811 +# string literally.
       
 47812 +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
       
 47813 +
       
 47814 +# Sed substitution that converts a w32 file name or path
       
 47815 +# which contains forward slashes, into one that contains
       
 47816 +# (escaped) backslashes.  A very naive implementation.
       
 47817 +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
       
 47818 +
       
 47819  # Re-`\' parameter expansions in output of double_quote_subst that were
       
 47820  # `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
       
 47821  # in input to double_quote_subst, that '$' was protected from expansion.
       
 47822  # Since each input `\' is now two `\'s, look for any number of runs of
       
 47823  # four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
       
 47824  bs='\\'
       
 47825  bs2='\\\\'
       
 47826  bs4='\\\\\\\\'
       
 47827 @@ -238,43 +434,50 @@ opt_quiet=false
       
 47828  opt_verbose=false
       
 47829  opt_warning=:
       
 47830  
       
 47831  # func_echo arg...
       
 47832  # Echo program name prefixed message, along with the current mode
       
 47833  # name if it has been set yet.
       
 47834  func_echo ()
       
 47835  {
       
 47836 -    $ECHO "$progname${mode+: }$mode: $*"
       
 47837 +    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
       
 47838  }
       
 47839  
       
 47840  # func_verbose arg...
       
 47841  # Echo program name prefixed message in verbose mode only.
       
 47842  func_verbose ()
       
 47843  {
       
 47844      $opt_verbose && func_echo ${1+"$@"}
       
 47845  
       
 47846      # A bug in bash halts the script if the last line of a function
       
 47847      # fails when set -e is in force, so we need another command to
       
 47848      # work around that:
       
 47849      :
       
 47850  }
       
 47851  
       
 47852 +# func_echo_all arg...
       
 47853 +# Invoke $ECHO with all args, space-separated.
       
 47854 +func_echo_all ()
       
 47855 +{
       
 47856 +    $ECHO "$*"
       
 47857 +}
       
 47858 +
       
 47859  # func_error arg...
       
 47860  # Echo program name prefixed message to standard error.
       
 47861  func_error ()
       
 47862  {
       
 47863 -    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
       
 47864 +    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
       
 47865  }
       
 47866  
       
 47867  # func_warning arg...
       
 47868  # Echo program name prefixed warning message to standard error.
       
 47869  func_warning ()
       
 47870  {
       
 47871 -    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
       
 47872 +    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
       
 47873  
       
 47874      # bash bug again:
       
 47875      :
       
 47876  }
       
 47877  
       
 47878  # func_fatal_error arg...
       
 47879  # Echo program name prefixed message to standard error, and exit.
       
 47880  func_fatal_error ()
       
 47881 @@ -321,19 +524,19 @@ func_mkdir_p ()
       
 47882          # ...make a list in topmost first order.  Use a colon delimited
       
 47883  	# list incase some portion of path contains whitespace.
       
 47884          my_dir_list="$my_directory_path:$my_dir_list"
       
 47885  
       
 47886          # If the last portion added has no slash in it, the list is done
       
 47887          case $my_directory_path in */*) ;; *) break ;; esac
       
 47888  
       
 47889          # ...otherwise throw away the child directory and loop
       
 47890 -        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
       
 47891 +        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
       
 47892        done
       
 47893 -      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
       
 47894 +      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
       
 47895  
       
 47896        save_mkdir_p_IFS="$IFS"; IFS=':'
       
 47897        for my_dir in $my_dir_list; do
       
 47898  	IFS="$save_mkdir_p_IFS"
       
 47899          # mkdir can fail with a `File exist' error if two processes
       
 47900          # try to create one of the directories concurrently.  Don't
       
 47901          # stop in that case!
       
 47902          $MKDIR "$my_dir" 2>/dev/null || :
       
 47903 @@ -373,31 +576,31 @@ func_mktempdir ()
       
 47904          umask $save_mktempdir_umask
       
 47905        fi
       
 47906  
       
 47907        # If we're not in dry-run mode, bomb out on failure
       
 47908        test -d "$my_tmpdir" || \
       
 47909          func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
       
 47910      fi
       
 47911  
       
 47912 -    $ECHO "X$my_tmpdir" | $Xsed
       
 47913 +    $ECHO "$my_tmpdir"
       
 47914  }
       
 47915  
       
 47916  
       
 47917  # func_quote_for_eval arg
       
 47918  # Aesthetically quote ARG to be evaled later.
       
 47919  # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
       
 47920  # is double-quoted, suitable for a subsequent eval, whereas
       
 47921  # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
       
 47922  # which are still active within double quotes backslashified.
       
 47923  func_quote_for_eval ()
       
 47924  {
       
 47925      case $1 in
       
 47926        *[\\\`\"\$]*)
       
 47927 -	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
       
 47928 +	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
       
 47929        *)
       
 47930          func_quote_for_eval_unquoted_result="$1" ;;
       
 47931      esac
       
 47932  
       
 47933      case $func_quote_for_eval_unquoted_result in
       
 47934        # Double-quote args containing shell metacharacters to delay
       
 47935        # word splitting, command substitution and and variable
       
 47936        # expansion for a subsequent eval.
       
 47937 @@ -414,17 +617,17 @@ func_quote_for_eval ()
       
 47938  
       
 47939  # func_quote_for_expand arg
       
 47940  # Aesthetically quote ARG to be evaled later; same as above,
       
 47941  # but do not quote variable references.
       
 47942  func_quote_for_expand ()
       
 47943  {
       
 47944      case $1 in
       
 47945        *[\\\`\"]*)
       
 47946 -	my_arg=`$ECHO "X$1" | $Xsed \
       
 47947 +	my_arg=`$ECHO "$1" | $SED \
       
 47948  	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
       
 47949        *)
       
 47950          my_arg="$1" ;;
       
 47951      esac
       
 47952  
       
 47953      case $my_arg in
       
 47954        # Double-quote args containing shell metacharacters to delay
       
 47955        # word splitting and command substitution for a subsequent eval.
       
 47956 @@ -483,131 +686,211 @@ func_show_eval_locale ()
       
 47957        my_status=$?
       
 47958        eval "$lt_safe_locale"
       
 47959        if test "$my_status" -eq 0; then :; else
       
 47960  	eval "(exit $my_status); $my_fail_exp"
       
 47961        fi
       
 47962      fi
       
 47963  }
       
 47964  
       
 47965 -
       
 47966 -
       
 47967 +# func_tr_sh
       
 47968 +# Turn $1 into a string suitable for a shell variable name.
       
 47969 +# Result is stored in $func_tr_sh_result.  All characters
       
 47970 +# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
       
 47971 +# if $1 begins with a digit, a '_' is prepended as well.
       
 47972 +func_tr_sh ()
       
 47973 +{
       
 47974 +  case $1 in
       
 47975 +  [0-9]* | *[!a-zA-Z0-9_]*)
       
 47976 +    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
       
 47977 +    ;;
       
 47978 +  * )
       
 47979 +    func_tr_sh_result=$1
       
 47980 +    ;;
       
 47981 +  esac
       
 47982 +}
       
 47983  
       
 47984  
       
 47985  # func_version
       
 47986  # Echo version message to standard output and exit.
       
 47987  func_version ()
       
 47988  {
       
 47989 -    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
       
 47990 +    $opt_debug
       
 47991 +
       
 47992 +    $SED -n '/(C)/!b go
       
 47993 +	:more
       
 47994 +	/\./!{
       
 47995 +	  N
       
 47996 +	  s/\n# / /
       
 47997 +	  b more
       
 47998 +	}
       
 47999 +	:go
       
 48000 +	/^# '$PROGRAM' (GNU /,/# warranty; / {
       
 48001          s/^# //
       
 48002  	s/^# *$//
       
 48003          s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
       
 48004          p
       
 48005       }' < "$progpath"
       
 48006       exit $?
       
 48007  }
       
 48008  
       
 48009  # func_usage
       
 48010  # Echo short help message to standard output and exit.
       
 48011  func_usage ()
       
 48012  {
       
 48013 -    $SED -n '/^# Usage:/,/# -h/ {
       
 48014 +    $opt_debug
       
 48015 +
       
 48016 +    $SED -n '/^# Usage:/,/^#  *.*--help/ {
       
 48017          s/^# //
       
 48018  	s/^# *$//
       
 48019  	s/\$progname/'$progname'/
       
 48020  	p
       
 48021      }' < "$progpath"
       
 48022 -    $ECHO
       
 48023 +    echo
       
 48024      $ECHO "run \`$progname --help | more' for full usage"
       
 48025      exit $?
       
 48026  }
       
 48027  
       
 48028 -# func_help
       
 48029 -# Echo long help message to standard output and exit.
       
 48030 +# func_help [NOEXIT]
       
 48031 +# Echo long help message to standard output and exit,
       
 48032 +# unless 'noexit' is passed as argument.
       
 48033  func_help ()
       
 48034  {
       
 48035 +    $opt_debug
       
 48036 +
       
 48037      $SED -n '/^# Usage:/,/# Report bugs to/ {
       
 48038 +	:print
       
 48039          s/^# //
       
 48040  	s/^# *$//
       
 48041  	s*\$progname*'$progname'*
       
 48042  	s*\$host*'"$host"'*
       
 48043  	s*\$SHELL*'"$SHELL"'*
       
 48044  	s*\$LTCC*'"$LTCC"'*
       
 48045  	s*\$LTCFLAGS*'"$LTCFLAGS"'*
       
 48046  	s*\$LD*'"$LD"'*
       
 48047  	s/\$with_gnu_ld/'"$with_gnu_ld"'/
       
 48048 -	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
       
 48049 -	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
       
 48050 +	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
       
 48051 +	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
       
 48052  	p
       
 48053 -     }' < "$progpath"
       
 48054 -    exit $?
       
 48055 +	d
       
 48056 +     }
       
 48057 +     /^# .* home page:/b print
       
 48058 +     /^# General help using/b print
       
 48059 +     ' < "$progpath"
       
 48060 +    ret=$?
       
 48061 +    if test -z "$1"; then
       
 48062 +      exit $ret
       
 48063 +    fi
       
 48064  }
       
 48065  
       
 48066  # func_missing_arg argname
       
 48067  # Echo program name prefixed message to standard error and set global
       
 48068  # exit_cmd.
       
 48069  func_missing_arg ()
       
 48070  {
       
 48071 -    func_error "missing argument for $1"
       
 48072 +    $opt_debug
       
 48073 +
       
 48074 +    func_error "missing argument for $1."
       
 48075      exit_cmd=exit
       
 48076  }
       
 48077  
       
 48078 +
       
 48079 +# func_split_short_opt shortopt
       
 48080 +# Set func_split_short_opt_name and func_split_short_opt_arg shell
       
 48081 +# variables after splitting SHORTOPT after the 2nd character.
       
 48082 +func_split_short_opt ()
       
 48083 +{
       
 48084 +    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
       
 48085 +    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
       
 48086 +
       
 48087 +    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
       
 48088 +    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
       
 48089 +} # func_split_short_opt may be replaced by extended shell implementation
       
 48090 +
       
 48091 +
       
 48092 +# func_split_long_opt longopt
       
 48093 +# Set func_split_long_opt_name and func_split_long_opt_arg shell
       
 48094 +# variables after splitting LONGOPT at the `=' sign.
       
 48095 +func_split_long_opt ()
       
 48096 +{
       
 48097 +    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
       
 48098 +    my_sed_long_arg='1s/^--[^=]*=//'
       
 48099 +
       
 48100 +    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
       
 48101 +    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
       
 48102 +} # func_split_long_opt may be replaced by extended shell implementation
       
 48103 +
       
 48104  exit_cmd=:
       
 48105  
       
 48106  
       
 48107  
       
 48108  
       
 48109  
       
 48110 -# Check that we have a working $ECHO.
       
 48111 -if test "X$1" = X--no-reexec; then
       
 48112 -  # Discard the --no-reexec flag, and continue.
       
 48113 -  shift
       
 48114 -elif test "X$1" = X--fallback-echo; then
       
 48115 -  # Avoid inline document here, it may be left over
       
 48116 -  :
       
 48117 -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
       
 48118 -  # Yippee, $ECHO works!
       
 48119 -  :
       
 48120 -else
       
 48121 -  # Restart under the correct shell, and then maybe $ECHO will work.
       
 48122 -  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
       
 48123 -fi
       
 48124 -
       
 48125 -if test "X$1" = X--fallback-echo; then
       
 48126 -  # used as fallback echo
       
 48127 -  shift
       
 48128 -  cat <<EOF
       
 48129 -$*
       
 48130 -EOF
       
 48131 -  exit $EXIT_SUCCESS
       
 48132 -fi
       
 48133 -
       
 48134  magic="%%%MAGIC variable%%%"
       
 48135  magic_exe="%%%MAGIC EXE variable%%%"
       
 48136  
       
 48137  # Global variables.
       
 48138 -# $mode is unset
       
 48139  nonopt=
       
 48140 -execute_dlfiles=
       
 48141  preserve_args=
       
 48142  lo2o="s/\\.lo\$/.${objext}/"
       
 48143  o2lo="s/\\.${objext}\$/.lo/"
       
 48144  extracted_archives=
       
 48145  extracted_serial=0
       
 48146  
       
 48147 -opt_dry_run=false
       
 48148 -opt_duplicate_deps=false
       
 48149 -opt_silent=false
       
 48150 -opt_debug=:
       
 48151 -
       
 48152  # If this variable is set in any of the actions, the command in it
       
 48153  # will be execed at the end.  This prevents here-documents from being
       
 48154  # left over by shells.
       
 48155  exec_cmd=
       
 48156  
       
 48157 +# func_append var value
       
 48158 +# Append VALUE to the end of shell variable VAR.
       
 48159 +func_append ()
       
 48160 +{
       
 48161 +    eval "${1}=\$${1}\${2}"
       
 48162 +} # func_append may be replaced by extended shell implementation
       
 48163 +
       
 48164 +# func_append_quoted var value
       
 48165 +# Quote VALUE and append to the end of shell variable VAR, separated
       
 48166 +# by a space.
       
 48167 +func_append_quoted ()
       
 48168 +{
       
 48169 +    func_quote_for_eval "${2}"
       
 48170 +    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
       
 48171 +} # func_append_quoted may be replaced by extended shell implementation
       
 48172 +
       
 48173 +
       
 48174 +# func_arith arithmetic-term...
       
 48175 +func_arith ()
       
 48176 +{
       
 48177 +    func_arith_result=`expr "${@}"`
       
 48178 +} # func_arith may be replaced by extended shell implementation
       
 48179 +
       
 48180 +
       
 48181 +# func_len string
       
 48182 +# STRING may not start with a hyphen.
       
 48183 +func_len ()
       
 48184 +{
       
 48185 +    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
       
 48186 +} # func_len may be replaced by extended shell implementation
       
 48187 +
       
 48188 +
       
 48189 +# func_lo2o object
       
 48190 +func_lo2o ()
       
 48191 +{
       
 48192 +    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
       
 48193 +} # func_lo2o may be replaced by extended shell implementation
       
 48194 +
       
 48195 +
       
 48196 +# func_xform libobj-or-source
       
 48197 +func_xform ()
       
 48198 +{
       
 48199 +    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
       
 48200 +} # func_xform may be replaced by extended shell implementation
       
 48201 +
       
 48202 +
       
 48203  # func_fatal_configuration arg...
       
 48204  # Echo program name prefixed message to standard error, followed by
       
 48205  # a configuration failure hint, and exit.
       
 48206  func_fatal_configuration ()
       
 48207  {
       
 48208      func_error ${1+"$@"}
       
 48209      func_error "See the $PACKAGE documentation for more information."
       
 48210      func_fatal_error "Fatal configuration error."
       
 48211 @@ -631,26 +914,26 @@ func_config ()
       
 48212  
       
 48213      exit $?
       
 48214  }
       
 48215  
       
 48216  # func_features
       
 48217  # Display the features supported by this script.
       
 48218  func_features ()
       
 48219  {
       
 48220 -    $ECHO "host: $host"
       
 48221 +    echo "host: $host"
       
 48222      if test "$build_libtool_libs" = yes; then
       
 48223 -      $ECHO "enable shared libraries"
       
 48224 +      echo "enable shared libraries"
       
 48225      else
       
 48226 -      $ECHO "disable shared libraries"
       
 48227 +      echo "disable shared libraries"
       
 48228      fi
       
 48229      if test "$build_old_libs" = yes; then
       
 48230 -      $ECHO "enable static libraries"
       
 48231 +      echo "enable static libraries"
       
 48232      else
       
 48233 -      $ECHO "disable static libraries"
       
 48234 +      echo "disable static libraries"
       
 48235      fi
       
 48236  
       
 48237      exit $?
       
 48238  }
       
 48239  
       
 48240  # func_enable_tag tagname
       
 48241  # Verify that TAGNAME is valid, and either flag an error and exit, or
       
 48242  # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
       
 48243 @@ -687,143 +970,16 @@ func_enable_tag ()
       
 48244  	eval "$extractedcf"
       
 48245        else
       
 48246  	func_error "ignoring unknown tag $tagname"
       
 48247        fi
       
 48248        ;;
       
 48249    esac
       
 48250  }
       
 48251  
       
 48252 -# Parse options once, thoroughly.  This comes as soon as possible in
       
 48253 -# the script to make things like `libtool --version' happen quickly.
       
 48254 -{
       
 48255 -
       
 48256 -  # Shorthand for --mode=foo, only valid as the first argument
       
 48257 -  case $1 in
       
 48258 -  clean|clea|cle|cl)
       
 48259 -    shift; set dummy --mode clean ${1+"$@"}; shift
       
 48260 -    ;;
       
 48261 -  compile|compil|compi|comp|com|co|c)
       
 48262 -    shift; set dummy --mode compile ${1+"$@"}; shift
       
 48263 -    ;;
       
 48264 -  execute|execut|execu|exec|exe|ex|e)
       
 48265 -    shift; set dummy --mode execute ${1+"$@"}; shift
       
 48266 -    ;;
       
 48267 -  finish|finis|fini|fin|fi|f)
       
 48268 -    shift; set dummy --mode finish ${1+"$@"}; shift
       
 48269 -    ;;
       
 48270 -  install|instal|insta|inst|ins|in|i)
       
 48271 -    shift; set dummy --mode install ${1+"$@"}; shift
       
 48272 -    ;;
       
 48273 -  link|lin|li|l)
       
 48274 -    shift; set dummy --mode link ${1+"$@"}; shift
       
 48275 -    ;;
       
 48276 -  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
       
 48277 -    shift; set dummy --mode uninstall ${1+"$@"}; shift
       
 48278 -    ;;
       
 48279 -  esac
       
 48280 -
       
 48281 -  # Parse non-mode specific arguments:
       
 48282 -  while test "$#" -gt 0; do
       
 48283 -    opt="$1"
       
 48284 -    shift
       
 48285 -
       
 48286 -    case $opt in
       
 48287 -      --config)		func_config					;;
       
 48288 -
       
 48289 -      --debug)		preserve_args="$preserve_args $opt"
       
 48290 -			func_echo "enabling shell trace mode"
       
 48291 -			opt_debug='set -x'
       
 48292 -			$opt_debug
       
 48293 -			;;
       
 48294 -
       
 48295 -      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
       
 48296 -			execute_dlfiles="$execute_dlfiles $1"
       
 48297 -			shift
       
 48298 -			;;
       
 48299 -
       
 48300 -      --dry-run | -n)	opt_dry_run=:					;;
       
 48301 -      --features)       func_features					;;
       
 48302 -      --finish)		mode="finish"					;;
       
 48303 -
       
 48304 -      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
       
 48305 -			case $1 in
       
 48306 -			  # Valid mode arguments:
       
 48307 -			  clean)	;;
       
 48308 -			  compile)	;;
       
 48309 -			  execute)	;;
       
 48310 -			  finish)	;;
       
 48311 -			  install)	;;
       
 48312 -			  link)		;;
       
 48313 -			  relink)	;;
       
 48314 -			  uninstall)	;;
       
 48315 -
       
 48316 -			  # Catch anything else as an error
       
 48317 -			  *) func_error "invalid argument for $opt"
       
 48318 -			     exit_cmd=exit
       
 48319 -			     break
       
 48320 -			     ;;
       
 48321 -		        esac
       
 48322 -
       
 48323 -			mode="$1"
       
 48324 -			shift
       
 48325 -			;;
       
 48326 -
       
 48327 -      --preserve-dup-deps)
       
 48328 -			opt_duplicate_deps=:				;;
       
 48329 -
       
 48330 -      --quiet|--silent)	preserve_args="$preserve_args $opt"
       
 48331 -			opt_silent=:
       
 48332 -			;;
       
 48333 -
       
 48334 -      --verbose| -v)	preserve_args="$preserve_args $opt"
       
 48335 -			opt_silent=false
       
 48336 -			;;
       
 48337 -
       
 48338 -      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
       
 48339 -			preserve_args="$preserve_args $opt $1"
       
 48340 -			func_enable_tag "$1"	# tagname is set here
       
 48341 -			shift
       
 48342 -			;;
       
 48343 -
       
 48344 -      # Separate optargs to long options:
       
 48345 -      -dlopen=*|--mode=*|--tag=*)
       
 48346 -			func_opt_split "$opt"
       
 48347 -			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
       
 48348 -			shift
       
 48349 -			;;
       
 48350 -
       
 48351 -      -\?|-h)		func_usage					;;
       
 48352 -      --help)		opt_help=:					;;
       
 48353 -      --version)	func_version					;;
       
 48354 -
       
 48355 -      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
       
 48356 -
       
 48357 -      *)		nonopt="$opt"
       
 48358 -			break
       
 48359 -			;;
       
 48360 -    esac
       
 48361 -  done
       
 48362 -
       
 48363 -
       
 48364 -  case $host in
       
 48365 -    *cygwin* | *mingw* | *pw32* | *cegcc*)
       
 48366 -      # don't eliminate duplications in $postdeps and $predeps
       
 48367 -      opt_duplicate_compiler_generated_deps=:
       
 48368 -      ;;
       
 48369 -    *)
       
 48370 -      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
       
 48371 -      ;;
       
 48372 -  esac
       
 48373 -
       
 48374 -  # Having warned about all mis-specified options, bail out if
       
 48375 -  # anything was wrong.
       
 48376 -  $exit_cmd $EXIT_FAILURE
       
 48377 -}
       
 48378 -
       
 48379  # func_check_version_match
       
 48380  # Ensure that we are using m4 macros, and libtool script from the same
       
 48381  # release of libtool.
       
 48382  func_check_version_match ()
       
 48383  {
       
 48384    if test "$package_revision" != "$macro_revision"; then
       
 48385      if test "$VERSION" != "$macro_version"; then
       
 48386        if test -z "$macro_version"; then
       
 48387 @@ -850,48 +1006,229 @@ func_check_version_match ()
       
 48388  _LT_EOF
       
 48389      fi
       
 48390  
       
 48391      exit $EXIT_MISMATCH
       
 48392    fi
       
 48393  }
       
 48394  
       
 48395  
       
 48396 +# Shorthand for --mode=foo, only valid as the first argument
       
 48397 +case $1 in
       
 48398 +clean|clea|cle|cl)
       
 48399 +  shift; set dummy --mode clean ${1+"$@"}; shift
       
 48400 +  ;;
       
 48401 +compile|compil|compi|comp|com|co|c)
       
 48402 +  shift; set dummy --mode compile ${1+"$@"}; shift
       
 48403 +  ;;
       
 48404 +execute|execut|execu|exec|exe|ex|e)
       
 48405 +  shift; set dummy --mode execute ${1+"$@"}; shift
       
 48406 +  ;;
       
 48407 +finish|finis|fini|fin|fi|f)
       
 48408 +  shift; set dummy --mode finish ${1+"$@"}; shift
       
 48409 +  ;;
       
 48410 +install|instal|insta|inst|ins|in|i)
       
 48411 +  shift; set dummy --mode install ${1+"$@"}; shift
       
 48412 +  ;;
       
 48413 +link|lin|li|l)
       
 48414 +  shift; set dummy --mode link ${1+"$@"}; shift
       
 48415 +  ;;
       
 48416 +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
       
 48417 +  shift; set dummy --mode uninstall ${1+"$@"}; shift
       
 48418 +  ;;
       
 48419 +esac
       
 48420 +
       
 48421 +
       
 48422 +
       
 48423 +# Option defaults:
       
 48424 +opt_debug=:
       
 48425 +opt_dry_run=false
       
 48426 +opt_config=false
       
 48427 +opt_preserve_dup_deps=false
       
 48428 +opt_features=false
       
 48429 +opt_finish=false
       
 48430 +opt_help=false
       
 48431 +opt_help_all=false
       
 48432 +opt_silent=:
       
 48433 +opt_warning=:
       
 48434 +opt_verbose=:
       
 48435 +opt_silent=false
       
 48436 +opt_verbose=false
       
 48437 +
       
 48438 +
       
 48439 +# Parse options once, thoroughly.  This comes as soon as possible in the
       
 48440 +# script to make things like `--version' happen as quickly as we can.
       
 48441 +{
       
 48442 +  # this just eases exit handling
       
 48443 +  while test $# -gt 0; do
       
 48444 +    opt="$1"
       
 48445 +    shift
       
 48446 +    case $opt in
       
 48447 +      --debug|-x)	opt_debug='set -x'
       
 48448 +			func_echo "enabling shell trace mode"
       
 48449 +			$opt_debug
       
 48450 +			;;
       
 48451 +      --dry-run|--dryrun|-n)
       
 48452 +			opt_dry_run=:
       
 48453 +			;;
       
 48454 +      --config)
       
 48455 +			opt_config=:
       
 48456 +func_config
       
 48457 +			;;
       
 48458 +      --dlopen|-dlopen)
       
 48459 +			optarg="$1"
       
 48460 +			opt_dlopen="${opt_dlopen+$opt_dlopen
       
 48461 +}$optarg"
       
 48462 +			shift
       
 48463 +			;;
       
 48464 +      --preserve-dup-deps)
       
 48465 +			opt_preserve_dup_deps=:
       
 48466 +			;;
       
 48467 +      --features)
       
 48468 +			opt_features=:
       
 48469 +func_features
       
 48470 +			;;
       
 48471 +      --finish)
       
 48472 +			opt_finish=:
       
 48473 +set dummy --mode finish ${1+"$@"}; shift
       
 48474 +			;;
       
 48475 +      --help)
       
 48476 +			opt_help=:
       
 48477 +			;;
       
 48478 +      --help-all)
       
 48479 +			opt_help_all=:
       
 48480 +opt_help=': help-all'
       
 48481 +			;;
       
 48482 +      --mode)
       
 48483 +			test $# = 0 && func_missing_arg $opt && break
       
 48484 +			optarg="$1"
       
 48485 +			opt_mode="$optarg"
       
 48486 +case $optarg in
       
 48487 +  # Valid mode arguments:
       
 48488 +  clean|compile|execute|finish|install|link|relink|uninstall) ;;
       
 48489 +
       
 48490 +  # Catch anything else as an error
       
 48491 +  *) func_error "invalid argument for $opt"
       
 48492 +     exit_cmd=exit
       
 48493 +     break
       
 48494 +     ;;
       
 48495 +esac
       
 48496 +			shift
       
 48497 +			;;
       
 48498 +      --no-silent|--no-quiet)
       
 48499 +			opt_silent=false
       
 48500 +func_append preserve_args " $opt"
       
 48501 +			;;
       
 48502 +      --no-warning|--no-warn)
       
 48503 +			opt_warning=false
       
 48504 +func_append preserve_args " $opt"
       
 48505 +			;;
       
 48506 +      --no-verbose)
       
 48507 +			opt_verbose=false
       
 48508 +func_append preserve_args " $opt"
       
 48509 +			;;
       
 48510 +      --silent|--quiet)
       
 48511 +			opt_silent=:
       
 48512 +func_append preserve_args " $opt"
       
 48513 +        opt_verbose=false
       
 48514 +			;;
       
 48515 +      --verbose|-v)
       
 48516 +			opt_verbose=:
       
 48517 +func_append preserve_args " $opt"
       
 48518 +opt_silent=false
       
 48519 +			;;
       
 48520 +      --tag)
       
 48521 +			test $# = 0 && func_missing_arg $opt && break
       
 48522 +			optarg="$1"
       
 48523 +			opt_tag="$optarg"
       
 48524 +func_append preserve_args " $opt $optarg"
       
 48525 +func_enable_tag "$optarg"
       
 48526 +			shift
       
 48527 +			;;
       
 48528 +
       
 48529 +      -\?|-h)		func_usage				;;
       
 48530 +      --help)		func_help				;;
       
 48531 +      --version)	func_version				;;
       
 48532 +
       
 48533 +      # Separate optargs to long options:
       
 48534 +      --*=*)
       
 48535 +			func_split_long_opt "$opt"
       
 48536 +			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
       
 48537 +			shift
       
 48538 +			;;
       
 48539 +
       
 48540 +      # Separate non-argument short options:
       
 48541 +      -\?*|-h*|-n*|-v*)
       
 48542 +			func_split_short_opt "$opt"
       
 48543 +			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
       
 48544 +			shift
       
 48545 +			;;
       
 48546 +
       
 48547 +      --)		break					;;
       
 48548 +      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
       
 48549 +      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
       
 48550 +    esac
       
 48551 +  done
       
 48552 +
       
 48553 +  # Validate options:
       
 48554 +
       
 48555 +  # save first non-option argument
       
 48556 +  if test "$#" -gt 0; then
       
 48557 +    nonopt="$opt"
       
 48558 +    shift
       
 48559 +  fi
       
 48560 +
       
 48561 +  # preserve --debug
       
 48562 +  test "$opt_debug" = : || func_append preserve_args " --debug"
       
 48563 +
       
 48564 +  case $host in
       
 48565 +    *cygwin* | *mingw* | *pw32* | *cegcc*)
       
 48566 +      # don't eliminate duplications in $postdeps and $predeps
       
 48567 +      opt_duplicate_compiler_generated_deps=:
       
 48568 +      ;;
       
 48569 +    *)
       
 48570 +      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
       
 48571 +      ;;
       
 48572 +  esac
       
 48573 +
       
 48574 +  $opt_help || {
       
 48575 +    # Sanity checks first:
       
 48576 +    func_check_version_match
       
 48577 +
       
 48578 +    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
       
 48579 +      func_fatal_configuration "not configured to build any kind of library"
       
 48580 +    fi
       
 48581 +
       
 48582 +    # Darwin sucks
       
 48583 +    eval std_shrext=\"$shrext_cmds\"
       
 48584 +
       
 48585 +    # Only execute mode is allowed to have -dlopen flags.
       
 48586 +    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
       
 48587 +      func_error "unrecognized option \`-dlopen'"
       
 48588 +      $ECHO "$help" 1>&2
       
 48589 +      exit $EXIT_FAILURE
       
 48590 +    fi
       
 48591 +
       
 48592 +    # Change the help message to a mode-specific one.
       
 48593 +    generic_help="$help"
       
 48594 +    help="Try \`$progname --help --mode=$opt_mode' for more information."
       
 48595 +  }
       
 48596 +
       
 48597 +
       
 48598 +  # Bail if the options were screwed
       
 48599 +  $exit_cmd $EXIT_FAILURE
       
 48600 +}
       
 48601 +
       
 48602 +
       
 48603 +
       
 48604 +
       
 48605  ## ----------- ##
       
 48606  ##    Main.    ##
       
 48607  ## ----------- ##
       
 48608  
       
 48609 -$opt_help || {
       
 48610 -  # Sanity checks first:
       
 48611 -  func_check_version_match
       
 48612 -
       
 48613 -  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
       
 48614 -    func_fatal_configuration "not configured to build any kind of library"
       
 48615 -  fi
       
 48616 -
       
 48617 -  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
       
 48618 -
       
 48619 -
       
 48620 -  # Darwin sucks
       
 48621 -  eval std_shrext=\"$shrext_cmds\"
       
 48622 -
       
 48623 -
       
 48624 -  # Only execute mode is allowed to have -dlopen flags.
       
 48625 -  if test -n "$execute_dlfiles" && test "$mode" != execute; then
       
 48626 -    func_error "unrecognized option \`-dlopen'"
       
 48627 -    $ECHO "$help" 1>&2
       
 48628 -    exit $EXIT_FAILURE
       
 48629 -  fi
       
 48630 -
       
 48631 -  # Change the help message to a mode-specific one.
       
 48632 -  generic_help="$help"
       
 48633 -  help="Try \`$progname --help --mode=$mode' for more information."
       
 48634 -}
       
 48635 -
       
 48636 -
       
 48637  # func_lalib_p file
       
 48638  # True iff FILE is a libtool `.la' library or `.lo' object file.
       
 48639  # This function is only a basic sanity check; it will hardly flush out
       
 48640  # determined imposters.
       
 48641  func_lalib_p ()
       
 48642  {
       
 48643      test -f "$1" &&
       
 48644        $SED -e 4q "$1" 2>/dev/null \
       
 48645 @@ -945,22 +1282,19 @@ func_ltwrapper_executable_p ()
       
 48646  }
       
 48647  
       
 48648  # func_ltwrapper_scriptname file
       
 48649  # Assumes file is an ltwrapper_executable
       
 48650  # uses $file to determine the appropriate filename for a
       
 48651  # temporary ltwrapper_script.
       
 48652  func_ltwrapper_scriptname ()
       
 48653  {
       
 48654 -    func_ltwrapper_scriptname_result=""
       
 48655 -    if func_ltwrapper_executable_p "$1"; then
       
 48656 -	func_dirname_and_basename "$1" "" "."
       
 48657 -	func_stripname '' '.exe' "$func_basename_result"
       
 48658 -	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
       
 48659 -    fi
       
 48660 +    func_dirname_and_basename "$1" "" "."
       
 48661 +    func_stripname '' '.exe' "$func_basename_result"
       
 48662 +    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
       
 48663  }
       
 48664  
       
 48665  # func_ltwrapper_p file
       
 48666  # True iff FILE is a libtool wrapper script or wrapper executable
       
 48667  # This function is only a basic sanity check; it will hardly flush out
       
 48668  # determined imposters.
       
 48669  func_ltwrapper_p ()
       
 48670  {
       
 48671 @@ -996,50 +1330,85 @@ func_source ()
       
 48672      $opt_debug
       
 48673      case $1 in
       
 48674      */* | *\\*)	. "$1" ;;
       
 48675      *)		. "./$1" ;;
       
 48676      esac
       
 48677  }
       
 48678  
       
 48679  
       
 48680 +# func_resolve_sysroot PATH
       
 48681 +# Replace a leading = in PATH with a sysroot.  Store the result into
       
 48682 +# func_resolve_sysroot_result
       
 48683 +func_resolve_sysroot ()
       
 48684 +{
       
 48685 +  func_resolve_sysroot_result=$1
       
 48686 +  case $func_resolve_sysroot_result in
       
 48687 +  =*)
       
 48688 +    func_stripname '=' '' "$func_resolve_sysroot_result"
       
 48689 +    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
       
 48690 +    ;;
       
 48691 +  esac
       
 48692 +}
       
 48693 +
       
 48694 +# func_replace_sysroot PATH
       
 48695 +# If PATH begins with the sysroot, replace it with = and
       
 48696 +# store the result into func_replace_sysroot_result.
       
 48697 +func_replace_sysroot ()
       
 48698 +{
       
 48699 +  case "$lt_sysroot:$1" in
       
 48700 +  ?*:"$lt_sysroot"*)
       
 48701 +    func_stripname "$lt_sysroot" '' "$1"
       
 48702 +    func_replace_sysroot_result="=$func_stripname_result"
       
 48703 +    ;;
       
 48704 +  *)
       
 48705 +    # Including no sysroot.
       
 48706 +    func_replace_sysroot_result=$1
       
 48707 +    ;;
       
 48708 +  esac
       
 48709 +}
       
 48710 +
       
 48711  # func_infer_tag arg
       
 48712  # Infer tagged configuration to use if any are available and
       
 48713  # if one wasn't chosen via the "--tag" command line option.
       
 48714  # Only attempt this if the compiler in the base compile
       
 48715  # command doesn't match the default compiler.
       
 48716  # arg is usually of the form 'gcc ...'
       
 48717  func_infer_tag ()
       
 48718  {
       
 48719      $opt_debug
       
 48720      if test -n "$available_tags" && test -z "$tagname"; then
       
 48721        CC_quoted=
       
 48722        for arg in $CC; do
       
 48723 -        func_quote_for_eval "$arg"
       
 48724 -	CC_quoted="$CC_quoted $func_quote_for_eval_result"
       
 48725 +	func_append_quoted CC_quoted "$arg"
       
 48726        done
       
 48727 +      CC_expanded=`func_echo_all $CC`
       
 48728 +      CC_quoted_expanded=`func_echo_all $CC_quoted`
       
 48729        case $@ in
       
 48730        # Blanks in the command may have been stripped by the calling shell,
       
 48731        # but not from the CC environment variable when configure was run.
       
 48732 -      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
       
 48733 +      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
       
 48734 +      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
       
 48735        # Blanks at the start of $base_compile will cause this to fail
       
 48736        # if we don't check for them as well.
       
 48737        *)
       
 48738  	for z in $available_tags; do
       
 48739  	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
       
 48740  	    # Evaluate the configuration.
       
 48741  	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
       
 48742  	    CC_quoted=
       
 48743  	    for arg in $CC; do
       
 48744  	      # Double-quote args containing other shell metacharacters.
       
 48745 -	      func_quote_for_eval "$arg"
       
 48746 -	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
       
 48747 +	      func_append_quoted CC_quoted "$arg"
       
 48748  	    done
       
 48749 +	    CC_expanded=`func_echo_all $CC`
       
 48750 +	    CC_quoted_expanded=`func_echo_all $CC_quoted`
       
 48751  	    case "$@ " in
       
 48752 -	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
       
 48753 +	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
       
 48754 +	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
       
 48755  	      # The compiler in the base compile command matches
       
 48756  	      # the one in the tagged configuration.
       
 48757  	      # Assume this is the tagged configuration we want.
       
 48758  	      tagname=$z
       
 48759  	      break
       
 48760  	      ;;
       
 48761  	    esac
       
 48762  	  fi
       
 48763 @@ -1092,16 +1461,496 @@ pic_object=$write_lobj
       
 48764  # Name of the non-PIC object
       
 48765  non_pic_object=$write_oldobj
       
 48766  
       
 48767  EOF
       
 48768        $MV "${write_libobj}T" "${write_libobj}"
       
 48769      }
       
 48770  }
       
 48771  
       
 48772 +
       
 48773 +##################################################
       
 48774 +# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
       
 48775 +##################################################
       
 48776 +
       
 48777 +# func_convert_core_file_wine_to_w32 ARG
       
 48778 +# Helper function used by file name conversion functions when $build is *nix,
       
 48779 +# and $host is mingw, cygwin, or some other w32 environment. Relies on a
       
 48780 +# correctly configured wine environment available, with the winepath program
       
 48781 +# in $build's $PATH.
       
 48782 +#
       
 48783 +# ARG is the $build file name to be converted to w32 format.
       
 48784 +# Result is available in $func_convert_core_file_wine_to_w32_result, and will
       
 48785 +# be empty on error (or when ARG is empty)
       
 48786 +func_convert_core_file_wine_to_w32 ()
       
 48787 +{
       
 48788 +  $opt_debug
       
 48789 +  func_convert_core_file_wine_to_w32_result="$1"
       
 48790 +  if test -n "$1"; then
       
 48791 +    # Unfortunately, winepath does not exit with a non-zero error code, so we
       
 48792 +    # are forced to check the contents of stdout. On the other hand, if the
       
 48793 +    # command is not found, the shell will set an exit code of 127 and print
       
 48794 +    # *an error message* to stdout. So we must check for both error code of
       
 48795 +    # zero AND non-empty stdout, which explains the odd construction:
       
 48796 +    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
       
 48797 +    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
       
 48798 +      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
       
 48799 +        $SED -e "$lt_sed_naive_backslashify"`
       
 48800 +    else
       
 48801 +      func_convert_core_file_wine_to_w32_result=
       
 48802 +    fi
       
 48803 +  fi
       
 48804 +}
       
 48805 +# end: func_convert_core_file_wine_to_w32
       
 48806 +
       
 48807 +
       
 48808 +# func_convert_core_path_wine_to_w32 ARG
       
 48809 +# Helper function used by path conversion functions when $build is *nix, and
       
 48810 +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
       
 48811 +# configured wine environment available, with the winepath program in $build's
       
 48812 +# $PATH. Assumes ARG has no leading or trailing path separator characters.
       
 48813 +#
       
 48814 +# ARG is path to be converted from $build format to win32.
       
 48815 +# Result is available in $func_convert_core_path_wine_to_w32_result.
       
 48816 +# Unconvertible file (directory) names in ARG are skipped; if no directory names
       
 48817 +# are convertible, then the result may be empty.
       
 48818 +func_convert_core_path_wine_to_w32 ()
       
 48819 +{
       
 48820 +  $opt_debug
       
 48821 +  # unfortunately, winepath doesn't convert paths, only file names
       
 48822 +  func_convert_core_path_wine_to_w32_result=""
       
 48823 +  if test -n "$1"; then
       
 48824 +    oldIFS=$IFS
       
 48825 +    IFS=:
       
 48826 +    for func_convert_core_path_wine_to_w32_f in $1; do
       
 48827 +      IFS=$oldIFS
       
 48828 +      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
       
 48829 +      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
       
 48830 +        if test -z "$func_convert_core_path_wine_to_w32_result"; then
       
 48831 +          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
       
 48832 +        else
       
 48833 +          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
       
 48834 +        fi
       
 48835 +      fi
       
 48836 +    done
       
 48837 +    IFS=$oldIFS
       
 48838 +  fi
       
 48839 +}
       
 48840 +# end: func_convert_core_path_wine_to_w32
       
 48841 +
       
 48842 +
       
 48843 +# func_cygpath ARGS...
       
 48844 +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
       
 48845 +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
       
 48846 +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
       
 48847 +# (2), returns the Cygwin file name or path in func_cygpath_result (input
       
 48848 +# file name or path is assumed to be in w32 format, as previously converted
       
 48849 +# from $build's *nix or MSYS format). In case (3), returns the w32 file name
       
 48850 +# or path in func_cygpath_result (input file name or path is assumed to be in
       
 48851 +# Cygwin format). Returns an empty string on error.
       
 48852 +#
       
 48853 +# ARGS are passed to cygpath, with the last one being the file name or path to
       
 48854 +# be converted.
       
 48855 +#
       
 48856 +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
       
 48857 +# environment variable; do not put it in $PATH.
       
 48858 +func_cygpath ()
       
 48859 +{
       
 48860 +  $opt_debug
       
 48861 +  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
       
 48862 +    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
       
 48863 +    if test "$?" -ne 0; then
       
 48864 +      # on failure, ensure result is empty
       
 48865 +      func_cygpath_result=
       
 48866 +    fi
       
 48867 +  else
       
 48868 +    func_cygpath_result=
       
 48869 +    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
       
 48870 +  fi
       
 48871 +}
       
 48872 +#end: func_cygpath
       
 48873 +
       
 48874 +
       
 48875 +# func_convert_core_msys_to_w32 ARG
       
 48876 +# Convert file name or path ARG from MSYS format to w32 format.  Return
       
 48877 +# result in func_convert_core_msys_to_w32_result.
       
 48878 +func_convert_core_msys_to_w32 ()
       
 48879 +{
       
 48880 +  $opt_debug
       
 48881 +  # awkward: cmd appends spaces to result
       
 48882 +  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
       
 48883 +    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
       
 48884 +}
       
 48885 +#end: func_convert_core_msys_to_w32
       
 48886 +
       
 48887 +
       
 48888 +# func_convert_file_check ARG1 ARG2
       
 48889 +# Verify that ARG1 (a file name in $build format) was converted to $host
       
 48890 +# format in ARG2. Otherwise, emit an error message, but continue (resetting
       
 48891 +# func_to_host_file_result to ARG1).
       
 48892 +func_convert_file_check ()
       
 48893 +{
       
 48894 +  $opt_debug
       
 48895 +  if test -z "$2" && test -n "$1" ; then
       
 48896 +    func_error "Could not determine host file name corresponding to"
       
 48897 +    func_error "  \`$1'"
       
 48898 +    func_error "Continuing, but uninstalled executables may not work."
       
 48899 +    # Fallback:
       
 48900 +    func_to_host_file_result="$1"
       
 48901 +  fi
       
 48902 +}
       
 48903 +# end func_convert_file_check
       
 48904 +
       
 48905 +
       
 48906 +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
       
 48907 +# Verify that FROM_PATH (a path in $build format) was converted to $host
       
 48908 +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
       
 48909 +# func_to_host_file_result to a simplistic fallback value (see below).
       
 48910 +func_convert_path_check ()
       
 48911 +{
       
 48912 +  $opt_debug
       
 48913 +  if test -z "$4" && test -n "$3"; then
       
 48914 +    func_error "Could not determine the host path corresponding to"
       
 48915 +    func_error "  \`$3'"
       
 48916 +    func_error "Continuing, but uninstalled executables may not work."
       
 48917 +    # Fallback.  This is a deliberately simplistic "conversion" and
       
 48918 +    # should not be "improved".  See libtool.info.
       
 48919 +    if test "x$1" != "x$2"; then
       
 48920 +      lt_replace_pathsep_chars="s|$1|$2|g"
       
 48921 +      func_to_host_path_result=`echo "$3" |
       
 48922 +        $SED -e "$lt_replace_pathsep_chars"`
       
 48923 +    else
       
 48924 +      func_to_host_path_result="$3"
       
 48925 +    fi
       
 48926 +  fi
       
 48927 +}
       
 48928 +# end func_convert_path_check
       
 48929 +
       
 48930 +
       
 48931 +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
       
 48932 +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
       
 48933 +# and appending REPL if ORIG matches BACKPAT.
       
 48934 +func_convert_path_front_back_pathsep ()
       
 48935 +{
       
 48936 +  $opt_debug
       
 48937 +  case $4 in
       
 48938 +  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
       
 48939 +    ;;
       
 48940 +  esac
       
 48941 +  case $4 in
       
 48942 +  $2 ) func_append func_to_host_path_result "$3"
       
 48943 +    ;;
       
 48944 +  esac
       
 48945 +}
       
 48946 +# end func_convert_path_front_back_pathsep
       
 48947 +
       
 48948 +
       
 48949 +##################################################
       
 48950 +# $build to $host FILE NAME CONVERSION FUNCTIONS #
       
 48951 +##################################################
       
 48952 +# invoked via `$to_host_file_cmd ARG'
       
 48953 +#
       
 48954 +# In each case, ARG is the path to be converted from $build to $host format.
       
 48955 +# Result will be available in $func_to_host_file_result.
       
 48956 +
       
 48957 +
       
 48958 +# func_to_host_file ARG
       
 48959 +# Converts the file name ARG from $build format to $host format. Return result
       
 48960 +# in func_to_host_file_result.
       
 48961 +func_to_host_file ()
       
 48962 +{
       
 48963 +  $opt_debug
       
 48964 +  $to_host_file_cmd "$1"
       
 48965 +}
       
 48966 +# end func_to_host_file
       
 48967 +
       
 48968 +
       
 48969 +# func_to_tool_file ARG LAZY
       
 48970 +# converts the file name ARG from $build format to toolchain format. Return
       
 48971 +# result in func_to_tool_file_result.  If the conversion in use is listed
       
 48972 +# in (the comma separated) LAZY, no conversion takes place.
       
 48973 +func_to_tool_file ()
       
 48974 +{
       
 48975 +  $opt_debug
       
 48976 +  case ,$2, in
       
 48977 +    *,"$to_tool_file_cmd",*)
       
 48978 +      func_to_tool_file_result=$1
       
 48979 +      ;;
       
 48980 +    *)
       
 48981 +      $to_tool_file_cmd "$1"
       
 48982 +      func_to_tool_file_result=$func_to_host_file_result
       
 48983 +      ;;
       
 48984 +  esac
       
 48985 +}
       
 48986 +# end func_to_tool_file
       
 48987 +
       
 48988 +
       
 48989 +# func_convert_file_noop ARG
       
 48990 +# Copy ARG to func_to_host_file_result.
       
 48991 +func_convert_file_noop ()
       
 48992 +{
       
 48993 +  func_to_host_file_result="$1"
       
 48994 +}
       
 48995 +# end func_convert_file_noop
       
 48996 +
       
 48997 +
       
 48998 +# func_convert_file_msys_to_w32 ARG
       
 48999 +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
       
 49000 +# conversion to w32 is not available inside the cwrapper.  Returns result in
       
 49001 +# func_to_host_file_result.
       
 49002 +func_convert_file_msys_to_w32 ()
       
 49003 +{
       
 49004 +  $opt_debug
       
 49005 +  func_to_host_file_result="$1"
       
 49006 +  if test -n "$1"; then
       
 49007 +    func_convert_core_msys_to_w32 "$1"
       
 49008 +    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
       
 49009 +  fi
       
 49010 +  func_convert_file_check "$1" "$func_to_host_file_result"
       
 49011 +}
       
 49012 +# end func_convert_file_msys_to_w32
       
 49013 +
       
 49014 +
       
 49015 +# func_convert_file_cygwin_to_w32 ARG
       
 49016 +# Convert file name ARG from Cygwin to w32 format.  Returns result in
       
 49017 +# func_to_host_file_result.
       
 49018 +func_convert_file_cygwin_to_w32 ()
       
 49019 +{
       
 49020 +  $opt_debug
       
 49021 +  func_to_host_file_result="$1"
       
 49022 +  if test -n "$1"; then
       
 49023 +    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
       
 49024 +    # LT_CYGPATH in this case.
       
 49025 +    func_to_host_file_result=`cygpath -m "$1"`
       
 49026 +  fi
       
 49027 +  func_convert_file_check "$1" "$func_to_host_file_result"
       
 49028 +}
       
 49029 +# end func_convert_file_cygwin_to_w32
       
 49030 +
       
 49031 +
       
 49032 +# func_convert_file_nix_to_w32 ARG
       
 49033 +# Convert file name ARG from *nix to w32 format.  Requires a wine environment
       
 49034 +# and a working winepath. Returns result in func_to_host_file_result.
       
 49035 +func_convert_file_nix_to_w32 ()
       
 49036 +{
       
 49037 +  $opt_debug
       
 49038 +  func_to_host_file_result="$1"
       
 49039 +  if test -n "$1"; then
       
 49040 +    func_convert_core_file_wine_to_w32 "$1"
       
 49041 +    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
       
 49042 +  fi
       
 49043 +  func_convert_file_check "$1" "$func_to_host_file_result"
       
 49044 +}
       
 49045 +# end func_convert_file_nix_to_w32
       
 49046 +
       
 49047 +
       
 49048 +# func_convert_file_msys_to_cygwin ARG
       
 49049 +# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
       
 49050 +# Returns result in func_to_host_file_result.
       
 49051 +func_convert_file_msys_to_cygwin ()
       
 49052 +{
       
 49053 +  $opt_debug
       
 49054 +  func_to_host_file_result="$1"
       
 49055 +  if test -n "$1"; then
       
 49056 +    func_convert_core_msys_to_w32 "$1"
       
 49057 +    func_cygpath -u "$func_convert_core_msys_to_w32_result"
       
 49058 +    func_to_host_file_result="$func_cygpath_result"
       
 49059 +  fi
       
 49060 +  func_convert_file_check "$1" "$func_to_host_file_result"
       
 49061 +}
       
 49062 +# end func_convert_file_msys_to_cygwin
       
 49063 +
       
 49064 +
       
 49065 +# func_convert_file_nix_to_cygwin ARG
       
 49066 +# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
       
 49067 +# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
       
 49068 +# in func_to_host_file_result.
       
 49069 +func_convert_file_nix_to_cygwin ()
       
 49070 +{
       
 49071 +  $opt_debug
       
 49072 +  func_to_host_file_result="$1"
       
 49073 +  if test -n "$1"; then
       
 49074 +    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
       
 49075 +    func_convert_core_file_wine_to_w32 "$1"
       
 49076 +    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
       
 49077 +    func_to_host_file_result="$func_cygpath_result"
       
 49078 +  fi
       
 49079 +  func_convert_file_check "$1" "$func_to_host_file_result"
       
 49080 +}
       
 49081 +# end func_convert_file_nix_to_cygwin
       
 49082 +
       
 49083 +
       
 49084 +#############################################
       
 49085 +# $build to $host PATH CONVERSION FUNCTIONS #
       
 49086 +#############################################
       
 49087 +# invoked via `$to_host_path_cmd ARG'
       
 49088 +#
       
 49089 +# In each case, ARG is the path to be converted from $build to $host format.
       
 49090 +# The result will be available in $func_to_host_path_result.
       
 49091 +#
       
 49092 +# Path separators are also converted from $build format to $host format.  If
       
 49093 +# ARG begins or ends with a path separator character, it is preserved (but
       
 49094 +# converted to $host format) on output.
       
 49095 +#
       
 49096 +# All path conversion functions are named using the following convention:
       
 49097 +#   file name conversion function    : func_convert_file_X_to_Y ()
       
 49098 +#   path conversion function         : func_convert_path_X_to_Y ()
       
 49099 +# where, for any given $build/$host combination the 'X_to_Y' value is the
       
 49100 +# same.  If conversion functions are added for new $build/$host combinations,
       
 49101 +# the two new functions must follow this pattern, or func_init_to_host_path_cmd
       
 49102 +# will break.
       
 49103 +
       
 49104 +
       
 49105 +# func_init_to_host_path_cmd
       
 49106 +# Ensures that function "pointer" variable $to_host_path_cmd is set to the
       
 49107 +# appropriate value, based on the value of $to_host_file_cmd.
       
 49108 +to_host_path_cmd=
       
 49109 +func_init_to_host_path_cmd ()
       
 49110 +{
       
 49111 +  $opt_debug
       
 49112 +  if test -z "$to_host_path_cmd"; then
       
 49113 +    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
       
 49114 +    to_host_path_cmd="func_convert_path_${func_stripname_result}"
       
 49115 +  fi
       
 49116 +}
       
 49117 +
       
 49118 +
       
 49119 +# func_to_host_path ARG
       
 49120 +# Converts the path ARG from $build format to $host format. Return result
       
 49121 +# in func_to_host_path_result.
       
 49122 +func_to_host_path ()
       
 49123 +{
       
 49124 +  $opt_debug
       
 49125 +  func_init_to_host_path_cmd
       
 49126 +  $to_host_path_cmd "$1"
       
 49127 +}
       
 49128 +# end func_to_host_path
       
 49129 +
       
 49130 +
       
 49131 +# func_convert_path_noop ARG
       
 49132 +# Copy ARG to func_to_host_path_result.
       
 49133 +func_convert_path_noop ()
       
 49134 +{
       
 49135 +  func_to_host_path_result="$1"
       
 49136 +}
       
 49137 +# end func_convert_path_noop
       
 49138 +
       
 49139 +
       
 49140 +# func_convert_path_msys_to_w32 ARG
       
 49141 +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
       
 49142 +# conversion to w32 is not available inside the cwrapper.  Returns result in
       
 49143 +# func_to_host_path_result.
       
 49144 +func_convert_path_msys_to_w32 ()
       
 49145 +{
       
 49146 +  $opt_debug
       
 49147 +  func_to_host_path_result="$1"
       
 49148 +  if test -n "$1"; then
       
 49149 +    # Remove leading and trailing path separator characters from ARG.  MSYS
       
 49150 +    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
       
 49151 +    # and winepath ignores them completely.
       
 49152 +    func_stripname : : "$1"
       
 49153 +    func_to_host_path_tmp1=$func_stripname_result
       
 49154 +    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
       
 49155 +    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
       
 49156 +    func_convert_path_check : ";" \
       
 49157 +      "$func_to_host_path_tmp1" "$func_to_host_path_result"
       
 49158 +    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
       
 49159 +  fi
       
 49160 +}
       
 49161 +# end func_convert_path_msys_to_w32
       
 49162 +
       
 49163 +
       
 49164 +# func_convert_path_cygwin_to_w32 ARG
       
 49165 +# Convert path ARG from Cygwin to w32 format.  Returns result in
       
 49166 +# func_to_host_file_result.
       
 49167 +func_convert_path_cygwin_to_w32 ()
       
 49168 +{
       
 49169 +  $opt_debug
       
 49170 +  func_to_host_path_result="$1"
       
 49171 +  if test -n "$1"; then
       
 49172 +    # See func_convert_path_msys_to_w32:
       
 49173 +    func_stripname : : "$1"
       
 49174 +    func_to_host_path_tmp1=$func_stripname_result
       
 49175 +    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
       
 49176 +    func_convert_path_check : ";" \
       
 49177 +      "$func_to_host_path_tmp1" "$func_to_host_path_result"
       
 49178 +    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
       
 49179 +  fi
       
 49180 +}
       
 49181 +# end func_convert_path_cygwin_to_w32
       
 49182 +
       
 49183 +
       
 49184 +# func_convert_path_nix_to_w32 ARG
       
 49185 +# Convert path ARG from *nix to w32 format.  Requires a wine environment and
       
 49186 +# a working winepath.  Returns result in func_to_host_file_result.
       
 49187 +func_convert_path_nix_to_w32 ()
       
 49188 +{
       
 49189 +  $opt_debug
       
 49190 +  func_to_host_path_result="$1"
       
 49191 +  if test -n "$1"; then
       
 49192 +    # See func_convert_path_msys_to_w32:
       
 49193 +    func_stripname : : "$1"
       
 49194 +    func_to_host_path_tmp1=$func_stripname_result
       
 49195 +    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
       
 49196 +    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
       
 49197 +    func_convert_path_check : ";" \
       
 49198 +      "$func_to_host_path_tmp1" "$func_to_host_path_result"
       
 49199 +    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
       
 49200 +  fi
       
 49201 +}
       
 49202 +# end func_convert_path_nix_to_w32
       
 49203 +
       
 49204 +
       
 49205 +# func_convert_path_msys_to_cygwin ARG
       
 49206 +# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
       
 49207 +# Returns result in func_to_host_file_result.
       
 49208 +func_convert_path_msys_to_cygwin ()
       
 49209 +{
       
 49210 +  $opt_debug
       
 49211 +  func_to_host_path_result="$1"
       
 49212 +  if test -n "$1"; then
       
 49213 +    # See func_convert_path_msys_to_w32:
       
 49214 +    func_stripname : : "$1"
       
 49215 +    func_to_host_path_tmp1=$func_stripname_result
       
 49216 +    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
       
 49217 +    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
       
 49218 +    func_to_host_path_result="$func_cygpath_result"
       
 49219 +    func_convert_path_check : : \
       
 49220 +      "$func_to_host_path_tmp1" "$func_to_host_path_result"
       
 49221 +    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
       
 49222 +  fi
       
 49223 +}
       
 49224 +# end func_convert_path_msys_to_cygwin
       
 49225 +
       
 49226 +
       
 49227 +# func_convert_path_nix_to_cygwin ARG
       
 49228 +# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
       
 49229 +# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
       
 49230 +# func_to_host_file_result.
       
 49231 +func_convert_path_nix_to_cygwin ()
       
 49232 +{
       
 49233 +  $opt_debug
       
 49234 +  func_to_host_path_result="$1"
       
 49235 +  if test -n "$1"; then
       
 49236 +    # Remove leading and trailing path separator characters from
       
 49237 +    # ARG. msys behavior is inconsistent here, cygpath turns them
       
 49238 +    # into '.;' and ';.', and winepath ignores them completely.
       
 49239 +    func_stripname : : "$1"
       
 49240 +    func_to_host_path_tmp1=$func_stripname_result
       
 49241 +    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
       
 49242 +    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
       
 49243 +    func_to_host_path_result="$func_cygpath_result"
       
 49244 +    func_convert_path_check : : \
       
 49245 +      "$func_to_host_path_tmp1" "$func_to_host_path_result"
       
 49246 +    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
       
 49247 +  fi
       
 49248 +}
       
 49249 +# end func_convert_path_nix_to_cygwin
       
 49250 +
       
 49251 +
       
 49252  # func_mode_compile arg...
       
 49253  func_mode_compile ()
       
 49254  {
       
 49255      $opt_debug
       
 49256      # Get the compilation command and the source file.
       
 49257      base_compile=
       
 49258      srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
       
 49259      suppress_opt=yes
       
 49260 @@ -1132,22 +1981,22 @@ func_mode_compile ()
       
 49261  	-o)
       
 49262  	  test -n "$libobj" && \
       
 49263  	    func_fatal_error "you cannot specify \`-o' more than once"
       
 49264  	  arg_mode=target
       
 49265  	  continue
       
 49266  	  ;;
       
 49267  
       
 49268  	-pie | -fpie | -fPIE)
       
 49269 -          pie_flag="$pie_flag $arg"
       
 49270 +          func_append pie_flag " $arg"
       
 49271  	  continue
       
 49272  	  ;;
       
 49273  
       
 49274  	-shared | -static | -prefer-pic | -prefer-non-pic)
       
 49275 -	  later="$later $arg"
       
 49276 +	  func_append later " $arg"
       
 49277  	  continue
       
 49278  	  ;;
       
 49279  
       
 49280  	-no-suppress)
       
 49281  	  suppress_opt=no
       
 49282  	  continue
       
 49283  	  ;;
       
 49284  
       
 49285 @@ -1158,42 +2007,40 @@ func_mode_compile ()
       
 49286  
       
 49287  	-Wc,*)
       
 49288  	  func_stripname '-Wc,' '' "$arg"
       
 49289  	  args=$func_stripname_result
       
 49290  	  lastarg=
       
 49291  	  save_ifs="$IFS"; IFS=','
       
 49292  	  for arg in $args; do
       
 49293  	    IFS="$save_ifs"
       
 49294 -	    func_quote_for_eval "$arg"
       
 49295 -	    lastarg="$lastarg $func_quote_for_eval_result"
       
 49296 +	    func_append_quoted lastarg "$arg"
       
 49297  	  done
       
 49298  	  IFS="$save_ifs"
       
 49299  	  func_stripname ' ' '' "$lastarg"
       
 49300  	  lastarg=$func_stripname_result
       
 49301  
       
 49302  	  # Add the arguments to base_compile.
       
 49303 -	  base_compile="$base_compile $lastarg"
       
 49304 +	  func_append base_compile " $lastarg"
       
 49305  	  continue
       
 49306  	  ;;
       
 49307  
       
 49308  	*)
       
 49309  	  # Accept the current argument as the source file.
       
 49310  	  # The previous "srcfile" becomes the current argument.
       
 49311  	  #
       
 49312  	  lastarg="$srcfile"
       
 49313  	  srcfile="$arg"
       
 49314  	  ;;
       
 49315  	esac  #  case $arg
       
 49316  	;;
       
 49317        esac    #  case $arg_mode
       
 49318  
       
 49319        # Aesthetically quote the previous argument.
       
 49320 -      func_quote_for_eval "$lastarg"
       
 49321 -      base_compile="$base_compile $func_quote_for_eval_result"
       
 49322 +      func_append_quoted base_compile "$lastarg"
       
 49323      done # for arg
       
 49324  
       
 49325      case $arg_mode in
       
 49326      arg)
       
 49327        func_fatal_error "you must specify an argument for -Xcompile"
       
 49328        ;;
       
 49329      target)
       
 49330        func_fatal_error "you must specify a target with \`-o'"
       
 49331 @@ -1208,17 +2055,17 @@ func_mode_compile ()
       
 49332      esac
       
 49333  
       
 49334      # Recognize several different file suffixes.
       
 49335      # If the user specifies -o file.o, it is replaced with file.lo
       
 49336      case $libobj in
       
 49337      *.[cCFSifmso] | \
       
 49338      *.ada | *.adb | *.ads | *.asm | \
       
 49339      *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
       
 49340 -    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
       
 49341 +    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
       
 49342        func_xform "$libobj"
       
 49343        libobj=$func_xform_result
       
 49344        ;;
       
 49345      esac
       
 49346  
       
 49347      case $libobj in
       
 49348      *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
       
 49349      *)
       
 49350 @@ -1283,17 +2130,17 @@ func_mode_compile ()
       
 49351      if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
       
 49352        # non-PIC code in shared libraries is not supported
       
 49353        pic_mode=default
       
 49354      fi
       
 49355  
       
 49356      # Calculate the filename of the output object if compiler does
       
 49357      # not support -o with -c
       
 49358      if test "$compiler_c_o" = no; then
       
 49359 -      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
       
 49360 +      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
       
 49361        lockfile="$output_obj.lock"
       
 49362      else
       
 49363        output_obj=
       
 49364        need_locks=no
       
 49365        lockfile=
       
 49366      fi
       
 49367  
       
 49368      # Lock this critical section if it is needed
       
 49369 @@ -1314,27 +2161,26 @@ temporary object file, and libtool could
       
 49370  your compiler does not support \`-c' and \`-o' together.  If you
       
 49371  repeat this compilation, it may succeed, by chance, but you had better
       
 49372  avoid parallel builds (make -j) in this platform, or get a better
       
 49373  compiler."
       
 49374  
       
 49375  	$opt_dry_run || $RM $removelist
       
 49376  	exit $EXIT_FAILURE
       
 49377        fi
       
 49378 -      removelist="$removelist $output_obj"
       
 49379 +      func_append removelist " $output_obj"
       
 49380        $ECHO "$srcfile" > "$lockfile"
       
 49381      fi
       
 49382  
       
 49383      $opt_dry_run || $RM $removelist
       
 49384 -    removelist="$removelist $lockfile"
       
 49385 +    func_append removelist " $lockfile"
       
 49386      trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
       
 49387  
       
 49388 -    if test -n "$fix_srcfile_path"; then
       
 49389 -      eval srcfile=\"$fix_srcfile_path\"
       
 49390 -    fi
       
 49391 +    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
       
 49392 +    srcfile=$func_to_tool_file_result
       
 49393      func_quote_for_eval "$srcfile"
       
 49394      qsrcfile=$func_quote_for_eval_result
       
 49395  
       
 49396      # Only build a PIC object if we are building libtool libraries.
       
 49397      if test "$build_libtool_libs" = yes; then
       
 49398        # Without this assignment, base_compile gets emptied.
       
 49399        fbsd_hideous_sh_bug=$base_compile
       
 49400  
       
 49401 @@ -1344,17 +2190,17 @@ compiler."
       
 49402  	# Don't build PIC code
       
 49403  	command="$base_compile $qsrcfile"
       
 49404        fi
       
 49405  
       
 49406        func_mkdir_p "$xdir$objdir"
       
 49407  
       
 49408        if test -z "$output_obj"; then
       
 49409  	# Place PIC objects in $objdir
       
 49410 -	command="$command -o $lobj"
       
 49411 +	func_append command " -o $lobj"
       
 49412        fi
       
 49413  
       
 49414        func_show_eval_locale "$command"	\
       
 49415            'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
       
 49416  
       
 49417        if test "$need_locks" = warn &&
       
 49418  	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
       
 49419  	$ECHO "\
       
 49420 @@ -1391,21 +2237,21 @@ compiler."
       
 49421      if test "$build_old_libs" = yes; then
       
 49422        if test "$pic_mode" != yes; then
       
 49423  	# Don't build PIC code
       
 49424  	command="$base_compile $qsrcfile$pie_flag"
       
 49425        else
       
 49426  	command="$base_compile $qsrcfile $pic_flag"
       
 49427        fi
       
 49428        if test "$compiler_c_o" = yes; then
       
 49429 -	command="$command -o $obj"
       
 49430 +	func_append command " -o $obj"
       
 49431        fi
       
 49432  
       
 49433        # Suppress compiler output if we already did a PIC compilation.
       
 49434 -      command="$command$suppress_output"
       
 49435 +      func_append command "$suppress_output"
       
 49436        func_show_eval_locale "$command" \
       
 49437          '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
       
 49438  
       
 49439        if test "$need_locks" = warn &&
       
 49440  	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
       
 49441  	$ECHO "\
       
 49442  *** ERROR, $lockfile contains:
       
 49443  `cat $lockfile 2>/dev/null`
       
 49444 @@ -1440,23 +2286,23 @@ compiler."
       
 49445          $RM "$lockfile"
       
 49446        fi
       
 49447      }
       
 49448  
       
 49449      exit $EXIT_SUCCESS
       
 49450  }
       
 49451  
       
 49452  $opt_help || {
       
 49453 -test "$mode" = compile && func_mode_compile ${1+"$@"}
       
 49454 +  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
       
 49455  }
       
 49456  
       
 49457  func_mode_help ()
       
 49458  {
       
 49459      # We need to display help for each of the modes.
       
 49460 -    case $mode in
       
 49461 +    case $opt_mode in
       
 49462        "")
       
 49463          # Generic help is extracted from the usage comments
       
 49464          # at the start of this file.
       
 49465          func_help
       
 49466          ;;
       
 49467  
       
 49468        clean)
       
 49469          $ECHO \
       
 49470 @@ -1477,20 +2323,21 @@ with it are deleted. Otherwise, only FIL
       
 49471  "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
       
 49472  
       
 49473  Compile a source file into a libtool library object.
       
 49474  
       
 49475  This mode accepts the following additional options:
       
 49476  
       
 49477    -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
       
 49478    -no-suppress      do not suppress compiler output for multiple passes
       
 49479 -  -prefer-pic       try to building PIC objects only
       
 49480 -  -prefer-non-pic   try to building non-PIC objects only
       
 49481 +  -prefer-pic       try to build PIC objects only
       
 49482 +  -prefer-non-pic   try to build non-PIC objects only
       
 49483    -shared           do not build a \`.o' file suitable for static linking
       
 49484    -static           only build a \`.o' file suitable for static linking
       
 49485 +  -Wc,FLAG          pass FLAG directly to the compiler
       
 49486  
       
 49487  COMPILE-COMMAND is a command to be used in creating a \`standard' object file
       
 49488  from the given SOURCEFILE.
       
 49489  
       
 49490  The output file name is determined by removing the directory component from
       
 49491  SOURCEFILE, then substituting the C source code suffix \`.c' with the
       
 49492  library object suffix, \`.lo'."
       
 49493          ;;
       
 49494 @@ -1533,17 +2380,17 @@ the \`--dry-run' option if you just want
       
 49495  
       
 49496  Install executables or libraries.
       
 49497  
       
 49498  INSTALL-COMMAND is the installation command.  The first component should be
       
 49499  either the \`install' or \`cp' program.
       
 49500  
       
 49501  The following components of INSTALL-COMMAND are treated specially:
       
 49502  
       
 49503 -  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
       
 49504 +  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
       
 49505  
       
 49506  The rest of the components are interpreted as arguments to that command (only
       
 49507  BSD-compatible install options are recognized)."
       
 49508          ;;
       
 49509  
       
 49510        link)
       
 49511          $ECHO \
       
 49512  "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
       
 49513 @@ -1553,16 +2400,18 @@ create an executable program.
       
 49514  
       
 49515  LINK-COMMAND is a command using the C compiler that you would use to create
       
 49516  a program from several object files.
       
 49517  
       
 49518  The following components of LINK-COMMAND are treated specially:
       
 49519  
       
 49520    -all-static       do not do any dynamic linking at all
       
 49521    -avoid-version    do not add a version suffix if possible
       
 49522 +  -bindir BINDIR    specify path to binaries directory (for systems where
       
 49523 +                    libraries must be found in the PATH setting at runtime)
       
 49524    -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
       
 49525    -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
       
 49526    -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
       
 49527    -export-symbols SYMFILE
       
 49528                      try to export only the symbols listed in SYMFILE
       
 49529    -export-symbols-regex REGEX
       
 49530                      try to export only the symbols matching REGEX
       
 49531    -LLIBDIR          search LIBDIR for required installed libraries
       
 49532 @@ -1581,16 +2430,21 @@ The following components of LINK-COMMAND
       
 49533    -shared           only do dynamic linking of libtool libraries
       
 49534    -shrext SUFFIX    override the standard shared library file extension
       
 49535    -static           do not do any dynamic linking of uninstalled libtool libraries
       
 49536    -static-libtool-libs
       
 49537                      do not do any dynamic linking of libtool libraries
       
 49538    -version-info CURRENT[:REVISION[:AGE]]
       
 49539                      specify library version info [each variable defaults to 0]
       
 49540    -weak LIBNAME     declare that the target provides the LIBNAME interface
       
 49541 +  -Wc,FLAG
       
 49542 +  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
       
 49543 +  -Wl,FLAG
       
 49544 +  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
       
 49545 +  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
       
 49546  
       
 49547  All other options (arguments beginning with \`-') are ignored.
       
 49548  
       
 49549  Every other argument is treated as a filename.  Files ending in \`.la' are
       
 49550  treated as uninstalled libtool libraries, other files are standard or library
       
 49551  object files.
       
 49552  
       
 49553  If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
       
 49554 @@ -1614,47 +2468,76 @@ RM is the name of the program to use to 
       
 49555  (typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
       
 49556  to RM.
       
 49557  
       
 49558  If FILE is a libtool library, all the files associated with it are deleted.
       
 49559  Otherwise, only FILE itself is deleted using RM."
       
 49560          ;;
       
 49561  
       
 49562        *)
       
 49563 -        func_fatal_help "invalid operation mode \`$mode'"
       
 49564 +        func_fatal_help "invalid operation mode \`$opt_mode'"
       
 49565          ;;
       
 49566      esac
       
 49567  
       
 49568 -    $ECHO
       
 49569 +    echo
       
 49570      $ECHO "Try \`$progname --help' for more information about other modes."
       
 49571 -
       
 49572 -    exit $?
       
 49573 -}
       
 49574 -
       
 49575 -  # Now that we've collected a possible --mode arg, show help if necessary
       
 49576 -  $opt_help && func_mode_help
       
 49577 +}
       
 49578 +
       
 49579 +# Now that we've collected a possible --mode arg, show help if necessary
       
 49580 +if $opt_help; then
       
 49581 +  if test "$opt_help" = :; then
       
 49582 +    func_mode_help
       
 49583 +  else
       
 49584 +    {
       
 49585 +      func_help noexit
       
 49586 +      for opt_mode in compile link execute install finish uninstall clean; do
       
 49587 +	func_mode_help
       
 49588 +      done
       
 49589 +    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
       
 49590 +    {
       
 49591 +      func_help noexit
       
 49592 +      for opt_mode in compile link execute install finish uninstall clean; do
       
 49593 +	echo
       
 49594 +	func_mode_help
       
 49595 +      done
       
 49596 +    } |
       
 49597 +    sed '1d
       
 49598 +      /^When reporting/,/^Report/{
       
 49599 +	H
       
 49600 +	d
       
 49601 +      }
       
 49602 +      $x
       
 49603 +      /information about other modes/d
       
 49604 +      /more detailed .*MODE/d
       
 49605 +      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
       
 49606 +  fi
       
 49607 +  exit $?
       
 49608 +fi
       
 49609  
       
 49610  
       
 49611  # func_mode_execute arg...
       
 49612  func_mode_execute ()
       
 49613  {
       
 49614      $opt_debug
       
 49615      # The first argument is the command name.
       
 49616      cmd="$nonopt"
       
 49617      test -z "$cmd" && \
       
 49618        func_fatal_help "you must specify a COMMAND"
       
 49619  
       
 49620      # Handle -dlopen flags immediately.
       
 49621 -    for file in $execute_dlfiles; do
       
 49622 +    for file in $opt_dlopen; do
       
 49623        test -f "$file" \
       
 49624  	|| func_fatal_help "\`$file' is not a file"
       
 49625  
       
 49626        dir=
       
 49627        case $file in
       
 49628        *.la)
       
 49629 +	func_resolve_sysroot "$file"
       
 49630 +	file=$func_resolve_sysroot_result
       
 49631 +
       
 49632  	# Check to see that this really is a libtool archive.
       
 49633  	func_lalib_unsafe_p "$file" \
       
 49634  	  || func_fatal_help "\`$lib' is not a valid libtool archive"
       
 49635  
       
 49636  	# Read the libtool library.
       
 49637  	dlname=
       
 49638  	library_names=
       
 49639  	func_source "$file"
       
 49640 @@ -1666,17 +2549,17 @@ func_mode_execute ()
       
 49641  	    func_warning "\`$file' was not linked with \`-export-dynamic'"
       
 49642  	  continue
       
 49643  	fi
       
 49644  
       
 49645  	func_dirname "$file" "" "."
       
 49646  	dir="$func_dirname_result"
       
 49647  
       
 49648  	if test -f "$dir/$objdir/$dlname"; then
       
 49649 -	  dir="$dir/$objdir"
       
 49650 +	  func_append dir "/$objdir"
       
 49651  	else
       
 49652  	  if test ! -f "$dir/$dlname"; then
       
 49653  	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
       
 49654  	  fi
       
 49655  	fi
       
 49656  	;;
       
 49657  
       
 49658        *.lo)
       
 49659 @@ -1707,34 +2590,33 @@ func_mode_execute ()
       
 49660      # rather than running their programs.
       
 49661      libtool_execute_magic="$magic"
       
 49662  
       
 49663      # Check if any of the arguments is a wrapper script.
       
 49664      args=
       
 49665      for file
       
 49666      do
       
 49667        case $file in
       
 49668 -      -*) ;;
       
 49669 +      -* | *.la | *.lo ) ;;
       
 49670        *)
       
 49671  	# Do a test to see if this is really a libtool program.
       
 49672  	if func_ltwrapper_script_p "$file"; then
       
 49673  	  func_source "$file"
       
 49674  	  # Transform arg to wrapped name.
       
 49675  	  file="$progdir/$program"
       
 49676  	elif func_ltwrapper_executable_p "$file"; then
       
 49677  	  func_ltwrapper_scriptname "$file"
       
 49678  	  func_source "$func_ltwrapper_scriptname_result"
       
 49679  	  # Transform arg to wrapped name.
       
 49680  	  file="$progdir/$program"
       
 49681  	fi
       
 49682  	;;
       
 49683        esac
       
 49684        # Quote arguments (to preserve shell metacharacters).
       
 49685 -      func_quote_for_eval "$file"
       
 49686 -      args="$args $func_quote_for_eval_result"
       
 49687 +      func_append_quoted args "$file"
       
 49688      done
       
 49689  
       
 49690      if test "X$opt_dry_run" = Xfalse; then
       
 49691        if test -n "$shlibpath_var"; then
       
 49692  	# Export the shlibpath_var.
       
 49693  	eval "export $shlibpath_var"
       
 49694        fi
       
 49695  
       
 49696 @@ -1749,185 +2631,245 @@ func_mode_execute ()
       
 49697        done
       
 49698  
       
 49699        # Now prepare to actually exec the command.
       
 49700        exec_cmd="\$cmd$args"
       
 49701      else
       
 49702        # Display what would be done.
       
 49703        if test -n "$shlibpath_var"; then
       
 49704  	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
       
 49705 -	$ECHO "export $shlibpath_var"
       
 49706 +	echo "export $shlibpath_var"
       
 49707        fi
       
 49708        $ECHO "$cmd$args"
       
 49709        exit $EXIT_SUCCESS
       
 49710      fi
       
 49711  }
       
 49712  
       
 49713 -test "$mode" = execute && func_mode_execute ${1+"$@"}
       
 49714 +test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
       
 49715  
       
 49716  
       
 49717  # func_mode_finish arg...
       
 49718  func_mode_finish ()
       
 49719  {
       
 49720      $opt_debug
       
 49721 -    libdirs="$nonopt"
       
 49722 +    libs=
       
 49723 +    libdirs=
       
 49724      admincmds=
       
 49725  
       
 49726 +    for opt in "$nonopt" ${1+"$@"}
       
 49727 +    do
       
 49728 +      if test -d "$opt"; then
       
 49729 +	func_append libdirs " $opt"
       
 49730 +
       
 49731 +      elif test -f "$opt"; then
       
 49732 +	if func_lalib_unsafe_p "$opt"; then
       
 49733 +	  func_append libs " $opt"
       
 49734 +	else
       
 49735 +	  func_warning "\`$opt' is not a valid libtool archive"
       
 49736 +	fi
       
 49737 +
       
 49738 +      else
       
 49739 +	func_fatal_error "invalid argument \`$opt'"
       
 49740 +      fi
       
 49741 +    done
       
 49742 +
       
 49743 +    if test -n "$libs"; then
       
 49744 +      if test -n "$lt_sysroot"; then
       
 49745 +        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
       
 49746 +        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
       
 49747 +      else
       
 49748 +        sysroot_cmd=
       
 49749 +      fi
       
 49750 +
       
 49751 +      # Remove sysroot references
       
 49752 +      if $opt_dry_run; then
       
 49753 +        for lib in $libs; do
       
 49754 +          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
       
 49755 +        done
       
 49756 +      else
       
 49757 +        tmpdir=`func_mktempdir`
       
 49758 +        for lib in $libs; do
       
 49759 +	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
       
 49760 +	    > $tmpdir/tmp-la
       
 49761 +	  mv -f $tmpdir/tmp-la $lib
       
 49762 +	done
       
 49763 +        ${RM}r "$tmpdir"
       
 49764 +      fi
       
 49765 +    fi
       
 49766 +
       
 49767      if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       
 49768 -      for dir
       
 49769 -      do
       
 49770 -	libdirs="$libdirs $dir"
       
 49771 -      done
       
 49772 -
       
 49773        for libdir in $libdirs; do
       
 49774  	if test -n "$finish_cmds"; then
       
 49775  	  # Do each command in the finish commands.
       
 49776  	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
       
 49777  '"$cmd"'"'
       
 49778  	fi
       
 49779  	if test -n "$finish_eval"; then
       
 49780  	  # Do the single finish_eval.
       
 49781  	  eval cmds=\"$finish_eval\"
       
 49782 -	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
       
 49783 +	  $opt_dry_run || eval "$cmds" || func_append admincmds "
       
 49784         $cmds"
       
 49785  	fi
       
 49786        done
       
 49787      fi
       
 49788  
       
 49789      # Exit here if they wanted silent mode.
       
 49790      $opt_silent && exit $EXIT_SUCCESS
       
 49791  
       
 49792 -    $ECHO "X----------------------------------------------------------------------" | $Xsed
       
 49793 -    $ECHO "Libraries have been installed in:"
       
 49794 -    for libdir in $libdirs; do
       
 49795 -      $ECHO "   $libdir"
       
 49796 -    done
       
 49797 -    $ECHO
       
 49798 -    $ECHO "If you ever happen to want to link against installed libraries"
       
 49799 -    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
       
 49800 -    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
       
 49801 -    $ECHO "flag during linking and do at least one of the following:"
       
 49802 -    if test -n "$shlibpath_var"; then
       
 49803 -      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
       
 49804 -      $ECHO "     during execution"
       
 49805 +    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       
 49806 +      echo "----------------------------------------------------------------------"
       
 49807 +      echo "Libraries have been installed in:"
       
 49808 +      for libdir in $libdirs; do
       
 49809 +	$ECHO "   $libdir"
       
 49810 +      done
       
 49811 +      echo
       
 49812 +      echo "If you ever happen to want to link against installed libraries"
       
 49813 +      echo "in a given directory, LIBDIR, you must either use libtool, and"
       
 49814 +      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
       
 49815 +      echo "flag during linking and do at least one of the following:"
       
 49816 +      if test -n "$shlibpath_var"; then
       
 49817 +	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
       
 49818 +	echo "     during execution"
       
 49819 +      fi
       
 49820 +      if test -n "$runpath_var"; then
       
 49821 +	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
       
 49822 +	echo "     during linking"
       
 49823 +      fi
       
 49824 +      if test -n "$hardcode_libdir_flag_spec"; then
       
 49825 +	libdir=LIBDIR
       
 49826 +	eval flag=\"$hardcode_libdir_flag_spec\"
       
 49827 +
       
 49828 +	$ECHO "   - use the \`$flag' linker flag"
       
 49829 +      fi
       
 49830 +      if test -n "$admincmds"; then
       
 49831 +	$ECHO "   - have your system administrator run these commands:$admincmds"
       
 49832 +      fi
       
 49833 +      if test -f /etc/ld.so.conf; then
       
 49834 +	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
       
 49835 +      fi
       
 49836 +      echo
       
 49837 +
       
 49838 +      echo "See any operating system documentation about shared libraries for"
       
 49839 +      case $host in
       
 49840 +	solaris2.[6789]|solaris2.1[0-9])
       
 49841 +	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
       
 49842 +	  echo "pages."
       
 49843 +	  ;;
       
 49844 +	*)
       
 49845 +	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
       
 49846 +	  ;;
       
 49847 +      esac
       
 49848 +      echo "----------------------------------------------------------------------"
       
 49849      fi
       
 49850 -    if test -n "$runpath_var"; then
       
 49851 -      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
       
 49852 -      $ECHO "     during linking"
       
 49853 -    fi
       
 49854 -    if test -n "$hardcode_libdir_flag_spec"; then
       
 49855 -      libdir=LIBDIR
       
 49856 -      eval flag=\"$hardcode_libdir_flag_spec\"
       
 49857 -
       
 49858 -      $ECHO "   - use the \`$flag' linker flag"
       
 49859 -    fi
       
 49860 -    if test -n "$admincmds"; then
       
 49861 -      $ECHO "   - have your system administrator run these commands:$admincmds"
       
 49862 -    fi
       
 49863 -    if test -f /etc/ld.so.conf; then
       
 49864 -      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
       
 49865 -    fi
       
 49866 -    $ECHO
       
 49867 -
       
 49868 -    $ECHO "See any operating system documentation about shared libraries for"
       
 49869 -    case $host in
       
 49870 -      solaris2.[6789]|solaris2.1[0-9])
       
 49871 -        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
       
 49872 -	$ECHO "pages."
       
 49873 -	;;
       
 49874 -      *)
       
 49875 -        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
       
 49876 -        ;;
       
 49877 -    esac
       
 49878 -    $ECHO "X----------------------------------------------------------------------" | $Xsed
       
 49879      exit $EXIT_SUCCESS
       
 49880  }
       
 49881  
       
 49882 -test "$mode" = finish && func_mode_finish ${1+"$@"}
       
 49883 +test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
       
 49884  
       
 49885  
       
 49886  # func_mode_install arg...
       
 49887  func_mode_install ()
       
 49888  {
       
 49889      $opt_debug
       
 49890      # There may be an optional sh(1) argument at the beginning of
       
 49891      # install_prog (especially on Windows NT).
       
 49892      if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
       
 49893         # Allow the use of GNU shtool's install command.
       
 49894 -       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
       
 49895 +       case $nonopt in *shtool*) :;; *) false;; esac; then
       
 49896        # Aesthetically quote it.
       
 49897        func_quote_for_eval "$nonopt"
       
 49898        install_prog="$func_quote_for_eval_result "
       
 49899        arg=$1
       
 49900        shift
       
 49901      else
       
 49902        install_prog=
       
 49903        arg=$nonopt
       
 49904      fi
       
 49905  
       
 49906      # The real first argument should be the name of the installation program.
       
 49907      # Aesthetically quote it.
       
 49908      func_quote_for_eval "$arg"
       
 49909 -    install_prog="$install_prog$func_quote_for_eval_result"
       
 49910 +    func_append install_prog "$func_quote_for_eval_result"
       
 49911 +    install_shared_prog=$install_prog
       
 49912 +    case " $install_prog " in
       
 49913 +      *[\\\ /]cp\ *) install_cp=: ;;
       
 49914 +      *) install_cp=false ;;
       
 49915 +    esac
       
 49916  
       
 49917      # We need to accept at least all the BSD install flags.
       
 49918      dest=
       
 49919      files=
       
 49920      opts=
       
 49921      prev=
       
 49922      install_type=
       
 49923      isdir=no
       
 49924      stripme=
       
 49925 +    no_mode=:
       
 49926      for arg
       
 49927      do
       
 49928 +      arg2=
       
 49929        if test -n "$dest"; then
       
 49930 -	files="$files $dest"
       
 49931 +	func_append files " $dest"
       
 49932  	dest=$arg
       
 49933  	continue
       
 49934        fi
       
 49935  
       
 49936        case $arg in
       
 49937        -d) isdir=yes ;;
       
 49938        -f)
       
 49939 -	case " $install_prog " in
       
 49940 -	*[\\\ /]cp\ *) ;;
       
 49941 -	*) prev=$arg ;;
       
 49942 -	esac
       
 49943 +	if $install_cp; then :; else
       
 49944 +	  prev=$arg
       
 49945 +	fi
       
 49946  	;;
       
 49947        -g | -m | -o)
       
 49948  	prev=$arg
       
 49949  	;;
       
 49950        -s)
       
 49951  	stripme=" -s"
       
 49952  	continue
       
 49953  	;;
       
 49954        -*)
       
 49955  	;;
       
 49956        *)
       
 49957  	# If the previous option needed an argument, then skip it.
       
 49958  	if test -n "$prev"; then
       
 49959 +	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
       
 49960 +	    arg2=$install_override_mode
       
 49961 +	    no_mode=false
       
 49962 +	  fi
       
 49963  	  prev=
       
 49964  	else
       
 49965  	  dest=$arg
       
 49966  	  continue
       
 49967  	fi
       
 49968  	;;
       
 49969        esac
       
 49970  
       
 49971        # Aesthetically quote the argument.
       
 49972        func_quote_for_eval "$arg"
       
 49973 -      install_prog="$install_prog $func_quote_for_eval_result"
       
 49974 +      func_append install_prog " $func_quote_for_eval_result"
       
 49975 +      if test -n "$arg2"; then
       
 49976 +	func_quote_for_eval "$arg2"
       
 49977 +      fi
       
 49978 +      func_append install_shared_prog " $func_quote_for_eval_result"
       
 49979      done
       
 49980  
       
 49981      test -z "$install_prog" && \
       
 49982        func_fatal_help "you must specify an install program"
       
 49983  
       
 49984      test -n "$prev" && \
       
 49985        func_fatal_help "the \`$prev' option requires an argument"
       
 49986  
       
 49987 +    if test -n "$install_override_mode" && $no_mode; then
       
 49988 +      if $install_cp; then :; else
       
 49989 +	func_quote_for_eval "$install_override_mode"
       
 49990 +	func_append install_shared_prog " -m $func_quote_for_eval_result"
       
 49991 +      fi
       
 49992 +    fi
       
 49993 +
       
 49994      if test -z "$files"; then
       
 49995        if test -z "$dest"; then
       
 49996  	func_fatal_help "no file or destination specified"
       
 49997        else
       
 49998  	func_fatal_help "you must specify a destination"
       
 49999        fi
       
 50000      fi
       
 50001  
       
 50002 @@ -1972,65 +2914,68 @@ func_mode_install ()
       
 50003      future_libdirs=
       
 50004      current_libdirs=
       
 50005      for file in $files; do
       
 50006  
       
 50007        # Do each installation.
       
 50008        case $file in
       
 50009        *.$libext)
       
 50010  	# Do the static libraries later.
       
 50011 -	staticlibs="$staticlibs $file"
       
 50012 +	func_append staticlibs " $file"
       
 50013  	;;
       
 50014  
       
 50015        *.la)
       
 50016 +	func_resolve_sysroot "$file"
       
 50017 +	file=$func_resolve_sysroot_result
       
 50018 +
       
 50019  	# Check to see that this really is a libtool archive.
       
 50020  	func_lalib_unsafe_p "$file" \
       
 50021  	  || func_fatal_help "\`$file' is not a valid libtool archive"
       
 50022  
       
 50023  	library_names=
       
 50024  	old_library=
       
 50025  	relink_command=
       
 50026  	func_source "$file"
       
 50027  
       
 50028  	# Add the libdir to current_libdirs if it is the destination.
       
 50029  	if test "X$destdir" = "X$libdir"; then
       
 50030  	  case "$current_libdirs " in
       
 50031  	  *" $libdir "*) ;;
       
 50032 -	  *) current_libdirs="$current_libdirs $libdir" ;;
       
 50033 +	  *) func_append current_libdirs " $libdir" ;;
       
 50034  	  esac
       
 50035  	else
       
 50036  	  # Note the libdir as a future libdir.
       
 50037  	  case "$future_libdirs " in
       
 50038  	  *" $libdir "*) ;;
       
 50039 -	  *) future_libdirs="$future_libdirs $libdir" ;;
       
 50040 +	  *) func_append future_libdirs " $libdir" ;;
       
 50041  	  esac
       
 50042  	fi
       
 50043  
       
 50044  	func_dirname "$file" "/" ""
       
 50045  	dir="$func_dirname_result"
       
 50046 -	dir="$dir$objdir"
       
 50047 +	func_append dir "$objdir"
       
 50048  
       
 50049  	if test -n "$relink_command"; then
       
 50050  	  # Determine the prefix the user has applied to our future dir.
       
 50051 -	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
       
 50052 +	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
       
 50053  
       
 50054  	  # Don't allow the user to place us outside of our expected
       
 50055  	  # location b/c this prevents finding dependent libraries that
       
 50056  	  # are installed to the same prefix.
       
 50057  	  # At present, this check doesn't affect windows .dll's that
       
 50058  	  # are installed into $libdir/../bin (currently, that works fine)
       
 50059  	  # but it's something to keep an eye on.
       
 50060  	  test "$inst_prefix_dir" = "$destdir" && \
       
 50061  	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
       
 50062  
       
 50063  	  if test -n "$inst_prefix_dir"; then
       
 50064  	    # Stick the inst_prefix_dir data into the link command.
       
 50065 -	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
       
 50066 +	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
       
 50067  	  else
       
 50068 -	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
       
 50069 +	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
       
 50070  	  fi
       
 50071  
       
 50072  	  func_warning "relinking \`$file'"
       
 50073  	  func_show_eval "$relink_command" \
       
 50074  	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
       
 50075  	fi
       
 50076  
       
 50077  	# See the names of the shared library.
       
 50078 @@ -2038,17 +2983,17 @@ func_mode_install ()
       
 50079  	if test -n "$1"; then
       
 50080  	  realname="$1"
       
 50081  	  shift
       
 50082  
       
 50083  	  srcname="$realname"
       
 50084  	  test -n "$relink_command" && srcname="$realname"T
       
 50085  
       
 50086  	  # Install the shared library and build the symlinks.
       
 50087 -	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
       
 50088 +	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
       
 50089  	      'exit $?'
       
 50090  	  tstripme="$stripme"
       
 50091  	  case $host_os in
       
 50092  	  cygwin* | mingw* | pw32* | cegcc*)
       
 50093  	    case $realname in
       
 50094  	    *.dll.a)
       
 50095  	      tstripme=""
       
 50096  	      ;;
       
 50097 @@ -2078,17 +3023,17 @@ func_mode_install ()
       
 50098  
       
 50099  	# Install the pseudo-library for information purposes.
       
 50100  	func_basename "$file"
       
 50101  	name="$func_basename_result"
       
 50102  	instname="$dir/$name"i
       
 50103  	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
       
 50104  
       
 50105  	# Maybe install the static library, too.
       
 50106 -	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
       
 50107 +	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
       
 50108  	;;
       
 50109  
       
 50110        *.lo)
       
 50111  	# Install (i.e. copy) a libtool object.
       
 50112  
       
 50113  	# Figure out destination file name, if it wasn't already specified.
       
 50114  	if test -n "$destname"; then
       
 50115  	  destfile="$destdir/$destname"
       
 50116 @@ -2178,17 +3123,17 @@ func_mode_install ()
       
 50117  
       
 50118  	  finalize=yes
       
 50119  	  for lib in $notinst_deplibs; do
       
 50120  	    # Check to see that each library is installed.
       
 50121  	    libdir=
       
 50122  	    if test -f "$lib"; then
       
 50123  	      func_source "$lib"
       
 50124  	    fi
       
 50125 -	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
       
 50126 +	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
       
 50127  	    if test -n "$libdir" && test ! -f "$libfile"; then
       
 50128  	      func_warning "\`$lib' has not been installed in \`$libdir'"
       
 50129  	      finalize=no
       
 50130  	    fi
       
 50131  	  done
       
 50132  
       
 50133  	  relink_command=
       
 50134  	  func_source "$wrapper"
       
 50135 @@ -2197,17 +3142,17 @@ func_mode_install ()
       
 50136  	  if test "$fast_install" = no && test -n "$relink_command"; then
       
 50137  	    $opt_dry_run || {
       
 50138  	      if test "$finalize" = yes; then
       
 50139  	        tmpdir=`func_mktempdir`
       
 50140  		func_basename "$file$stripped_ext"
       
 50141  		file="$func_basename_result"
       
 50142  	        outputname="$tmpdir/$file"
       
 50143  	        # Replace the output file specification.
       
 50144 -	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
       
 50145 +	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
       
 50146  
       
 50147  	        $opt_silent || {
       
 50148  	          func_quote_for_expand "$relink_command"
       
 50149  		  eval "func_echo $func_quote_for_expand_result"
       
 50150  	        }
       
 50151  	        if eval "$relink_command"; then :
       
 50152  	          else
       
 50153  		  func_error "error: relink \`$file' with the above command before installing it"
       
 50154 @@ -2216,17 +3161,17 @@ func_mode_install ()
       
 50155  	        fi
       
 50156  	        file="$outputname"
       
 50157  	      else
       
 50158  	        func_warning "cannot relink \`$file'"
       
 50159  	      fi
       
 50160  	    }
       
 50161  	  else
       
 50162  	    # Install the binary that we compiled earlier.
       
 50163 -	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
       
 50164 +	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
       
 50165  	  fi
       
 50166  	fi
       
 50167  
       
 50168  	# remove .exe since cygwin /usr/bin/install will append another
       
 50169  	# one anyway
       
 50170  	case $install_prog,$host in
       
 50171  	*/usr/bin/install*,*cygwin*)
       
 50172  	  case $file:$destfile in
       
 50173 @@ -2252,21 +3197,23 @@ func_mode_install ()
       
 50174      done
       
 50175  
       
 50176      for file in $staticlibs; do
       
 50177        func_basename "$file"
       
 50178        name="$func_basename_result"
       
 50179  
       
 50180        # Set up the ranlib parameters.
       
 50181        oldlib="$destdir/$name"
       
 50182 +      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
       
 50183 +      tool_oldlib=$func_to_tool_file_result
       
 50184  
       
 50185        func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
       
 50186  
       
 50187        if test -n "$stripme" && test -n "$old_striplib"; then
       
 50188 -	func_show_eval "$old_striplib $oldlib" 'exit $?'
       
 50189 +	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
       
 50190        fi
       
 50191  
       
 50192        # Do each command in the postinstall commands.
       
 50193        func_execute_cmds "$old_postinstall_cmds" 'exit $?'
       
 50194      done
       
 50195  
       
 50196      test -n "$future_libdirs" && \
       
 50197        func_warning "remember to run \`$progname --finish$future_libdirs'"
       
 50198 @@ -2275,17 +3222,17 @@ func_mode_install ()
       
 50199        # Maybe just do a dry run.
       
 50200        $opt_dry_run && current_libdirs=" -n$current_libdirs"
       
 50201        exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
       
 50202      else
       
 50203        exit $EXIT_SUCCESS
       
 50204      fi
       
 50205  }
       
 50206  
       
 50207 -test "$mode" = install && func_mode_install ${1+"$@"}
       
 50208 +test "$opt_mode" = install && func_mode_install ${1+"$@"}
       
 50209  
       
 50210  
       
 50211  # func_generate_dlsyms outputname originator pic_p
       
 50212  # Extract symbols from dlprefiles and create ${outputname}S.o with
       
 50213  # a dlpreopen symbol table.
       
 50214  func_generate_dlsyms ()
       
 50215  {
       
 50216      $opt_debug
       
 50217 @@ -2318,29 +3265,46 @@ func_generate_dlsyms ()
       
 50218  	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
       
 50219  /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
       
 50220  /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
       
 50221  
       
 50222  #ifdef __cplusplus
       
 50223  extern \"C\" {
       
 50224  #endif
       
 50225  
       
 50226 +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
       
 50227 +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
       
 50228 +#endif
       
 50229 +
       
 50230 +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
       
 50231 +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
       
 50232 +/* DATA imports from DLLs on WIN32 con't be const, because runtime
       
 50233 +   relocations are performed -- see ld's documentation on pseudo-relocs.  */
       
 50234 +# define LT_DLSYM_CONST
       
 50235 +#elif defined(__osf__)
       
 50236 +/* This system does not cope well with relocations in const data.  */
       
 50237 +# define LT_DLSYM_CONST
       
 50238 +#else
       
 50239 +# define LT_DLSYM_CONST const
       
 50240 +#endif
       
 50241 +
       
 50242  /* External symbol declarations for the compiler. */\
       
 50243  "
       
 50244  
       
 50245  	if test "$dlself" = yes; then
       
 50246  	  func_verbose "generating symbol list for \`$output'"
       
 50247  
       
 50248  	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
       
 50249  
       
 50250  	  # Add our own program objects to the symbol list.
       
 50251 -	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
       
 50252 +	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
       
 50253  	  for progfile in $progfiles; do
       
 50254 -	    func_verbose "extracting global C symbols from \`$progfile'"
       
 50255 -	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
       
 50256 +	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
       
 50257 +	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
       
 50258 +	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
       
 50259  	  done
       
 50260  
       
 50261  	  if test -n "$exclude_expsyms"; then
       
 50262  	    $opt_dry_run || {
       
 50263  	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
       
 50264  	      eval '$MV "$nlist"T "$nlist"'
       
 50265  	    }
       
 50266  	  fi
       
 50267 @@ -2366,33 +3330,75 @@ extern \"C\" {
       
 50268  	      esac
       
 50269  	    }
       
 50270  	  else
       
 50271  	    $opt_dry_run || {
       
 50272  	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
       
 50273  	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
       
 50274  	      eval '$MV "$nlist"T "$nlist"'
       
 50275  	      case $host in
       
 50276 -	        *cygwin | *mingw* | *cegcc* )
       
 50277 +	        *cygwin* | *mingw* | *cegcc* )
       
 50278  	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
       
 50279  	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
       
 50280  	          ;;
       
 50281  	      esac
       
 50282  	    }
       
 50283  	  fi
       
 50284  	fi
       
 50285  
       
 50286  	for dlprefile in $dlprefiles; do
       
 50287  	  func_verbose "extracting global C symbols from \`$dlprefile'"
       
 50288  	  func_basename "$dlprefile"
       
 50289  	  name="$func_basename_result"
       
 50290 -	  $opt_dry_run || {
       
 50291 -	    eval '$ECHO ": $name " >> "$nlist"'
       
 50292 -	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
       
 50293 -	  }
       
 50294 +          case $host in
       
 50295 +	    *cygwin* | *mingw* | *cegcc* )
       
 50296 +	      # if an import library, we need to obtain dlname
       
 50297 +	      if func_win32_import_lib_p "$dlprefile"; then
       
 50298 +	        func_tr_sh "$dlprefile"
       
 50299 +	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
       
 50300 +	        dlprefile_dlbasename=""
       
 50301 +	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
       
 50302 +	          # Use subshell, to avoid clobbering current variable values
       
 50303 +	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
       
 50304 +	          if test -n "$dlprefile_dlname" ; then
       
 50305 +	            func_basename "$dlprefile_dlname"
       
 50306 +	            dlprefile_dlbasename="$func_basename_result"
       
 50307 +	          else
       
 50308 +	            # no lafile. user explicitly requested -dlpreopen <import library>.
       
 50309 +	            $sharedlib_from_linklib_cmd "$dlprefile"
       
 50310 +	            dlprefile_dlbasename=$sharedlib_from_linklib_result
       
 50311 +	          fi
       
 50312 +	        fi
       
 50313 +	        $opt_dry_run || {
       
 50314 +	          if test -n "$dlprefile_dlbasename" ; then
       
 50315 +	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
       
 50316 +	          else
       
 50317 +	            func_warning "Could not compute DLL name from $name"
       
 50318 +	            eval '$ECHO ": $name " >> "$nlist"'
       
 50319 +	          fi
       
 50320 +	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
       
 50321 +	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
       
 50322 +	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
       
 50323 +	        }
       
 50324 +	      else # not an import lib
       
 50325 +	        $opt_dry_run || {
       
 50326 +	          eval '$ECHO ": $name " >> "$nlist"'
       
 50327 +	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
       
 50328 +	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
       
 50329 +	        }
       
 50330 +	      fi
       
 50331 +	    ;;
       
 50332 +	    *)
       
 50333 +	      $opt_dry_run || {
       
 50334 +	        eval '$ECHO ": $name " >> "$nlist"'
       
 50335 +	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
       
 50336 +	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
       
 50337 +	      }
       
 50338 +	    ;;
       
 50339 +          esac
       
 50340  	done
       
 50341  
       
 50342  	$opt_dry_run || {
       
 50343  	  # Make sure we have at least an empty file.
       
 50344  	  test -f "$nlist" || : > "$nlist"
       
 50345  
       
 50346  	  if test -n "$exclude_expsyms"; then
       
 50347  	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
       
 50348 @@ -2410,59 +3416,42 @@ extern \"C\" {
       
 50349  	    :
       
 50350  	  else
       
 50351  	    $GREP -v "^: " < "$nlist" > "$nlist"S
       
 50352  	  fi
       
 50353  
       
 50354  	  if test -f "$nlist"S; then
       
 50355  	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
       
 50356  	  else
       
 50357 -	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
       
 50358 +	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
       
 50359  	  fi
       
 50360  
       
 50361 -	  $ECHO >> "$output_objdir/$my_dlsyms" "\
       
 50362 +	  echo >> "$output_objdir/$my_dlsyms" "\
       
 50363  
       
 50364  /* The mapping between symbol names and symbols.  */
       
 50365  typedef struct {
       
 50366    const char *name;
       
 50367    void *address;
       
 50368  } lt_dlsymlist;
       
 50369 -"
       
 50370 -	  case $host in
       
 50371 -	  *cygwin* | *mingw* | *cegcc* )
       
 50372 -	    $ECHO >> "$output_objdir/$my_dlsyms" "\
       
 50373 -/* DATA imports from DLLs on WIN32 con't be const, because
       
 50374 -   runtime relocations are performed -- see ld's documentation
       
 50375 -   on pseudo-relocs.  */"
       
 50376 -	    lt_dlsym_const= ;;
       
 50377 -	  *osf5*)
       
 50378 -	    echo >> "$output_objdir/$my_dlsyms" "\
       
 50379 -/* This system does not cope well with relocations in const data */"
       
 50380 -	    lt_dlsym_const= ;;
       
 50381 -	  *)
       
 50382 -	    lt_dlsym_const=const ;;
       
 50383 -	  esac
       
 50384 -
       
 50385 -	  $ECHO >> "$output_objdir/$my_dlsyms" "\
       
 50386 -extern $lt_dlsym_const lt_dlsymlist
       
 50387 +extern LT_DLSYM_CONST lt_dlsymlist
       
 50388  lt_${my_prefix}_LTX_preloaded_symbols[];
       
 50389 -$lt_dlsym_const lt_dlsymlist
       
 50390 +LT_DLSYM_CONST lt_dlsymlist
       
 50391  lt_${my_prefix}_LTX_preloaded_symbols[] =
       
 50392  {\
       
 50393    { \"$my_originator\", (void *) 0 },"
       
 50394  
       
 50395  	  case $need_lib_prefix in
       
 50396  	  no)
       
 50397  	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
       
 50398  	    ;;
       
 50399  	  *)
       
 50400  	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
       
 50401  	    ;;
       
 50402  	  esac
       
 50403 -	  $ECHO >> "$output_objdir/$my_dlsyms" "\
       
 50404 +	  echo >> "$output_objdir/$my_dlsyms" "\
       
 50405    {0, (void *) 0}
       
 50406  };
       
 50407  
       
 50408  /* This works around a problem in FreeBSD linker */
       
 50409  #ifdef FREEBSD_WORKAROUND
       
 50410  static const void *lt_preloaded_setup() {
       
 50411    return lt_${my_prefix}_LTX_preloaded_symbols;
       
 50412  }
       
 50413 @@ -2479,94 +3468,97 @@ static const void *lt_preloaded_setup() 
       
 50414  	*" -static "*) ;;
       
 50415  	*)
       
 50416  	  case $host in
       
 50417  	  # compiling the symbol table file with pic_flag works around
       
 50418  	  # a FreeBSD bug that causes programs to crash when -lm is
       
 50419  	  # linked before any other PIC object.  But we must not use
       
 50420  	  # pic_flag when linking with -static.  The problem exists in
       
 50421  	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
       
 50422 -	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
       
 50423 +	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
       
 50424  	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
       
 50425  	  *-*-hpux*)
       
 50426  	    pic_flag_for_symtable=" $pic_flag"  ;;
       
 50427  	  *)
       
 50428  	    if test "X$my_pic_p" != Xno; then
       
 50429  	      pic_flag_for_symtable=" $pic_flag"
       
 50430  	    fi
       
 50431  	    ;;
       
 50432  	  esac
       
 50433  	  ;;
       
 50434  	esac
       
 50435  	symtab_cflags=
       
 50436  	for arg in $LTCFLAGS; do
       
 50437  	  case $arg in
       
 50438  	  -pie | -fpie | -fPIE) ;;
       
 50439 -	  *) symtab_cflags="$symtab_cflags $arg" ;;
       
 50440 +	  *) func_append symtab_cflags " $arg" ;;
       
 50441  	  esac
       
 50442  	done
       
 50443  
       
 50444  	# Now compile the dynamic symbol file.
       
 50445  	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
       
 50446  
       
 50447  	# Clean up the generated files.
       
 50448  	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
       
 50449  
       
 50450  	# Transform the symbol file into the correct name.
       
 50451  	symfileobj="$output_objdir/${my_outputname}S.$objext"
       
 50452  	case $host in
       
 50453  	*cygwin* | *mingw* | *cegcc* )
       
 50454  	  if test -f "$output_objdir/$my_outputname.def"; then
       
 50455 -	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
       
 50456 -	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
       
 50457 +	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
       
 50458 +	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
       
 50459  	  else
       
 50460 -	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
       
 50461 -	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
       
 50462 +	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
       
 50463 +	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
       
 50464  	  fi
       
 50465  	  ;;
       
 50466  	*)
       
 50467 -	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
       
 50468 -	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
       
 50469 +	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
       
 50470 +	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
       
 50471  	  ;;
       
 50472  	esac
       
 50473  	;;
       
 50474        *)
       
 50475  	func_fatal_error "unknown suffix for \`$my_dlsyms'"
       
 50476  	;;
       
 50477        esac
       
 50478      else
       
 50479        # We keep going just in case the user didn't refer to
       
 50480        # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
       
 50481        # really was required.
       
 50482  
       
 50483        # Nullify the symbol file.
       
 50484 -      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
       
 50485 -      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
       
 50486 +      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
       
 50487 +      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
       
 50488      fi
       
 50489  }
       
 50490  
       
 50491  # func_win32_libid arg
       
 50492  # return the library type of file 'arg'
       
 50493  #
       
 50494  # Need a lot of goo to handle *both* DLLs and import libs
       
 50495  # Has to be a shell function in order to 'eat' the argument
       
 50496  # that is supplied when $file_magic_command is called.
       
 50497 +# Despite the name, also deal with 64 bit binaries.
       
 50498  func_win32_libid ()
       
 50499  {
       
 50500    $opt_debug
       
 50501    win32_libid_type="unknown"
       
 50502    win32_fileres=`file -L $1 2>/dev/null`
       
 50503    case $win32_fileres in
       
 50504    *ar\ archive\ import\ library*) # definitely import
       
 50505      win32_libid_type="x86 archive import"
       
 50506      ;;
       
 50507    *ar\ archive*) # could be an import, or static
       
 50508 +    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
       
 50509      if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
       
 50510 -       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
       
 50511 -      win32_nmres=`eval $NM -f posix -A $1 |
       
 50512 +       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
       
 50513 +      func_to_tool_file "$1" func_convert_file_msys_to_w32
       
 50514 +      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
       
 50515  	$SED -n -e '
       
 50516  	    1,100{
       
 50517  		/ I /{
       
 50518  		    s,.*,import,
       
 50519  		    p
       
 50520  		    q
       
 50521  		}
       
 50522  	    }'`
       
 50523 @@ -2585,25 +3577,161 @@ func_win32_libid ()
       
 50524        win32_libid_type="x86 DLL"
       
 50525        ;;
       
 50526      esac
       
 50527      ;;
       
 50528    esac
       
 50529    $ECHO "$win32_libid_type"
       
 50530  }
       
 50531  
       
 50532 +# func_cygming_dll_for_implib ARG
       
 50533 +#
       
 50534 +# Platform-specific function to extract the
       
 50535 +# name of the DLL associated with the specified
       
 50536 +# import library ARG.
       
 50537 +# Invoked by eval'ing the libtool variable
       
 50538 +#    $sharedlib_from_linklib_cmd
       
 50539 +# Result is available in the variable
       
 50540 +#    $sharedlib_from_linklib_result
       
 50541 +func_cygming_dll_for_implib ()
       
 50542 +{
       
 50543 +  $opt_debug
       
 50544 +  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
       
 50545 +}
       
 50546 +
       
 50547 +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
       
 50548 +#
       
 50549 +# The is the core of a fallback implementation of a
       
 50550 +# platform-specific function to extract the name of the
       
 50551 +# DLL associated with the specified import library LIBNAME.
       
 50552 +#
       
 50553 +# SECTION_NAME is either .idata$6 or .idata$7, depending
       
 50554 +# on the platform and compiler that created the implib.
       
 50555 +#
       
 50556 +# Echos the name of the DLL associated with the
       
 50557 +# specified import library.
       
 50558 +func_cygming_dll_for_implib_fallback_core ()
       
 50559 +{
       
 50560 +  $opt_debug
       
 50561 +  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
       
 50562 +  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
       
 50563 +    $SED '/^Contents of section '"$match_literal"':/{
       
 50564 +      # Place marker at beginning of archive member dllname section
       
 50565 +      s/.*/====MARK====/
       
 50566 +      p
       
 50567 +      d
       
 50568 +    }
       
 50569 +    # These lines can sometimes be longer than 43 characters, but
       
 50570 +    # are always uninteresting
       
 50571 +    /:[	 ]*file format pe[i]\{,1\}-/d
       
 50572 +    /^In archive [^:]*:/d
       
 50573 +    # Ensure marker is printed
       
 50574 +    /^====MARK====/p
       
 50575 +    # Remove all lines with less than 43 characters
       
 50576 +    /^.\{43\}/!d
       
 50577 +    # From remaining lines, remove first 43 characters
       
 50578 +    s/^.\{43\}//' |
       
 50579 +    $SED -n '
       
 50580 +      # Join marker and all lines until next marker into a single line
       
 50581 +      /^====MARK====/ b para
       
 50582 +      H
       
 50583 +      $ b para
       
 50584 +      b
       
 50585 +      :para
       
 50586 +      x
       
 50587 +      s/\n//g
       
 50588 +      # Remove the marker
       
 50589 +      s/^====MARK====//
       
 50590 +      # Remove trailing dots and whitespace
       
 50591 +      s/[\. \t]*$//
       
 50592 +      # Print
       
 50593 +      /./p' |
       
 50594 +    # we now have a list, one entry per line, of the stringified
       
 50595 +    # contents of the appropriate section of all members of the
       
 50596 +    # archive which possess that section. Heuristic: eliminate
       
 50597 +    # all those which have a first or second character that is
       
 50598 +    # a '.' (that is, objdump's representation of an unprintable
       
 50599 +    # character.) This should work for all archives with less than
       
 50600 +    # 0x302f exports -- but will fail for DLLs whose name actually
       
 50601 +    # begins with a literal '.' or a single character followed by
       
 50602 +    # a '.'.
       
 50603 +    #
       
 50604 +    # Of those that remain, print the first one.
       
 50605 +    $SED -e '/^\./d;/^.\./d;q'
       
 50606 +}
       
 50607 +
       
 50608 +# func_cygming_gnu_implib_p ARG
       
 50609 +# This predicate returns with zero status (TRUE) if
       
 50610 +# ARG is a GNU/binutils-style import library. Returns
       
 50611 +# with nonzero status (FALSE) otherwise.
       
 50612 +func_cygming_gnu_implib_p ()
       
 50613 +{
       
 50614 +  $opt_debug
       
 50615 +  func_to_tool_file "$1" func_convert_file_msys_to_w32
       
 50616 +  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)$'`
       
 50617 +  test -n "$func_cygming_gnu_implib_tmp"
       
 50618 +}
       
 50619 +
       
 50620 +# func_cygming_ms_implib_p ARG
       
 50621 +# This predicate returns with zero status (TRUE) if
       
 50622 +# ARG is an MS-style import library. Returns
       
 50623 +# with nonzero status (FALSE) otherwise.
       
 50624 +func_cygming_ms_implib_p ()
       
 50625 +{
       
 50626 +  $opt_debug
       
 50627 +  func_to_tool_file "$1" func_convert_file_msys_to_w32
       
 50628 +  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
       
 50629 +  test -n "$func_cygming_ms_implib_tmp"
       
 50630 +}
       
 50631 +
       
 50632 +# func_cygming_dll_for_implib_fallback ARG
       
 50633 +# Platform-specific function to extract the
       
 50634 +# name of the DLL associated with the specified
       
 50635 +# import library ARG.
       
 50636 +#
       
 50637 +# This fallback implementation is for use when $DLLTOOL
       
 50638 +# does not support the --identify-strict option.
       
 50639 +# Invoked by eval'ing the libtool variable
       
 50640 +#    $sharedlib_from_linklib_cmd
       
 50641 +# Result is available in the variable
       
 50642 +#    $sharedlib_from_linklib_result
       
 50643 +func_cygming_dll_for_implib_fallback ()
       
 50644 +{
       
 50645 +  $opt_debug
       
 50646 +  if func_cygming_gnu_implib_p "$1" ; then
       
 50647 +    # binutils import library
       
 50648 +    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
       
 50649 +  elif func_cygming_ms_implib_p "$1" ; then
       
 50650 +    # ms-generated import library
       
 50651 +    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
       
 50652 +  else
       
 50653 +    # unknown
       
 50654 +    sharedlib_from_linklib_result=""
       
 50655 +  fi
       
 50656 +}
       
 50657  
       
 50658  
       
 50659  # func_extract_an_archive dir oldlib
       
 50660  func_extract_an_archive ()
       
 50661  {
       
 50662      $opt_debug
       
 50663      f_ex_an_ar_dir="$1"; shift
       
 50664      f_ex_an_ar_oldlib="$1"
       
 50665 -    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
       
 50666 +    if test "$lock_old_archive_extraction" = yes; then
       
 50667 +      lockfile=$f_ex_an_ar_oldlib.lock
       
 50668 +      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
       
 50669 +	func_echo "Waiting for $lockfile to be removed"
       
 50670 +	sleep 2
       
 50671 +      done
       
 50672 +    fi
       
 50673 +    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
       
 50674 +		   'stat=$?; rm -f "$lockfile"; exit $stat'
       
 50675 +    if test "$lock_old_archive_extraction" = yes; then
       
 50676 +      $opt_dry_run || rm -f "$lockfile"
       
 50677 +    fi
       
 50678      if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
       
 50679       :
       
 50680      else
       
 50681        func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
       
 50682      fi
       
 50683  }
       
 50684  
       
 50685  
       
 50686 @@ -2664,471 +3792,349 @@ func_extract_archives ()
       
 50687  	      cd "$darwin_curdir"
       
 50688  	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
       
 50689  	    done # $darwin_arches
       
 50690              ## Okay now we've a bunch of thin objects, gotta fatten them up :)
       
 50691  	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
       
 50692  	    darwin_file=
       
 50693  	    darwin_files=
       
 50694  	    for darwin_file in $darwin_filelist; do
       
 50695 -	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
       
 50696 +	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
       
 50697  	      $LIPO -create -output "$darwin_file" $darwin_files
       
 50698  	    done # $darwin_filelist
       
 50699  	    $RM -rf unfat-$$
       
 50700  	    cd "$darwin_orig_dir"
       
 50701  	  else
       
 50702  	    cd $darwin_orig_dir
       
 50703  	    func_extract_an_archive "$my_xdir" "$my_xabs"
       
 50704  	  fi # $darwin_arches
       
 50705  	} # !$opt_dry_run
       
 50706  	;;
       
 50707        *)
       
 50708          func_extract_an_archive "$my_xdir" "$my_xabs"
       
 50709  	;;
       
 50710        esac
       
 50711 -      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
       
 50712 +      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
       
 50713      done
       
 50714  
       
 50715      func_extract_archives_result="$my_oldobjs"
       
 50716  }
       
 50717  
       
 50718  
       
 50719 -
       
 50720 -# func_emit_wrapper_part1 [arg=no]
       
 50721 -#
       
 50722 -# Emit the first part of a libtool wrapper script on stdout.
       
 50723 -# For more information, see the description associated with
       
 50724 -# func_emit_wrapper(), below.
       
 50725 -func_emit_wrapper_part1 ()
       
 50726 -{
       
 50727 -	func_emit_wrapper_part1_arg1=no
       
 50728 -	if test -n "$1" ; then
       
 50729 -	  func_emit_wrapper_part1_arg1=$1
       
 50730 -	fi
       
 50731 -
       
 50732 -	$ECHO "\
       
 50733 -#! $SHELL
       
 50734 -
       
 50735 -# $output - temporary wrapper script for $objdir/$outputname
       
 50736 -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
       
 50737 -#
       
 50738 -# The $output program cannot be directly executed until all the libtool
       
 50739 -# libraries that it depends on are installed.
       
 50740 -#
       
 50741 -# This wrapper script should never be moved out of the build directory.
       
 50742 -# If it is, it will not operate correctly.
       
 50743 -
       
 50744 -# Sed substitution that helps us do robust quoting.  It backslashifies
       
 50745 -# metacharacters that are still active within double-quoted strings.
       
 50746 -Xsed='${SED} -e 1s/^X//'
       
 50747 -sed_quote_subst='$sed_quote_subst'
       
 50748 -
       
 50749 -# Be Bourne compatible
       
 50750 -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
       
 50751 -  emulate sh
       
 50752 -  NULLCMD=:
       
 50753 -  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
       
 50754 -  # is contrary to our usage.  Disable this feature.
       
 50755 -  alias -g '\${1+\"\$@\"}'='\"\$@\"'
       
 50756 -  setopt NO_GLOB_SUBST
       
 50757 -else
       
 50758 -  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
       
 50759 -fi
       
 50760 -BIN_SH=xpg4; export BIN_SH # for Tru64
       
 50761 -DUALCASE=1; export DUALCASE # for MKS sh
       
 50762 -
       
 50763 -# The HP-UX ksh and POSIX shell print the target directory to stdout
       
 50764 -# if CDPATH is set.
       
 50765 -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
       
 50766 -
       
 50767 -relink_command=\"$relink_command\"
       
 50768 -
       
 50769 -# This environment variable determines our operation mode.
       
 50770 -if test \"\$libtool_install_magic\" = \"$magic\"; then
       
 50771 -  # install mode needs the following variables:
       
 50772 -  generated_by_libtool_version='$macro_version'
       
 50773 -  notinst_deplibs='$notinst_deplibs'
       
 50774 -else
       
 50775 -  # When we are sourced in execute mode, \$file and \$ECHO are already set.
       
 50776 -  if test \"\$libtool_execute_magic\" != \"$magic\"; then
       
 50777 -    ECHO=\"$qecho\"
       
 50778 -    file=\"\$0\"
       
 50779 -    # Make sure echo works.
       
 50780 -    if test \"X\$1\" = X--no-reexec; then
       
 50781 -      # Discard the --no-reexec flag, and continue.
       
 50782 -      shift
       
 50783 -    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
       
 50784 -      # Yippee, \$ECHO works!
       
 50785 -      :
       
 50786 -    else
       
 50787 -      # Restart under the correct shell, and then maybe \$ECHO will work.
       
 50788 -      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
       
 50789 -    fi
       
 50790 -  fi\
       
 50791 -"
       
 50792 -	$ECHO "\
       
 50793 -
       
 50794 -  # Find the directory that this script lives in.
       
 50795 -  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
       
 50796 -  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
       
 50797 -
       
 50798 -  # Follow symbolic links until we get to the real thisdir.
       
 50799 -  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
       
 50800 -  while test -n \"\$file\"; do
       
 50801 -    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
       
 50802 -
       
 50803 -    # If there was a directory component, then change thisdir.
       
 50804 -    if test \"x\$destdir\" != \"x\$file\"; then
       
 50805 -      case \"\$destdir\" in
       
 50806 -      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
       
 50807 -      *) thisdir=\"\$thisdir/\$destdir\" ;;
       
 50808 -      esac
       
 50809 -    fi
       
 50810 -
       
 50811 -    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
       
 50812 -    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
       
 50813 -  done
       
 50814 -"
       
 50815 -}
       
 50816 -# end: func_emit_wrapper_part1
       
 50817 -
       
 50818 -# func_emit_wrapper_part2 [arg=no]
       
 50819 -#
       
 50820 -# Emit the second part of a libtool wrapper script on stdout.
       
 50821 -# For more information, see the description associated with
       
 50822 -# func_emit_wrapper(), below.
       
 50823 -func_emit_wrapper_part2 ()
       
 50824 -{
       
 50825 -	func_emit_wrapper_part2_arg1=no
       
 50826 -	if test -n "$1" ; then
       
 50827 -	  func_emit_wrapper_part2_arg1=$1
       
 50828 -	fi
       
 50829 -
       
 50830 -	$ECHO "\
       
 50831 -
       
 50832 -  # Usually 'no', except on cygwin/mingw when embedded into
       
 50833 -  # the cwrapper.
       
 50834 -  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
       
 50835 -  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
       
 50836 -    # special case for '.'
       
 50837 -    if test \"\$thisdir\" = \".\"; then
       
 50838 -      thisdir=\`pwd\`
       
 50839 -    fi
       
 50840 -    # remove .libs from thisdir
       
 50841 -    case \"\$thisdir\" in
       
 50842 -    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
       
 50843 -    $objdir )   thisdir=. ;;
       
 50844 -    esac
       
 50845 -  fi
       
 50846 -
       
 50847 -  # Try to get the absolute directory name.
       
 50848 -  absdir=\`cd \"\$thisdir\" && pwd\`
       
 50849 -  test -n \"\$absdir\" && thisdir=\"\$absdir\"
       
 50850 -"
       
 50851 -
       
 50852 -	if test "$fast_install" = yes; then
       
 50853 -	  $ECHO "\
       
 50854 -  program=lt-'$outputname'$exeext
       
 50855 -  progdir=\"\$thisdir/$objdir\"
       
 50856 -
       
 50857 -  if test ! -f \"\$progdir/\$program\" ||
       
 50858 -     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
       
 50859 -       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
       
 50860 -
       
 50861 -    file=\"\$\$-\$program\"
       
 50862 -
       
 50863 -    if test ! -d \"\$progdir\"; then
       
 50864 -      $MKDIR \"\$progdir\"
       
 50865 -    else
       
 50866 -      $RM \"\$progdir/\$file\"
       
 50867 -    fi"
       
 50868 -
       
 50869 -	  $ECHO "\
       
 50870 -
       
 50871 -    # relink executable if necessary
       
 50872 -    if test -n \"\$relink_command\"; then
       
 50873 -      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
       
 50874 -      else
       
 50875 -	$ECHO \"\$relink_command_output\" >&2
       
 50876 -	$RM \"\$progdir/\$file\"
       
 50877 -	exit 1
       
 50878 -      fi
       
 50879 -    fi
       
 50880 -
       
 50881 -    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
       
 50882 -    { $RM \"\$progdir/\$program\";
       
 50883 -      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
       
 50884 -    $RM \"\$progdir/\$file\"
       
 50885 -  fi"
       
 50886 -	else
       
 50887 -	  $ECHO "\
       
 50888 -  program='$outputname'
       
 50889 -  progdir=\"\$thisdir/$objdir\"
       
 50890 -"
       
 50891 -	fi
       
 50892 -
       
 50893 -	$ECHO "\
       
 50894 -
       
 50895 -  if test -f \"\$progdir/\$program\"; then"
       
 50896 -
       
 50897 -	# Export our shlibpath_var if we have one.
       
 50898 -	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
       
 50899 -	  $ECHO "\
       
 50900 -    # Add our own library path to $shlibpath_var
       
 50901 -    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
       
 50902 -
       
 50903 -    # Some systems cannot cope with colon-terminated $shlibpath_var
       
 50904 -    # The second colon is a workaround for a bug in BeOS R4 sed
       
 50905 -    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
       
 50906 -
       
 50907 -    export $shlibpath_var
       
 50908 -"
       
 50909 -	fi
       
 50910 -
       
 50911 -	# fixup the dll searchpath if we need to.
       
 50912 -	if test -n "$dllsearchpath"; then
       
 50913 -	  $ECHO "\
       
 50914 -    # Add the dll search path components to the executable PATH
       
 50915 -    PATH=$dllsearchpath:\$PATH
       
 50916 -"
       
 50917 -	fi
       
 50918 -
       
 50919 -	$ECHO "\
       
 50920 -    if test \"\$libtool_execute_magic\" != \"$magic\"; then
       
 50921 -      # Run the actual program with our arguments.
       
 50922 -"
       
 50923 -	case $host in
       
 50924 -	# Backslashes separate directories on plain windows
       
 50925 -	*-*-mingw | *-*-os2* | *-cegcc*)
       
 50926 -	  $ECHO "\
       
 50927 -      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
       
 50928 -"
       
 50929 -	  ;;
       
 50930 -
       
 50931 -	*)
       
 50932 -	  $ECHO "\
       
 50933 -      exec \"\$progdir/\$program\" \${1+\"\$@\"}
       
 50934 -"
       
 50935 -	  ;;
       
 50936 -	esac
       
 50937 -	$ECHO "\
       
 50938 -      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
       
 50939 -      exit 1
       
 50940 -    fi
       
 50941 -  else
       
 50942 -    # The program doesn't exist.
       
 50943 -    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
       
 50944 -    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
       
 50945 -    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
       
 50946 -    exit 1
       
 50947 -  fi
       
 50948 -fi\
       
 50949 -"
       
 50950 -}
       
 50951 -# end: func_emit_wrapper_part2
       
 50952 -
       
 50953 -
       
 50954  # func_emit_wrapper [arg=no]
       
 50955  #
       
 50956  # Emit a libtool wrapper script on stdout.
       
 50957  # Don't directly open a file because we may want to
       
 50958  # incorporate the script contents within a cygwin/mingw
       
 50959  # wrapper executable.  Must ONLY be called from within
       
 50960  # func_mode_link because it depends on a number of variables
       
 50961  # set therein.
       
 50962  #
       
 50963  # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
       
 50964  # variable will take.  If 'yes', then the emitted script
       
 50965  # will assume that the directory in which it is stored is
       
 50966  # the $objdir directory.  This is a cygwin/mingw-specific
       
 50967  # behavior.
       
 50968  func_emit_wrapper ()
       
 50969  {
       
 50970 -	func_emit_wrapper_arg1=no
       
 50971 -	if test -n "$1" ; then
       
 50972 -	  func_emit_wrapper_arg1=$1
       
 50973 -	fi
       
 50974 -
       
 50975 -	# split this up so that func_emit_cwrapperexe_src
       
 50976 -	# can call each part independently.
       
 50977 -	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
       
 50978 -	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
       
 50979 -}
       
 50980 -
       
 50981 -
       
 50982 -# func_to_host_path arg
       
 50983 +	func_emit_wrapper_arg1=${1-no}
       
 50984 +
       
 50985 +	$ECHO "\
       
 50986 +#! $SHELL
       
 50987 +
       
 50988 +# $output - temporary wrapper script for $objdir/$outputname
       
 50989 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
       
 50990  #
       
 50991 -# Convert paths to host format when used with build tools.
       
 50992 -# Intended for use with "native" mingw (where libtool itself
       
 50993 -# is running under the msys shell), or in the following cross-
       
 50994 -# build environments:
       
 50995 -#    $build          $host
       
 50996 -#    mingw (msys)    mingw  [e.g. native]
       
 50997 -#    cygwin          mingw
       
 50998 -#    *nix + wine     mingw
       
 50999 -# where wine is equipped with the `winepath' executable.
       
 51000 -# In the native mingw case, the (msys) shell automatically
       
 51001 -# converts paths for any non-msys applications it launches,
       
 51002 -# but that facility isn't available from inside the cwrapper.
       
 51003 -# Similar accommodations are necessary for $host mingw and
       
 51004 -# $build cygwin.  Calling this function does no harm for other
       
 51005 -# $host/$build combinations not listed above.
       
 51006 +# The $output program cannot be directly executed until all the libtool
       
 51007 +# libraries that it depends on are installed.
       
 51008  #
       
 51009 -# ARG is the path (on $build) that should be converted to
       
 51010 -# the proper representation for $host. The result is stored
       
 51011 -# in $func_to_host_path_result.
       
 51012 -func_to_host_path ()
       
 51013 -{
       
 51014 -  func_to_host_path_result="$1"
       
 51015 -  if test -n "$1" ; then
       
 51016 -    case $host in
       
 51017 -      *mingw* )
       
 51018 -        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
       
 51019 -        case $build in
       
 51020 -          *mingw* ) # actually, msys
       
 51021 -            # awkward: cmd appends spaces to result
       
 51022 -            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
       
 51023 -            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
       
 51024 -              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
       
 51025 -            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
       
 51026 -              $SED -e "$lt_sed_naive_backslashify"`
       
 51027 -            ;;
       
 51028 -          *cygwin* )
       
 51029 -            func_to_host_path_tmp1=`cygpath -w "$1"`
       
 51030 -            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
       
 51031 -              $SED -e "$lt_sed_naive_backslashify"`
       
 51032 -            ;;
       
 51033 -          * )
       
 51034 -            # Unfortunately, winepath does not exit with a non-zero
       
 51035 -            # error code, so we are forced to check the contents of
       
 51036 -            # stdout. On the other hand, if the command is not
       
 51037 -            # found, the shell will set an exit code of 127 and print
       
 51038 -            # *an error message* to stdout. So we must check for both
       
 51039 -            # error code of zero AND non-empty stdout, which explains
       
 51040 -            # the odd construction:
       
 51041 -            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
       
 51042 -            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
       
 51043 -              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
       
 51044 -                $SED -e "$lt_sed_naive_backslashify"`
       
 51045 -            else
       
 51046 -              # Allow warning below.
       
 51047 -              func_to_host_path_result=""
       
 51048 -            fi
       
 51049 -            ;;
       
 51050 -        esac
       
 51051 -        if test -z "$func_to_host_path_result" ; then
       
 51052 -          func_error "Could not determine host path corresponding to"
       
 51053 -          func_error "  '$1'"
       
 51054 -          func_error "Continuing, but uninstalled executables may not work."
       
 51055 -          # Fallback:
       
 51056 -          func_to_host_path_result="$1"
       
 51057 -        fi
       
 51058 -        ;;
       
 51059 +# This wrapper script should never be moved out of the build directory.
       
 51060 +# If it is, it will not operate correctly.
       
 51061 +
       
 51062 +# Sed substitution that helps us do robust quoting.  It backslashifies
       
 51063 +# metacharacters that are still active within double-quoted strings.
       
 51064 +sed_quote_subst='$sed_quote_subst'
       
 51065 +
       
 51066 +# Be Bourne compatible
       
 51067 +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
       
 51068 +  emulate sh
       
 51069 +  NULLCMD=:
       
 51070 +  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
       
 51071 +  # is contrary to our usage.  Disable this feature.
       
 51072 +  alias -g '\${1+\"\$@\"}'='\"\$@\"'
       
 51073 +  setopt NO_GLOB_SUBST
       
 51074 +else
       
 51075 +  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
       
 51076 +fi
       
 51077 +BIN_SH=xpg4; export BIN_SH # for Tru64
       
 51078 +DUALCASE=1; export DUALCASE # for MKS sh
       
 51079 +
       
 51080 +# The HP-UX ksh and POSIX shell print the target directory to stdout
       
 51081 +# if CDPATH is set.
       
 51082 +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
       
 51083 +
       
 51084 +relink_command=\"$relink_command\"
       
 51085 +
       
 51086 +# This environment variable determines our operation mode.
       
 51087 +if test \"\$libtool_install_magic\" = \"$magic\"; then
       
 51088 +  # install mode needs the following variables:
       
 51089 +  generated_by_libtool_version='$macro_version'
       
 51090 +  notinst_deplibs='$notinst_deplibs'
       
 51091 +else
       
 51092 +  # When we are sourced in execute mode, \$file and \$ECHO are already set.
       
 51093 +  if test \"\$libtool_execute_magic\" != \"$magic\"; then
       
 51094 +    file=\"\$0\""
       
 51095 +
       
 51096 +    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
       
 51097 +    $ECHO "\
       
 51098 +
       
 51099 +# A function that is used when there is no print builtin or printf.
       
 51100 +func_fallback_echo ()
       
 51101 +{
       
 51102 +  eval 'cat <<_LTECHO_EOF
       
 51103 +\$1
       
 51104 +_LTECHO_EOF'
       
 51105 +}
       
 51106 +    ECHO=\"$qECHO\"
       
 51107 +  fi
       
 51108 +
       
 51109 +# Very basic option parsing. These options are (a) specific to
       
 51110 +# the libtool wrapper, (b) are identical between the wrapper
       
 51111 +# /script/ and the wrapper /executable/ which is used only on
       
 51112 +# windows platforms, and (c) all begin with the string "--lt-"
       
 51113 +# (application programs are unlikely to have options which match
       
 51114 +# this pattern).
       
 51115 +#
       
 51116 +# There are only two supported options: --lt-debug and
       
 51117 +# --lt-dump-script. There is, deliberately, no --lt-help.
       
 51118 +#
       
 51119 +# The first argument to this parsing function should be the
       
 51120 +# script's $0 value, followed by "$@".
       
 51121 +lt_option_debug=
       
 51122 +func_parse_lt_options ()
       
 51123 +{
       
 51124 +  lt_script_arg0=\$0
       
 51125 +  shift
       
 51126 +  for lt_opt
       
 51127 +  do
       
 51128 +    case \"\$lt_opt\" in
       
 51129 +    --lt-debug) lt_option_debug=1 ;;
       
 51130 +    --lt-dump-script)
       
 51131 +        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
       
 51132 +        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
       
 51133 +        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
       
 51134 +        cat \"\$lt_dump_D/\$lt_dump_F\"
       
 51135 +        exit 0
       
 51136 +      ;;
       
 51137 +    --lt-*)
       
 51138 +        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
       
 51139 +        exit 1
       
 51140 +      ;;
       
 51141 +    esac
       
 51142 +  done
       
 51143 +
       
 51144 +  # Print the debug banner immediately:
       
 51145 +  if test -n \"\$lt_option_debug\"; then
       
 51146 +    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
       
 51147 +  fi
       
 51148 +}
       
 51149 +
       
 51150 +# Used when --lt-debug. Prints its arguments to stdout
       
 51151 +# (redirection is the responsibility of the caller)
       
 51152 +func_lt_dump_args ()
       
 51153 +{
       
 51154 +  lt_dump_args_N=1;
       
 51155 +  for lt_arg
       
 51156 +  do
       
 51157 +    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
       
 51158 +    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
       
 51159 +  done
       
 51160 +}
       
 51161 +
       
 51162 +# Core function for launching the target application
       
 51163 +func_exec_program_core ()
       
 51164 +{
       
 51165 +"
       
 51166 +  case $host in
       
 51167 +  # Backslashes separate directories on plain windows
       
 51168 +  *-*-mingw | *-*-os2* | *-cegcc*)
       
 51169 +    $ECHO "\
       
 51170 +      if test -n \"\$lt_option_debug\"; then
       
 51171 +        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
       
 51172 +        func_lt_dump_args \${1+\"\$@\"} 1>&2
       
 51173 +      fi
       
 51174 +      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
       
 51175 +"
       
 51176 +    ;;
       
 51177 +
       
 51178 +  *)
       
 51179 +    $ECHO "\
       
 51180 +      if test -n \"\$lt_option_debug\"; then
       
 51181 +        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
       
 51182 +        func_lt_dump_args \${1+\"\$@\"} 1>&2
       
 51183 +      fi
       
 51184 +      exec \"\$progdir/\$program\" \${1+\"\$@\"}
       
 51185 +"
       
 51186 +    ;;
       
 51187 +  esac
       
 51188 +  $ECHO "\
       
 51189 +      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
       
 51190 +      exit 1
       
 51191 +}
       
 51192 +
       
 51193 +# A function to encapsulate launching the target application
       
 51194 +# Strips options in the --lt-* namespace from \$@ and
       
 51195 +# launches target application with the remaining arguments.
       
 51196 +func_exec_program ()
       
 51197 +{
       
 51198 +  case \" \$* \" in
       
 51199 +  *\\ --lt-*)
       
 51200 +    for lt_wr_arg
       
 51201 +    do
       
 51202 +      case \$lt_wr_arg in
       
 51203 +      --lt-*) ;;
       
 51204 +      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
       
 51205 +      esac
       
 51206 +      shift
       
 51207 +    done ;;
       
 51208 +  esac
       
 51209 +  func_exec_program_core \${1+\"\$@\"}
       
 51210 +}
       
 51211 +
       
 51212 +  # Parse options
       
 51213 +  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
       
 51214 +
       
 51215 +  # Find the directory that this script lives in.
       
 51216 +  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
       
 51217 +  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
       
 51218 +
       
 51219 +  # Follow symbolic links until we get to the real thisdir.
       
 51220 +  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
       
 51221 +  while test -n \"\$file\"; do
       
 51222 +    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
       
 51223 +
       
 51224 +    # If there was a directory component, then change thisdir.
       
 51225 +    if test \"x\$destdir\" != \"x\$file\"; then
       
 51226 +      case \"\$destdir\" in
       
 51227 +      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
       
 51228 +      *) thisdir=\"\$thisdir/\$destdir\" ;;
       
 51229 +      esac
       
 51230 +    fi
       
 51231 +
       
 51232 +    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
       
 51233 +    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
       
 51234 +  done
       
 51235 +
       
 51236 +  # Usually 'no', except on cygwin/mingw when embedded into
       
 51237 +  # the cwrapper.
       
 51238 +  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
       
 51239 +  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
       
 51240 +    # special case for '.'
       
 51241 +    if test \"\$thisdir\" = \".\"; then
       
 51242 +      thisdir=\`pwd\`
       
 51243 +    fi
       
 51244 +    # remove .libs from thisdir
       
 51245 +    case \"\$thisdir\" in
       
 51246 +    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
       
 51247 +    $objdir )   thisdir=. ;;
       
 51248      esac
       
 51249    fi
       
 51250 -}
       
 51251 -# end: func_to_host_path
       
 51252 -
       
 51253 -# func_to_host_pathlist arg
       
 51254 -#
       
 51255 -# Convert pathlists to host format when used with build tools.
       
 51256 -# See func_to_host_path(), above. This function supports the
       
 51257 -# following $build/$host combinations (but does no harm for
       
 51258 -# combinations not listed here):
       
 51259 -#    $build          $host
       
 51260 -#    mingw (msys)    mingw  [e.g. native]
       
 51261 -#    cygwin          mingw
       
 51262 -#    *nix + wine     mingw
       
 51263 -#
       
 51264 -# Path separators are also converted from $build format to
       
 51265 -# $host format. If ARG begins or ends with a path separator
       
 51266 -# character, it is preserved (but converted to $host format)
       
 51267 -# on output.
       
 51268 -#
       
 51269 -# ARG is a pathlist (on $build) that should be converted to
       
 51270 -# the proper representation on $host. The result is stored
       
 51271 -# in $func_to_host_pathlist_result.
       
 51272 -func_to_host_pathlist ()
       
 51273 -{
       
 51274 -  func_to_host_pathlist_result="$1"
       
 51275 -  if test -n "$1" ; then
       
 51276 -    case $host in
       
 51277 -      *mingw* )
       
 51278 -        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
       
 51279 -        # Remove leading and trailing path separator characters from
       
 51280 -        # ARG. msys behavior is inconsistent here, cygpath turns them
       
 51281 -        # into '.;' and ';.', and winepath ignores them completely.
       
 51282 -        func_to_host_pathlist_tmp2="$1"
       
 51283 -        # Once set for this call, this variable should not be
       
 51284 -        # reassigned. It is used in tha fallback case.
       
 51285 -        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
       
 51286 -          $SED -e 's|^:*||' -e 's|:*$||'`
       
 51287 -        case $build in
       
 51288 -          *mingw* ) # Actually, msys.
       
 51289 -            # Awkward: cmd appends spaces to result.
       
 51290 -            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
       
 51291 -            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
       
 51292 -              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
       
 51293 -            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
       
 51294 -              $SED -e "$lt_sed_naive_backslashify"`
       
 51295 -            ;;
       
 51296 -          *cygwin* )
       
 51297 -            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
       
 51298 -            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
       
 51299 -              $SED -e "$lt_sed_naive_backslashify"`
       
 51300 -            ;;
       
 51301 -          * )
       
 51302 -            # unfortunately, winepath doesn't convert pathlists
       
 51303 -            func_to_host_pathlist_result=""
       
 51304 -            func_to_host_pathlist_oldIFS=$IFS
       
 51305 -            IFS=:
       
 51306 -            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
       
 51307 -              IFS=$func_to_host_pathlist_oldIFS
       
 51308 -              if test -n "$func_to_host_pathlist_f" ; then
       
 51309 -                func_to_host_path "$func_to_host_pathlist_f"
       
 51310 -                if test -n "$func_to_host_path_result" ; then
       
 51311 -                  if test -z "$func_to_host_pathlist_result" ; then
       
 51312 -                    func_to_host_pathlist_result="$func_to_host_path_result"
       
 51313 -                  else
       
 51314 -                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
       
 51315 -                  fi
       
 51316 -                fi
       
 51317 -              fi
       
 51318 -              IFS=:
       
 51319 -            done
       
 51320 -            IFS=$func_to_host_pathlist_oldIFS
       
 51321 -            ;;
       
 51322 -        esac
       
 51323 -        if test -z "$func_to_host_pathlist_result" ; then
       
 51324 -          func_error "Could not determine the host path(s) corresponding to"
       
 51325 -          func_error "  '$1'"
       
 51326 -          func_error "Continuing, but uninstalled executables may not work."
       
 51327 -          # Fallback. This may break if $1 contains DOS-style drive
       
 51328 -          # specifications. The fix is not to complicate the expression
       
 51329 -          # below, but for the user to provide a working wine installation
       
 51330 -          # with winepath so that path translation in the cross-to-mingw
       
 51331 -          # case works properly.
       
 51332 -          lt_replace_pathsep_nix_to_dos="s|:|;|g"
       
 51333 -          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
       
 51334 -            $SED -e "$lt_replace_pathsep_nix_to_dos"`
       
 51335 -        fi
       
 51336 -        # Now, add the leading and trailing path separators back
       
 51337 -        case "$1" in
       
 51338 -          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
       
 51339 -            ;;
       
 51340 -        esac
       
 51341 -        case "$1" in
       
 51342 -          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
       
 51343 -            ;;
       
 51344 -        esac
       
 51345 -        ;;
       
 51346 -    esac
       
 51347 +
       
 51348 +  # Try to get the absolute directory name.
       
 51349 +  absdir=\`cd \"\$thisdir\" && pwd\`
       
 51350 +  test -n \"\$absdir\" && thisdir=\"\$absdir\"
       
 51351 +"
       
 51352 +
       
 51353 +	if test "$fast_install" = yes; then
       
 51354 +	  $ECHO "\
       
 51355 +  program=lt-'$outputname'$exeext
       
 51356 +  progdir=\"\$thisdir/$objdir\"
       
 51357 +
       
 51358 +  if test ! -f \"\$progdir/\$program\" ||
       
 51359 +     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
       
 51360 +       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
       
 51361 +
       
 51362 +    file=\"\$\$-\$program\"
       
 51363 +
       
 51364 +    if test ! -d \"\$progdir\"; then
       
 51365 +      $MKDIR \"\$progdir\"
       
 51366 +    else
       
 51367 +      $RM \"\$progdir/\$file\"
       
 51368 +    fi"
       
 51369 +
       
 51370 +	  $ECHO "\
       
 51371 +
       
 51372 +    # relink executable if necessary
       
 51373 +    if test -n \"\$relink_command\"; then
       
 51374 +      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
       
 51375 +      else
       
 51376 +	$ECHO \"\$relink_command_output\" >&2
       
 51377 +	$RM \"\$progdir/\$file\"
       
 51378 +	exit 1
       
 51379 +      fi
       
 51380 +    fi
       
 51381 +
       
 51382 +    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
       
 51383 +    { $RM \"\$progdir/\$program\";
       
 51384 +      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
       
 51385 +    $RM \"\$progdir/\$file\"
       
 51386 +  fi"
       
 51387 +	else
       
 51388 +	  $ECHO "\
       
 51389 +  program='$outputname'
       
 51390 +  progdir=\"\$thisdir/$objdir\"
       
 51391 +"
       
 51392 +	fi
       
 51393 +
       
 51394 +	$ECHO "\
       
 51395 +
       
 51396 +  if test -f \"\$progdir/\$program\"; then"
       
 51397 +
       
 51398 +	# fixup the dll searchpath if we need to.
       
 51399 +	#
       
 51400 +	# Fix the DLL searchpath if we need to.  Do this before prepending
       
 51401 +	# to shlibpath, because on Windows, both are PATH and uninstalled
       
 51402 +	# libraries must come first.
       
 51403 +	if test -n "$dllsearchpath"; then
       
 51404 +	  $ECHO "\
       
 51405 +    # Add the dll search path components to the executable PATH
       
 51406 +    PATH=$dllsearchpath:\$PATH
       
 51407 +"
       
 51408 +	fi
       
 51409 +
       
 51410 +	# Export our shlibpath_var if we have one.
       
 51411 +	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
       
 51412 +	  $ECHO "\
       
 51413 +    # Add our own library path to $shlibpath_var
       
 51414 +    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
       
 51415 +
       
 51416 +    # Some systems cannot cope with colon-terminated $shlibpath_var
       
 51417 +    # The second colon is a workaround for a bug in BeOS R4 sed
       
 51418 +    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
       
 51419 +
       
 51420 +    export $shlibpath_var
       
 51421 +"
       
 51422 +	fi
       
 51423 +
       
 51424 +	$ECHO "\
       
 51425 +    if test \"\$libtool_execute_magic\" != \"$magic\"; then
       
 51426 +      # Run the actual program with our arguments.
       
 51427 +      func_exec_program \${1+\"\$@\"}
       
 51428 +    fi
       
 51429 +  else
       
 51430 +    # The program doesn't exist.
       
 51431 +    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
       
 51432 +    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
       
 51433 +    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
       
 51434 +    exit 1
       
 51435    fi
       
 51436 -}
       
 51437 -# end: func_to_host_pathlist
       
 51438 +fi\
       
 51439 +"
       
 51440 +}
       
 51441 +
       
 51442  
       
 51443  # func_emit_cwrapperexe_src
       
 51444  # emit the source code for a wrapper executable on stdout
       
 51445  # Must ONLY be called from within func_mode_link because
       
 51446  # it depends on a number of variable set therein.
       
 51447  func_emit_cwrapperexe_src ()
       
 51448  {
       
 51449  	cat <<EOF
       
 51450 @@ -3136,75 +4142,98 @@ func_emit_cwrapperexe_src ()
       
 51451  /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
       
 51452     Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
       
 51453  
       
 51454     The $output program cannot be directly executed until all the libtool
       
 51455     libraries that it depends on are installed.
       
 51456  
       
 51457     This wrapper executable should never be moved out of the build directory.
       
 51458     If it is, it will not operate correctly.
       
 51459 -
       
 51460 -   Currently, it simply execs the wrapper *script* "$SHELL $output",
       
 51461 -   but could eventually absorb all of the scripts functionality and
       
 51462 -   exec $objdir/$outputname directly.
       
 51463  */
       
 51464  EOF
       
 51465  	    cat <<"EOF"
       
 51466 +#ifdef _MSC_VER
       
 51467 +# define _CRT_SECURE_NO_DEPRECATE 1
       
 51468 +#endif
       
 51469  #include <stdio.h>
       
 51470  #include <stdlib.h>
       
 51471  #ifdef _MSC_VER
       
 51472  # include <direct.h>
       
 51473  # include <process.h>
       
 51474  # include <io.h>
       
 51475 -# define setmode _setmode
       
 51476  #else
       
 51477  # include <unistd.h>
       
 51478  # include <stdint.h>
       
 51479  # ifdef __CYGWIN__
       
 51480  #  include <io.h>
       
 51481 -#  define HAVE_SETENV
       
 51482 -#  ifdef __STRICT_ANSI__
       
 51483 -char *realpath (const char *, char *);
       
 51484 -int putenv (char *);
       
 51485 -int setenv (const char *, const char *, int);
       
 51486 -#  endif
       
 51487  # endif
       
 51488  #endif
       
 51489  #include <malloc.h>
       
 51490  #include <stdarg.h>
       
 51491  #include <assert.h>
       
 51492  #include <string.h>
       
 51493  #include <ctype.h>
       
 51494  #include <errno.h>
       
 51495  #include <fcntl.h>
       
 51496  #include <sys/stat.h>
       
 51497  
       
 51498 +/* declarations of non-ANSI functions */
       
 51499 +#if defined(__MINGW32__)
       
 51500 +# ifdef __STRICT_ANSI__
       
 51501 +int _putenv (const char *);
       
 51502 +# endif
       
 51503 +#elif defined(__CYGWIN__)
       
 51504 +# ifdef __STRICT_ANSI__
       
 51505 +char *realpath (const char *, char *);
       
 51506 +int putenv (char *);
       
 51507 +int setenv (const char *, const char *, int);
       
 51508 +# endif
       
 51509 +/* #elif defined (other platforms) ... */
       
 51510 +#endif
       
 51511 +
       
 51512 +/* portability defines, excluding path handling macros */
       
 51513 +#if defined(_MSC_VER)
       
 51514 +# define setmode _setmode
       
 51515 +# define stat    _stat
       
 51516 +# define chmod   _chmod
       
 51517 +# define getcwd  _getcwd
       
 51518 +# define putenv  _putenv
       
 51519 +# define S_IXUSR _S_IEXEC
       
 51520 +# ifndef _INTPTR_T_DEFINED
       
 51521 +#  define _INTPTR_T_DEFINED
       
 51522 +#  define intptr_t int
       
 51523 +# endif
       
 51524 +#elif defined(__MINGW32__)
       
 51525 +# define setmode _setmode
       
 51526 +# define stat    _stat
       
 51527 +# define chmod   _chmod
       
 51528 +# define getcwd  _getcwd
       
 51529 +# define putenv  _putenv
       
 51530 +#elif defined(__CYGWIN__)
       
 51531 +# define HAVE_SETENV
       
 51532 +# define FOPEN_WB "wb"
       
 51533 +/* #elif defined (other platforms) ... */
       
 51534 +#endif
       
 51535 +
       
 51536  #if defined(PATH_MAX)
       
 51537  # define LT_PATHMAX PATH_MAX
       
 51538  #elif defined(MAXPATHLEN)
       
 51539  # define LT_PATHMAX MAXPATHLEN
       
 51540  #else
       
 51541  # define LT_PATHMAX 1024
       
 51542  #endif
       
 51543  
       
 51544  #ifndef S_IXOTH
       
 51545  # define S_IXOTH 0
       
 51546  #endif
       
 51547  #ifndef S_IXGRP
       
 51548  # define S_IXGRP 0
       
 51549  #endif
       
 51550  
       
 51551 -#ifdef _MSC_VER
       
 51552 -# define S_IXUSR _S_IEXEC
       
 51553 -# define stat _stat
       
 51554 -# ifndef _INTPTR_T_DEFINED
       
 51555 -#  define intptr_t int
       
 51556 -# endif
       
 51557 -#endif
       
 51558 -
       
 51559 +/* path handling portability macros */
       
 51560  #ifndef DIR_SEPARATOR
       
 51561  # define DIR_SEPARATOR '/'
       
 51562  # define PATH_SEPARATOR ':'
       
 51563  #endif
       
 51564  
       
 51565  #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
       
 51566    defined (__OS2__)
       
 51567  # define HAVE_DOS_BASED_FILE_SYSTEM
       
 51568 @@ -3225,104 +4254,77 @@ int setenv (const char *, const char *, 
       
 51569  #endif /* DIR_SEPARATOR_2 */
       
 51570  
       
 51571  #ifndef PATH_SEPARATOR_2
       
 51572  # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
       
 51573  #else /* PATH_SEPARATOR_2 */
       
 51574  # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
       
 51575  #endif /* PATH_SEPARATOR_2 */
       
 51576  
       
 51577 -#ifdef __CYGWIN__
       
 51578 -# define FOPEN_WB "wb"
       
 51579 -#endif
       
 51580 -
       
 51581  #ifndef FOPEN_WB
       
 51582  # define FOPEN_WB "w"
       
 51583  #endif
       
 51584  #ifndef _O_BINARY
       
 51585  # define _O_BINARY 0
       
 51586  #endif
       
 51587  
       
 51588  #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
       
 51589  #define XFREE(stale) do { \
       
 51590    if (stale) { free ((void *) stale); stale = 0; } \
       
 51591  } while (0)
       
 51592  
       
 51593 -#undef LTWRAPPER_DEBUGPRINTF
       
 51594 -#if defined DEBUGWRAPPER
       
 51595 -# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
       
 51596 -static void
       
 51597 -ltwrapper_debugprintf (const char *fmt, ...)
       
 51598 -{
       
 51599 -    va_list args;
       
 51600 -    va_start (args, fmt);
       
 51601 -    (void) vfprintf (stderr, fmt, args);
       
 51602 -    va_end (args);
       
 51603 -}
       
 51604 +#if defined(LT_DEBUGWRAPPER)
       
 51605 +static int lt_debug = 1;
       
 51606  #else
       
 51607 -# define LTWRAPPER_DEBUGPRINTF(args)
       
 51608 +static int lt_debug = 0;
       
 51609  #endif
       
 51610  
       
 51611 -const char *program_name = NULL;
       
 51612 +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
       
 51613  
       
 51614  void *xmalloc (size_t num);
       
 51615  char *xstrdup (const char *string);
       
 51616  const char *base_name (const char *name);
       
 51617  char *find_executable (const char *wrapper);
       
 51618  char *chase_symlinks (const char *pathspec);
       
 51619  int make_executable (const char *path);
       
 51620  int check_executable (const char *path);
       
 51621  char *strendzap (char *str, const char *pat);
       
 51622 -void lt_fatal (const char *message, ...);
       
 51623 +void lt_debugprintf (const char *file, int line, const char *fmt, ...);
       
 51624 +void lt_fatal (const char *file, int line, const char *message, ...);
       
 51625 +static const char *nonnull (const char *s);
       
 51626 +static const char *nonempty (const char *s);
       
 51627  void lt_setenv (const char *name, const char *value);
       
 51628  char *lt_extend_str (const char *orig_value, const char *add, int to_end);
       
 51629 -void lt_opt_process_env_set (const char *arg);
       
 51630 -void lt_opt_process_env_prepend (const char *arg);
       
 51631 -void lt_opt_process_env_append (const char *arg);
       
 51632 -int lt_split_name_value (const char *arg, char** name, char** value);
       
 51633  void lt_update_exe_path (const char *name, const char *value);
       
 51634  void lt_update_lib_path (const char *name, const char *value);
       
 51635 -
       
 51636 -static const char *script_text_part1 =
       
 51637 +char **prepare_spawn (char **argv);
       
 51638 +void lt_dump_script (FILE *f);
       
 51639  EOF
       
 51640  
       
 51641 -	    func_emit_wrapper_part1 yes |
       
 51642 -	        $SED -e 's/\([\\"]\)/\\\1/g' \
       
 51643 -	             -e 's/^/  "/' -e 's/$/\\n"/'
       
 51644 -	    echo ";"
       
 51645  	    cat <<EOF
       
 51646 -
       
 51647 -static const char *script_text_part2 =
       
 51648 -EOF
       
 51649 -	    func_emit_wrapper_part2 yes |
       
 51650 -	        $SED -e 's/\([\\"]\)/\\\1/g' \
       
 51651 -	             -e 's/^/  "/' -e 's/$/\\n"/'
       
 51652 -	    echo ";"
       
 51653 -
       
 51654 -	    cat <<EOF
       
 51655 -const char * MAGIC_EXE = "$magic_exe";
       
 51656 +volatile const char * MAGIC_EXE = "$magic_exe";
       
 51657  const char * LIB_PATH_VARNAME = "$shlibpath_var";
       
 51658  EOF
       
 51659  
       
 51660  	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
       
 51661 -              func_to_host_pathlist "$temp_rpath"
       
 51662 +              func_to_host_path "$temp_rpath"
       
 51663  	      cat <<EOF
       
 51664 -const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
       
 51665 +const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
       
 51666  EOF
       
 51667  	    else
       
 51668  	      cat <<"EOF"
       
 51669  const char * LIB_PATH_VALUE   = "";
       
 51670  EOF
       
 51671  	    fi
       
 51672  
       
 51673  	    if test -n "$dllsearchpath"; then
       
 51674 -              func_to_host_pathlist "$dllsearchpath:"
       
 51675 +              func_to_host_path "$dllsearchpath:"
       
 51676  	      cat <<EOF
       
 51677  const char * EXE_PATH_VARNAME = "PATH";
       
 51678 -const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
       
 51679 +const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
       
 51680  EOF
       
 51681  	    else
       
 51682  	      cat <<"EOF"
       
 51683  const char * EXE_PATH_VARNAME = "";
       
 51684  const char * EXE_PATH_VALUE   = "";
       
 51685  EOF
       
 51686  	    fi
       
 51687  
       
 51688 @@ -3335,86 +4337,107 @@ EOF
       
 51689  const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
       
 51690  EOF
       
 51691  	    fi
       
 51692  
       
 51693  
       
 51694  	    cat <<"EOF"
       
 51695  
       
 51696  #define LTWRAPPER_OPTION_PREFIX         "--lt-"
       
 51697 -#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
       
 51698 -
       
 51699 -static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
       
 51700 +
       
 51701  static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
       
 51702 -
       
 51703  static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
       
 51704 -
       
 51705 -static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
       
 51706 -static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
       
 51707 -  /* argument is putenv-style "foo=bar", value of foo is set to bar */
       
 51708 -
       
 51709 -static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
       
 51710 -static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
       
 51711 -  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
       
 51712 -
       
 51713 -static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
       
 51714 -static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
       
 51715 -  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
       
 51716 +static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
       
 51717  
       
 51718  int
       
 51719  main (int argc, char *argv[])
       
 51720  {
       
 51721    char **newargz;
       
 51722    int  newargc;
       
 51723    char *tmp_pathspec;
       
 51724    char *actual_cwrapper_path;
       
 51725    char *actual_cwrapper_name;
       
 51726    char *target_name;
       
 51727    char *lt_argv_zero;
       
 51728    intptr_t rval = 127;
       
 51729  
       
 51730    int i;
       
 51731  
       
 51732    program_name = (char *) xstrdup (base_name (argv[0]));
       
 51733 -  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
       
 51734 -  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
       
 51735 -
       
 51736 -  /* very simple arg parsing; don't want to rely on getopt */
       
 51737 +  newargz = XMALLOC (char *, argc + 1);
       
 51738 +
       
 51739 +  /* very simple arg parsing; don't want to rely on getopt
       
 51740 +   * also, copy all non cwrapper options to newargz, except
       
 51741 +   * argz[0], which is handled differently
       
 51742 +   */
       
 51743 +  newargc=0;
       
 51744    for (i = 1; i < argc; i++)
       
 51745      {
       
 51746        if (strcmp (argv[i], dumpscript_opt) == 0)
       
 51747  	{
       
 51748  EOF
       
 51749  	    case "$host" in
       
 51750  	      *mingw* | *cygwin* )
       
 51751  		# make stdout use "unix" line endings
       
 51752  		echo "          setmode(1,_O_BINARY);"
       
 51753  		;;
       
 51754  	      esac
       
 51755  
       
 51756  	    cat <<"EOF"
       
 51757 -	  printf ("%s", script_text_part1);
       
 51758 -	  printf ("%s", script_text_part2);
       
 51759 +	  lt_dump_script (stdout);
       
 51760  	  return 0;
       
 51761  	}
       
 51762 +      if (strcmp (argv[i], debug_opt) == 0)
       
 51763 +	{
       
 51764 +          lt_debug = 1;
       
 51765 +          continue;
       
 51766 +	}
       
 51767 +      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
       
 51768 +        {
       
 51769 +          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
       
 51770 +             namespace, but it is not one of the ones we know about and
       
 51771 +             have already dealt with, above (inluding dump-script), then
       
 51772 +             report an error. Otherwise, targets might begin to believe
       
 51773 +             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
       
 51774 +             namespace. The first time any user complains about this, we'll
       
 51775 +             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
       
 51776 +             or a configure.ac-settable value.
       
 51777 +           */
       
 51778 +          lt_fatal (__FILE__, __LINE__,
       
 51779 +		    "unrecognized %s option: '%s'",
       
 51780 +                    ltwrapper_option_prefix, argv[i]);
       
 51781 +        }
       
 51782 +      /* otherwise ... */
       
 51783 +      newargz[++newargc] = xstrdup (argv[i]);
       
 51784      }
       
 51785 -
       
 51786 -  newargz = XMALLOC (char *, argc + 1);
       
 51787 +  newargz[++newargc] = NULL;
       
 51788 +
       
 51789 +EOF
       
 51790 +	    cat <<EOF
       
 51791 +  /* The GNU banner must be the first non-error debug message */
       
 51792 +  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
       
 51793 +EOF
       
 51794 +	    cat <<"EOF"
       
 51795 +  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
       
 51796 +  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
       
 51797 +
       
 51798    tmp_pathspec = find_executable (argv[0]);
       
 51799    if (tmp_pathspec == NULL)
       
 51800 -    lt_fatal ("Couldn't find %s", argv[0]);
       
 51801 -  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
       
 51802 -			  tmp_pathspec));
       
 51803 +    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
       
 51804 +  lt_debugprintf (__FILE__, __LINE__,
       
 51805 +                  "(main) found exe (before symlink chase) at: %s\n",
       
 51806 +		  tmp_pathspec);
       
 51807  
       
 51808    actual_cwrapper_path = chase_symlinks (tmp_pathspec);
       
 51809 -  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
       
 51810 -			  actual_cwrapper_path));
       
 51811 +  lt_debugprintf (__FILE__, __LINE__,
       
 51812 +                  "(main) found exe (after symlink chase) at: %s\n",
       
 51813 +		  actual_cwrapper_path);
       
 51814    XFREE (tmp_pathspec);
       
 51815  
       
 51816 -  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
       
 51817 +  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
       
 51818    strendzap (actual_cwrapper_path, actual_cwrapper_name);
       
 51819  
       
 51820    /* wrapper name transforms */
       
 51821    strendzap (actual_cwrapper_name, ".exe");
       
 51822    tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
       
 51823    XFREE (actual_cwrapper_name);
       
 51824    actual_cwrapper_name = tmp_pathspec;
       
 51825    tmp_pathspec = 0;
       
 51826 @@ -3422,18 +4445,19 @@ EOF
       
 51827    /* target_name transforms -- use actual target program name; might have lt- prefix */
       
 51828    target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
       
 51829    strendzap (target_name, ".exe");
       
 51830    tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
       
 51831    XFREE (target_name);
       
 51832    target_name = tmp_pathspec;
       
 51833    tmp_pathspec = 0;
       
 51834  
       
 51835 -  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
       
 51836 -			  target_name));
       
 51837 +  lt_debugprintf (__FILE__, __LINE__,
       
 51838 +		  "(main) libtool target name: %s\n",
       
 51839 +		  target_name);
       
 51840  EOF
       
 51841  
       
 51842  	    cat <<EOF
       
 51843    newargz[0] =
       
 51844      XMALLOC (char, (strlen (actual_cwrapper_path) +
       
 51845  		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
       
 51846    strcpy (newargz[0], actual_cwrapper_path);
       
 51847    strcat (newargz[0], "$objdir");
       
 51848 @@ -3473,103 +4497,45 @@ EOF
       
 51849  
       
 51850  	    cat <<"EOF"
       
 51851    XFREE (target_name);
       
 51852    XFREE (actual_cwrapper_path);
       
 51853    XFREE (actual_cwrapper_name);
       
 51854  
       
 51855    lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
       
 51856    lt_setenv ("DUALCASE", "1");  /* for MSK sh */
       
 51857 +  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
       
 51858 +     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
       
 51859 +     because on Windows, both *_VARNAMEs are PATH but uninstalled
       
 51860 +     libraries must come first. */
       
 51861 +  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
       
 51862    lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
       
 51863 -  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
       
 51864 -
       
 51865 -  newargc=0;
       
 51866 -  for (i = 1; i < argc; i++)
       
 51867 -    {
       
 51868 -      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
       
 51869 -        {
       
 51870 -          if (argv[i][env_set_opt_len] == '=')
       
 51871 -            {
       
 51872 -              const char *p = argv[i] + env_set_opt_len + 1;
       
 51873 -              lt_opt_process_env_set (p);
       
 51874 -            }
       
 51875 -          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
       
 51876 -            {
       
 51877 -              lt_opt_process_env_set (argv[++i]); /* don't copy */
       
 51878 -            }
       
 51879 -          else
       
 51880 -            lt_fatal ("%s missing required argument", env_set_opt);
       
 51881 -          continue;
       
 51882 -        }
       
 51883 -      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
       
 51884 -        {
       
 51885 -          if (argv[i][env_prepend_opt_len] == '=')
       
 51886 -            {
       
 51887 -              const char *p = argv[i] + env_prepend_opt_len + 1;
       
 51888 -              lt_opt_process_env_prepend (p);
       
 51889 -            }
       
 51890 -          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
       
 51891 -            {
       
 51892 -              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
       
 51893 -            }
       
 51894 -          else
       
 51895 -            lt_fatal ("%s missing required argument", env_prepend_opt);
       
 51896 -          continue;
       
 51897 -        }
       
 51898 -      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
       
 51899 -        {
       
 51900 -          if (argv[i][env_append_opt_len] == '=')
       
 51901 -            {
       
 51902 -              const char *p = argv[i] + env_append_opt_len + 1;
       
 51903 -              lt_opt_process_env_append (p);
       
 51904 -            }
       
 51905 -          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
       
 51906 -            {
       
 51907 -              lt_opt_process_env_append (argv[++i]); /* don't copy */
       
 51908 -            }
       
 51909 -          else
       
 51910 -            lt_fatal ("%s missing required argument", env_append_opt);
       
 51911 -          continue;
       
 51912 -        }
       
 51913 -      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
       
 51914 -        {
       
 51915 -          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
       
 51916 -             namespace, but it is not one of the ones we know about and
       
 51917 -             have already dealt with, above (inluding dump-script), then
       
 51918 -             report an error. Otherwise, targets might begin to believe
       
 51919 -             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
       
 51920 -             namespace. The first time any user complains about this, we'll
       
 51921 -             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
       
 51922 -             or a configure.ac-settable value.
       
 51923 -           */
       
 51924 -          lt_fatal ("Unrecognized option in %s namespace: '%s'",
       
 51925 -                    ltwrapper_option_prefix, argv[i]);
       
 51926 -        }
       
 51927 -      /* otherwise ... */
       
 51928 -      newargz[++newargc] = xstrdup (argv[i]);
       
 51929 -    }
       
 51930 -  newargz[++newargc] = NULL;
       
 51931 -
       
 51932 -  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
       
 51933 +
       
 51934 +  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
       
 51935 +		  nonnull (lt_argv_zero));
       
 51936    for (i = 0; i < newargc; i++)
       
 51937      {
       
 51938 -      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
       
 51939 +      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
       
 51940 +		      i, nonnull (newargz[i]));
       
 51941      }
       
 51942  
       
 51943  EOF
       
 51944  
       
 51945  	    case $host_os in
       
 51946  	      mingw*)
       
 51947  		cat <<"EOF"
       
 51948    /* execv doesn't actually work on mingw as expected on unix */
       
 51949 +  newargz = prepare_spawn (newargz);
       
 51950    rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
       
 51951    if (rval == -1)
       
 51952      {
       
 51953        /* failed to start process */
       
 51954 -      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
       
 51955 +      lt_debugprintf (__FILE__, __LINE__,
       
 51956 +		      "(main) failed to launch target \"%s\": %s\n",
       
 51957 +		      lt_argv_zero, nonnull (strerror (errno)));
       
 51958        return 127;
       
 51959      }
       
 51960    return rval;
       
 51961  EOF
       
 51962  		;;
       
 51963  	      *)
       
 51964  		cat <<"EOF"
       
 51965    execv (lt_argv_zero, newargz);
       
 51966 @@ -3581,17 +4547,17 @@ EOF
       
 51967  	    cat <<"EOF"
       
 51968  }
       
 51969  
       
 51970  void *
       
 51971  xmalloc (size_t num)
       
 51972  {
       
 51973    void *p = (void *) malloc (num);
       
 51974    if (!p)
       
 51975 -    lt_fatal ("Memory exhausted");
       
 51976 +    lt_fatal (__FILE__, __LINE__, "memory exhausted");
       
 51977  
       
 51978    return p;
       
 51979  }
       
 51980  
       
 51981  char *
       
 51982  xstrdup (const char *string)
       
 51983  {
       
 51984    return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
       
 51985 @@ -3615,36 +4581,36 @@ base_name (const char *name)
       
 51986    return base;
       
 51987  }
       
 51988  
       
 51989  int
       
 51990  check_executable (const char *path)
       
 51991  {
       
 51992    struct stat st;
       
 51993  
       
 51994 -  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
       
 51995 -			  path ? (*path ? path : "EMPTY!") : "NULL!"));
       
 51996 +  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
       
 51997 +                  nonempty (path));
       
 51998    if ((!path) || (!*path))
       
 51999      return 0;
       
 52000  
       
 52001    if ((stat (path, &st) >= 0)
       
 52002        && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
       
 52003      return 1;
       
 52004    else
       
 52005      return 0;
       
 52006  }
       
 52007  
       
 52008  int
       
 52009  make_executable (const char *path)
       
 52010  {
       
 52011    int rval = 0;
       
 52012    struct stat st;
       
 52013  
       
 52014 -  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
       
 52015 -			  path ? (*path ? path : "EMPTY!") : "NULL!"));
       
 52016 +  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
       
 52017 +                  nonempty (path));
       
 52018    if ((!path) || (!*path))
       
 52019      return 0;
       
 52020  
       
 52021    if (stat (path, &st) >= 0)
       
 52022      {
       
 52023        rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
       
 52024      }
       
 52025    return rval;
       
 52026 @@ -3660,18 +4626,18 @@ find_executable (const char *wrapper)
       
 52027    int has_slash = 0;
       
 52028    const char *p;
       
 52029    const char *p_next;
       
 52030    /* static buffer for getcwd */
       
 52031    char tmp[LT_PATHMAX + 1];
       
 52032    int tmp_len;
       
 52033    char *concat_name;
       
 52034  
       
 52035 -  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
       
 52036 -			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
       
 52037 +  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
       
 52038 +                  nonempty (wrapper));
       
 52039  
       
 52040    if ((wrapper == NULL) || (*wrapper == '\0'))
       
 52041      return NULL;
       
 52042  
       
 52043    /* Absolute path? */
       
 52044  #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
       
 52045    if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
       
 52046      {
       
 52047 @@ -3714,17 +4680,18 @@ find_executable (const char *wrapper)
       
 52048  		if (IS_PATH_SEPARATOR (*q))
       
 52049  		  break;
       
 52050  	      p_len = q - p;
       
 52051  	      p_next = (*q == '\0' ? q : q + 1);
       
 52052  	      if (p_len == 0)
       
 52053  		{
       
 52054  		  /* empty path: current directory */
       
 52055  		  if (getcwd (tmp, LT_PATHMAX) == NULL)
       
 52056 -		    lt_fatal ("getcwd failed");
       
 52057 +		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
       
 52058 +                              nonnull (strerror (errno)));
       
 52059  		  tmp_len = strlen (tmp);
       
 52060  		  concat_name =
       
 52061  		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
       
 52062  		  memcpy (concat_name, tmp, tmp_len);
       
 52063  		  concat_name[tmp_len] = '/';
       
 52064  		  strcpy (concat_name + tmp_len + 1, wrapper);
       
 52065  		}
       
 52066  	      else
       
 52067 @@ -3739,17 +4706,18 @@ find_executable (const char *wrapper)
       
 52068  		return concat_name;
       
 52069  	      XFREE (concat_name);
       
 52070  	    }
       
 52071  	}
       
 52072        /* not found in PATH; assume curdir */
       
 52073      }
       
 52074    /* Relative path | not found in path: prepend cwd */
       
 52075    if (getcwd (tmp, LT_PATHMAX) == NULL)
       
 52076 -    lt_fatal ("getcwd failed");
       
 52077 +    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
       
 52078 +              nonnull (strerror (errno)));
       
 52079    tmp_len = strlen (tmp);
       
 52080    concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
       
 52081    memcpy (concat_name, tmp, tmp_len);
       
 52082    concat_name[tmp_len] = '/';
       
 52083    strcpy (concat_name + tmp_len + 1, wrapper);
       
 52084  
       
 52085    if (check_executable (concat_name))
       
 52086      return concat_name;
       
 52087 @@ -3765,18 +4733,19 @@ chase_symlinks (const char *pathspec)
       
 52088  #else
       
 52089    char buf[LT_PATHMAX];
       
 52090    struct stat s;
       
 52091    char *tmp_pathspec = xstrdup (pathspec);
       
 52092    char *p;
       
 52093    int has_symlinks = 0;
       
 52094    while (strlen (tmp_pathspec) && !has_symlinks)
       
 52095      {
       
 52096 -      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
       
 52097 -			      tmp_pathspec));
       
 52098 +      lt_debugprintf (__FILE__, __LINE__,
       
 52099 +		      "checking path component for symlinks: %s\n",
       
 52100 +		      tmp_pathspec);
       
 52101        if (lstat (tmp_pathspec, &s) == 0)
       
 52102  	{
       
 52103  	  if (S_ISLNK (s.st_mode) != 0)
       
 52104  	    {
       
 52105  	      has_symlinks = 1;
       
 52106  	      break;
       
 52107  	    }
       
 52108  
       
 52109 @@ -3788,31 +4757,33 @@ chase_symlinks (const char *pathspec)
       
 52110  	    {
       
 52111  	      /* no more DIR_SEPARATORS left */
       
 52112  	      break;
       
 52113  	    }
       
 52114  	  *p = '\0';
       
 52115  	}
       
 52116        else
       
 52117  	{
       
 52118 -	  char *errstr = strerror (errno);
       
 52119 -	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
       
 52120 +	  lt_fatal (__FILE__, __LINE__,
       
 52121 +		    "error accessing file \"%s\": %s",
       
 52122 +		    tmp_pathspec, nonnull (strerror (errno)));
       
 52123  	}
       
 52124      }
       
 52125    XFREE (tmp_pathspec);
       
 52126  
       
 52127    if (!has_symlinks)
       
 52128      {
       
 52129        return xstrdup (pathspec);
       
 52130      }
       
 52131  
       
 52132    tmp_pathspec = realpath (pathspec, buf);
       
 52133    if (tmp_pathspec == 0)
       
 52134      {
       
 52135 -      lt_fatal ("Could not follow symlinks for %s", pathspec);
       
 52136 +      lt_fatal (__FILE__, __LINE__,
       
 52137 +		"could not follow symlinks for %s", pathspec);
       
 52138      }
       
 52139    return xstrdup (tmp_pathspec);
       
 52140  #endif
       
 52141  }
       
 52142  
       
 52143  char *
       
 52144  strendzap (char *str, const char *pat)
       
 52145  {
       
 52146 @@ -3828,43 +4799,69 @@ strendzap (char *str, const char *pat)
       
 52147      {
       
 52148        str += len - patlen;
       
 52149        if (strcmp (str, pat) == 0)
       
 52150  	*str = '\0';
       
 52151      }
       
 52152    return str;
       
 52153  }
       
 52154  
       
 52155 +void
       
 52156 +lt_debugprintf (const char *file, int line, const char *fmt, ...)
       
 52157 +{
       
 52158 +  va_list args;
       
 52159 +  if (lt_debug)
       
 52160 +    {
       
 52161 +      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
       
 52162 +      va_start (args, fmt);
       
 52163 +      (void) vfprintf (stderr, fmt, args);
       
 52164 +      va_end (args);
       
 52165 +    }
       
 52166 +}
       
 52167 +
       
 52168  static void
       
 52169 -lt_error_core (int exit_status, const char *mode,
       
 52170 +lt_error_core (int exit_status, const char *file,
       
 52171 +	       int line, const char *mode,
       
 52172  	       const char *message, va_list ap)
       
 52173  {
       
 52174 -  fprintf (stderr, "%s: %s: ", program_name, mode);
       
 52175 +  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
       
 52176    vfprintf (stderr, message, ap);
       
 52177    fprintf (stderr, ".\n");
       
 52178  
       
 52179    if (exit_status >= 0)
       
 52180      exit (exit_status);
       
 52181  }
       
 52182  
       
 52183  void
       
 52184 -lt_fatal (const char *message, ...)
       
 52185 +lt_fatal (const char *file, int line, const char *message, ...)
       
 52186  {
       
 52187    va_list ap;
       
 52188    va_start (ap, message);
       
 52189 -  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
       
 52190 +  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
       
 52191    va_end (ap);
       
 52192  }
       
 52193  
       
 52194 +static const char *
       
 52195 +nonnull (const char *s)
       
 52196 +{
       
 52197 +  return s ? s : "(null)";
       
 52198 +}
       
 52199 +
       
 52200 +static const char *
       
 52201 +nonempty (const char *s)
       
 52202 +{
       
 52203 +  return (s && !*s) ? "(empty)" : nonnull (s);
       
 52204 +}
       
 52205 +
       
 52206  void
       
 52207  lt_setenv (const char *name, const char *value)
       
 52208  {
       
 52209 -  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
       
 52210 -                          (name ? name : "<NULL>"),
       
 52211 -                          (value ? value : "<NULL>")));
       
 52212 +  lt_debugprintf (__FILE__, __LINE__,
       
 52213 +		  "(lt_setenv) setting '%s' to '%s'\n",
       
 52214 +                  nonnull (name), nonnull (value));
       
 52215    {
       
 52216  #ifdef HAVE_SETENV
       
 52217      /* always make a copy, for consistency with !HAVE_SETENV */
       
 52218      char *str = xstrdup (value);
       
 52219      setenv (name, str, 1);
       
 52220  #else
       
 52221      int len = strlen (name) + 1 + strlen (value) + 1;
       
 52222      char *str = XMALLOC (char, len);
       
 52223 @@ -3899,105 +4896,22 @@ lt_extend_str (const char *orig_value, c
       
 52224      }
       
 52225    else
       
 52226      {
       
 52227        new_value = xstrdup (add);
       
 52228      }
       
 52229    return new_value;
       
 52230  }
       
 52231  
       
 52232 -int
       
 52233 -lt_split_name_value (const char *arg, char** name, char** value)
       
 52234 -{
       
 52235 -  const char *p;
       
 52236 -  int len;
       
 52237 -  if (!arg || !*arg)
       
 52238 -    return 1;
       
 52239 -
       
 52240 -  p = strchr (arg, (int)'=');
       
 52241 -
       
 52242 -  if (!p)
       
 52243 -    return 1;
       
 52244 -
       
 52245 -  *value = xstrdup (++p);
       
 52246 -
       
 52247 -  len = strlen (arg) - strlen (*value);
       
 52248 -  *name = XMALLOC (char, len);
       
 52249 -  strncpy (*name, arg, len-1);
       
 52250 -  (*name)[len - 1] = '\0';
       
 52251 -
       
 52252 -  return 0;
       
 52253 -}
       
 52254 -
       
 52255 -void
       
 52256 -lt_opt_process_env_set (const char *arg)
       
 52257 -{
       
 52258 -  char *name = NULL;
       
 52259 -  char *value = NULL;
       
 52260 -
       
 52261 -  if (lt_split_name_value (arg, &name, &value) != 0)
       
 52262 -    {
       
 52263 -      XFREE (name);
       
 52264 -      XFREE (value);
       
 52265 -      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
       
 52266 -    }
       
 52267 -
       
 52268 -  lt_setenv (name, value);
       
 52269 -  XFREE (name);
       
 52270 -  XFREE (value);
       
 52271 -}
       
 52272 -
       
 52273 -void
       
 52274 -lt_opt_process_env_prepend (const char *arg)
       
 52275 -{
       
 52276 -  char *name = NULL;
       
 52277 -  char *value = NULL;
       
 52278 -  char *new_value = NULL;
       
 52279 -
       
 52280 -  if (lt_split_name_value (arg, &name, &value) != 0)
       
 52281 -    {
       
 52282 -      XFREE (name);
       
 52283 -      XFREE (value);
       
 52284 -      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
       
 52285 -    }
       
 52286 -
       
 52287 -  new_value = lt_extend_str (getenv (name), value, 0);
       
 52288 -  lt_setenv (name, new_value);
       
 52289 -  XFREE (new_value);
       
 52290 -  XFREE (name);
       
 52291 -  XFREE (value);
       
 52292 -}
       
 52293 -
       
 52294 -void
       
 52295 -lt_opt_process_env_append (const char *arg)
       
 52296 -{
       
 52297 -  char *name = NULL;
       
 52298 -  char *value = NULL;
       
 52299 -  char *new_value = NULL;
       
 52300 -
       
 52301 -  if (lt_split_name_value (arg, &name, &value) != 0)
       
 52302 -    {
       
 52303 -      XFREE (name);
       
 52304 -      XFREE (value);
       
 52305 -      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
       
 52306 -    }
       
 52307 -
       
 52308 -  new_value = lt_extend_str (getenv (name), value, 1);
       
 52309 -  lt_setenv (name, new_value);
       
 52310 -  XFREE (new_value);
       
 52311 -  XFREE (name);
       
 52312 -  XFREE (value);
       
 52313 -}
       
 52314 -
       
 52315  void
       
 52316  lt_update_exe_path (const char *name, const char *value)
       
 52317  {
       
 52318 -  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
       
 52319 -                          (name ? name : "<NULL>"),
       
 52320 -                          (value ? value : "<NULL>")));
       
 52321 +  lt_debugprintf (__FILE__, __LINE__,
       
 52322 +		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
       
 52323 +                  nonnull (name), nonnull (value));
       
 52324  
       
 52325    if (name && *name && value && *value)
       
 52326      {
       
 52327        char *new_value = lt_extend_str (getenv (name), value, 0);
       
 52328        /* some systems can't cope with a ':'-terminated path #' */
       
 52329        int len = strlen (new_value);
       
 52330        while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
       
 52331          {
       
 52332 @@ -4006,33 +4920,180 @@ lt_update_exe_path (const char *name, co
       
 52333        lt_setenv (name, new_value);
       
 52334        XFREE (new_value);
       
 52335      }
       
 52336  }
       
 52337  
       
 52338  void
       
 52339  lt_update_lib_path (const char *name, const char *value)
       
 52340  {
       
 52341 -  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
       
 52342 -                          (name ? name : "<NULL>"),
       
 52343 -                          (value ? value : "<NULL>")));
       
 52344 +  lt_debugprintf (__FILE__, __LINE__,
       
 52345 +		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
       
 52346 +                  nonnull (name), nonnull (value));
       
 52347  
       
 52348    if (name && *name && value && *value)
       
 52349      {
       
 52350        char *new_value = lt_extend_str (getenv (name), value, 0);
       
 52351        lt_setenv (name, new_value);
       
 52352        XFREE (new_value);
       
 52353      }
       
 52354  }
       
 52355  
       
 52356 -
       
 52357  EOF
       
 52358 +	    case $host_os in
       
 52359 +	      mingw*)
       
 52360 +		cat <<"EOF"
       
 52361 +
       
 52362 +/* Prepares an argument vector before calling spawn().
       
 52363 +   Note that spawn() does not by itself call the command interpreter
       
 52364 +     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
       
 52365 +      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
       
 52366 +         GetVersionEx(&v);
       
 52367 +         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
       
 52368 +      }) ? "cmd.exe" : "command.com").
       
 52369 +   Instead it simply concatenates the arguments, separated by ' ', and calls
       
 52370 +   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
       
 52371 +   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
       
 52372 +   special way:
       
 52373 +   - Space and tab are interpreted as delimiters. They are not treated as
       
 52374 +     delimiters if they are surrounded by double quotes: "...".
       
 52375 +   - Unescaped double quotes are removed from the input. Their only effect is
       
 52376 +     that within double quotes, space and tab are treated like normal
       
 52377 +     characters.
       
 52378 +   - Backslashes not followed by double quotes are not special.
       
 52379 +   - But 2*n+1 backslashes followed by a double quote become
       
 52380 +     n backslashes followed by a double quote (n >= 0):
       
 52381 +       \" -> "
       
 52382 +       \\\" -> \"
       
 52383 +       \\\\\" -> \\"
       
 52384 + */
       
 52385 +#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"
       
 52386 +#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"
       
 52387 +char **
       
 52388 +prepare_spawn (char **argv)
       
 52389 +{
       
 52390 +  size_t argc;
       
 52391 +  char **new_argv;
       
 52392 +  size_t i;
       
 52393 +
       
 52394 +  /* Count number of arguments.  */
       
 52395 +  for (argc = 0; argv[argc] != NULL; argc++)
       
 52396 +    ;
       
 52397 +
       
 52398 +  /* Allocate new argument vector.  */
       
 52399 +  new_argv = XMALLOC (char *, argc + 1);
       
 52400 +
       
 52401 +  /* Put quoted arguments into the new argument vector.  */
       
 52402 +  for (i = 0; i < argc; i++)
       
 52403 +    {
       
 52404 +      const char *string = argv[i];
       
 52405 +
       
 52406 +      if (string[0] == '\0')
       
 52407 +	new_argv[i] = xstrdup ("\"\"");
       
 52408 +      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
       
 52409 +	{
       
 52410 +	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
       
 52411 +	  size_t length;
       
 52412 +	  unsigned int backslashes;
       
 52413 +	  const char *s;
       
 52414 +	  char *quoted_string;
       
 52415 +	  char *p;
       
 52416 +
       
 52417 +	  length = 0;
       
 52418 +	  backslashes = 0;
       
 52419 +	  if (quote_around)
       
 52420 +	    length++;
       
 52421 +	  for (s = string; *s != '\0'; s++)
       
 52422 +	    {
       
 52423 +	      char c = *s;
       
 52424 +	      if (c == '"')
       
 52425 +		length += backslashes + 1;
       
 52426 +	      length++;
       
 52427 +	      if (c == '\\')
       
 52428 +		backslashes++;
       
 52429 +	      else
       
 52430 +		backslashes = 0;
       
 52431 +	    }
       
 52432 +	  if (quote_around)
       
 52433 +	    length += backslashes + 1;
       
 52434 +
       
 52435 +	  quoted_string = XMALLOC (char, length + 1);
       
 52436 +
       
 52437 +	  p = quoted_string;
       
 52438 +	  backslashes = 0;
       
 52439 +	  if (quote_around)
       
 52440 +	    *p++ = '"';
       
 52441 +	  for (s = string; *s != '\0'; s++)
       
 52442 +	    {
       
 52443 +	      char c = *s;
       
 52444 +	      if (c == '"')
       
 52445 +		{
       
 52446 +		  unsigned int j;
       
 52447 +		  for (j = backslashes + 1; j > 0; j--)
       
 52448 +		    *p++ = '\\';
       
 52449 +		}
       
 52450 +	      *p++ = c;
       
 52451 +	      if (c == '\\')
       
 52452 +		backslashes++;
       
 52453 +	      else
       
 52454 +		backslashes = 0;
       
 52455 +	    }
       
 52456 +	  if (quote_around)
       
 52457 +	    {
       
 52458 +	      unsigned int j;
       
 52459 +	      for (j = backslashes; j > 0; j--)
       
 52460 +		*p++ = '\\';
       
 52461 +	      *p++ = '"';
       
 52462 +	    }
       
 52463 +	  *p = '\0';
       
 52464 +
       
 52465 +	  new_argv[i] = quoted_string;
       
 52466 +	}
       
 52467 +      else
       
 52468 +	new_argv[i] = (char *) string;
       
 52469 +    }
       
 52470 +  new_argv[argc] = NULL;
       
 52471 +
       
 52472 +  return new_argv;
       
 52473 +}
       
 52474 +EOF
       
 52475 +		;;
       
 52476 +	    esac
       
 52477 +
       
 52478 +            cat <<"EOF"
       
 52479 +void lt_dump_script (FILE* f)
       
 52480 +{
       
 52481 +EOF
       
 52482 +	    func_emit_wrapper yes |
       
 52483 +	      $SED -n -e '
       
 52484 +s/^\(.\{79\}\)\(..*\)/\1\
       
 52485 +\2/
       
 52486 +h
       
 52487 +s/\([\\"]\)/\\\1/g
       
 52488 +s/$/\\n/
       
 52489 +s/\([^\n]*\).*/  fputs ("\1", f);/p
       
 52490 +g
       
 52491 +D'
       
 52492 +            cat <<"EOF"
       
 52493 +}
       
 52494 +EOF
       
 52495  }
       
 52496  # end: func_emit_cwrapperexe_src
       
 52497  
       
 52498 +# func_win32_import_lib_p ARG
       
 52499 +# True if ARG is an import lib, as indicated by $file_magic_cmd
       
 52500 +func_win32_import_lib_p ()
       
 52501 +{
       
 52502 +    $opt_debug
       
 52503 +    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
       
 52504 +    *import*) : ;;
       
 52505 +    *) false ;;
       
 52506 +    esac
       
 52507 +}
       
 52508 +
       
 52509  # func_mode_link arg...
       
 52510  func_mode_link ()
       
 52511  {
       
 52512      $opt_debug
       
 52513      case $host in
       
 52514      *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
       
 52515        # It is impossible to link a dll without this setting, and
       
 52516        # we shouldn't force the makefile maintainer to figure out
       
 52517 @@ -4067,16 +5128,17 @@ func_mode_link ()
       
 52518      compiler_flags=
       
 52519      linker_flags=
       
 52520      dllsearchpath=
       
 52521      lib_search_path=`pwd`
       
 52522      inst_prefix_dir=
       
 52523      new_inherited_linker_flags=
       
 52524  
       
 52525      avoid_version=no
       
 52526 +    bindir=
       
 52527      dlfiles=
       
 52528      dlprefiles=
       
 52529      dlself=no
       
 52530      export_dynamic=no
       
 52531      export_symbols=
       
 52532      export_symbols_regex=
       
 52533      generated=
       
 52534      libobjs=
       
 52535 @@ -4159,16 +5221,21 @@ func_mode_link ()
       
 52536  	case $prev in
       
 52537  	output)
       
 52538  	  func_append compile_command " @OUTPUT@"
       
 52539  	  func_append finalize_command " @OUTPUT@"
       
 52540  	  ;;
       
 52541  	esac
       
 52542  
       
 52543  	case $prev in
       
 52544 +	bindir)
       
 52545 +	  bindir="$arg"
       
 52546 +	  prev=
       
 52547 +	  continue
       
 52548 +	  ;;
       
 52549  	dlfiles|dlprefiles)
       
 52550  	  if test "$preload" = no; then
       
 52551  	    # Add the symbol object into the linking commands.
       
 52552  	    func_append compile_command " @SYMFILE@"
       
 52553  	    func_append finalize_command " @SYMFILE@"
       
 52554  	    preload=yes
       
 52555  	  fi
       
 52556  	  case $arg in
       
 52557 @@ -4190,19 +5257,19 @@ func_mode_link ()
       
 52558  	      dlself=needless
       
 52559  	      export_dynamic=yes
       
 52560  	    fi
       
 52561  	    prev=
       
 52562  	    continue
       
 52563  	    ;;
       
 52564  	  *)
       
 52565  	    if test "$prev" = dlfiles; then
       
 52566 -	      dlfiles="$dlfiles $arg"
       
 52567 +	      func_append dlfiles " $arg"
       
 52568  	    else
       
 52569 -	      dlprefiles="$dlprefiles $arg"
       
 52570 +	      func_append dlprefiles " $arg"
       
 52571  	    fi
       
 52572  	    prev=
       
 52573  	    continue
       
 52574  	    ;;
       
 52575  	  esac
       
 52576  	  ;;
       
 52577  	expsyms)
       
 52578  	  export_symbols="$arg"
       
 52579 @@ -4216,17 +5283,17 @@ func_mode_link ()
       
 52580  	  prev=
       
 52581  	  continue
       
 52582  	  ;;
       
 52583  	framework)
       
 52584  	  case $host in
       
 52585  	    *-*-darwin*)
       
 52586  	      case "$deplibs " in
       
 52587  		*" $qarg.ltframework "*) ;;
       
 52588 -		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
       
 52589 +		*) func_append deplibs " $qarg.ltframework" # this is fixed later
       
 52590  		   ;;
       
 52591  	      esac
       
 52592  	      ;;
       
 52593  	  esac
       
 52594  	  prev=
       
 52595  	  continue
       
 52596  	  ;;
       
 52597  	inst_prefix)
       
 52598 @@ -4235,17 +5302,17 @@ func_mode_link ()
       
 52599  	  continue
       
 52600  	  ;;
       
 52601  	objectlist)
       
 52602  	  if test -f "$arg"; then
       
 52603  	    save_arg=$arg
       
 52604  	    moreargs=
       
 52605  	    for fil in `cat "$save_arg"`
       
 52606  	    do
       
 52607 -#	      moreargs="$moreargs $fil"
       
 52608 +#	      func_append moreargs " $fil"
       
 52609  	      arg=$fil
       
 52610  	      # A libtool-controlled object.
       
 52611  
       
 52612  	      # Check to see that this really is a libtool object.
       
 52613  	      if func_lalib_unsafe_p "$arg"; then
       
 52614  		pic_object=
       
 52615  		non_pic_object=
       
 52616  
       
 52617 @@ -4264,29 +5331,29 @@ func_mode_link ()
       
 52618  		xdir="$func_dirname_result"
       
 52619  
       
 52620  		if test "$pic_object" != none; then
       
 52621  		  # Prepend the subdirectory the object is found in.
       
 52622  		  pic_object="$xdir$pic_object"
       
 52623  
       
 52624  		  if test "$prev" = dlfiles; then
       
 52625  		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
       
 52626 -		      dlfiles="$dlfiles $pic_object"
       
 52627 +		      func_append dlfiles " $pic_object"
       
 52628  		      prev=
       
 52629  		      continue
       
 52630  		    else
       
 52631  		      # If libtool objects are unsupported, then we need to preload.
       
 52632  		      prev=dlprefiles
       
 52633  		    fi
       
 52634  		  fi
       
 52635  
       
 52636  		  # CHECK ME:  I think I busted this.  -Ossama
       
 52637  		  if test "$prev" = dlprefiles; then
       
 52638  		    # Preload the old-style object.
       
 52639 -		    dlprefiles="$dlprefiles $pic_object"
       
 52640 +		    func_append dlprefiles " $pic_object"
       
 52641  		    prev=
       
 52642  		  fi
       
 52643  
       
 52644  		  # A PIC object.
       
 52645  		  func_append libobjs " $pic_object"
       
 52646  		  arg="$pic_object"
       
 52647  		fi
       
 52648  
       
 52649 @@ -4346,55 +5413,55 @@ func_mode_link ()
       
 52650  	  [\\/]* | [A-Za-z]:[\\/]*) ;;
       
 52651  	  *)
       
 52652  	    func_fatal_error "only absolute run-paths are allowed"
       
 52653  	    ;;
       
 52654  	  esac
       
 52655  	  if test "$prev" = rpath; then
       
 52656  	    case "$rpath " in
       
 52657  	    *" $arg "*) ;;
       
 52658 -	    *) rpath="$rpath $arg" ;;
       
 52659 +	    *) func_append rpath " $arg" ;;
       
 52660  	    esac
       
 52661  	  else
       
 52662  	    case "$xrpath " in
       
 52663  	    *" $arg "*) ;;
       
 52664 -	    *) xrpath="$xrpath $arg" ;;
       
 52665 +	    *) func_append xrpath " $arg" ;;
       
 52666  	    esac
       
 52667  	  fi
       
 52668  	  prev=
       
 52669  	  continue
       
 52670  	  ;;
       
 52671  	shrext)
       
 52672  	  shrext_cmds="$arg"
       
 52673  	  prev=
       
 52674  	  continue
       
 52675  	  ;;
       
 52676  	weak)
       
 52677 -	  weak_libs="$weak_libs $arg"
       
 52678 +	  func_append weak_libs " $arg"
       
 52679  	  prev=
       
 52680  	  continue
       
 52681  	  ;;
       
 52682  	xcclinker)
       
 52683 -	  linker_flags="$linker_flags $qarg"
       
 52684 -	  compiler_flags="$compiler_flags $qarg"
       
 52685 +	  func_append linker_flags " $qarg"
       
 52686 +	  func_append compiler_flags " $qarg"
       
 52687  	  prev=
       
 52688  	  func_append compile_command " $qarg"
       
 52689  	  func_append finalize_command " $qarg"
       
 52690  	  continue
       
 52691  	  ;;
       
 52692  	xcompiler)
       
 52693 -	  compiler_flags="$compiler_flags $qarg"
       
 52694 +	  func_append compiler_flags " $qarg"
       
 52695  	  prev=
       
 52696  	  func_append compile_command " $qarg"
       
 52697  	  func_append finalize_command " $qarg"
       
 52698  	  continue
       
 52699  	  ;;
       
 52700  	xlinker)
       
 52701 -	  linker_flags="$linker_flags $qarg"
       
 52702 -	  compiler_flags="$compiler_flags $wl$qarg"
       
 52703 +	  func_append linker_flags " $qarg"
       
 52704 +	  func_append compiler_flags " $wl$qarg"
       
 52705  	  prev=
       
 52706  	  func_append compile_command " $wl$qarg"
       
 52707  	  func_append finalize_command " $wl$qarg"
       
 52708  	  continue
       
 52709  	  ;;
       
 52710  	*)
       
 52711  	  eval "$prev=\"\$arg\""
       
 52712  	  prev=
       
 52713 @@ -4420,16 +5487,21 @@ func_mode_link ()
       
 52714  	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
       
 52715  	;;
       
 52716  
       
 52717        -avoid-version)
       
 52718  	avoid_version=yes
       
 52719  	continue
       
 52720  	;;
       
 52721  
       
 52722 +      -bindir)
       
 52723 +	prev=bindir
       
 52724 +	continue
       
 52725 +	;;
       
 52726 +
       
 52727        -dlopen)
       
 52728  	prev=dlfiles
       
 52729  	continue
       
 52730  	;;
       
 52731  
       
 52732        -dlpreopen)
       
 52733  	prev=dlprefiles
       
 52734  	continue
       
 52735 @@ -4470,78 +5542,85 @@ func_mode_link ()
       
 52736  	  func_append compile_command " $arg"
       
 52737  	  func_append finalize_command " $arg"
       
 52738  	  ;;
       
 52739  	esac
       
 52740  	continue
       
 52741  	;;
       
 52742  
       
 52743        -L*)
       
 52744 -	func_stripname '-L' '' "$arg"
       
 52745 -	dir=$func_stripname_result
       
 52746 -	if test -z "$dir"; then
       
 52747 +	func_stripname "-L" '' "$arg"
       
 52748 +	if test -z "$func_stripname_result"; then
       
 52749  	  if test "$#" -gt 0; then
       
 52750  	    func_fatal_error "require no space between \`-L' and \`$1'"
       
 52751  	  else
       
 52752  	    func_fatal_error "need path for \`-L' option"
       
 52753  	  fi
       
 52754  	fi
       
 52755 +	func_resolve_sysroot "$func_stripname_result"
       
 52756 +	dir=$func_resolve_sysroot_result
       
 52757  	# We need an absolute path.
       
 52758  	case $dir in
       
 52759  	[\\/]* | [A-Za-z]:[\\/]*) ;;
       
 52760  	*)
       
 52761  	  absdir=`cd "$dir" && pwd`
       
 52762  	  test -z "$absdir" && \
       
 52763  	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
       
 52764  	  dir="$absdir"
       
 52765  	  ;;
       
 52766  	esac
       
 52767  	case "$deplibs " in
       
 52768 -	*" -L$dir "*) ;;
       
 52769 +	*" -L$dir "* | *" $arg "*)
       
 52770 +	  # Will only happen for absolute or sysroot arguments
       
 52771 +	  ;;
       
 52772  	*)
       
 52773 -	  deplibs="$deplibs -L$dir"
       
 52774 -	  lib_search_path="$lib_search_path $dir"
       
 52775 +	  # Preserve sysroot, but never include relative directories
       
 52776 +	  case $dir in
       
 52777 +	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
       
 52778 +	    *) func_append deplibs " -L$dir" ;;
       
 52779 +	  esac
       
 52780 +	  func_append lib_search_path " $dir"
       
 52781  	  ;;
       
 52782  	esac
       
 52783  	case $host in
       
 52784  	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
       
 52785 -	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
       
 52786 +	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
       
 52787  	  case :$dllsearchpath: in
       
 52788  	  *":$dir:"*) ;;
       
 52789  	  ::) dllsearchpath=$dir;;
       
 52790 -	  *) dllsearchpath="$dllsearchpath:$dir";;
       
 52791 +	  *) func_append dllsearchpath ":$dir";;
       
 52792  	  esac
       
 52793  	  case :$dllsearchpath: in
       
 52794  	  *":$testbindir:"*) ;;
       
 52795  	  ::) dllsearchpath=$testbindir;;
       
 52796 -	  *) dllsearchpath="$dllsearchpath:$testbindir";;
       
 52797 +	  *) func_append dllsearchpath ":$testbindir";;
       
 52798  	  esac
       
 52799  	  ;;
       
 52800  	esac
       
 52801  	continue
       
 52802  	;;
       
 52803  
       
 52804        -l*)
       
 52805  	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
       
 52806  	  case $host in
       
 52807 -	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
       
 52808 +	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
       
 52809  	    # These systems don't actually have a C or math library (as such)
       
 52810  	    continue
       
 52811  	    ;;
       
 52812  	  *-*-os2*)
       
 52813  	    # These systems don't actually have a C library (as such)
       
 52814  	    test "X$arg" = "X-lc" && continue
       
 52815  	    ;;
       
 52816  	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
       
 52817  	    # Do not include libc due to us having libc/libc_r.
       
 52818  	    test "X$arg" = "X-lc" && continue
       
 52819  	    ;;
       
 52820  	  *-*-rhapsody* | *-*-darwin1.[012])
       
 52821  	    # Rhapsody C and math libraries are in the System framework
       
 52822 -	    deplibs="$deplibs System.ltframework"
       
 52823 +	    func_append deplibs " System.ltframework"
       
 52824  	    continue
       
 52825  	    ;;
       
 52826  	  *-*-sco3.2v5* | *-*-sco5v6*)
       
 52827  	    # Causes problems with __ctype
       
 52828  	    test "X$arg" = "X-lc" && continue
       
 52829  	    ;;
       
 52830  	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
       
 52831  	    # Compiler inserts libc in the correct place for threads to work
       
 52832 @@ -4551,43 +5630,44 @@ func_mode_link ()
       
 52833  	elif test "X$arg" = "X-lc_r"; then
       
 52834  	 case $host in
       
 52835  	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
       
 52836  	   # Do not include libc_r directly, use -pthread flag.
       
 52837  	   continue
       
 52838  	   ;;
       
 52839  	 esac
       
 52840  	fi
       
 52841 -	deplibs="$deplibs $arg"
       
 52842 +	func_append deplibs " $arg"
       
 52843  	continue
       
 52844  	;;
       
 52845  
       
 52846        -module)
       
 52847  	module=yes
       
 52848  	continue
       
 52849  	;;
       
 52850  
       
 52851        # Tru64 UNIX uses -model [arg] to determine the layout of C++
       
 52852        # classes, name mangling, and exception handling.
       
 52853        # Darwin uses the -arch flag to determine output architecture.
       
 52854 -      -model|-arch|-isysroot)
       
 52855 -	compiler_flags="$compiler_flags $arg"
       
 52856 +      -model|-arch|-isysroot|--sysroot)
       
 52857 +	func_append compiler_flags " $arg"
       
 52858  	func_append compile_command " $arg"
       
 52859  	func_append finalize_command " $arg"
       
 52860  	prev=xcompiler
       
 52861  	continue
       
 52862  	;;
       
 52863  
       
 52864 -      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
       
 52865 -	compiler_flags="$compiler_flags $arg"
       
 52866 +      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
       
 52867 +      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
       
 52868 +	func_append compiler_flags " $arg"
       
 52869  	func_append compile_command " $arg"
       
 52870  	func_append finalize_command " $arg"
       
 52871  	case "$new_inherited_linker_flags " in
       
 52872  	    *" $arg "*) ;;
       
 52873 -	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
       
 52874 +	    * ) func_append new_inherited_linker_flags " $arg" ;;
       
 52875  	esac
       
 52876  	continue
       
 52877  	;;
       
 52878  
       
 52879        -multi_module)
       
 52880  	single_module="${wl}-multi_module"
       
 52881  	continue
       
 52882  	;;
       
 52883 @@ -4644,23 +5724,27 @@ func_mode_link ()
       
 52884  	;;
       
 52885  
       
 52886        -R*)
       
 52887  	func_stripname '-R' '' "$arg"
       
 52888  	dir=$func_stripname_result
       
 52889  	# We need an absolute path.
       
 52890  	case $dir in
       
 52891  	[\\/]* | [A-Za-z]:[\\/]*) ;;
       
 52892 +	=*)
       
 52893 +	  func_stripname '=' '' "$dir"
       
 52894 +	  dir=$lt_sysroot$func_stripname_result
       
 52895 +	  ;;
       
 52896  	*)
       
 52897  	  func_fatal_error "only absolute run-paths are allowed"
       
 52898  	  ;;
       
 52899  	esac
       
 52900  	case "$xrpath " in
       
 52901  	*" $dir "*) ;;
       
 52902 -	*) xrpath="$xrpath $dir" ;;
       
 52903 +	*) func_append xrpath " $dir" ;;
       
 52904  	esac
       
 52905  	continue
       
 52906  	;;
       
 52907  
       
 52908        -shared)
       
 52909  	# The effects of -shared are defined in a previous loop.
       
 52910  	continue
       
 52911  	;;
       
 52912 @@ -4703,35 +5787,35 @@ func_mode_link ()
       
 52913        -Wc,*)
       
 52914  	func_stripname '-Wc,' '' "$arg"
       
 52915  	args=$func_stripname_result
       
 52916  	arg=
       
 52917  	save_ifs="$IFS"; IFS=','
       
 52918  	for flag in $args; do
       
 52919  	  IFS="$save_ifs"
       
 52920            func_quote_for_eval "$flag"
       
 52921 -	  arg="$arg $wl$func_quote_for_eval_result"
       
 52922 -	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
       
 52923 +	  func_append arg " $func_quote_for_eval_result"
       
 52924 +	  func_append compiler_flags " $func_quote_for_eval_result"
       
 52925  	done
       
 52926  	IFS="$save_ifs"
       
 52927  	func_stripname ' ' '' "$arg"
       
 52928  	arg=$func_stripname_result
       
 52929  	;;
       
 52930  
       
 52931        -Wl,*)
       
 52932  	func_stripname '-Wl,' '' "$arg"
       
 52933  	args=$func_stripname_result
       
 52934  	arg=
       
 52935  	save_ifs="$IFS"; IFS=','
       
 52936  	for flag in $args; do
       
 52937  	  IFS="$save_ifs"
       
 52938            func_quote_for_eval "$flag"
       
 52939 -	  arg="$arg $wl$func_quote_for_eval_result"
       
 52940 -	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
       
 52941 -	  linker_flags="$linker_flags $func_quote_for_eval_result"
       
 52942 +	  func_append arg " $wl$func_quote_for_eval_result"
       
 52943 +	  func_append compiler_flags " $wl$func_quote_for_eval_result"
       
 52944 +	  func_append linker_flags " $func_quote_for_eval_result"
       
 52945  	done
       
 52946  	IFS="$save_ifs"
       
 52947  	func_stripname ' ' '' "$arg"
       
 52948  	arg=$func_stripname_result
       
 52949  	;;
       
 52950  
       
 52951        -Xcompiler)
       
 52952  	prev=xcompiler
       
 52953 @@ -4749,45 +5833,49 @@ func_mode_link ()
       
 52954  	;;
       
 52955  
       
 52956        # -msg_* for osf cc
       
 52957        -msg_*)
       
 52958  	func_quote_for_eval "$arg"
       
 52959  	arg="$func_quote_for_eval_result"
       
 52960  	;;
       
 52961  
       
 52962 -      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
       
 52963 -      # -r[0-9][0-9]* specifies the processor on the SGI compiler
       
 52964 -      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
       
 52965 -      # +DA*, +DD* enable 64-bit mode on the HP compiler
       
 52966 -      # -q* pass through compiler args for the IBM compiler
       
 52967 -      # -m*, -t[45]*, -txscale* pass through architecture-specific
       
 52968 -      # compiler args for GCC
       
 52969 -      # -F/path gives path to uninstalled frameworks, gcc on darwin
       
 52970 -      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
       
 52971 -      # @file GCC response files
       
 52972 +      # Flags to be passed through unchanged, with rationale:
       
 52973 +      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
       
 52974 +      # -r[0-9][0-9]*        specify processor for the SGI compiler
       
 52975 +      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
       
 52976 +      # +DA*, +DD*           enable 64-bit mode for the HP compiler
       
 52977 +      # -q*                  compiler args for the IBM compiler
       
 52978 +      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
       
 52979 +      # -F/path              path to uninstalled frameworks, gcc on darwin
       
 52980 +      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
       
 52981 +      # @file                GCC response files
       
 52982 +      # -tp=*                Portland pgcc target processor selection
       
 52983 +      # --sysroot=*          for sysroot support
       
 52984 +      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
       
 52985        -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
       
 52986 -      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
       
 52987 +      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
       
 52988 +      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
       
 52989          func_quote_for_eval "$arg"
       
 52990  	arg="$func_quote_for_eval_result"
       
 52991          func_append compile_command " $arg"
       
 52992          func_append finalize_command " $arg"
       
 52993 -        compiler_flags="$compiler_flags $arg"
       
 52994 +        func_append compiler_flags " $arg"
       
 52995          continue
       
 52996          ;;
       
 52997  
       
 52998        # Some other compiler flag.
       
 52999        -* | +*)
       
 53000          func_quote_for_eval "$arg"
       
 53001  	arg="$func_quote_for_eval_result"
       
 53002  	;;
       
 53003  
       
 53004        *.$objext)
       
 53005  	# A standard object.
       
 53006 -	objs="$objs $arg"
       
 53007 +	func_append objs " $arg"
       
 53008  	;;
       
 53009  
       
 53010        *.lo)
       
 53011  	# A libtool-controlled object.
       
 53012  
       
 53013  	# Check to see that this really is a libtool object.
       
 53014  	if func_lalib_unsafe_p "$arg"; then
       
 53015  	  pic_object=
       
 53016 @@ -4808,29 +5896,29 @@ func_mode_link ()
       
 53017  	  xdir="$func_dirname_result"
       
 53018  
       
 53019  	  if test "$pic_object" != none; then
       
 53020  	    # Prepend the subdirectory the object is found in.
       
 53021  	    pic_object="$xdir$pic_object"
       
 53022  
       
 53023  	    if test "$prev" = dlfiles; then
       
 53024  	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
       
 53025 -		dlfiles="$dlfiles $pic_object"
       
 53026 +		func_append dlfiles " $pic_object"
       
 53027  		prev=
       
 53028  		continue
       
 53029  	      else
       
 53030  		# If libtool objects are unsupported, then we need to preload.
       
 53031  		prev=dlprefiles
       
 53032  	      fi
       
 53033  	    fi
       
 53034  
       
 53035  	    # CHECK ME:  I think I busted this.  -Ossama
       
 53036  	    if test "$prev" = dlprefiles; then
       
 53037  	      # Preload the old-style object.
       
 53038 -	      dlprefiles="$dlprefiles $pic_object"
       
 53039 +	      func_append dlprefiles " $pic_object"
       
 53040  	      prev=
       
 53041  	    fi
       
 53042  
       
 53043  	    # A PIC object.
       
 53044  	    func_append libobjs " $pic_object"
       
 53045  	    arg="$pic_object"
       
 53046  	  fi
       
 53047  
       
 53048 @@ -4865,34 +5953,35 @@ func_mode_link ()
       
 53049  	  else
       
 53050  	    func_fatal_error "\`$arg' is not a valid libtool object"
       
 53051  	  fi
       
 53052  	fi
       
 53053  	;;
       
 53054  
       
 53055        *.$libext)
       
 53056  	# An archive.
       
 53057 -	deplibs="$deplibs $arg"
       
 53058 -	old_deplibs="$old_deplibs $arg"
       
 53059 +	func_append deplibs " $arg"
       
 53060 +	func_append old_deplibs " $arg"
       
 53061  	continue
       
 53062  	;;
       
 53063  
       
 53064        *.la)
       
 53065  	# A libtool-controlled library.
       
 53066  
       
 53067 +	func_resolve_sysroot "$arg"
       
 53068  	if test "$prev" = dlfiles; then
       
 53069  	  # This library was specified with -dlopen.
       
 53070 -	  dlfiles="$dlfiles $arg"
       
 53071 +	  func_append dlfiles " $func_resolve_sysroot_result"
       
 53072  	  prev=
       
 53073  	elif test "$prev" = dlprefiles; then
       
 53074  	  # The library was specified with -dlpreopen.
       
 53075 -	  dlprefiles="$dlprefiles $arg"
       
 53076 +	  func_append dlprefiles " $func_resolve_sysroot_result"
       
 53077  	  prev=
       
 53078  	else
       
 53079 -	  deplibs="$deplibs $arg"
       
 53080 +	  func_append deplibs " $func_resolve_sysroot_result"
       
 53081  	fi
       
 53082  	continue
       
 53083  	;;
       
 53084  
       
 53085        # Some other compiler argument.
       
 53086        *)
       
 53087  	# Unknown arguments in both finalize_command and compile_command need
       
 53088  	# to be aesthetically quoted because they are evaled later.
       
 53089 @@ -4920,25 +6009,27 @@ func_mode_link ()
       
 53090      oldlibs=
       
 53091      # calculate the name of the file, without its directory
       
 53092      func_basename "$output"
       
 53093      outputname="$func_basename_result"
       
 53094      libobjs_save="$libobjs"
       
 53095  
       
 53096      if test -n "$shlibpath_var"; then
       
 53097        # get the directories listed in $shlibpath_var
       
 53098 -      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
       
 53099 +      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
       
 53100      else
       
 53101        shlib_search_path=
       
 53102      fi
       
 53103      eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
       
 53104      eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
       
 53105  
       
 53106      func_dirname "$output" "/" ""
       
 53107      output_objdir="$func_dirname_result$objdir"
       
 53108 +    func_to_tool_file "$output_objdir/"
       
 53109 +    tool_output_objdir=$func_to_tool_file_result
       
 53110      # Create the object directory.
       
 53111      func_mkdir_p "$output_objdir"
       
 53112  
       
 53113      # Determine the type of output
       
 53114      case $output in
       
 53115      "")
       
 53116        func_fatal_help "you must specify an output file"
       
 53117        ;;
       
 53118 @@ -4949,37 +6040,37 @@ func_mode_link ()
       
 53119      esac
       
 53120  
       
 53121      specialdeplibs=
       
 53122  
       
 53123      libs=
       
 53124      # Find all interdependent deplibs by searching for libraries
       
 53125      # that are linked more than once (e.g. -la -lb -la)
       
 53126      for deplib in $deplibs; do
       
 53127 -      if $opt_duplicate_deps ; then
       
 53128 +      if $opt_preserve_dup_deps ; then
       
 53129  	case "$libs " in
       
 53130 -	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
       
 53131 +	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
       
 53132  	esac
       
 53133        fi
       
 53134 -      libs="$libs $deplib"
       
 53135 +      func_append libs " $deplib"
       
 53136      done
       
 53137  
       
 53138      if test "$linkmode" = lib; then
       
 53139        libs="$predeps $libs $compiler_lib_search_path $postdeps"
       
 53140  
       
 53141        # Compute libraries that are listed more than once in $predeps
       
 53142        # $postdeps and mark them as special (i.e., whose duplicates are
       
 53143        # not to be eliminated).
       
 53144        pre_post_deps=
       
 53145        if $opt_duplicate_compiler_generated_deps; then
       
 53146  	for pre_post_dep in $predeps $postdeps; do
       
 53147  	  case "$pre_post_deps " in
       
 53148 -	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
       
 53149 +	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
       
 53150  	  esac
       
 53151 -	  pre_post_deps="$pre_post_deps $pre_post_dep"
       
 53152 +	  func_append pre_post_deps " $pre_post_dep"
       
 53153  	done
       
 53154        fi
       
 53155        pre_post_deps=
       
 53156      fi
       
 53157  
       
 53158      deplibs=
       
 53159      newdependency_libs=
       
 53160      newlib_search_path=
       
 53161 @@ -5036,52 +6127,55 @@ func_mode_link ()
       
 53162  	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
       
 53163  	esac
       
 53164        fi
       
 53165        if test "$linkmode,$pass" = "lib,dlpreopen"; then
       
 53166  	# Collect and forward deplibs of preopened libtool libs
       
 53167  	for lib in $dlprefiles; do
       
 53168  	  # Ignore non-libtool-libs
       
 53169  	  dependency_libs=
       
 53170 +	  func_resolve_sysroot "$lib"
       
 53171  	  case $lib in
       
 53172 -	  *.la)	func_source "$lib" ;;
       
 53173 +	  *.la)	func_source "$func_resolve_sysroot_result" ;;
       
 53174  	  esac
       
 53175  
       
 53176  	  # Collect preopened libtool deplibs, except any this library
       
 53177  	  # has declared as weak libs
       
 53178  	  for deplib in $dependency_libs; do
       
 53179 -            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
       
 53180 +	    func_basename "$deplib"
       
 53181 +            deplib_base=$func_basename_result
       
 53182  	    case " $weak_libs " in
       
 53183  	    *" $deplib_base "*) ;;
       
 53184 -	    *) deplibs="$deplibs $deplib" ;;
       
 53185 +	    *) func_append deplibs " $deplib" ;;
       
 53186  	    esac
       
 53187  	  done
       
 53188  	done
       
 53189  	libs="$dlprefiles"
       
 53190        fi
       
 53191        if test "$pass" = dlopen; then
       
 53192  	# Collect dlpreopened libraries
       
 53193  	save_deplibs="$deplibs"
       
 53194  	deplibs=
       
 53195        fi
       
 53196  
       
 53197        for deplib in $libs; do
       
 53198  	lib=
       
 53199  	found=no
       
 53200  	case $deplib in
       
 53201 -	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
       
 53202 +	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
       
 53203 +        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
       
 53204  	  if test "$linkmode,$pass" = "prog,link"; then
       
 53205  	    compile_deplibs="$deplib $compile_deplibs"
       
 53206  	    finalize_deplibs="$deplib $finalize_deplibs"
       
 53207  	  else
       
 53208 -	    compiler_flags="$compiler_flags $deplib"
       
 53209 +	    func_append compiler_flags " $deplib"
       
 53210  	    if test "$linkmode" = lib ; then
       
 53211  		case "$new_inherited_linker_flags " in
       
 53212  		    *" $deplib "*) ;;
       
 53213 -		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
       
 53214 +		    * ) func_append new_inherited_linker_flags " $deplib" ;;
       
 53215  		esac
       
 53216  	    fi
       
 53217  	  fi
       
 53218  	  continue
       
 53219  	  ;;
       
 53220  	-l*)
       
 53221  	  if test "$linkmode" != lib && test "$linkmode" != prog; then
       
 53222  	    func_warning "\`-l' is ignored for archives/objects"
       
 53223 @@ -5156,65 +6250,71 @@ func_mode_link ()
       
 53224  	  if test "$linkmode,$pass" = "prog,link"; then
       
 53225  	    compile_deplibs="$deplib $compile_deplibs"
       
 53226  	    finalize_deplibs="$deplib $finalize_deplibs"
       
 53227  	  else
       
 53228  	    deplibs="$deplib $deplibs"
       
 53229  	    if test "$linkmode" = lib ; then
       
 53230  		case "$new_inherited_linker_flags " in
       
 53231  		    *" $deplib "*) ;;
       
 53232 -		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
       
 53233 +		    * ) func_append new_inherited_linker_flags " $deplib" ;;
       
 53234  		esac
       
 53235  	    fi
       
 53236  	  fi
       
 53237  	  continue
       
 53238  	  ;;
       
 53239  	-L*)
       
 53240  	  case $linkmode in
       
 53241  	  lib)
       
 53242  	    deplibs="$deplib $deplibs"
       
 53243  	    test "$pass" = conv && continue
       
 53244  	    newdependency_libs="$deplib $newdependency_libs"
       
 53245  	    func_stripname '-L' '' "$deplib"
       
 53246 -	    newlib_search_path="$newlib_search_path $func_stripname_result"
       
 53247 +	    func_resolve_sysroot "$func_stripname_result"
       
 53248 +	    func_append newlib_search_path " $func_resolve_sysroot_result"
       
 53249  	    ;;
       
 53250  	  prog)
       
 53251  	    if test "$pass" = conv; then
       
 53252  	      deplibs="$deplib $deplibs"
       
 53253  	      continue
       
 53254  	    fi
       
 53255  	    if test "$pass" = scan; then
       
 53256  	      deplibs="$deplib $deplibs"
       
 53257  	    else
       
 53258  	      compile_deplibs="$deplib $compile_deplibs"
       
 53259  	      finalize_deplibs="$deplib $finalize_deplibs"
       
 53260  	    fi
       
 53261  	    func_stripname '-L' '' "$deplib"
       
 53262 -	    newlib_search_path="$newlib_search_path $func_stripname_result"
       
 53263 +	    func_resolve_sysroot "$func_stripname_result"
       
 53264 +	    func_append newlib_search_path " $func_resolve_sysroot_result"
       
 53265  	    ;;
       
 53266  	  *)
       
 53267  	    func_warning "\`-L' is ignored for archives/objects"
       
 53268  	    ;;
       
 53269  	  esac # linkmode
       
 53270  	  continue
       
 53271  	  ;; # -L
       
 53272  	-R*)
       
 53273  	  if test "$pass" = link; then
       
 53274  	    func_stripname '-R' '' "$deplib"
       
 53275 -	    dir=$func_stripname_result
       
 53276 +	    func_resolve_sysroot "$func_stripname_result"
       
 53277 +	    dir=$func_resolve_sysroot_result
       
 53278  	    # Make sure the xrpath contains only unique directories.
       
 53279  	    case "$xrpath " in
       
 53280  	    *" $dir "*) ;;
       
 53281 -	    *) xrpath="$xrpath $dir" ;;
       
 53282 +	    *) func_append xrpath " $dir" ;;
       
 53283  	    esac
       
 53284  	  fi
       
 53285  	  deplibs="$deplib $deplibs"
       
 53286  	  continue
       
 53287  	  ;;
       
 53288 -	*.la) lib="$deplib" ;;
       
 53289 +	*.la)
       
 53290 +	  func_resolve_sysroot "$deplib"
       
 53291 +	  lib=$func_resolve_sysroot_result
       
 53292 +	  ;;
       
 53293  	*.$libext)
       
 53294  	  if test "$pass" = conv; then
       
 53295  	    deplibs="$deplib $deplibs"
       
 53296  	    continue
       
 53297  	  fi
       
 53298  	  case $linkmode in
       
 53299  	  lib)
       
 53300  	    # Linking convenience modules into shared libraries is allowed,
       
 53301 @@ -5222,35 +6322,35 @@ func_mode_link ()
       
 53302  	    case " $dlpreconveniencelibs " in
       
 53303  	    *" $deplib "*) ;;
       
 53304  	    *)
       
 53305  	      valid_a_lib=no
       
 53306  	      case $deplibs_check_method in
       
 53307  		match_pattern*)
       
 53308  		  set dummy $deplibs_check_method; shift
       
 53309  		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
       
 53310 -		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
       
 53311 +		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
       
 53312  		    | $EGREP "$match_pattern_regex" > /dev/null; then
       
 53313  		    valid_a_lib=yes
       
 53314  		  fi
       
 53315  		;;
       
 53316  		pass_all)
       
 53317  		  valid_a_lib=yes
       
 53318  		;;
       
 53319  	      esac
       
 53320  	      if test "$valid_a_lib" != yes; then
       
 53321 -		$ECHO
       
 53322 +		echo
       
 53323  		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
       
 53324 -		$ECHO "*** I have the capability to make that library automatically link in when"
       
 53325 -		$ECHO "*** you link to this library.  But I can only do this if you have a"
       
 53326 -		$ECHO "*** shared version of the library, which you do not appear to have"
       
 53327 -		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
       
 53328 -		$ECHO "*** that it is just a static archive that I should not use here."
       
 53329 +		echo "*** I have the capability to make that library automatically link in when"
       
 53330 +		echo "*** you link to this library.  But I can only do this if you have a"
       
 53331 +		echo "*** shared version of the library, which you do not appear to have"
       
 53332 +		echo "*** because the file extensions .$libext of this argument makes me believe"
       
 53333 +		echo "*** that it is just a static archive that I should not use here."
       
 53334  	      else
       
 53335 -		$ECHO
       
 53336 +		echo
       
 53337  		$ECHO "*** Warning: Linking the shared library $output against the"
       
 53338  		$ECHO "*** static library $deplib is not portable!"
       
 53339  		deplibs="$deplib $deplibs"
       
 53340  	      fi
       
 53341  	      ;;
       
 53342  	    esac
       
 53343  	    continue
       
 53344  	    ;;
       
 53345 @@ -5267,21 +6367,21 @@ func_mode_link ()
       
 53346  	  ;; # *.$libext
       
 53347  	*.lo | *.$objext)
       
 53348  	  if test "$pass" = conv; then
       
 53349  	    deplibs="$deplib $deplibs"
       
 53350  	  elif test "$linkmode" = prog; then
       
 53351  	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
       
 53352  	      # If there is no dlopen support or we're linking statically,
       
 53353  	      # we need to preload.
       
 53354 -	      newdlprefiles="$newdlprefiles $deplib"
       
 53355 +	      func_append newdlprefiles " $deplib"
       
 53356  	      compile_deplibs="$deplib $compile_deplibs"
       
 53357  	      finalize_deplibs="$deplib $finalize_deplibs"
       
 53358  	    else
       
 53359 -	      newdlfiles="$newdlfiles $deplib"
       
 53360 +	      func_append newdlfiles " $deplib"
       
 53361  	    fi
       
 53362  	  fi
       
 53363  	  continue
       
 53364  	  ;;
       
 53365  	%DEPLIBS%)
       
 53366  	  alldeplibs=yes
       
 53367  	  continue
       
 53368  	  ;;
       
 53369 @@ -5313,83 +6413,89 @@ func_mode_link ()
       
 53370  	avoidtemprpath=
       
 53371  
       
 53372  
       
 53373  	# Read the .la file
       
 53374  	func_source "$lib"
       
 53375  
       
 53376  	# Convert "-framework foo" to "foo.ltframework"
       
 53377  	if test -n "$inherited_linker_flags"; then
       
 53378 -	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
       
 53379 +	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
       
 53380  	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
       
 53381  	    case " $new_inherited_linker_flags " in
       
 53382  	      *" $tmp_inherited_linker_flag "*) ;;
       
 53383 -	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
       
 53384 +	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
       
 53385  	    esac
       
 53386  	  done
       
 53387  	fi
       
 53388 -	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 53389 +	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 53390  	if test "$linkmode,$pass" = "lib,link" ||
       
 53391  	   test "$linkmode,$pass" = "prog,scan" ||
       
 53392  	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
       
 53393 -	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
       
 53394 -	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
       
 53395 +	  test -n "$dlopen" && func_append dlfiles " $dlopen"
       
 53396 +	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
       
 53397  	fi
       
 53398  
       
 53399  	if test "$pass" = conv; then
       
 53400  	  # Only check for convenience libraries
       
 53401  	  deplibs="$lib $deplibs"
       
 53402  	  if test -z "$libdir"; then
       
 53403  	    if test -z "$old_library"; then
       
 53404  	      func_fatal_error "cannot find name of link library for \`$lib'"
       
 53405  	    fi
       
 53406  	    # It is a libtool convenience library, so add in its objects.
       
 53407 -	    convenience="$convenience $ladir/$objdir/$old_library"
       
 53408 -	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
       
 53409 +	    func_append convenience " $ladir/$objdir/$old_library"
       
 53410 +	    func_append old_convenience " $ladir/$objdir/$old_library"
       
 53411  	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
       
 53412  	    func_fatal_error "\`$lib' is not a convenience library"
       
 53413  	  fi
       
 53414  	  tmp_libs=
       
 53415  	  for deplib in $dependency_libs; do
       
 53416  	    deplibs="$deplib $deplibs"
       
 53417 -	    if $opt_duplicate_deps ; then
       
 53418 +	    if $opt_preserve_dup_deps ; then
       
 53419  	      case "$tmp_libs " in
       
 53420 -	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
       
 53421 +	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
       
 53422  	      esac
       
 53423  	    fi
       
 53424 -	    tmp_libs="$tmp_libs $deplib"
       
 53425 +	    func_append tmp_libs " $deplib"
       
 53426  	  done
       
 53427  	  continue
       
 53428  	fi # $pass = conv
       
 53429  
       
 53430  
       
 53431  	# Get the name of the library we link against.
       
 53432  	linklib=
       
 53433 -	for l in $old_library $library_names; do
       
 53434 -	  linklib="$l"
       
 53435 -	done
       
 53436 +	if test -n "$old_library" &&
       
 53437 +	   { test "$prefer_static_libs" = yes ||
       
 53438 +	     test "$prefer_static_libs,$installed" = "built,no"; }; then
       
 53439 +	  linklib=$old_library
       
 53440 +	else
       
 53441 +	  for l in $old_library $library_names; do
       
 53442 +	    linklib="$l"
       
 53443 +	  done
       
 53444 +	fi
       
 53445  	if test -z "$linklib"; then
       
 53446  	  func_fatal_error "cannot find name of link library for \`$lib'"
       
 53447  	fi
       
 53448  
       
 53449  	# This library was specified with -dlopen.
       
 53450  	if test "$pass" = dlopen; then
       
 53451  	  if test -z "$libdir"; then
       
 53452  	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
       
 53453  	  fi
       
 53454  	  if test -z "$dlname" ||
       
 53455  	     test "$dlopen_support" != yes ||
       
 53456  	     test "$build_libtool_libs" = no; then
       
 53457  	    # If there is no dlname, no dlopen support or we're linking
       
 53458  	    # statically, we need to preload.  We also need to preload any
       
 53459  	    # dependent libraries so libltdl's deplib preloader doesn't
       
 53460  	    # bomb out in the load deplibs phase.
       
 53461 -	    dlprefiles="$dlprefiles $lib $dependency_libs"
       
 53462 +	    func_append dlprefiles " $lib $dependency_libs"
       
 53463  	  else
       
 53464 -	    newdlfiles="$newdlfiles $lib"
       
 53465 +	    func_append newdlfiles " $lib"
       
 53466  	  fi
       
 53467  	  continue
       
 53468  	fi # $pass = dlopen
       
 53469  
       
 53470  	# We need an absolute path.
       
 53471  	case $ladir in
       
 53472  	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
       
 53473  	*)
       
 53474 @@ -5401,61 +6507,87 @@ func_mode_link ()
       
 53475  	  fi
       
 53476  	  ;;
       
 53477  	esac
       
 53478  	func_basename "$lib"
       
 53479  	laname="$func_basename_result"
       
 53480  
       
 53481  	# Find the relevant object directory and library name.
       
 53482  	if test "X$installed" = Xyes; then
       
 53483 -	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
       
 53484 +	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
       
 53485  	    func_warning "library \`$lib' was moved."
       
 53486  	    dir="$ladir"
       
 53487  	    absdir="$abs_ladir"
       
 53488  	    libdir="$abs_ladir"
       
 53489  	  else
       
 53490 -	    dir="$libdir"
       
 53491 -	    absdir="$libdir"
       
 53492 +	    dir="$lt_sysroot$libdir"
       
 53493 +	    absdir="$lt_sysroot$libdir"
       
 53494  	  fi
       
 53495  	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
       
 53496  	else
       
 53497  	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
       
 53498  	    dir="$ladir"
       
 53499  	    absdir="$abs_ladir"
       
 53500  	    # Remove this search path later
       
 53501 -	    notinst_path="$notinst_path $abs_ladir"
       
 53502 +	    func_append notinst_path " $abs_ladir"
       
 53503  	  else
       
 53504  	    dir="$ladir/$objdir"
       
 53505  	    absdir="$abs_ladir/$objdir"
       
 53506  	    # Remove this search path later
       
 53507 -	    notinst_path="$notinst_path $abs_ladir"
       
 53508 +	    func_append notinst_path " $abs_ladir"
       
 53509  	  fi
       
 53510  	fi # $installed = yes
       
 53511  	func_stripname 'lib' '.la' "$laname"
       
 53512  	name=$func_stripname_result
       
 53513  
       
 53514  	# This library was specified with -dlpreopen.
       
 53515  	if test "$pass" = dlpreopen; then
       
 53516  	  if test -z "$libdir" && test "$linkmode" = prog; then
       
 53517  	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
       
 53518  	  fi
       
 53519 -	  # Prefer using a static library (so that no silly _DYNAMIC symbols
       
 53520 -	  # are required to link).
       
 53521 -	  if test -n "$old_library"; then
       
 53522 -	    newdlprefiles="$newdlprefiles $dir/$old_library"
       
 53523 -	    # Keep a list of preopened convenience libraries to check
       
 53524 -	    # that they are being used correctly in the link pass.
       
 53525 -	    test -z "$libdir" && \
       
 53526 -		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
       
 53527 -	  # Otherwise, use the dlname, so that lt_dlopen finds it.
       
 53528 -	  elif test -n "$dlname"; then
       
 53529 -	    newdlprefiles="$newdlprefiles $dir/$dlname"
       
 53530 -	  else
       
 53531 -	    newdlprefiles="$newdlprefiles $dir/$linklib"
       
 53532 -	  fi
       
 53533 +	  case "$host" in
       
 53534 +	    # special handling for platforms with PE-DLLs.
       
 53535 +	    *cygwin* | *mingw* | *cegcc* )
       
 53536 +	      # Linker will automatically link against shared library if both
       
 53537 +	      # static and shared are present.  Therefore, ensure we extract
       
 53538 +	      # symbols from the import library if a shared library is present
       
 53539 +	      # (otherwise, the dlopen module name will be incorrect).  We do
       
 53540 +	      # this by putting the import library name into $newdlprefiles.
       
 53541 +	      # We recover the dlopen module name by 'saving' the la file
       
 53542 +	      # name in a special purpose variable, and (later) extracting the
       
 53543 +	      # dlname from the la file.
       
 53544 +	      if test -n "$dlname"; then
       
 53545 +	        func_tr_sh "$dir/$linklib"
       
 53546 +	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
       
 53547 +	        func_append newdlprefiles " $dir/$linklib"
       
 53548 +	      else
       
 53549 +	        func_append newdlprefiles " $dir/$old_library"
       
 53550 +	        # Keep a list of preopened convenience libraries to check
       
 53551 +	        # that they are being used correctly in the link pass.
       
 53552 +	        test -z "$libdir" && \
       
 53553 +	          func_append dlpreconveniencelibs " $dir/$old_library"
       
 53554 +	      fi
       
 53555 +	    ;;
       
 53556 +	    * )
       
 53557 +	      # Prefer using a static library (so that no silly _DYNAMIC symbols
       
 53558 +	      # are required to link).
       
 53559 +	      if test -n "$old_library"; then
       
 53560 +	        func_append newdlprefiles " $dir/$old_library"
       
 53561 +	        # Keep a list of preopened convenience libraries to check
       
 53562 +	        # that they are being used correctly in the link pass.
       
 53563 +	        test -z "$libdir" && \
       
 53564 +	          func_append dlpreconveniencelibs " $dir/$old_library"
       
 53565 +	      # Otherwise, use the dlname, so that lt_dlopen finds it.
       
 53566 +	      elif test -n "$dlname"; then
       
 53567 +	        func_append newdlprefiles " $dir/$dlname"
       
 53568 +	      else
       
 53569 +	        func_append newdlprefiles " $dir/$linklib"
       
 53570 +	      fi
       
 53571 +	    ;;
       
 53572 +	  esac
       
 53573  	fi # $pass = dlpreopen
       
 53574  
       
 53575  	if test -z "$libdir"; then
       
 53576  	  # Link the convenience library
       
 53577  	  if test "$linkmode" = lib; then
       
 53578  	    deplibs="$dir/$old_library $deplibs"
       
 53579  	  elif test "$linkmode,$pass" = "prog,link"; then
       
 53580  	    compile_deplibs="$dir/$old_library $compile_deplibs"
       
 53581 @@ -5463,82 +6595,83 @@ func_mode_link ()
       
 53582  	  else
       
 53583  	    deplibs="$lib $deplibs" # used for prog,scan pass
       
 53584  	  fi
       
 53585  	  continue
       
 53586  	fi
       
 53587  
       
 53588  
       
 53589  	if test "$linkmode" = prog && test "$pass" != link; then
       
 53590 -	  newlib_search_path="$newlib_search_path $ladir"
       
 53591 +	  func_append newlib_search_path " $ladir"
       
 53592  	  deplibs="$lib $deplibs"
       
 53593  
       
 53594  	  linkalldeplibs=no
       
 53595  	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
       
 53596  	     test "$build_libtool_libs" = no; then
       
 53597  	    linkalldeplibs=yes
       
 53598  	  fi
       
 53599  
       
 53600  	  tmp_libs=
       
 53601  	  for deplib in $dependency_libs; do
       
 53602  	    case $deplib in
       
 53603  	    -L*) func_stripname '-L' '' "$deplib"
       
 53604 -	         newlib_search_path="$newlib_search_path $func_stripname_result"
       
 53605 +	         func_resolve_sysroot "$func_stripname_result"
       
 53606 +	         func_append newlib_search_path " $func_resolve_sysroot_result"
       
 53607  		 ;;
       
 53608  	    esac
       
 53609  	    # Need to link against all dependency_libs?
       
 53610  	    if test "$linkalldeplibs" = yes; then
       
 53611  	      deplibs="$deplib $deplibs"
       
 53612  	    else
       
 53613  	      # Need to hardcode shared library paths
       
 53614  	      # or/and link against static libraries
       
 53615  	      newdependency_libs="$deplib $newdependency_libs"
       
 53616  	    fi
       
 53617 -	    if $opt_duplicate_deps ; then
       
 53618 +	    if $opt_preserve_dup_deps ; then
       
 53619  	      case "$tmp_libs " in
       
 53620 -	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
       
 53621 +	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
       
 53622  	      esac
       
 53623  	    fi
       
 53624 -	    tmp_libs="$tmp_libs $deplib"
       
 53625 +	    func_append tmp_libs " $deplib"
       
 53626  	  done # for deplib
       
 53627  	  continue
       
 53628  	fi # $linkmode = prog...
       
 53629  
       
 53630  	if test "$linkmode,$pass" = "prog,link"; then
       
 53631  	  if test -n "$library_names" &&
       
 53632  	     { { test "$prefer_static_libs" = no ||
       
 53633  	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
       
 53634  	       test -z "$old_library"; }; then
       
 53635  	    # We need to hardcode the library path
       
 53636  	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
       
 53637  	      # Make sure the rpath contains only unique directories.
       
 53638  	      case "$temp_rpath:" in
       
 53639  	      *"$absdir:"*) ;;
       
 53640 -	      *) temp_rpath="$temp_rpath$absdir:" ;;
       
 53641 +	      *) func_append temp_rpath "$absdir:" ;;
       
 53642  	      esac
       
 53643  	    fi
       
 53644  
       
 53645  	    # Hardcode the library path.
       
 53646  	    # Skip directories that are in the system default run-time
       
 53647  	    # search path.
       
 53648  	    case " $sys_lib_dlsearch_path " in
       
 53649  	    *" $absdir "*) ;;
       
 53650  	    *)
       
 53651  	      case "$compile_rpath " in
       
 53652  	      *" $absdir "*) ;;
       
 53653 -	      *) compile_rpath="$compile_rpath $absdir"
       
 53654 +	      *) func_append compile_rpath " $absdir" ;;
       
 53655  	      esac
       
 53656  	      ;;
       
 53657  	    esac
       
 53658  	    case " $sys_lib_dlsearch_path " in
       
 53659  	    *" $libdir "*) ;;
       
 53660  	    *)
       
 53661  	      case "$finalize_rpath " in
       
 53662  	      *" $libdir "*) ;;
       
 53663 -	      *) finalize_rpath="$finalize_rpath $libdir"
       
 53664 +	      *) func_append finalize_rpath " $libdir" ;;
       
 53665  	      esac
       
 53666  	      ;;
       
 53667  	    esac
       
 53668  	  fi # $linkmode,$pass = prog,link...
       
 53669  
       
 53670  	  if test "$alldeplibs" = yes &&
       
 53671  	     { test "$deplibs_check_method" = pass_all ||
       
 53672  	       { test "$build_libtool_libs" = yes &&
       
 53673 @@ -5553,39 +6686,39 @@ func_mode_link ()
       
 53674  	if test "$use_static_libs" = built && test "$installed" = yes; then
       
 53675  	  use_static_libs=no
       
 53676  	fi
       
 53677  	if test -n "$library_names" &&
       
 53678  	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
       
 53679  	  case $host in
       
 53680  	  *cygwin* | *mingw* | *cegcc*)
       
 53681  	      # No point in relinking DLLs because paths are not encoded
       
 53682 -	      notinst_deplibs="$notinst_deplibs $lib"
       
 53683 +	      func_append notinst_deplibs " $lib"
       
 53684  	      need_relink=no
       
 53685  	    ;;
       
 53686  	  *)
       
 53687  	    if test "$installed" = no; then
       
 53688 -	      notinst_deplibs="$notinst_deplibs $lib"
       
 53689 +	      func_append notinst_deplibs " $lib"
       
 53690  	      need_relink=yes
       
 53691  	    fi
       
 53692  	    ;;
       
 53693  	  esac
       
 53694  	  # This is a shared library
       
 53695  
       
 53696  	  # Warn about portability, can't link against -module's on some
       
 53697  	  # systems (darwin).  Don't bleat about dlopened modules though!
       
 53698  	  dlopenmodule=""
       
 53699  	  for dlpremoduletest in $dlprefiles; do
       
 53700  	    if test "X$dlpremoduletest" = "X$lib"; then
       
 53701  	      dlopenmodule="$dlpremoduletest"
       
 53702  	      break
       
 53703  	    fi
       
 53704  	  done
       
 53705  	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
       
 53706 -	    $ECHO
       
 53707 +	    echo
       
 53708  	    if test "$linkmode" = prog; then
       
 53709  	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
       
 53710  	    else
       
 53711  	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
       
 53712  	    fi
       
 53713  	    $ECHO "*** $linklib is not portable!"
       
 53714  	  fi
       
 53715  	  if test "$linkmode" = lib &&
       
 53716 @@ -5593,26 +6726,26 @@ func_mode_link ()
       
 53717  	    # Hardcode the library path.
       
 53718  	    # Skip directories that are in the system default run-time
       
 53719  	    # search path.
       
 53720  	    case " $sys_lib_dlsearch_path " in
       
 53721  	    *" $absdir "*) ;;
       
 53722  	    *)
       
 53723  	      case "$compile_rpath " in
       
 53724  	      *" $absdir "*) ;;
       
 53725 -	      *) compile_rpath="$compile_rpath $absdir"
       
 53726 +	      *) func_append compile_rpath " $absdir" ;;
       
 53727  	      esac
       
 53728  	      ;;
       
 53729  	    esac
       
 53730  	    case " $sys_lib_dlsearch_path " in
       
 53731  	    *" $libdir "*) ;;
       
 53732  	    *)
       
 53733  	      case "$finalize_rpath " in
       
 53734  	      *" $libdir "*) ;;
       
 53735 -	      *) finalize_rpath="$finalize_rpath $libdir"
       
 53736 +	      *) func_append finalize_rpath " $libdir" ;;
       
 53737  	      esac
       
 53738  	      ;;
       
 53739  	    esac
       
 53740  	  fi
       
 53741  
       
 53742  	  if test -n "$old_archive_from_expsyms_cmds"; then
       
 53743  	    # figure out the soname
       
 53744  	    set dummy $library_names
       
 53745 @@ -5656,17 +6789,17 @@ func_mode_link ()
       
 53746  	      func_verbose "generating import library for \`$soname'"
       
 53747  	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
       
 53748  	    fi
       
 53749  	    # make sure the library variables are pointing to the new library
       
 53750  	    dir=$output_objdir
       
 53751  	    linklib=$newlib
       
 53752  	  fi # test -n "$old_archive_from_expsyms_cmds"
       
 53753  
       
 53754 -	  if test "$linkmode" = prog || test "$mode" != relink; then
       
 53755 +	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
       
 53756  	    add_shlibpath=
       
 53757  	    add_dir=
       
 53758  	    add=
       
 53759  	    lib_linked=yes
       
 53760  	    case $hardcode_action in
       
 53761  	    immediate | unsupported)
       
 53762  	      if test "$hardcode_direct" = no; then
       
 53763  		add="$dir/$linklib"
       
 53764 @@ -5678,19 +6811,19 @@ func_mode_link ()
       
 53765  		  *-*-darwin* )
       
 53766  		    # if the lib is a (non-dlopened) module then we can not
       
 53767  		    # link against it, someone is ignoring the earlier warnings
       
 53768  		    if /usr/bin/file -L $add 2> /dev/null |
       
 53769  			 $GREP ": [^:]* bundle" >/dev/null ; then
       
 53770  		      if test "X$dlopenmodule" != "X$lib"; then
       
 53771  			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
       
 53772  			if test -z "$old_library" ; then
       
 53773 -			  $ECHO
       
 53774 -			  $ECHO "*** And there doesn't seem to be a static archive available"
       
 53775 -			  $ECHO "*** The link will probably fail, sorry"
       
 53776 +			  echo
       
 53777 +			  echo "*** And there doesn't seem to be a static archive available"
       
 53778 +			  echo "*** The link will probably fail, sorry"
       
 53779  			else
       
 53780  			  add="$dir/$old_library"
       
 53781  			fi
       
 53782  		      elif test -n "$old_library"; then
       
 53783  			add="$dir/$old_library"
       
 53784  		      fi
       
 53785  		    fi
       
 53786  		esac
       
 53787 @@ -5707,22 +6840,22 @@ func_mode_link ()
       
 53788  		lib_linked=no
       
 53789  	      fi
       
 53790  	      ;;
       
 53791  	    relink)
       
 53792  	      if test "$hardcode_direct" = yes &&
       
 53793  	         test "$hardcode_direct_absolute" = no; then
       
 53794  		add="$dir/$linklib"
       
 53795  	      elif test "$hardcode_minus_L" = yes; then
       
 53796 -		add_dir="-L$dir"
       
 53797 +		add_dir="-L$absdir"
       
 53798  		# Try looking first in the location we're being installed to.
       
 53799  		if test -n "$inst_prefix_dir"; then
       
 53800  		  case $libdir in
       
 53801  		    [\\/]*)
       
 53802 -		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
       
 53803 +		      func_append add_dir " -L$inst_prefix_dir$libdir"
       
 53804  		      ;;
       
 53805  		  esac
       
 53806  		fi
       
 53807  		add="-l$name"
       
 53808  	      elif test "$hardcode_shlibpath_var" = yes; then
       
 53809  		add_shlibpath="$dir"
       
 53810  		add="-l$name"
       
 53811  	      else
       
 53812 @@ -5734,68 +6867,68 @@ func_mode_link ()
       
 53813  
       
 53814  	    if test "$lib_linked" != yes; then
       
 53815  	      func_fatal_configuration "unsupported hardcode properties"
       
 53816  	    fi
       
 53817  
       
 53818  	    if test -n "$add_shlibpath"; then
       
 53819  	      case :$compile_shlibpath: in
       
 53820  	      *":$add_shlibpath:"*) ;;
       
 53821 -	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
       
 53822 +	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
       
 53823  	      esac
       
 53824  	    fi
       
 53825  	    if test "$linkmode" = prog; then
       
 53826  	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
       
 53827  	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
       
 53828  	    else
       
 53829  	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
       
 53830  	      test -n "$add" && deplibs="$add $deplibs"
       
 53831  	      if test "$hardcode_direct" != yes &&
       
 53832  		 test "$hardcode_minus_L" != yes &&
       
 53833  		 test "$hardcode_shlibpath_var" = yes; then
       
 53834  		case :$finalize_shlibpath: in
       
 53835  		*":$libdir:"*) ;;
       
 53836 -		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
       
 53837 +		*) func_append finalize_shlibpath "$libdir:" ;;
       
 53838  		esac
       
 53839  	      fi
       
 53840  	    fi
       
 53841  	  fi
       
 53842  
       
 53843 -	  if test "$linkmode" = prog || test "$mode" = relink; then
       
 53844 +	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
       
 53845  	    add_shlibpath=
       
 53846  	    add_dir=
       
 53847  	    add=
       
 53848  	    # Finalize command for both is simple: just hardcode it.
       
 53849  	    if test "$hardcode_direct" = yes &&
       
 53850  	       test "$hardcode_direct_absolute" = no; then
       
 53851  	      add="$libdir/$linklib"
       
 53852  	    elif test "$hardcode_minus_L" = yes; then
       
 53853  	      add_dir="-L$libdir"
       
 53854  	      add="-l$name"
       
 53855  	    elif test "$hardcode_shlibpath_var" = yes; then
       
 53856  	      case :$finalize_shlibpath: in
       
 53857  	      *":$libdir:"*) ;;
       
 53858 -	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
       
 53859 +	      *) func_append finalize_shlibpath "$libdir:" ;;
       
 53860  	      esac
       
 53861  	      add="-l$name"
       
 53862  	    elif test "$hardcode_automatic" = yes; then
       
 53863  	      if test -n "$inst_prefix_dir" &&
       
 53864  		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
       
 53865  		add="$inst_prefix_dir$libdir/$linklib"
       
 53866  	      else
       
 53867  		add="$libdir/$linklib"
       
 53868  	      fi
       
 53869  	    else
       
 53870  	      # We cannot seem to hardcode it, guess we'll fake it.
       
 53871  	      add_dir="-L$libdir"
       
 53872  	      # Try looking first in the location we're being installed to.
       
 53873  	      if test -n "$inst_prefix_dir"; then
       
 53874  		case $libdir in
       
 53875  		  [\\/]*)
       
 53876 -		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
       
 53877 +		    func_append add_dir " -L$inst_prefix_dir$libdir"
       
 53878  		    ;;
       
 53879  		esac
       
 53880  	      fi
       
 53881  	      add="-l$name"
       
 53882  	    fi
       
 53883  
       
 53884  	    if test "$linkmode" = prog; then
       
 53885  	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
       
 53886 @@ -5820,31 +6953,31 @@ func_mode_link ()
       
 53887  	elif test "$build_libtool_libs" = yes; then
       
 53888  	  # Not a shared library
       
 53889  	  if test "$deplibs_check_method" != pass_all; then
       
 53890  	    # We're trying link a shared library against a static one
       
 53891  	    # but the system doesn't support it.
       
 53892  
       
 53893  	    # Just print a warning and add the library to dependency_libs so
       
 53894  	    # that the program can be linked against the static library.
       
 53895 -	    $ECHO
       
 53896 +	    echo
       
 53897  	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
       
 53898 -	    $ECHO "*** I have the capability to make that library automatically link in when"
       
 53899 -	    $ECHO "*** you link to this library.  But I can only do this if you have a"
       
 53900 -	    $ECHO "*** shared version of the library, which you do not appear to have."
       
 53901 +	    echo "*** I have the capability to make that library automatically link in when"
       
 53902 +	    echo "*** you link to this library.  But I can only do this if you have a"
       
 53903 +	    echo "*** shared version of the library, which you do not appear to have."
       
 53904  	    if test "$module" = yes; then
       
 53905 -	      $ECHO "*** But as you try to build a module library, libtool will still create "
       
 53906 -	      $ECHO "*** a static module, that should work as long as the dlopening application"
       
 53907 -	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
       
 53908 +	      echo "*** But as you try to build a module library, libtool will still create "
       
 53909 +	      echo "*** a static module, that should work as long as the dlopening application"
       
 53910 +	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
       
 53911  	      if test -z "$global_symbol_pipe"; then
       
 53912 -		$ECHO
       
 53913 -		$ECHO "*** However, this would only work if libtool was able to extract symbol"
       
 53914 -		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
       
 53915 -		$ECHO "*** not find such a program.  So, this module is probably useless."
       
 53916 -		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
       
 53917 +		echo
       
 53918 +		echo "*** However, this would only work if libtool was able to extract symbol"
       
 53919 +		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
       
 53920 +		echo "*** not find such a program.  So, this module is probably useless."
       
 53921 +		echo "*** \`nm' from GNU binutils and a full rebuild may help."
       
 53922  	      fi
       
 53923  	      if test "$build_old_libs" = no; then
       
 53924  		build_libtool_libs=module
       
 53925  		build_old_libs=yes
       
 53926  	      else
       
 53927  		build_libtool_libs=no
       
 53928  	      fi
       
 53929  	    fi
       
 53930 @@ -5862,47 +6995,56 @@ func_mode_link ()
       
 53931  	    # Extract -R from dependency_libs
       
 53932  	    temp_deplibs=
       
 53933  	    for libdir in $dependency_libs; do
       
 53934  	      case $libdir in
       
 53935  	      -R*) func_stripname '-R' '' "$libdir"
       
 53936  	           temp_xrpath=$func_stripname_result
       
 53937  		   case " $xrpath " in
       
 53938  		   *" $temp_xrpath "*) ;;
       
 53939 -		   *) xrpath="$xrpath $temp_xrpath";;
       
 53940 +		   *) func_append xrpath " $temp_xrpath";;
       
 53941  		   esac;;
       
 53942 -	      *) temp_deplibs="$temp_deplibs $libdir";;
       
 53943 +	      *) func_append temp_deplibs " $libdir";;
       
 53944  	      esac
       
 53945  	    done
       
 53946  	    dependency_libs="$temp_deplibs"
       
 53947  	  fi
       
 53948  
       
 53949 -	  newlib_search_path="$newlib_search_path $absdir"
       
 53950 +	  func_append newlib_search_path " $absdir"
       
 53951  	  # Link against this library
       
 53952  	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
       
 53953  	  # ... and its dependency_libs
       
 53954  	  tmp_libs=
       
 53955  	  for deplib in $dependency_libs; do
       
 53956  	    newdependency_libs="$deplib $newdependency_libs"
       
 53957 -	    if $opt_duplicate_deps ; then
       
 53958 +	    case $deplib in
       
 53959 +              -L*) func_stripname '-L' '' "$deplib"
       
 53960 +                   func_resolve_sysroot "$func_stripname_result";;
       
 53961 +              *) func_resolve_sysroot "$deplib" ;;
       
 53962 +            esac
       
 53963 +	    if $opt_preserve_dup_deps ; then
       
 53964  	      case "$tmp_libs " in
       
 53965 -	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
       
 53966 +	      *" $func_resolve_sysroot_result "*)
       
 53967 +                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
       
 53968  	      esac
       
 53969  	    fi
       
 53970 -	    tmp_libs="$tmp_libs $deplib"
       
 53971 +	    func_append tmp_libs " $func_resolve_sysroot_result"
       
 53972  	  done
       
 53973  
       
 53974  	  if test "$link_all_deplibs" != no; then
       
 53975  	    # Add the search paths of all dependency libraries
       
 53976  	    for deplib in $dependency_libs; do
       
 53977 +	      path=
       
 53978  	      case $deplib in
       
 53979  	      -L*) path="$deplib" ;;
       
 53980  	      *.la)
       
 53981 +	        func_resolve_sysroot "$deplib"
       
 53982 +	        deplib=$func_resolve_sysroot_result
       
 53983  	        func_dirname "$deplib" "" "."
       
 53984 -		dir="$func_dirname_result"
       
 53985 +		dir=$func_dirname_result
       
 53986  		# We need an absolute path.
       
 53987  		case $dir in
       
 53988  		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
       
 53989  		*)
       
 53990  		  absdir=`cd "$dir" && pwd`
       
 53991  		  if test -z "$absdir"; then
       
 53992  		    func_warning "cannot determine absolute directory name of \`$dir'"
       
 53993  		    absdir="$dir"
       
 53994 @@ -5919,18 +7061,18 @@ func_mode_link ()
       
 53995  		      depdepl=$tmp
       
 53996  		    done
       
 53997  		    if test -f "$absdir/$objdir/$depdepl" ; then
       
 53998  		      depdepl="$absdir/$objdir/$depdepl"
       
 53999  		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
       
 54000                        if test -z "$darwin_install_name"; then
       
 54001                            darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
       
 54002                        fi
       
 54003 -		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
       
 54004 -		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
       
 54005 +		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
       
 54006 +		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
       
 54007  		      path=
       
 54008  		    fi
       
 54009  		  fi
       
 54010  		  ;;
       
 54011  		*)
       
 54012  		  path="-L$absdir/$objdir"
       
 54013  		  ;;
       
 54014  		esac
       
 54015 @@ -5953,34 +7095,34 @@ func_mode_link ()
       
 54016  	  fi # link_all_deplibs != no
       
 54017  	fi # linkmode = lib
       
 54018        done # for deplib in $libs
       
 54019        if test "$pass" = link; then
       
 54020  	if test "$linkmode" = "prog"; then
       
 54021  	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
       
 54022  	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
       
 54023  	else
       
 54024 -	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 54025 +	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 54026  	fi
       
 54027        fi
       
 54028        dependency_libs="$newdependency_libs"
       
 54029        if test "$pass" = dlpreopen; then
       
 54030  	# Link the dlpreopened libraries before other libraries
       
 54031  	for deplib in $save_deplibs; do
       
 54032  	  deplibs="$deplib $deplibs"
       
 54033  	done
       
 54034        fi
       
 54035        if test "$pass" != dlopen; then
       
 54036  	if test "$pass" != conv; then
       
 54037  	  # Make sure lib_search_path contains only unique directories.
       
 54038  	  lib_search_path=
       
 54039  	  for dir in $newlib_search_path; do
       
 54040  	    case "$lib_search_path " in
       
 54041  	    *" $dir "*) ;;
       
 54042 -	    *) lib_search_path="$lib_search_path $dir" ;;
       
 54043 +	    *) func_append lib_search_path " $dir" ;;
       
 54044  	    esac
       
 54045  	  done
       
 54046  	  newlib_search_path=
       
 54047  	fi
       
 54048  
       
 54049  	if test "$linkmode,$pass" != "prog,link"; then
       
 54050  	  vars="deplibs"
       
 54051  	else
       
 54052 @@ -6028,36 +7170,36 @@ func_mode_link ()
       
 54053  	    esac
       
 54054  	  done
       
 54055  	  tmp_libs=
       
 54056  	  for deplib in $new_libs; do
       
 54057  	    case $deplib in
       
 54058  	    -L*)
       
 54059  	      case " $tmp_libs " in
       
 54060  	      *" $deplib "*) ;;
       
 54061 -	      *) tmp_libs="$tmp_libs $deplib" ;;
       
 54062 +	      *) func_append tmp_libs " $deplib" ;;
       
 54063  	      esac
       
 54064  	      ;;
       
 54065 -	    *) tmp_libs="$tmp_libs $deplib" ;;
       
 54066 +	    *) func_append tmp_libs " $deplib" ;;
       
 54067  	    esac
       
 54068  	  done
       
 54069  	  eval $var=\"$tmp_libs\"
       
 54070  	done # for var
       
 54071        fi
       
 54072        # Last step: remove runtime libs from dependency_libs
       
 54073        # (they stay in deplibs)
       
 54074        tmp_libs=
       
 54075        for i in $dependency_libs ; do
       
 54076  	case " $predeps $postdeps $compiler_lib_search_path " in
       
 54077  	*" $i "*)
       
 54078  	  i=""
       
 54079  	  ;;
       
 54080  	esac
       
 54081  	if test -n "$i" ; then
       
 54082 -	  tmp_libs="$tmp_libs $i"
       
 54083 +	  func_append tmp_libs " $i"
       
 54084  	fi
       
 54085        done
       
 54086        dependency_libs=$tmp_libs
       
 54087      done # for pass
       
 54088      if test "$linkmode" = prog; then
       
 54089        dlfiles="$newdlfiles"
       
 54090      fi
       
 54091      if test "$linkmode" = prog || test "$linkmode" = lib; then
       
 54092 @@ -6088,17 +7230,17 @@ func_mode_link ()
       
 54093  	func_warning "\`-release' is ignored for archives"
       
 54094  
       
 54095        test -n "$export_symbols$export_symbols_regex" && \
       
 54096  	func_warning "\`-export-symbols' is ignored for archives"
       
 54097  
       
 54098        # Now set the variables for building old libraries.
       
 54099        build_libtool_libs=no
       
 54100        oldlibs="$output"
       
 54101 -      objs="$objs$old_deplibs"
       
 54102 +      func_append objs "$old_deplibs"
       
 54103        ;;
       
 54104  
       
 54105      lib)
       
 54106        # Make sure we only generate libraries of the form `libNAME.la'.
       
 54107        case $outputname in
       
 54108        lib*)
       
 54109  	func_stripname 'lib' '.la' "$outputname"
       
 54110  	name=$func_stripname_result
       
 54111 @@ -6121,20 +7263,20 @@ func_mode_link ()
       
 54112  	fi
       
 54113  	;;
       
 54114        esac
       
 54115  
       
 54116        if test -n "$objs"; then
       
 54117  	if test "$deplibs_check_method" != pass_all; then
       
 54118  	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
       
 54119  	else
       
 54120 -	  $ECHO
       
 54121 +	  echo
       
 54122  	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
       
 54123  	  $ECHO "*** objects $objs is not portable!"
       
 54124 -	  libobjs="$libobjs $objs"
       
 54125 +	  func_append libobjs " $objs"
       
 54126  	fi
       
 54127        fi
       
 54128  
       
 54129        test "$dlself" != no && \
       
 54130  	func_warning "\`-dlopen self' is ignored for libtool libraries"
       
 54131  
       
 54132        set dummy $rpath
       
 54133        shift
       
 54134 @@ -6183,23 +7325,24 @@ func_mode_link ()
       
 54135  	  #
       
 54136  	  # There are really only two kinds -- those that
       
 54137  	  # use the current revision as the major version
       
 54138  	  # and those that subtract age and use age as
       
 54139  	  # a minor version.  But, then there is irix
       
 54140  	  # which has an extra 1 added just for fun
       
 54141  	  #
       
 54142  	  case $version_type in
       
 54143 +	  # correct linux to gnu/linux during the next big refactor
       
 54144  	  darwin|linux|osf|windows|none)
       
 54145  	    func_arith $number_major + $number_minor
       
 54146  	    current=$func_arith_result
       
 54147  	    age="$number_minor"
       
 54148  	    revision="$number_revision"
       
 54149  	    ;;
       
 54150 -	  freebsd-aout|freebsd-elf|sunos)
       
 54151 +	  freebsd-aout|freebsd-elf|qnx|sunos)
       
 54152  	    current="$number_major"
       
 54153  	    revision="$number_minor"
       
 54154  	    age="0"
       
 54155  	    ;;
       
 54156  	  irix|nonstopux)
       
 54157  	    func_arith $number_major + $number_minor
       
 54158  	    current=$func_arith_result
       
 54159  	    age="$number_minor"
       
 54160 @@ -6299,17 +7442,17 @@ func_mode_link ()
       
 54161  	    verstring="$verstring_prefix$major.$iface:$verstring"
       
 54162  	  done
       
 54163  
       
 54164  	  # Before this point, $major must not contain `.'.
       
 54165  	  major=.$major
       
 54166  	  versuffix="$major.$revision"
       
 54167  	  ;;
       
 54168  
       
 54169 -	linux)
       
 54170 +	linux) # correct to gnu/linux during the next big refactor
       
 54171  	  func_arith $current - $age
       
 54172  	  major=.$func_arith_result
       
 54173  	  versuffix="$major.$age.$revision"
       
 54174  	  ;;
       
 54175  
       
 54176  	osf)
       
 54177  	  func_arith $current - $age
       
 54178  	  major=.$func_arith_result
       
 54179 @@ -6322,17 +7465,17 @@ func_mode_link ()
       
 54180  	    func_arith $current - $loop
       
 54181  	    iface=$func_arith_result
       
 54182  	    func_arith $loop - 1
       
 54183  	    loop=$func_arith_result
       
 54184  	    verstring="$verstring:${iface}.0"
       
 54185  	  done
       
 54186  
       
 54187  	  # Make executables depend on our current version.
       
 54188 -	  verstring="$verstring:${current}.0"
       
 54189 +	  func_append verstring ":${current}.0"
       
 54190  	  ;;
       
 54191  
       
 54192  	qnx)
       
 54193  	  major=".$current"
       
 54194  	  versuffix=".$current"
       
 54195  	  ;;
       
 54196  
       
 54197  	sunos)
       
 54198 @@ -6390,120 +7533,121 @@ func_mode_link ()
       
 54199  	else
       
 54200  	  # Don't allow undefined symbols.
       
 54201  	  allow_undefined_flag="$no_undefined_flag"
       
 54202  	fi
       
 54203  
       
 54204        fi
       
 54205  
       
 54206        func_generate_dlsyms "$libname" "$libname" "yes"
       
 54207 -      libobjs="$libobjs $symfileobj"
       
 54208 +      func_append libobjs " $symfileobj"
       
 54209        test "X$libobjs" = "X " && libobjs=
       
 54210  
       
 54211 -      if test "$mode" != relink; then
       
 54212 +      if test "$opt_mode" != relink; then
       
 54213  	# Remove our outputs, but don't remove object files since they
       
 54214  	# may have been created when compiling PIC objects.
       
 54215  	removelist=
       
 54216  	tempremovelist=`$ECHO "$output_objdir/*"`
       
 54217  	for p in $tempremovelist; do
       
 54218  	  case $p in
       
 54219  	    *.$objext | *.gcno)
       
 54220  	       ;;
       
 54221  	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
       
 54222  	       if test "X$precious_files_regex" != "X"; then
       
 54223  		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
       
 54224  		 then
       
 54225  		   continue
       
 54226  		 fi
       
 54227  	       fi
       
 54228 -	       removelist="$removelist $p"
       
 54229 +	       func_append removelist " $p"
       
 54230  	       ;;
       
 54231  	    *) ;;
       
 54232  	  esac
       
 54233  	done
       
 54234  	test -n "$removelist" && \
       
 54235  	  func_show_eval "${RM}r \$removelist"
       
 54236        fi
       
 54237  
       
 54238        # Now set the variables for building old libraries.
       
 54239        if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
       
 54240 -	oldlibs="$oldlibs $output_objdir/$libname.$libext"
       
 54241 +	func_append oldlibs " $output_objdir/$libname.$libext"
       
 54242  
       
 54243  	# Transform .lo files to .o files.
       
 54244 -	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
       
 54245 +	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
       
 54246        fi
       
 54247  
       
 54248        # Eliminate all temporary directories.
       
 54249        #for path in $notinst_path; do
       
 54250 -      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
       
 54251 -      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
       
 54252 -      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
       
 54253 +      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
       
 54254 +      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
       
 54255 +      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
       
 54256        #done
       
 54257  
       
 54258        if test -n "$xrpath"; then
       
 54259  	# If the user specified any rpath flags, then add them.
       
 54260  	temp_xrpath=
       
 54261  	for libdir in $xrpath; do
       
 54262 -	  temp_xrpath="$temp_xrpath -R$libdir"
       
 54263 +	  func_replace_sysroot "$libdir"
       
 54264 +	  func_append temp_xrpath " -R$func_replace_sysroot_result"
       
 54265  	  case "$finalize_rpath " in
       
 54266  	  *" $libdir "*) ;;
       
 54267 -	  *) finalize_rpath="$finalize_rpath $libdir" ;;
       
 54268 +	  *) func_append finalize_rpath " $libdir" ;;
       
 54269  	  esac
       
 54270  	done
       
 54271  	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
       
 54272  	  dependency_libs="$temp_xrpath $dependency_libs"
       
 54273  	fi
       
 54274        fi
       
 54275  
       
 54276        # Make sure dlfiles contains only unique files that won't be dlpreopened
       
 54277        old_dlfiles="$dlfiles"
       
 54278        dlfiles=
       
 54279        for lib in $old_dlfiles; do
       
 54280  	case " $dlprefiles $dlfiles " in
       
 54281  	*" $lib "*) ;;
       
 54282 -	*) dlfiles="$dlfiles $lib" ;;
       
 54283 +	*) func_append dlfiles " $lib" ;;
       
 54284  	esac
       
 54285        done
       
 54286  
       
 54287        # Make sure dlprefiles contains only unique files
       
 54288        old_dlprefiles="$dlprefiles"
       
 54289        dlprefiles=
       
 54290        for lib in $old_dlprefiles; do
       
 54291  	case "$dlprefiles " in
       
 54292  	*" $lib "*) ;;
       
 54293 -	*) dlprefiles="$dlprefiles $lib" ;;
       
 54294 +	*) func_append dlprefiles " $lib" ;;
       
 54295  	esac
       
 54296        done
       
 54297  
       
 54298        if test "$build_libtool_libs" = yes; then
       
 54299  	if test -n "$rpath"; then
       
 54300  	  case $host in
       
 54301 -	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
       
 54302 +	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
       
 54303  	    # these systems don't actually have a c library (as such)!
       
 54304  	    ;;
       
 54305  	  *-*-rhapsody* | *-*-darwin1.[012])
       
 54306  	    # Rhapsody C library is in the System framework
       
 54307 -	    deplibs="$deplibs System.ltframework"
       
 54308 +	    func_append deplibs " System.ltframework"
       
 54309  	    ;;
       
 54310  	  *-*-netbsd*)
       
 54311  	    # Don't link with libc until the a.out ld.so is fixed.
       
 54312  	    ;;
       
 54313  	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
       
 54314  	    # Do not include libc due to us having libc/libc_r.
       
 54315  	    ;;
       
 54316  	  *-*-sco3.2v5* | *-*-sco5v6*)
       
 54317  	    # Causes problems with __ctype
       
 54318  	    ;;
       
 54319  	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
       
 54320  	    # Compiler inserts libc in the correct place for threads to work
       
 54321  	    ;;
       
 54322  	  *)
       
 54323  	    # Add libc to deplibs on all other systems if necessary.
       
 54324  	    if test "$build_libtool_need_lc" = "yes"; then
       
 54325 -	      deplibs="$deplibs -lc"
       
 54326 +	      func_append deplibs " -lc"
       
 54327  	    fi
       
 54328  	    ;;
       
 54329  	  esac
       
 54330  	fi
       
 54331  
       
 54332  	# Transform deplibs into only deplibs that can be linked in shared.
       
 54333  	name_save=$name
       
 54334  	libname_save=$libname
       
 54335 @@ -6542,42 +7686,42 @@ EOF
       
 54336  	    for i in $deplibs; do
       
 54337  	      case $i in
       
 54338  	      -l*)
       
 54339  		func_stripname -l '' "$i"
       
 54340  		name=$func_stripname_result
       
 54341  		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
       
 54342  		  case " $predeps $postdeps " in
       
 54343  		  *" $i "*)
       
 54344 -		    newdeplibs="$newdeplibs $i"
       
 54345 +		    func_append newdeplibs " $i"
       
 54346  		    i=""
       
 54347  		    ;;
       
 54348  		  esac
       
 54349  		fi
       
 54350  		if test -n "$i" ; then
       
 54351  		  libname=`eval "\\$ECHO \"$libname_spec\""`
       
 54352  		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
       
 54353  		  set dummy $deplib_matches; shift
       
 54354  		  deplib_match=$1
       
 54355  		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
       
 54356 -		    newdeplibs="$newdeplibs $i"
       
 54357 +		    func_append newdeplibs " $i"
       
 54358  		  else
       
 54359  		    droppeddeps=yes
       
 54360 -		    $ECHO
       
 54361 +		    echo
       
 54362  		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
       
 54363 -		    $ECHO "*** I have the capability to make that library automatically link in when"
       
 54364 -		    $ECHO "*** you link to this library.  But I can only do this if you have a"
       
 54365 -		    $ECHO "*** shared version of the library, which I believe you do not have"
       
 54366 -		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
       
 54367 -		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
       
 54368 +		    echo "*** I have the capability to make that library automatically link in when"
       
 54369 +		    echo "*** you link to this library.  But I can only do this if you have a"
       
 54370 +		    echo "*** shared version of the library, which I believe you do not have"
       
 54371 +		    echo "*** because a test_compile did reveal that the linker did not use it for"
       
 54372 +		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
       
 54373  		  fi
       
 54374  		fi
       
 54375  		;;
       
 54376  	      *)
       
 54377 -		newdeplibs="$newdeplibs $i"
       
 54378 +		func_append newdeplibs " $i"
       
 54379  		;;
       
 54380  	      esac
       
 54381  	    done
       
 54382  	  else
       
 54383  	    # Error occurred in the first compile.  Let's try to salvage
       
 54384  	    # the situation: Compile a separate program for each library.
       
 54385  	    for i in $deplibs; do
       
 54386  	      case $i in
       
 54387 @@ -6585,360 +7729,375 @@ EOF
       
 54388  		func_stripname -l '' "$i"
       
 54389  		name=$func_stripname_result
       
 54390  		$opt_dry_run || $RM conftest
       
 54391  		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
       
 54392  		  ldd_output=`ldd conftest`
       
 54393  		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
       
 54394  		    case " $predeps $postdeps " in
       
 54395  		    *" $i "*)
       
 54396 -		      newdeplibs="$newdeplibs $i"
       
 54397 +		      func_append newdeplibs " $i"
       
 54398  		      i=""
       
 54399  		      ;;
       
 54400  		    esac
       
 54401  		  fi
       
 54402  		  if test -n "$i" ; then
       
 54403  		    libname=`eval "\\$ECHO \"$libname_spec\""`
       
 54404  		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
       
 54405  		    set dummy $deplib_matches; shift
       
 54406  		    deplib_match=$1
       
 54407  		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
       
 54408 -		      newdeplibs="$newdeplibs $i"
       
 54409 +		      func_append newdeplibs " $i"
       
 54410  		    else
       
 54411  		      droppeddeps=yes
       
 54412 -		      $ECHO
       
 54413 +		      echo
       
 54414  		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
       
 54415 -		      $ECHO "*** I have the capability to make that library automatically link in when"
       
 54416 -		      $ECHO "*** you link to this library.  But I can only do this if you have a"
       
 54417 -		      $ECHO "*** shared version of the library, which you do not appear to have"
       
 54418 -		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
       
 54419 -		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
       
 54420 +		      echo "*** I have the capability to make that library automatically link in when"
       
 54421 +		      echo "*** you link to this library.  But I can only do this if you have a"
       
 54422 +		      echo "*** shared version of the library, which you do not appear to have"
       
 54423 +		      echo "*** because a test_compile did reveal that the linker did not use this one"
       
 54424 +		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
       
 54425  		    fi
       
 54426  		  fi
       
 54427  		else
       
 54428  		  droppeddeps=yes
       
 54429 -		  $ECHO
       
 54430 +		  echo
       
 54431  		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
       
 54432 -		  $ECHO "*** make it link in!  You will probably need to install it or some"
       
 54433 -		  $ECHO "*** library that it depends on before this library will be fully"
       
 54434 -		  $ECHO "*** functional.  Installing it before continuing would be even better."
       
 54435 +		  echo "*** make it link in!  You will probably need to install it or some"
       
 54436 +		  echo "*** library that it depends on before this library will be fully"
       
 54437 +		  echo "*** functional.  Installing it before continuing would be even better."
       
 54438  		fi
       
 54439  		;;
       
 54440  	      *)
       
 54441 -		newdeplibs="$newdeplibs $i"
       
 54442 +		func_append newdeplibs " $i"
       
 54443  		;;
       
 54444  	      esac
       
 54445  	    done
       
 54446  	  fi
       
 54447  	  ;;
       
 54448  	file_magic*)
       
 54449  	  set dummy $deplibs_check_method; shift
       
 54450  	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
       
 54451  	  for a_deplib in $deplibs; do
       
 54452  	    case $a_deplib in
       
 54453  	    -l*)
       
 54454  	      func_stripname -l '' "$a_deplib"
       
 54455  	      name=$func_stripname_result
       
 54456  	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
       
 54457  		case " $predeps $postdeps " in
       
 54458  		*" $a_deplib "*)
       
 54459 -		  newdeplibs="$newdeplibs $a_deplib"
       
 54460 +		  func_append newdeplibs " $a_deplib"
       
 54461  		  a_deplib=""
       
 54462  		  ;;
       
 54463  		esac
       
 54464  	      fi
       
 54465  	      if test -n "$a_deplib" ; then
       
 54466  		libname=`eval "\\$ECHO \"$libname_spec\""`
       
 54467 +		if test -n "$file_magic_glob"; then
       
 54468 +		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
       
 54469 +		else
       
 54470 +		  libnameglob=$libname
       
 54471 +		fi
       
 54472 +		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
       
 54473  		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
       
 54474 -		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
       
 54475 +		  if test "$want_nocaseglob" = yes; then
       
 54476 +		    shopt -s nocaseglob
       
 54477 +		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
       
 54478 +		    $nocaseglob
       
 54479 +		  else
       
 54480 +		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
       
 54481 +		  fi
       
 54482  		  for potent_lib in $potential_libs; do
       
 54483  		      # Follow soft links.
       
 54484  		      if ls -lLd "$potent_lib" 2>/dev/null |
       
 54485  			 $GREP " -> " >/dev/null; then
       
 54486  			continue
       
 54487  		      fi
       
 54488  		      # The statement above tries to avoid entering an
       
 54489  		      # endless loop below, in case of cyclic links.
       
 54490  		      # We might still enter an endless loop, since a link
       
 54491  		      # loop can be closed while we follow links,
       
 54492  		      # but so what?
       
 54493  		      potlib="$potent_lib"
       
 54494  		      while test -h "$potlib" 2>/dev/null; do
       
 54495  			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
       
 54496  			case $potliblink in
       
 54497  			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
       
 54498 -			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
       
 54499 +			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
       
 54500  			esac
       
 54501  		      done
       
 54502  		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
       
 54503  			 $SED -e 10q |
       
 54504  			 $EGREP "$file_magic_regex" > /dev/null; then
       
 54505 -			newdeplibs="$newdeplibs $a_deplib"
       
 54506 +			func_append newdeplibs " $a_deplib"
       
 54507  			a_deplib=""
       
 54508  			break 2
       
 54509  		      fi
       
 54510  		  done
       
 54511  		done
       
 54512  	      fi
       
 54513  	      if test -n "$a_deplib" ; then
       
 54514  		droppeddeps=yes
       
 54515 -		$ECHO
       
 54516 +		echo
       
 54517  		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
       
 54518 -		$ECHO "*** I have the capability to make that library automatically link in when"
       
 54519 -		$ECHO "*** you link to this library.  But I can only do this if you have a"
       
 54520 -		$ECHO "*** shared version of the library, which you do not appear to have"
       
 54521 -		$ECHO "*** because I did check the linker path looking for a file starting"
       
 54522 +		echo "*** I have the capability to make that library automatically link in when"
       
 54523 +		echo "*** you link to this library.  But I can only do this if you have a"
       
 54524 +		echo "*** shared version of the library, which you do not appear to have"
       
 54525 +		echo "*** because I did check the linker path looking for a file starting"
       
 54526  		if test -z "$potlib" ; then
       
 54527  		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
       
 54528  		else
       
 54529  		  $ECHO "*** with $libname and none of the candidates passed a file format test"
       
 54530  		  $ECHO "*** using a file magic. Last file checked: $potlib"
       
 54531  		fi
       
 54532  	      fi
       
 54533  	      ;;
       
 54534  	    *)
       
 54535  	      # Add a -L argument.
       
 54536 -	      newdeplibs="$newdeplibs $a_deplib"
       
 54537 +	      func_append newdeplibs " $a_deplib"
       
 54538  	      ;;
       
 54539  	    esac
       
 54540  	  done # Gone through all deplibs.
       
 54541  	  ;;
       
 54542  	match_pattern*)
       
 54543  	  set dummy $deplibs_check_method; shift
       
 54544  	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
       
 54545  	  for a_deplib in $deplibs; do
       
 54546  	    case $a_deplib in
       
 54547  	    -l*)
       
 54548  	      func_stripname -l '' "$a_deplib"
       
 54549  	      name=$func_stripname_result
       
 54550  	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
       
 54551  		case " $predeps $postdeps " in
       
 54552  		*" $a_deplib "*)
       
 54553 -		  newdeplibs="$newdeplibs $a_deplib"
       
 54554 +		  func_append newdeplibs " $a_deplib"
       
 54555  		  a_deplib=""
       
 54556  		  ;;
       
 54557  		esac
       
 54558  	      fi
       
 54559  	      if test -n "$a_deplib" ; then
       
 54560  		libname=`eval "\\$ECHO \"$libname_spec\""`
       
 54561  		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
       
 54562  		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
       
 54563  		  for potent_lib in $potential_libs; do
       
 54564  		    potlib="$potent_lib" # see symlink-check above in file_magic test
       
 54565 -		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
       
 54566 +		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
       
 54567  		       $EGREP "$match_pattern_regex" > /dev/null; then
       
 54568 -		      newdeplibs="$newdeplibs $a_deplib"
       
 54569 +		      func_append newdeplibs " $a_deplib"
       
 54570  		      a_deplib=""
       
 54571  		      break 2
       
 54572  		    fi
       
 54573  		  done
       
 54574  		done
       
 54575  	      fi
       
 54576  	      if test -n "$a_deplib" ; then
       
 54577  		droppeddeps=yes
       
 54578 -		$ECHO
       
 54579 +		echo
       
 54580  		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
       
 54581 -		$ECHO "*** I have the capability to make that library automatically link in when"
       
 54582 -		$ECHO "*** you link to this library.  But I can only do this if you have a"
       
 54583 -		$ECHO "*** shared version of the library, which you do not appear to have"
       
 54584 -		$ECHO "*** because I did check the linker path looking for a file starting"
       
 54585 +		echo "*** I have the capability to make that library automatically link in when"
       
 54586 +		echo "*** you link to this library.  But I can only do this if you have a"
       
 54587 +		echo "*** shared version of the library, which you do not appear to have"
       
 54588 +		echo "*** because I did check the linker path looking for a file starting"
       
 54589  		if test -z "$potlib" ; then
       
 54590  		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
       
 54591  		else
       
 54592  		  $ECHO "*** with $libname and none of the candidates passed a file format test"
       
 54593  		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
       
 54594  		fi
       
 54595  	      fi
       
 54596  	      ;;
       
 54597  	    *)
       
 54598  	      # Add a -L argument.
       
 54599 -	      newdeplibs="$newdeplibs $a_deplib"
       
 54600 +	      func_append newdeplibs " $a_deplib"
       
 54601  	      ;;
       
 54602  	    esac
       
 54603  	  done # Gone through all deplibs.
       
 54604  	  ;;
       
 54605  	none | unknown | *)
       
 54606  	  newdeplibs=""
       
 54607 -	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
       
 54608 -	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
       
 54609 +	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
       
 54610  	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
       
 54611  	    for i in $predeps $postdeps ; do
       
 54612  	      # can't use Xsed below, because $i might contain '/'
       
 54613 -	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
       
 54614 +	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
       
 54615  	    done
       
 54616  	  fi
       
 54617 -	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
       
 54618 -	     $GREP . >/dev/null; then
       
 54619 -	    $ECHO
       
 54620 +	  case $tmp_deplibs in
       
 54621 +	  *[!\	\ ]*)
       
 54622 +	    echo
       
 54623  	    if test "X$deplibs_check_method" = "Xnone"; then
       
 54624 -	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
       
 54625 +	      echo "*** Warning: inter-library dependencies are not supported in this platform."
       
 54626  	    else
       
 54627 -	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
       
 54628 +	      echo "*** Warning: inter-library dependencies are not known to be supported."
       
 54629  	    fi
       
 54630 -	    $ECHO "*** All declared inter-library dependencies are being dropped."
       
 54631 +	    echo "*** All declared inter-library dependencies are being dropped."
       
 54632  	    droppeddeps=yes
       
 54633 -	  fi
       
 54634 +	    ;;
       
 54635 +	  esac
       
 54636  	  ;;
       
 54637  	esac
       
 54638  	versuffix=$versuffix_save
       
 54639  	major=$major_save
       
 54640  	release=$release_save
       
 54641  	libname=$libname_save
       
 54642  	name=$name_save
       
 54643  
       
 54644  	case $host in
       
 54645  	*-*-rhapsody* | *-*-darwin1.[012])
       
 54646  	  # On Rhapsody replace the C library with the System framework
       
 54647 -	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
       
 54648 +	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
       
 54649  	  ;;
       
 54650  	esac
       
 54651  
       
 54652  	if test "$droppeddeps" = yes; then
       
 54653  	  if test "$module" = yes; then
       
 54654 -	    $ECHO
       
 54655 -	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
       
 54656 +	    echo
       
 54657 +	    echo "*** Warning: libtool could not satisfy all declared inter-library"
       
 54658  	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
       
 54659 -	    $ECHO "*** a static module, that should work as long as the dlopening"
       
 54660 -	    $ECHO "*** application is linked with the -dlopen flag."
       
 54661 +	    echo "*** a static module, that should work as long as the dlopening"
       
 54662 +	    echo "*** application is linked with the -dlopen flag."
       
 54663  	    if test -z "$global_symbol_pipe"; then
       
 54664 -	      $ECHO
       
 54665 -	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
       
 54666 -	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
       
 54667 -	      $ECHO "*** not find such a program.  So, this module is probably useless."
       
 54668 -	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
       
 54669 +	      echo
       
 54670 +	      echo "*** However, this would only work if libtool was able to extract symbol"
       
 54671 +	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
       
 54672 +	      echo "*** not find such a program.  So, this module is probably useless."
       
 54673 +	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
       
 54674  	    fi
       
 54675  	    if test "$build_old_libs" = no; then
       
 54676  	      oldlibs="$output_objdir/$libname.$libext"
       
 54677  	      build_libtool_libs=module
       
 54678  	      build_old_libs=yes
       
 54679  	    else
       
 54680  	      build_libtool_libs=no
       
 54681  	    fi
       
 54682  	  else
       
 54683 -	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
       
 54684 -	    $ECHO "*** automatically added whenever a program is linked with this library"
       
 54685 -	    $ECHO "*** or is declared to -dlopen it."
       
 54686 +	    echo "*** The inter-library dependencies that have been dropped here will be"
       
 54687 +	    echo "*** automatically added whenever a program is linked with this library"
       
 54688 +	    echo "*** or is declared to -dlopen it."
       
 54689  
       
 54690  	    if test "$allow_undefined" = no; then
       
 54691 -	      $ECHO
       
 54692 -	      $ECHO "*** Since this library must not contain undefined symbols,"
       
 54693 -	      $ECHO "*** because either the platform does not support them or"
       
 54694 -	      $ECHO "*** it was explicitly requested with -no-undefined,"
       
 54695 -	      $ECHO "*** libtool will only create a static version of it."
       
 54696 +	      echo
       
 54697 +	      echo "*** Since this library must not contain undefined symbols,"
       
 54698 +	      echo "*** because either the platform does not support them or"
       
 54699 +	      echo "*** it was explicitly requested with -no-undefined,"
       
 54700 +	      echo "*** libtool will only create a static version of it."
       
 54701  	      if test "$build_old_libs" = no; then
       
 54702  		oldlibs="$output_objdir/$libname.$libext"
       
 54703  		build_libtool_libs=module
       
 54704  		build_old_libs=yes
       
 54705  	      else
       
 54706  		build_libtool_libs=no
       
 54707  	      fi
       
 54708  	    fi
       
 54709  	  fi
       
 54710  	fi
       
 54711  	# Done checking deplibs!
       
 54712  	deplibs=$newdeplibs
       
 54713        fi
       
 54714        # Time to change all our "foo.ltframework" stuff back to "-framework foo"
       
 54715        case $host in
       
 54716  	*-*-darwin*)
       
 54717 -	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 54718 -	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 54719 -	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 54720 +	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 54721 +	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 54722 +	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 54723  	  ;;
       
 54724        esac
       
 54725  
       
 54726        # move library search paths that coincide with paths to not yet
       
 54727        # installed libraries to the beginning of the library search list
       
 54728        new_libs=
       
 54729        for path in $notinst_path; do
       
 54730  	case " $new_libs " in
       
 54731  	*" -L$path/$objdir "*) ;;
       
 54732  	*)
       
 54733  	  case " $deplibs " in
       
 54734  	  *" -L$path/$objdir "*)
       
 54735 -	    new_libs="$new_libs -L$path/$objdir" ;;
       
 54736 +	    func_append new_libs " -L$path/$objdir" ;;
       
 54737  	  esac
       
 54738  	  ;;
       
 54739  	esac
       
 54740        done
       
 54741        for deplib in $deplibs; do
       
 54742  	case $deplib in
       
 54743  	-L*)
       
 54744  	  case " $new_libs " in
       
 54745  	  *" $deplib "*) ;;
       
 54746 -	  *) new_libs="$new_libs $deplib" ;;
       
 54747 +	  *) func_append new_libs " $deplib" ;;
       
 54748  	  esac
       
 54749  	  ;;
       
 54750 -	*) new_libs="$new_libs $deplib" ;;
       
 54751 +	*) func_append new_libs " $deplib" ;;
       
 54752  	esac
       
 54753        done
       
 54754        deplibs="$new_libs"
       
 54755  
       
 54756        # All the library-specific variables (install_libdir is set above).
       
 54757        library_names=
       
 54758        old_library=
       
 54759        dlname=
       
 54760  
       
 54761        # Test again, we may have decided not to build it any more
       
 54762        if test "$build_libtool_libs" = yes; then
       
 54763 +	# Remove ${wl} instances when linking with ld.
       
 54764 +	# FIXME: should test the right _cmds variable.
       
 54765 +	case $archive_cmds in
       
 54766 +	  *\$LD\ *) wl= ;;
       
 54767 +        esac
       
 54768  	if test "$hardcode_into_libs" = yes; then
       
 54769  	  # Hardcode the library paths
       
 54770  	  hardcode_libdirs=
       
 54771  	  dep_rpath=
       
 54772  	  rpath="$finalize_rpath"
       
 54773 -	  test "$mode" != relink && rpath="$compile_rpath$rpath"
       
 54774 +	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
       
 54775  	  for libdir in $rpath; do
       
 54776  	    if test -n "$hardcode_libdir_flag_spec"; then
       
 54777  	      if test -n "$hardcode_libdir_separator"; then
       
 54778 +		func_replace_sysroot "$libdir"
       
 54779 +		libdir=$func_replace_sysroot_result
       
 54780  		if test -z "$hardcode_libdirs"; then
       
 54781  		  hardcode_libdirs="$libdir"
       
 54782  		else
       
 54783  		  # Just accumulate the unique libdirs.
       
 54784  		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
       
 54785  		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
       
 54786  		    ;;
       
 54787  		  *)
       
 54788 -		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
       
 54789 +		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
       
 54790  		    ;;
       
 54791  		  esac
       
 54792  		fi
       
 54793  	      else
       
 54794  		eval flag=\"$hardcode_libdir_flag_spec\"
       
 54795 -		dep_rpath="$dep_rpath $flag"
       
 54796 +		func_append dep_rpath " $flag"
       
 54797  	      fi
       
 54798  	    elif test -n "$runpath_var"; then
       
 54799  	      case "$perm_rpath " in
       
 54800  	      *" $libdir "*) ;;
       
 54801 -	      *) perm_rpath="$perm_rpath $libdir" ;;
       
 54802 +	      *) func_append perm_rpath " $libdir" ;;
       
 54803  	      esac
       
 54804  	    fi
       
 54805  	  done
       
 54806  	  # Substitute the hardcoded libdirs into the rpath.
       
 54807  	  if test -n "$hardcode_libdir_separator" &&
       
 54808  	     test -n "$hardcode_libdirs"; then
       
 54809  	    libdir="$hardcode_libdirs"
       
 54810 -	    if test -n "$hardcode_libdir_flag_spec_ld"; then
       
 54811 -	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
       
 54812 -	    else
       
 54813 -	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
       
 54814 -	    fi
       
 54815 +	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
       
 54816  	  fi
       
 54817  	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
       
 54818  	    # We should set the runpath_var.
       
 54819  	    rpath=
       
 54820  	    for dir in $perm_rpath; do
       
 54821 -	      rpath="$rpath$dir:"
       
 54822 +	      func_append rpath "$dir:"
       
 54823  	    done
       
 54824  	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
       
 54825  	  fi
       
 54826  	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
       
 54827  	fi
       
 54828  
       
 54829  	shlibpath="$finalize_shlibpath"
       
 54830 -	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
       
 54831 +	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
       
 54832  	if test -n "$shlibpath"; then
       
 54833  	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
       
 54834  	fi
       
 54835  
       
 54836  	# Get the real and link names of the library.
       
 54837  	eval shared_ext=\"$shrext_cmds\"
       
 54838  	eval library_names=\"$library_names_spec\"
       
 54839  	set dummy $library_names
       
 54840 @@ -6954,28 +8113,28 @@ EOF
       
 54841  	if test -z "$dlname"; then
       
 54842  	  dlname=$soname
       
 54843  	fi
       
 54844  
       
 54845  	lib="$output_objdir/$realname"
       
 54846  	linknames=
       
 54847  	for link
       
 54848  	do
       
 54849 -	  linknames="$linknames $link"
       
 54850 +	  func_append linknames " $link"
       
 54851  	done
       
 54852  
       
 54853  	# Use standard objects if they are pic
       
 54854 -	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
       
 54855 +	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
       
 54856  	test "X$libobjs" = "X " && libobjs=
       
 54857  
       
 54858  	delfiles=
       
 54859  	if test -n "$export_symbols" && test -n "$include_expsyms"; then
       
 54860  	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
       
 54861  	  export_symbols="$output_objdir/$libname.uexp"
       
 54862 -	  delfiles="$delfiles $export_symbols"
       
 54863 +	  func_append delfiles " $export_symbols"
       
 54864  	fi
       
 54865  
       
 54866  	orig_export_symbols=
       
 54867  	case $host_os in
       
 54868  	cygwin* | mingw* | cegcc*)
       
 54869  	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
       
 54870  	    # exporting using user supplied symfile
       
 54871  	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
       
 54872 @@ -6996,24 +8155,56 @@ EOF
       
 54873  	# Prepare the list of exported symbols
       
 54874  	if test -z "$export_symbols"; then
       
 54875  	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
       
 54876  	    func_verbose "generating symbol list for \`$libname.la'"
       
 54877  	    export_symbols="$output_objdir/$libname.exp"
       
 54878  	    $opt_dry_run || $RM $export_symbols
       
 54879  	    cmds=$export_symbols_cmds
       
 54880  	    save_ifs="$IFS"; IFS='~'
       
 54881 -	    for cmd in $cmds; do
       
 54882 +	    for cmd1 in $cmds; do
       
 54883  	      IFS="$save_ifs"
       
 54884 -	      eval cmd=\"$cmd\"
       
 54885 -	      func_len " $cmd"
       
 54886 -	      len=$func_len_result
       
 54887 -	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
       
 54888 +	      # Take the normal branch if the nm_file_list_spec branch
       
 54889 +	      # doesn't work or if tool conversion is not needed.
       
 54890 +	      case $nm_file_list_spec~$to_tool_file_cmd in
       
 54891 +		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
       
 54892 +		  try_normal_branch=yes
       
 54893 +		  eval cmd=\"$cmd1\"
       
 54894 +		  func_len " $cmd"
       
 54895 +		  len=$func_len_result
       
 54896 +		  ;;
       
 54897 +		*)
       
 54898 +		  try_normal_branch=no
       
 54899 +		  ;;
       
 54900 +	      esac
       
 54901 +	      if test "$try_normal_branch" = yes \
       
 54902 +		 && { test "$len" -lt "$max_cmd_len" \
       
 54903 +		      || test "$max_cmd_len" -le -1; }
       
 54904 +	      then
       
 54905  		func_show_eval "$cmd" 'exit $?'
       
 54906  		skipped_export=false
       
 54907 +	      elif test -n "$nm_file_list_spec"; then
       
 54908 +		func_basename "$output"
       
 54909 +		output_la=$func_basename_result
       
 54910 +		save_libobjs=$libobjs
       
 54911 +		save_output=$output
       
 54912 +		output=${output_objdir}/${output_la}.nm
       
 54913 +		func_to_tool_file "$output"
       
 54914 +		libobjs=$nm_file_list_spec$func_to_tool_file_result
       
 54915 +		func_append delfiles " $output"
       
 54916 +		func_verbose "creating $NM input file list: $output"
       
 54917 +		for obj in $save_libobjs; do
       
 54918 +		  func_to_tool_file "$obj"
       
 54919 +		  $ECHO "$func_to_tool_file_result"
       
 54920 +		done > "$output"
       
 54921 +		eval cmd=\"$cmd1\"
       
 54922 +		func_show_eval "$cmd" 'exit $?'
       
 54923 +		output=$save_output
       
 54924 +		libobjs=$save_libobjs
       
 54925 +		skipped_export=false
       
 54926  	      else
       
 54927  		# The command line is too long to execute in one step.
       
 54928  		func_verbose "using reloadable object file for export list..."
       
 54929  		skipped_export=:
       
 54930  		# Break out early, otherwise skipped_export may be
       
 54931  		# set to false by a later but shorter cmd.
       
 54932  		break
       
 54933  	      fi
       
 54934 @@ -7024,39 +8215,39 @@ EOF
       
 54935  	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
       
 54936  	    fi
       
 54937  	  fi
       
 54938  	fi
       
 54939  
       
 54940  	if test -n "$export_symbols" && test -n "$include_expsyms"; then
       
 54941  	  tmp_export_symbols="$export_symbols"
       
 54942  	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
       
 54943 -	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
       
 54944 +	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
       
 54945  	fi
       
 54946  
       
 54947  	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
       
 54948  	  # The given exports_symbols file has to be filtered, so filter it.
       
 54949  	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
       
 54950  	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
       
 54951  	  # 's' commands which not all seds can handle. GNU sed should be fine
       
 54952  	  # though. Also, the filter scales superlinearly with the number of
       
 54953  	  # global variables. join(1) would be nice here, but unfortunately
       
 54954  	  # isn't a blessed tool.
       
 54955  	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
       
 54956 -	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
       
 54957 +	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
       
 54958  	  export_symbols=$output_objdir/$libname.def
       
 54959  	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
       
 54960  	fi
       
 54961  
       
 54962  	tmp_deplibs=
       
 54963  	for test_deplib in $deplibs; do
       
 54964  	  case " $convenience " in
       
 54965  	  *" $test_deplib "*) ;;
       
 54966  	  *)
       
 54967 -	    tmp_deplibs="$tmp_deplibs $test_deplib"
       
 54968 +	    func_append tmp_deplibs " $test_deplib"
       
 54969  	    ;;
       
 54970  	  esac
       
 54971  	done
       
 54972  	deplibs="$tmp_deplibs"
       
 54973  
       
 54974  	if test -n "$convenience"; then
       
 54975  	  if test -n "$whole_archive_flag_spec" &&
       
 54976  	    test "$compiler_needs_object" = yes &&
       
 54977 @@ -7066,31 +8257,31 @@ EOF
       
 54978  	    whole_archive_flag_spec=
       
 54979  	  fi
       
 54980  	  if test -n "$whole_archive_flag_spec"; then
       
 54981  	    save_libobjs=$libobjs
       
 54982  	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
       
 54983  	    test "X$libobjs" = "X " && libobjs=
       
 54984  	  else
       
 54985  	    gentop="$output_objdir/${outputname}x"
       
 54986 -	    generated="$generated $gentop"
       
 54987 +	    func_append generated " $gentop"
       
 54988  
       
 54989  	    func_extract_archives $gentop $convenience
       
 54990 -	    libobjs="$libobjs $func_extract_archives_result"
       
 54991 +	    func_append libobjs " $func_extract_archives_result"
       
 54992  	    test "X$libobjs" = "X " && libobjs=
       
 54993  	  fi
       
 54994  	fi
       
 54995  
       
 54996  	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
       
 54997  	  eval flag=\"$thread_safe_flag_spec\"
       
 54998 -	  linker_flags="$linker_flags $flag"
       
 54999 +	  func_append linker_flags " $flag"
       
 55000  	fi
       
 55001  
       
 55002  	# Make a backup of the uninstalled library when relinking
       
 55003 -	if test "$mode" = relink; then
       
 55004 +	if test "$opt_mode" = relink; then
       
 55005  	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
       
 55006  	fi
       
 55007  
       
 55008  	# Do each of the archive commands.
       
 55009  	if test "$module" = yes && test -n "$module_cmds" ; then
       
 55010  	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
       
 55011  	    eval test_cmds=\"$module_expsym_cmds\"
       
 55012  	    cmds=$module_expsym_cmds
       
 55013 @@ -7125,53 +8316,59 @@ EOF
       
 55014  	  # assume the linker understands whole_archive_flag_spec.
       
 55015  	  # This may have to be revisited, in case too many
       
 55016  	  # convenience libraries get linked in and end up exceeding
       
 55017  	  # the spec.
       
 55018  	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
       
 55019  	    save_libobjs=$libobjs
       
 55020  	  fi
       
 55021  	  save_output=$output
       
 55022 -	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
       
 55023 +	  func_basename "$output"
       
 55024 +	  output_la=$func_basename_result
       
 55025  
       
 55026  	  # Clear the reloadable object creation command queue and
       
 55027  	  # initialize k to one.
       
 55028  	  test_cmds=
       
 55029  	  concat_cmds=
       
 55030  	  objlist=
       
 55031  	  last_robj=
       
 55032  	  k=1
       
 55033  
       
 55034  	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
       
 55035  	    output=${output_objdir}/${output_la}.lnkscript
       
 55036  	    func_verbose "creating GNU ld script: $output"
       
 55037 -	    $ECHO 'INPUT (' > $output
       
 55038 +	    echo 'INPUT (' > $output
       
 55039  	    for obj in $save_libobjs
       
 55040  	    do
       
 55041 -	      $ECHO "$obj" >> $output
       
 55042 +	      func_to_tool_file "$obj"
       
 55043 +	      $ECHO "$func_to_tool_file_result" >> $output
       
 55044  	    done
       
 55045 -	    $ECHO ')' >> $output
       
 55046 -	    delfiles="$delfiles $output"
       
 55047 +	    echo ')' >> $output
       
 55048 +	    func_append delfiles " $output"
       
 55049 +	    func_to_tool_file "$output"
       
 55050 +	    output=$func_to_tool_file_result
       
 55051  	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
       
 55052  	    output=${output_objdir}/${output_la}.lnk
       
 55053  	    func_verbose "creating linker input file list: $output"
       
 55054  	    : > $output
       
 55055  	    set x $save_libobjs
       
 55056  	    shift
       
 55057  	    firstobj=
       
 55058  	    if test "$compiler_needs_object" = yes; then
       
 55059  	      firstobj="$1 "
       
 55060  	      shift
       
 55061  	    fi
       
 55062  	    for obj
       
 55063  	    do
       
 55064 -	      $ECHO "$obj" >> $output
       
 55065 +	      func_to_tool_file "$obj"
       
 55066 +	      $ECHO "$func_to_tool_file_result" >> $output
       
 55067  	    done
       
 55068 -	    delfiles="$delfiles $output"
       
 55069 -	    output=$firstobj\"$file_list_spec$output\"
       
 55070 +	    func_append delfiles " $output"
       
 55071 +	    func_to_tool_file "$output"
       
 55072 +	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
       
 55073  	  else
       
 55074  	    if test -n "$save_libobjs"; then
       
 55075  	      func_verbose "creating reloadable object files..."
       
 55076  	      output=$output_objdir/$output_la-${k}.$objext
       
 55077  	      eval test_cmds=\"$reload_cmds\"
       
 55078  	      func_len " $test_cmds"
       
 55079  	      len0=$func_len_result
       
 55080  	      len=$len0
       
 55081 @@ -7185,41 +8382,44 @@ EOF
       
 55082  		if test "X$objlist" = X ||
       
 55083  		   test "$len" -lt "$max_cmd_len"; then
       
 55084  		  func_append objlist " $obj"
       
 55085  		else
       
 55086  		  # The command $test_cmds is almost too long, add a
       
 55087  		  # command to the queue.
       
 55088  		  if test "$k" -eq 1 ; then
       
 55089  		    # The first file doesn't have a previous command to add.
       
 55090 -		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
       
 55091 +		    reload_objs=$objlist
       
 55092 +		    eval concat_cmds=\"$reload_cmds\"
       
 55093  		  else
       
 55094  		    # All subsequent reloadable object files will link in
       
 55095  		    # the last one created.
       
 55096 -		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
       
 55097 +		    reload_objs="$objlist $last_robj"
       
 55098 +		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
       
 55099  		  fi
       
 55100  		  last_robj=$output_objdir/$output_la-${k}.$objext
       
 55101  		  func_arith $k + 1
       
 55102  		  k=$func_arith_result
       
 55103  		  output=$output_objdir/$output_la-${k}.$objext
       
 55104 -		  objlist=$obj
       
 55105 +		  objlist=" $obj"
       
 55106  		  func_len " $last_robj"
       
 55107  		  func_arith $len0 + $func_len_result
       
 55108  		  len=$func_arith_result
       
 55109  		fi
       
 55110  	      done
       
 55111  	      # Handle the remaining objects by creating one last
       
 55112  	      # reloadable object file.  All subsequent reloadable object
       
 55113  	      # files will link in the last one created.
       
 55114  	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
       
 55115 -	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
       
 55116 +	      reload_objs="$objlist $last_robj"
       
 55117 +	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
       
 55118  	      if test -n "$last_robj"; then
       
 55119  	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
       
 55120  	      fi
       
 55121 -	      delfiles="$delfiles $output"
       
 55122 +	      func_append delfiles " $output"
       
 55123  
       
 55124  	    else
       
 55125  	      output=
       
 55126  	    fi
       
 55127  
       
 55128  	    if ${skipped_export-false}; then
       
 55129  	      func_verbose "generating symbol list for \`$libname.la'"
       
 55130  	      export_symbols="$output_objdir/$libname.exp"
       
 55131 @@ -7243,17 +8443,17 @@ EOF
       
 55132  	      $opt_silent || {
       
 55133  		  func_quote_for_expand "$cmd"
       
 55134  		  eval "func_echo $func_quote_for_expand_result"
       
 55135  	      }
       
 55136  	      $opt_dry_run || eval "$cmd" || {
       
 55137  		lt_exit=$?
       
 55138  
       
 55139  		# Restore the uninstalled library and exit
       
 55140 -		if test "$mode" = relink; then
       
 55141 +		if test "$opt_mode" = relink; then
       
 55142  		  ( cd "$output_objdir" && \
       
 55143  		    $RM "${realname}T" && \
       
 55144  		    $MV "${realname}U" "$realname" )
       
 55145  		fi
       
 55146  
       
 55147  		exit $lt_exit
       
 55148  	      }
       
 55149  	    done
       
 55150 @@ -7264,29 +8464,29 @@ EOF
       
 55151  	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
       
 55152  	    fi
       
 55153  	  fi
       
 55154  
       
 55155            if ${skipped_export-false}; then
       
 55156  	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
       
 55157  	      tmp_export_symbols="$export_symbols"
       
 55158  	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
       
 55159 -	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
       
 55160 +	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
       
 55161  	    fi
       
 55162  
       
 55163  	    if test -n "$orig_export_symbols"; then
       
 55164  	      # The given exports_symbols file has to be filtered, so filter it.
       
 55165  	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
       
 55166  	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
       
 55167  	      # 's' commands which not all seds can handle. GNU sed should be fine
       
 55168  	      # though. Also, the filter scales superlinearly with the number of
       
 55169  	      # global variables. join(1) would be nice here, but unfortunately
       
 55170  	      # isn't a blessed tool.
       
 55171  	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
       
 55172 -	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
       
 55173 +	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
       
 55174  	      export_symbols=$output_objdir/$libname.def
       
 55175  	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
       
 55176  	    fi
       
 55177  	  fi
       
 55178  
       
 55179  	  libobjs=$output
       
 55180  	  # Restore the value of output.
       
 55181  	  output=$save_output
       
 55182 @@ -7317,48 +8517,48 @@ EOF
       
 55183  	if test -n "$delfiles"; then
       
 55184  	  # Append the command to remove temporary files to $cmds.
       
 55185  	  eval cmds=\"\$cmds~\$RM $delfiles\"
       
 55186  	fi
       
 55187  
       
 55188  	# Add any objects from preloaded convenience libraries
       
 55189  	if test -n "$dlprefiles"; then
       
 55190  	  gentop="$output_objdir/${outputname}x"
       
 55191 -	  generated="$generated $gentop"
       
 55192 +	  func_append generated " $gentop"
       
 55193  
       
 55194  	  func_extract_archives $gentop $dlprefiles
       
 55195 -	  libobjs="$libobjs $func_extract_archives_result"
       
 55196 +	  func_append libobjs " $func_extract_archives_result"
       
 55197  	  test "X$libobjs" = "X " && libobjs=
       
 55198  	fi
       
 55199  
       
 55200  	save_ifs="$IFS"; IFS='~'
       
 55201  	for cmd in $cmds; do
       
 55202  	  IFS="$save_ifs"
       
 55203  	  eval cmd=\"$cmd\"
       
 55204  	  $opt_silent || {
       
 55205  	    func_quote_for_expand "$cmd"
       
 55206  	    eval "func_echo $func_quote_for_expand_result"
       
 55207  	  }
       
 55208  	  $opt_dry_run || eval "$cmd" || {
       
 55209  	    lt_exit=$?
       
 55210  
       
 55211  	    # Restore the uninstalled library and exit
       
 55212 -	    if test "$mode" = relink; then
       
 55213 +	    if test "$opt_mode" = relink; then
       
 55214  	      ( cd "$output_objdir" && \
       
 55215  	        $RM "${realname}T" && \
       
 55216  		$MV "${realname}U" "$realname" )
       
 55217  	    fi
       
 55218  
       
 55219  	    exit $lt_exit
       
 55220  	  }
       
 55221  	done
       
 55222  	IFS="$save_ifs"
       
 55223  
       
 55224  	# Restore the uninstalled library and exit
       
 55225 -	if test "$mode" = relink; then
       
 55226 +	if test "$opt_mode" = relink; then
       
 55227  	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
       
 55228  
       
 55229  	  if test -n "$convenience"; then
       
 55230  	    if test -z "$whole_archive_flag_spec"; then
       
 55231  	      func_show_eval '${RM}r "$gentop"'
       
 55232  	    fi
       
 55233  	  fi
       
 55234  
       
 55235 @@ -7429,28 +8629,31 @@ EOF
       
 55236        # reload_cmds runs $LD directly, so let us get rid of
       
 55237        # -Wl from whole_archive_flag_spec and hope we can get by with
       
 55238        # turning comma into space..
       
 55239        wl=
       
 55240  
       
 55241        if test -n "$convenience"; then
       
 55242  	if test -n "$whole_archive_flag_spec"; then
       
 55243  	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
       
 55244 -	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
       
 55245 +	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
       
 55246  	else
       
 55247  	  gentop="$output_objdir/${obj}x"
       
 55248 -	  generated="$generated $gentop"
       
 55249 +	  func_append generated " $gentop"
       
 55250  
       
 55251  	  func_extract_archives $gentop $convenience
       
 55252  	  reload_conv_objs="$reload_objs $func_extract_archives_result"
       
 55253  	fi
       
 55254        fi
       
 55255  
       
 55256 +      # If we're not building shared, we need to use non_pic_objs
       
 55257 +      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
       
 55258 +
       
 55259        # Create the old-style object.
       
 55260 -      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
       
 55261 +      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
       
 55262  
       
 55263        output="$obj"
       
 55264        func_execute_cmds "$reload_cmds" 'exit $?'
       
 55265  
       
 55266        # Exit if we aren't doing a library object file.
       
 55267        if test -z "$libobj"; then
       
 55268  	if test -n "$gentop"; then
       
 55269  	  func_show_eval '${RM}r "$gentop"'
       
 55270 @@ -7500,78 +8703,78 @@ EOF
       
 55271          && test "$dlopen_support" = unknown \
       
 55272  	&& test "$dlopen_self" = unknown \
       
 55273  	&& test "$dlopen_self_static" = unknown && \
       
 55274  	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
       
 55275  
       
 55276        case $host in
       
 55277        *-*-rhapsody* | *-*-darwin1.[012])
       
 55278  	# On Rhapsody replace the C library is the System framework
       
 55279 -	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
       
 55280 -	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
       
 55281 +	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
       
 55282 +	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
       
 55283  	;;
       
 55284        esac
       
 55285  
       
 55286        case $host in
       
 55287        *-*-darwin*)
       
 55288  	# Don't allow lazy linking, it breaks C++ global constructors
       
 55289  	# But is supposedly fixed on 10.4 or later (yay!).
       
 55290  	if test "$tagname" = CXX ; then
       
 55291  	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
       
 55292  	    10.[0123])
       
 55293 -	      compile_command="$compile_command ${wl}-bind_at_load"
       
 55294 -	      finalize_command="$finalize_command ${wl}-bind_at_load"
       
 55295 +	      func_append compile_command " ${wl}-bind_at_load"
       
 55296 +	      func_append finalize_command " ${wl}-bind_at_load"
       
 55297  	    ;;
       
 55298  	  esac
       
 55299  	fi
       
 55300  	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
       
 55301 -	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 55302 -	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 55303 +	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 55304 +	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
       
 55305  	;;
       
 55306        esac
       
 55307  
       
 55308  
       
 55309        # move library search paths that coincide with paths to not yet
       
 55310        # installed libraries to the beginning of the library search list
       
 55311        new_libs=
       
 55312        for path in $notinst_path; do
       
 55313  	case " $new_libs " in
       
 55314  	*" -L$path/$objdir "*) ;;
       
 55315  	*)
       
 55316  	  case " $compile_deplibs " in
       
 55317  	  *" -L$path/$objdir "*)
       
 55318 -	    new_libs="$new_libs -L$path/$objdir" ;;
       
 55319 +	    func_append new_libs " -L$path/$objdir" ;;
       
 55320  	  esac
       
 55321  	  ;;
       
 55322  	esac
       
 55323        done
       
 55324        for deplib in $compile_deplibs; do
       
 55325  	case $deplib in
       
 55326  	-L*)
       
 55327  	  case " $new_libs " in
       
 55328  	  *" $deplib "*) ;;
       
 55329 -	  *) new_libs="$new_libs $deplib" ;;
       
 55330 +	  *) func_append new_libs " $deplib" ;;
       
 55331  	  esac
       
 55332  	  ;;
       
 55333 -	*) new_libs="$new_libs $deplib" ;;
       
 55334 +	*) func_append new_libs " $deplib" ;;
       
 55335  	esac
       
 55336        done
       
 55337        compile_deplibs="$new_libs"
       
 55338  
       
 55339  
       
 55340 -      compile_command="$compile_command $compile_deplibs"
       
 55341 -      finalize_command="$finalize_command $finalize_deplibs"
       
 55342 +      func_append compile_command " $compile_deplibs"
       
 55343 +      func_append finalize_command " $finalize_deplibs"
       
 55344  
       
 55345        if test -n "$rpath$xrpath"; then
       
 55346  	# If the user specified any rpath flags, then add them.
       
 55347  	for libdir in $rpath $xrpath; do
       
 55348  	  # This is the magic to use -rpath.
       
 55349  	  case "$finalize_rpath " in
       
 55350  	  *" $libdir "*) ;;
       
 55351 -	  *) finalize_rpath="$finalize_rpath $libdir" ;;
       
 55352 +	  *) func_append finalize_rpath " $libdir" ;;
       
 55353  	  esac
       
 55354  	done
       
 55355        fi
       
 55356  
       
 55357        # Now hardcode the library paths
       
 55358        rpath=
       
 55359        hardcode_libdirs=
       
 55360        for libdir in $compile_rpath $finalize_rpath; do
       
 55361 @@ -7580,42 +8783,42 @@ EOF
       
 55362  	    if test -z "$hardcode_libdirs"; then
       
 55363  	      hardcode_libdirs="$libdir"
       
 55364  	    else
       
 55365  	      # Just accumulate the unique libdirs.
       
 55366  	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
       
 55367  	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
       
 55368  		;;
       
 55369  	      *)
       
 55370 -		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
       
 55371 +		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
       
 55372  		;;
       
 55373  	      esac
       
 55374  	    fi
       
 55375  	  else
       
 55376  	    eval flag=\"$hardcode_libdir_flag_spec\"
       
 55377 -	    rpath="$rpath $flag"
       
 55378 +	    func_append rpath " $flag"
       
 55379  	  fi
       
 55380  	elif test -n "$runpath_var"; then
       
 55381  	  case "$perm_rpath " in
       
 55382  	  *" $libdir "*) ;;
       
 55383 -	  *) perm_rpath="$perm_rpath $libdir" ;;
       
 55384 +	  *) func_append perm_rpath " $libdir" ;;
       
 55385  	  esac
       
 55386  	fi
       
 55387  	case $host in
       
 55388  	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
       
 55389  	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
       
 55390  	  case :$dllsearchpath: in
       
 55391  	  *":$libdir:"*) ;;
       
 55392  	  ::) dllsearchpath=$libdir;;
       
 55393 -	  *) dllsearchpath="$dllsearchpath:$libdir";;
       
 55394 +	  *) func_append dllsearchpath ":$libdir";;
       
 55395  	  esac
       
 55396  	  case :$dllsearchpath: in
       
 55397  	  *":$testbindir:"*) ;;
       
 55398  	  ::) dllsearchpath=$testbindir;;
       
 55399 -	  *) dllsearchpath="$dllsearchpath:$testbindir";;
       
 55400 +	  *) func_append dllsearchpath ":$testbindir";;
       
 55401  	  esac
       
 55402  	  ;;
       
 55403  	esac
       
 55404        done
       
 55405        # Substitute the hardcoded libdirs into the rpath.
       
 55406        if test -n "$hardcode_libdir_separator" &&
       
 55407  	 test -n "$hardcode_libdirs"; then
       
 55408  	libdir="$hardcode_libdirs"
       
 55409 @@ -7631,78 +8834,84 @@ EOF
       
 55410  	    if test -z "$hardcode_libdirs"; then
       
 55411  	      hardcode_libdirs="$libdir"
       
 55412  	    else
       
 55413  	      # Just accumulate the unique libdirs.
       
 55414  	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
       
 55415  	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
       
 55416  		;;
       
 55417  	      *)
       
 55418 -		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
       
 55419 +		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
       
 55420  		;;
       
 55421  	      esac
       
 55422  	    fi
       
 55423  	  else
       
 55424  	    eval flag=\"$hardcode_libdir_flag_spec\"
       
 55425 -	    rpath="$rpath $flag"
       
 55426 +	    func_append rpath " $flag"
       
 55427  	  fi
       
 55428  	elif test -n "$runpath_var"; then
       
 55429  	  case "$finalize_perm_rpath " in
       
 55430  	  *" $libdir "*) ;;
       
 55431 -	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
       
 55432 +	  *) func_append finalize_perm_rpath " $libdir" ;;
       
 55433  	  esac
       
 55434  	fi
       
 55435        done
       
 55436        # Substitute the hardcoded libdirs into the rpath.
       
 55437        if test -n "$hardcode_libdir_separator" &&
       
 55438  	 test -n "$hardcode_libdirs"; then
       
 55439  	libdir="$hardcode_libdirs"
       
 55440  	eval rpath=\" $hardcode_libdir_flag_spec\"
       
 55441        fi
       
 55442        finalize_rpath="$rpath"
       
 55443  
       
 55444        if test -n "$libobjs" && test "$build_old_libs" = yes; then
       
 55445  	# Transform all the library objects into standard objects.
       
 55446 -	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
       
 55447 -	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
       
 55448 +	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
       
 55449 +	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
       
 55450        fi
       
 55451  
       
 55452        func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
       
 55453  
       
 55454        # template prelinking step
       
 55455        if test -n "$prelink_cmds"; then
       
 55456  	func_execute_cmds "$prelink_cmds" 'exit $?'
       
 55457        fi
       
 55458  
       
 55459        wrappers_required=yes
       
 55460        case $host in
       
 55461 +      *cegcc* | *mingw32ce*)
       
 55462 +        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
       
 55463 +        wrappers_required=no
       
 55464 +        ;;
       
 55465        *cygwin* | *mingw* )
       
 55466          if test "$build_libtool_libs" != yes; then
       
 55467            wrappers_required=no
       
 55468          fi
       
 55469          ;;
       
 55470 -      *cegcc)
       
 55471 -        # Disable wrappers for cegcc, we are cross compiling anyway.
       
 55472 -        wrappers_required=no
       
 55473 -        ;;
       
 55474        *)
       
 55475          if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
       
 55476            wrappers_required=no
       
 55477          fi
       
 55478          ;;
       
 55479        esac
       
 55480        if test "$wrappers_required" = no; then
       
 55481  	# Replace the output file specification.
       
 55482 -	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
       
 55483 +	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
       
 55484  	link_command="$compile_command$compile_rpath"
       
 55485  
       
 55486  	# We have no uninstalled library dependencies, so finalize right now.
       
 55487  	exit_status=0
       
 55488  	func_show_eval "$link_command" 'exit_status=$?'
       
 55489  
       
 55490 +	if test -n "$postlink_cmds"; then
       
 55491 +	  func_to_tool_file "$output"
       
 55492 +	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
       
 55493 +	  func_execute_cmds "$postlink_cmds" 'exit $?'
       
 55494 +	fi
       
 55495 +
       
 55496  	# Delete the generated files.
       
 55497  	if test -f "$output_objdir/${outputname}S.${objext}"; then
       
 55498  	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
       
 55499  	fi
       
 55500  
       
 55501  	exit $exit_status
       
 55502        fi
       
 55503  
       
 55504 @@ -7715,72 +8924,85 @@ EOF
       
 55505  
       
 55506        compile_var=
       
 55507        finalize_var=
       
 55508        if test -n "$runpath_var"; then
       
 55509  	if test -n "$perm_rpath"; then
       
 55510  	  # We should set the runpath_var.
       
 55511  	  rpath=
       
 55512  	  for dir in $perm_rpath; do
       
 55513 -	    rpath="$rpath$dir:"
       
 55514 +	    func_append rpath "$dir:"
       
 55515  	  done
       
 55516  	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
       
 55517  	fi
       
 55518  	if test -n "$finalize_perm_rpath"; then
       
 55519  	  # We should set the runpath_var.
       
 55520  	  rpath=
       
 55521  	  for dir in $finalize_perm_rpath; do
       
 55522 -	    rpath="$rpath$dir:"
       
 55523 +	    func_append rpath "$dir:"
       
 55524  	  done
       
 55525  	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
       
 55526  	fi
       
 55527        fi
       
 55528  
       
 55529        if test "$no_install" = yes; then
       
 55530  	# We don't need to create a wrapper script.
       
 55531  	link_command="$compile_var$compile_command$compile_rpath"
       
 55532  	# Replace the output file specification.
       
 55533 -	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
       
 55534 +	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
       
 55535  	# Delete the old output file.
       
 55536  	$opt_dry_run || $RM $output
       
 55537  	# Link the executable and exit
       
 55538  	func_show_eval "$link_command" 'exit $?'
       
 55539 +
       
 55540 +	if test -n "$postlink_cmds"; then
       
 55541 +	  func_to_tool_file "$output"
       
 55542 +	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
       
 55543 +	  func_execute_cmds "$postlink_cmds" 'exit $?'
       
 55544 +	fi
       
 55545 +
       
 55546  	exit $EXIT_SUCCESS
       
 55547        fi
       
 55548  
       
 55549        if test "$hardcode_action" = relink; then
       
 55550  	# Fast installation is not supported
       
 55551  	link_command="$compile_var$compile_command$compile_rpath"
       
 55552  	relink_command="$finalize_var$finalize_command$finalize_rpath"
       
 55553  
       
 55554  	func_warning "this platform does not like uninstalled shared libraries"
       
 55555  	func_warning "\`$output' will be relinked during installation"
       
 55556        else
       
 55557  	if test "$fast_install" != no; then
       
 55558  	  link_command="$finalize_var$compile_command$finalize_rpath"
       
 55559  	  if test "$fast_install" = yes; then
       
 55560 -	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
       
 55561 +	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
       
 55562  	  else
       
 55563  	    # fast_install is set to needless
       
 55564  	    relink_command=
       
 55565  	  fi
       
 55566  	else
       
 55567  	  link_command="$compile_var$compile_command$compile_rpath"
       
 55568  	  relink_command="$finalize_var$finalize_command$finalize_rpath"
       
 55569  	fi
       
 55570        fi
       
 55571  
       
 55572        # Replace the output file specification.
       
 55573 -      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
       
 55574 +      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
       
 55575  
       
 55576        # Delete the old output files.
       
 55577        $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
       
 55578  
       
 55579        func_show_eval "$link_command" 'exit $?'
       
 55580  
       
 55581 +      if test -n "$postlink_cmds"; then
       
 55582 +	func_to_tool_file "$output_objdir/$outputname"
       
 55583 +	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'`
       
 55584 +	func_execute_cmds "$postlink_cmds" 'exit $?'
       
 55585 +      fi
       
 55586 +
       
 55587        # Now create the wrapper script.
       
 55588        func_verbose "creating $output"
       
 55589  
       
 55590        # Quote the relink command for shipping.
       
 55591        if test -n "$relink_command"; then
       
 55592  	# Preserve any variables that may affect compiler behavior
       
 55593  	for var in $variables_saved_for_relink; do
       
 55594  	  if eval test -z \"\${$var+set}\"; then
       
 55595 @@ -7788,28 +9010,17 @@ EOF
       
 55596  	  elif eval var_value=\$$var; test -z "$var_value"; then
       
 55597  	    relink_command="$var=; export $var; $relink_command"
       
 55598  	  else
       
 55599  	    func_quote_for_eval "$var_value"
       
 55600  	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
       
 55601  	  fi
       
 55602  	done
       
 55603  	relink_command="(cd `pwd`; $relink_command)"
       
 55604 -	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
       
 55605 -      fi
       
 55606 -
       
 55607 -      # Quote $ECHO for shipping.
       
 55608 -      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
       
 55609 -	case $progpath in
       
 55610 -	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
       
 55611 -	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
       
 55612 -	esac
       
 55613 -	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
       
 55614 -      else
       
 55615 -	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
       
 55616 +	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
       
 55617        fi
       
 55618  
       
 55619        # Only actually do things if not in dry run mode.
       
 55620        $opt_dry_run || {
       
 55621  	# win32 will think the script is a binary if it has
       
 55622  	# a .exe suffix, so we strip it off here.
       
 55623  	case $output in
       
 55624  	  *.exe) func_stripname '' '.exe' "$output"
       
 55625 @@ -7879,60 +9090,60 @@ EOF
       
 55626  	build_libtool_libs=no
       
 55627        else
       
 55628  	if test "$build_libtool_libs" = module; then
       
 55629  	  oldobjs="$libobjs_save"
       
 55630  	  build_libtool_libs=no
       
 55631  	else
       
 55632  	  oldobjs="$old_deplibs $non_pic_objects"
       
 55633  	  if test "$preload" = yes && test -f "$symfileobj"; then
       
 55634 -	    oldobjs="$oldobjs $symfileobj"
       
 55635 +	    func_append oldobjs " $symfileobj"
       
 55636  	  fi
       
 55637  	fi
       
 55638  	addlibs="$old_convenience"
       
 55639        fi
       
 55640  
       
 55641        if test -n "$addlibs"; then
       
 55642  	gentop="$output_objdir/${outputname}x"
       
 55643 -	generated="$generated $gentop"
       
 55644 +	func_append generated " $gentop"
       
 55645  
       
 55646  	func_extract_archives $gentop $addlibs
       
 55647 -	oldobjs="$oldobjs $func_extract_archives_result"
       
 55648 +	func_append oldobjs " $func_extract_archives_result"
       
 55649        fi
       
 55650  
       
 55651        # Do each command in the archive commands.
       
 55652        if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
       
 55653  	cmds=$old_archive_from_new_cmds
       
 55654        else
       
 55655  
       
 55656  	# Add any objects from preloaded convenience libraries
       
 55657  	if test -n "$dlprefiles"; then
       
 55658  	  gentop="$output_objdir/${outputname}x"
       
 55659 -	  generated="$generated $gentop"
       
 55660 +	  func_append generated " $gentop"
       
 55661  
       
 55662  	  func_extract_archives $gentop $dlprefiles
       
 55663 -	  oldobjs="$oldobjs $func_extract_archives_result"
       
 55664 +	  func_append oldobjs " $func_extract_archives_result"
       
 55665  	fi
       
 55666  
       
 55667  	# POSIX demands no paths to be encoded in archives.  We have
       
 55668  	# to avoid creating archives with duplicate basenames if we
       
 55669  	# might have to extract them afterwards, e.g., when creating a
       
 55670  	# static archive out of a convenience library, or when linking
       
 55671  	# the entirety of a libtool archive into another (currently
       
 55672  	# not supported by libtool).
       
 55673  	if (for obj in $oldobjs
       
 55674  	    do
       
 55675  	      func_basename "$obj"
       
 55676  	      $ECHO "$func_basename_result"
       
 55677  	    done | sort | sort -uc >/dev/null 2>&1); then
       
 55678  	  :
       
 55679  	else
       
 55680 -	  $ECHO "copying selected object files to avoid basename conflicts..."
       
 55681 +	  echo "copying selected object files to avoid basename conflicts..."
       
 55682  	  gentop="$output_objdir/${outputname}x"
       
 55683 -	  generated="$generated $gentop"
       
 55684 +	  func_append generated " $gentop"
       
 55685  	  func_mkdir_p "$gentop"
       
 55686  	  save_oldobjs=$oldobjs
       
 55687  	  oldobjs=
       
 55688  	  counter=1
       
 55689  	  for obj in $save_oldobjs
       
 55690  	  do
       
 55691  	    func_basename "$obj"
       
 55692  	    objbase="$func_basename_result"
       
 55693 @@ -7946,28 +9157,40 @@ EOF
       
 55694  		func_arith $counter + 1
       
 55695  		counter=$func_arith_result
       
 55696  		case " $oldobjs " in
       
 55697  		*[\ /]"$newobj "*) ;;
       
 55698  		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
       
 55699  		esac
       
 55700  	      done
       
 55701  	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
       
 55702 -	      oldobjs="$oldobjs $gentop/$newobj"
       
 55703 +	      func_append oldobjs " $gentop/$newobj"
       
 55704  	      ;;
       
 55705 -	    *) oldobjs="$oldobjs $obj" ;;
       
 55706 +	    *) func_append oldobjs " $obj" ;;
       
 55707  	    esac
       
 55708  	  done
       
 55709  	fi
       
 55710 +	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
       
 55711 +	tool_oldlib=$func_to_tool_file_result
       
 55712  	eval cmds=\"$old_archive_cmds\"
       
 55713  
       
 55714  	func_len " $cmds"
       
 55715  	len=$func_len_result
       
 55716  	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
       
 55717  	  cmds=$old_archive_cmds
       
 55718 +	elif test -n "$archiver_list_spec"; then
       
 55719 +	  func_verbose "using command file archive linking..."
       
 55720 +	  for obj in $oldobjs
       
 55721 +	  do
       
 55722 +	    func_to_tool_file "$obj"
       
 55723 +	    $ECHO "$func_to_tool_file_result"
       
 55724 +	  done > $output_objdir/$libname.libcmd
       
 55725 +	  func_to_tool_file "$output_objdir/$libname.libcmd"
       
 55726 +	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
       
 55727 +	  cmds=$old_archive_cmds
       
 55728  	else
       
 55729  	  # the command line is too long to link in one step, link in parts
       
 55730  	  func_verbose "using piecewise archive linking..."
       
 55731  	  save_RANLIB=$RANLIB
       
 55732  	  RANLIB=:
       
 55733  	  objlist=
       
 55734  	  concat_cmds=
       
 55735  	  save_oldobjs=$oldobjs
       
 55736 @@ -8031,17 +9254,17 @@ EOF
       
 55737  	  relink_command="$var=; export $var; $relink_command"
       
 55738  	else
       
 55739  	  func_quote_for_eval "$var_value"
       
 55740  	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
       
 55741  	fi
       
 55742        done
       
 55743        # Quote the link command for shipping.
       
 55744        relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
       
 55745 -      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
       
 55746 +      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
       
 55747        if test "$hardcode_automatic" = yes ; then
       
 55748  	relink_command=
       
 55749        fi
       
 55750  
       
 55751        # Only create the output if not a dry run.
       
 55752        $opt_dry_run || {
       
 55753  	for installed in no yes; do
       
 55754  	  if test "$installed" = yes; then
       
 55755 @@ -8051,84 +9274,113 @@ EOF
       
 55756  	    output="$output_objdir/$outputname"i
       
 55757  	    # Replace all uninstalled libtool libraries with the installed ones
       
 55758  	    newdependency_libs=
       
 55759  	    for deplib in $dependency_libs; do
       
 55760  	      case $deplib in
       
 55761  	      *.la)
       
 55762  		func_basename "$deplib"
       
 55763  		name="$func_basename_result"
       
 55764 -		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
       
 55765 +		func_resolve_sysroot "$deplib"
       
 55766 +		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
       
 55767  		test -z "$libdir" && \
       
 55768  		  func_fatal_error "\`$deplib' is not a valid libtool archive"
       
 55769 -		newdependency_libs="$newdependency_libs $libdir/$name"
       
 55770 +		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
       
 55771  		;;
       
 55772 -	      *) newdependency_libs="$newdependency_libs $deplib" ;;
       
 55773 +	      -L*)
       
 55774 +		func_stripname -L '' "$deplib"
       
 55775 +		func_replace_sysroot "$func_stripname_result"
       
 55776 +		func_append newdependency_libs " -L$func_replace_sysroot_result"
       
 55777 +		;;
       
 55778 +	      -R*)
       
 55779 +		func_stripname -R '' "$deplib"
       
 55780 +		func_replace_sysroot "$func_stripname_result"
       
 55781 +		func_append newdependency_libs " -R$func_replace_sysroot_result"
       
 55782 +		;;
       
 55783 +	      *) func_append newdependency_libs " $deplib" ;;
       
 55784  	      esac
       
 55785  	    done
       
 55786  	    dependency_libs="$newdependency_libs"
       
 55787  	    newdlfiles=
       
 55788  
       
 55789  	    for lib in $dlfiles; do
       
 55790  	      case $lib in
       
 55791  	      *.la)
       
 55792  	        func_basename "$lib"
       
 55793  		name="$func_basename_result"
       
 55794  		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
       
 55795  		test -z "$libdir" && \
       
 55796  		  func_fatal_error "\`$lib' is not a valid libtool archive"
       
 55797 -		newdlfiles="$newdlfiles $libdir/$name"
       
 55798 +		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
       
 55799  		;;
       
 55800 -	      *) newdlfiles="$newdlfiles $lib" ;;
       
 55801 +	      *) func_append newdlfiles " $lib" ;;
       
 55802  	      esac
       
 55803  	    done
       
 55804  	    dlfiles="$newdlfiles"
       
 55805  	    newdlprefiles=
       
 55806  	    for lib in $dlprefiles; do
       
 55807  	      case $lib in
       
 55808  	      *.la)
       
 55809  		# Only pass preopened files to the pseudo-archive (for
       
 55810  		# eventual linking with the app. that links it) if we
       
 55811  		# didn't already link the preopened objects directly into
       
 55812  		# the library:
       
 55813  		func_basename "$lib"
       
 55814  		name="$func_basename_result"
       
 55815  		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
       
 55816  		test -z "$libdir" && \
       
 55817  		  func_fatal_error "\`$lib' is not a valid libtool archive"
       
 55818 -		newdlprefiles="$newdlprefiles $libdir/$name"
       
 55819 +		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
       
 55820  		;;
       
 55821  	      esac
       
 55822  	    done
       
 55823  	    dlprefiles="$newdlprefiles"
       
 55824  	  else
       
 55825  	    newdlfiles=
       
 55826  	    for lib in $dlfiles; do
       
 55827  	      case $lib in
       
 55828  		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
       
 55829  		*) abs=`pwd`"/$lib" ;;
       
 55830  	      esac
       
 55831 -	      newdlfiles="$newdlfiles $abs"
       
 55832 +	      func_append newdlfiles " $abs"
       
 55833  	    done
       
 55834  	    dlfiles="$newdlfiles"
       
 55835  	    newdlprefiles=
       
 55836  	    for lib in $dlprefiles; do
       
 55837  	      case $lib in
       
 55838  		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
       
 55839  		*) abs=`pwd`"/$lib" ;;
       
 55840  	      esac
       
 55841 -	      newdlprefiles="$newdlprefiles $abs"
       
 55842 +	      func_append newdlprefiles " $abs"
       
 55843  	    done
       
 55844  	    dlprefiles="$newdlprefiles"
       
 55845  	  fi
       
 55846  	  $RM $output
       
 55847  	  # place dlname in correct position for cygwin
       
 55848 +	  # In fact, it would be nice if we could use this code for all target
       
 55849 +	  # systems that can't hard-code library paths into their executables
       
 55850 +	  # and that have no shared library path variable independent of PATH,
       
 55851 +	  # but it turns out we can't easily determine that from inspecting
       
 55852 +	  # libtool variables, so we have to hard-code the OSs to which it
       
 55853 +	  # applies here; at the moment, that means platforms that use the PE
       
 55854 +	  # object format with DLL files.  See the long comment at the top of
       
 55855 +	  # tests/bindir.at for full details.
       
 55856  	  tdlname=$dlname
       
 55857  	  case $host,$output,$installed,$module,$dlname in
       
 55858 -	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
       
 55859 +	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
       
 55860 +	      # If a -bindir argument was supplied, place the dll there.
       
 55861 +	      if test "x$bindir" != x ;
       
 55862 +	      then
       
 55863 +		func_relative_path "$install_libdir" "$bindir"
       
 55864 +		tdlname=$func_relative_path_result$dlname
       
 55865 +	      else
       
 55866 +		# Otherwise fall back on heuristic.
       
 55867 +		tdlname=../bin/$dlname
       
 55868 +	      fi
       
 55869 +	      ;;
       
 55870  	  esac
       
 55871  	  $ECHO > $output "\
       
 55872  # $outputname - a libtool library file
       
 55873  # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
       
 55874  #
       
 55875  # Please DO NOT delete this file!
       
 55876  # It is necessary for linking the library.
       
 55877  
       
 55878 @@ -8177,17 +9429,17 @@ relink_command=\"$relink_command\""
       
 55879        # Do a symbolic link so that the libtool archive can be found in
       
 55880        # LD_LIBRARY_PATH before the program is installed.
       
 55881        func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
       
 55882        ;;
       
 55883      esac
       
 55884      exit $EXIT_SUCCESS
       
 55885  }
       
 55886  
       
 55887 -{ test "$mode" = link || test "$mode" = relink; } &&
       
 55888 +{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
       
 55889      func_mode_link ${1+"$@"}
       
 55890  
       
 55891  
       
 55892  # func_mode_uninstall arg...
       
 55893  func_mode_uninstall ()
       
 55894  {
       
 55895      $opt_debug
       
 55896      RM="$nonopt"
       
 55897 @@ -8197,45 +9449,44 @@ func_mode_uninstall ()
       
 55898  
       
 55899      # This variable tells wrapper scripts just to set variables rather
       
 55900      # than running their programs.
       
 55901      libtool_install_magic="$magic"
       
 55902  
       
 55903      for arg
       
 55904      do
       
 55905        case $arg in
       
 55906 -      -f) RM="$RM $arg"; rmforce=yes ;;
       
 55907 -      -*) RM="$RM $arg" ;;
       
 55908 -      *) files="$files $arg" ;;
       
 55909 +      -f) func_append RM " $arg"; rmforce=yes ;;
       
 55910 +      -*) func_append RM " $arg" ;;
       
 55911 +      *) func_append files " $arg" ;;
       
 55912        esac
       
 55913      done
       
 55914  
       
 55915      test -z "$RM" && \
       
 55916        func_fatal_help "you must specify an RM program"
       
 55917  
       
 55918      rmdirs=
       
 55919  
       
 55920 -    origobjdir="$objdir"
       
 55921      for file in $files; do
       
 55922        func_dirname "$file" "" "."
       
 55923        dir="$func_dirname_result"
       
 55924        if test "X$dir" = X.; then
       
 55925 -	objdir="$origobjdir"
       
 55926 +	odir="$objdir"
       
 55927        else
       
 55928 -	objdir="$dir/$origobjdir"
       
 55929 +	odir="$dir/$objdir"
       
 55930        fi
       
 55931        func_basename "$file"
       
 55932        name="$func_basename_result"
       
 55933 -      test "$mode" = uninstall && objdir="$dir"
       
 55934 -
       
 55935 -      # Remember objdir for removal later, being careful to avoid duplicates
       
 55936 -      if test "$mode" = clean; then
       
 55937 +      test "$opt_mode" = uninstall && odir="$dir"
       
 55938 +
       
 55939 +      # Remember odir for removal later, being careful to avoid duplicates
       
 55940 +      if test "$opt_mode" = clean; then
       
 55941  	case " $rmdirs " in
       
 55942 -	  *" $objdir "*) ;;
       
 55943 -	  *) rmdirs="$rmdirs $objdir" ;;
       
 55944 +	  *" $odir "*) ;;
       
 55945 +	  *) func_append rmdirs " $odir" ;;
       
 55946  	esac
       
 55947        fi
       
 55948  
       
 55949        # Don't error if the file doesn't exist and rm -f was used.
       
 55950        if { test -L "$file"; } >/dev/null 2>&1 ||
       
 55951  	 { test -h "$file"; } >/dev/null 2>&1 ||
       
 55952  	 test -f "$file"; then
       
 55953  	:
       
 55954 @@ -8251,28 +9502,27 @@ func_mode_uninstall ()
       
 55955        case $name in
       
 55956        *.la)
       
 55957  	# Possibly a libtool archive, so verify it.
       
 55958  	if func_lalib_p "$file"; then
       
 55959  	  func_source $dir/$name
       
 55960  
       
 55961  	  # Delete the libtool libraries and symlinks.
       
 55962  	  for n in $library_names; do
       
 55963 -	    rmfiles="$rmfiles $objdir/$n"
       
 55964 +	    func_append rmfiles " $odir/$n"
       
 55965  	  done
       
 55966 -	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
       
 55967 -
       
 55968 -	  case "$mode" in
       
 55969 +	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
       
 55970 +
       
 55971 +	  case "$opt_mode" in
       
 55972  	  clean)
       
 55973 -	    case "  $library_names " in
       
 55974 -	    # "  " in the beginning catches empty $dlname
       
 55975 +	    case " $library_names " in
       
 55976  	    *" $dlname "*) ;;
       
 55977 -	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
       
 55978 +	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
       
 55979  	    esac
       
 55980 -	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
       
 55981 +	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
       
 55982  	    ;;
       
 55983  	  uninstall)
       
 55984  	    if test -n "$library_names"; then
       
 55985  	      # Do each command in the postuninstall commands.
       
 55986  	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
       
 55987  	    fi
       
 55988  
       
 55989  	    if test -n "$old_library"; then
       
 55990 @@ -8290,90 +9540,89 @@ func_mode_uninstall ()
       
 55991  	if func_lalib_p "$file"; then
       
 55992  
       
 55993  	  # Read the .lo file
       
 55994  	  func_source $dir/$name
       
 55995  
       
 55996  	  # Add PIC object to the list of files to remove.
       
 55997  	  if test -n "$pic_object" &&
       
 55998  	     test "$pic_object" != none; then
       
 55999 -	    rmfiles="$rmfiles $dir/$pic_object"
       
 56000 +	    func_append rmfiles " $dir/$pic_object"
       
 56001  	  fi
       
 56002  
       
 56003  	  # Add non-PIC object to the list of files to remove.
       
 56004  	  if test -n "$non_pic_object" &&
       
 56005  	     test "$non_pic_object" != none; then
       
 56006 -	    rmfiles="$rmfiles $dir/$non_pic_object"
       
 56007 +	    func_append rmfiles " $dir/$non_pic_object"
       
 56008  	  fi
       
 56009  	fi
       
 56010  	;;
       
 56011  
       
 56012        *)
       
 56013 -	if test "$mode" = clean ; then
       
 56014 +	if test "$opt_mode" = clean ; then
       
 56015  	  noexename=$name
       
 56016  	  case $file in
       
 56017  	  *.exe)
       
 56018  	    func_stripname '' '.exe' "$file"
       
 56019  	    file=$func_stripname_result
       
 56020  	    func_stripname '' '.exe' "$name"
       
 56021  	    noexename=$func_stripname_result
       
 56022  	    # $file with .exe has already been added to rmfiles,
       
 56023  	    # add $file without .exe
       
 56024 -	    rmfiles="$rmfiles $file"
       
 56025 +	    func_append rmfiles " $file"
       
 56026  	    ;;
       
 56027  	  esac
       
 56028  	  # Do a test to see if this is a libtool program.
       
 56029  	  if func_ltwrapper_p "$file"; then
       
 56030  	    if func_ltwrapper_executable_p "$file"; then
       
 56031  	      func_ltwrapper_scriptname "$file"
       
 56032  	      relink_command=
       
 56033  	      func_source $func_ltwrapper_scriptname_result
       
 56034 -	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
       
 56035 +	      func_append rmfiles " $func_ltwrapper_scriptname_result"
       
 56036  	    else
       
 56037  	      relink_command=
       
 56038  	      func_source $dir/$noexename
       
 56039  	    fi
       
 56040  
       
 56041  	    # note $name still contains .exe if it was in $file originally
       
 56042  	    # as does the version of $file that was added into $rmfiles
       
 56043 -	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
       
 56044 +	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
       
 56045  	    if test "$fast_install" = yes && test -n "$relink_command"; then
       
 56046 -	      rmfiles="$rmfiles $objdir/lt-$name"
       
 56047 +	      func_append rmfiles " $odir/lt-$name"
       
 56048  	    fi
       
 56049  	    if test "X$noexename" != "X$name" ; then
       
 56050 -	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
       
 56051 +	      func_append rmfiles " $odir/lt-${noexename}.c"
       
 56052  	    fi
       
 56053  	  fi
       
 56054  	fi
       
 56055  	;;
       
 56056        esac
       
 56057        func_show_eval "$RM $rmfiles" 'exit_status=1'
       
 56058      done
       
 56059 -    objdir="$origobjdir"
       
 56060  
       
 56061      # Try to remove the ${objdir}s in the directories where we deleted files
       
 56062      for dir in $rmdirs; do
       
 56063        if test -d "$dir"; then
       
 56064  	func_show_eval "rmdir $dir >/dev/null 2>&1"
       
 56065        fi
       
 56066      done
       
 56067  
       
 56068      exit $exit_status
       
 56069  }
       
 56070  
       
 56071 -{ test "$mode" = uninstall || test "$mode" = clean; } &&
       
 56072 +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
       
 56073      func_mode_uninstall ${1+"$@"}
       
 56074  
       
 56075 -test -z "$mode" && {
       
 56076 +test -z "$opt_mode" && {
       
 56077    help="$generic_help"
       
 56078    func_fatal_help "you must specify a MODE"
       
 56079  }
       
 56080  
       
 56081  test -z "$exec_cmd" && \
       
 56082 -  func_fatal_help "invalid operation mode \`$mode'"
       
 56083 +  func_fatal_help "invalid operation mode \`$opt_mode'"
       
 56084  
       
 56085  if test -n "$exec_cmd"; then
       
 56086    eval exec "$exec_cmd"
       
 56087    exit $EXIT_FAILURE
       
 56088  fi
       
 56089  
       
 56090  exit $exit_status
       
 56091  
       
 56092 diff --git a/js/src/ctypes/libffi/m4/asmcfi.m4 b/js/src/ctypes/libffi/m4/asmcfi.m4
       
 56093 new file mode 100644
       
 56094 --- /dev/null
       
 56095 +++ b/js/src/ctypes/libffi/m4/asmcfi.m4
       
 56096 @@ -0,0 +1,13 @@
       
 56097 +AC_DEFUN([GCC_AS_CFI_PSEUDO_OP],
       
 56098 +[AC_CACHE_CHECK([assembler .cfi pseudo-op support],
       
 56099 +    gcc_cv_as_cfi_pseudo_op, [
       
 56100 +    gcc_cv_as_cfi_pseudo_op=unknown
       
 56101 +    AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],,
       
 56102 +		   [gcc_cv_as_cfi_pseudo_op=yes],
       
 56103 +		   [gcc_cv_as_cfi_pseudo_op=no])
       
 56104 + ])
       
 56105 + if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then
       
 56106 +    AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
       
 56107 +	      [Define if your assembler supports .cfi_* directives.])
       
 56108 + fi
       
 56109 +])
       
 56110 diff --git a/js/src/ctypes/libffi/m4/ax_append_flag.m4 b/js/src/ctypes/libffi/m4/ax_append_flag.m4
       
 56111 new file mode 100644
       
 56112 --- /dev/null
       
 56113 +++ b/js/src/ctypes/libffi/m4/ax_append_flag.m4
       
 56114 @@ -0,0 +1,69 @@
       
 56115 +# ===========================================================================
       
 56116 +#      http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
       
 56117 +# ===========================================================================
       
 56118 +#
       
 56119 +# SYNOPSIS
       
 56120 +#
       
 56121 +#   AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
       
 56122 +#
       
 56123 +# DESCRIPTION
       
 56124 +#
       
 56125 +#   FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
       
 56126 +#   added in between.
       
 56127 +#
       
 56128 +#   If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
       
 56129 +#   CFLAGS) is used.  FLAGS-VARIABLE is not changed if it already contains
       
 56130 +#   FLAG.  If FLAGS-VARIABLE is unset in the shell, it is set to exactly
       
 56131 +#   FLAG.
       
 56132 +#
       
 56133 +#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
       
 56134 +#
       
 56135 +# LICENSE
       
 56136 +#
       
 56137 +#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
       
 56138 +#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
       
 56139 +#
       
 56140 +#   This program is free software: you can redistribute it and/or modify it
       
 56141 +#   under the terms of the GNU General Public License as published by the
       
 56142 +#   Free Software Foundation, either version 3 of the License, or (at your
       
 56143 +#   option) any later version.
       
 56144 +#
       
 56145 +#   This program is distributed in the hope that it will be useful, but
       
 56146 +#   WITHOUT ANY WARRANTY; without even the implied warranty of
       
 56147 +#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
       
 56148 +#   Public License for more details.
       
 56149 +#
       
 56150 +#   You should have received a copy of the GNU General Public License along
       
 56151 +#   with this program. If not, see <http://www.gnu.org/licenses/>.
       
 56152 +#
       
 56153 +#   As a special exception, the respective Autoconf Macro's copyright owner
       
 56154 +#   gives unlimited permission to copy, distribute and modify the configure
       
 56155 +#   scripts that are the output of Autoconf when processing the Macro. You
       
 56156 +#   need not follow the terms of the GNU General Public License when using
       
 56157 +#   or distributing such scripts, even though portions of the text of the
       
 56158 +#   Macro appear in them. The GNU General Public License (GPL) does govern
       
 56159 +#   all other use of the material that constitutes the Autoconf Macro.
       
 56160 +#
       
 56161 +#   This special exception to the GPL applies to versions of the Autoconf
       
 56162 +#   Macro released by the Autoconf Archive. When you make and distribute a
       
 56163 +#   modified version of the Autoconf Macro, you may extend this special
       
 56164 +#   exception to the GPL to apply to your modified version as well.
       
 56165 +
       
 56166 +#serial 2
       
 56167 +
       
 56168 +AC_DEFUN([AX_APPEND_FLAG],
       
 56169 +[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
       
 56170 +AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl
       
 56171 +AS_VAR_SET_IF(FLAGS,
       
 56172 +  [case " AS_VAR_GET(FLAGS) " in
       
 56173 +    *" $1 "*)
       
 56174 +      AC_RUN_LOG([: FLAGS already contains $1])
       
 56175 +      ;;
       
 56176 +    *)
       
 56177 +      AC_RUN_LOG([: FLAGS="$FLAGS $1"])
       
 56178 +      AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"])
       
 56179 +      ;;
       
 56180 +   esac],
       
 56181 +  [AS_VAR_SET(FLAGS,["$1"])])
       
 56182 +AS_VAR_POPDEF([FLAGS])dnl
       
 56183 +])dnl AX_APPEND_FLAG
       
 56184 diff --git a/js/src/ctypes/libffi/m4/ax_cc_maxopt.m4 b/js/src/ctypes/libffi/m4/ax_cc_maxopt.m4
       
 56185 new file mode 100644
       
 56186 --- /dev/null
       
 56187 +++ b/js/src/ctypes/libffi/m4/ax_cc_maxopt.m4
       
 56188 @@ -0,0 +1,181 @@
       
 56189 +# ===========================================================================
       
 56190 +#       http://www.gnu.org/software/autoconf-archive/ax_cc_maxopt.html
       
 56191 +# ===========================================================================
       
 56192 +#
       
 56193 +# SYNOPSIS
       
 56194 +#
       
 56195 +#   AX_CC_MAXOPT
       
 56196 +#
       
 56197 +# DESCRIPTION
       
 56198 +#
       
 56199 +#   Try to turn on "good" C optimization flags for various compilers and
       
 56200 +#   architectures, for some definition of "good". (In our case, good for
       
 56201 +#   FFTW and hopefully for other scientific codes. Modify as needed.)
       
 56202 +#
       
 56203 +#   The user can override the flags by setting the CFLAGS environment
       
 56204 +#   variable. The user can also specify --enable-portable-binary in order to
       
 56205 +#   disable any optimization flags that might result in a binary that only
       
 56206 +#   runs on the host architecture.
       
 56207 +#
       
 56208 +#   Note also that the flags assume that ANSI C aliasing rules are followed
       
 56209 +#   by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point
       
 56210 +#   computations can be re-ordered as needed.
       
 56211 +#
       
 56212 +#   Requires macros: AX_CHECK_COMPILE_FLAG, AX_COMPILER_VENDOR,
       
 56213 +#   AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID.
       
 56214 +#
       
 56215 +# LICENSE
       
 56216 +#
       
 56217 +#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
       
 56218 +#   Copyright (c) 2008 Matteo Frigo
       
 56219 +#
       
 56220 +#   This program is free software: you can redistribute it and/or modify it
       
 56221 +#   under the terms of the GNU General Public License as published by the
       
 56222 +#   Free Software Foundation, either version 3 of the License, or (at your
       
 56223 +#   option) any later version.
       
 56224 +#
       
 56225 +#   This program is distributed in the hope that it will be useful, but
       
 56226 +#   WITHOUT ANY WARRANTY; without even the implied warranty of
       
 56227 +#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
       
 56228 +#   Public License for more details.
       
 56229 +#
       
 56230 +#   You should have received a copy of the GNU General Public License along
       
 56231 +#   with this program. If not, see <http://www.gnu.org/licenses/>.
       
 56232 +#
       
 56233 +#   As a special exception, the respective Autoconf Macro's copyright owner
       
 56234 +#   gives unlimited permission to copy, distribute and modify the configure
       
 56235 +#   scripts that are the output of Autoconf when processing the Macro. You
       
 56236 +#   need not follow the terms of the GNU General Public License when using
       
 56237 +#   or distributing such scripts, even though portions of the text of the
       
 56238 +#   Macro appear in them. The GNU General Public License (GPL) does govern
       
 56239 +#   all other use of the material that constitutes the Autoconf Macro.
       
 56240 +#
       
 56241 +#   This special exception to the GPL applies to versions of the Autoconf
       
 56242 +#   Macro released by the Autoconf Archive. When you make and distribute a
       
 56243 +#   modified version of the Autoconf Macro, you may extend this special
       
 56244 +#   exception to the GPL to apply to your modified version as well.
       
 56245 +
       
 56246 +#serial 13
       
 56247 +
       
 56248 +AC_DEFUN([AX_CC_MAXOPT],
       
 56249 +[
       
 56250 +AC_REQUIRE([AC_PROG_CC])
       
 56251 +AC_REQUIRE([AX_COMPILER_VENDOR])
       
 56252 +AC_REQUIRE([AC_CANONICAL_HOST])
       
 56253 +
       
 56254 +AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])],
       
 56255 +	acx_maxopt_portable=$enableval, acx_maxopt_portable=no)
       
 56256 +
       
 56257 +# Try to determine "good" native compiler flags if none specified via CFLAGS
       
 56258 +if test "$ac_test_CFLAGS" != "set"; then
       
 56259 +  CFLAGS=""
       
 56260 +  case $ax_cv_c_compiler_vendor in
       
 56261 +    dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
       
 56262 +	 if test "x$acx_maxopt_portable" = xno; then
       
 56263 +           CFLAGS="$CFLAGS -arch host"
       
 56264 +         fi;;
       
 56265 +
       
 56266 +    sun) CFLAGS="-native -fast -xO5 -dalign"
       
 56267 +	 if test "x$acx_maxopt_portable" = xyes; then
       
 56268 +	   CFLAGS="$CFLAGS -xarch=generic"
       
 56269 +         fi;;
       
 56270 +
       
 56271 +    hp)  CFLAGS="+Oall +Optrs_ansi +DSnative"
       
 56272 +	 if test "x$acx_maxopt_portable" = xyes; then
       
 56273 +	   CFLAGS="$CFLAGS +DAportable"
       
 56274 +	 fi;;
       
 56275 +
       
 56276 +    ibm) if test "x$acx_maxopt_portable" = xno; then
       
 56277 +           xlc_opt="-qarch=auto -qtune=auto"
       
 56278 +	 else
       
 56279 +           xlc_opt="-qtune=auto"
       
 56280 +	 fi
       
 56281 +         AX_CHECK_COMPILE_FLAG($xlc_opt,
       
 56282 +		CFLAGS="-O3 -qansialias -w $xlc_opt",
       
 56283 +               [CFLAGS="-O3 -qansialias -w"
       
 56284 +                echo "******************************************************"
       
 56285 +                echo "*  You seem to have the IBM  C compiler.  It is      *"
       
 56286 +                echo "*  recommended for best performance that you use:    *"
       
 56287 +                echo "*                                                    *"
       
 56288 +                echo "*    CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
       
 56289 +                echo "*                      ^^^        ^^^                *"
       
 56290 +                echo "*  where xxx is pwr2, pwr3, 604, or whatever kind of *"
       
 56291 +                echo "*  CPU you have.  (Set the CFLAGS environment var.   *"
       
 56292 +                echo "*  and re-run configure.)  For more info, man cc.    *"
       
 56293 +                echo "******************************************************"])
       
 56294 +         ;;
       
 56295 +
       
 56296 +    intel) CFLAGS="-O3 -ansi_alias"
       
 56297 +	if test "x$acx_maxopt_portable" = xno; then
       
 56298 +	  icc_archflag=unknown
       
 56299 +	  icc_flags=""
       
 56300 +	  case $host_cpu in
       
 56301 +	    i686*|x86_64*)
       
 56302 +              # icc accepts gcc assembly syntax, so these should work:
       
 56303 +	      AX_GCC_X86_CPUID(0)
       
 56304 +              AX_GCC_X86_CPUID(1)
       
 56305 +	      case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
       
 56306 +                *:756e6547:*:*) # Intel
       
 56307 +                  case $ax_cv_gcc_x86_cpuid_1 in
       
 56308 +                    *6a?:*[[234]]:*:*|*6[[789b]]?:*:*:*) icc_flags="-xK";;
       
 56309 +                    *f3[[347]]:*:*:*|*f4[1347]:*:*:*) icc_flags="-xP -xN -xW -xK";;
       
 56310 +                    *f??:*:*:*) icc_flags="-xN -xW -xK";;
       
 56311 +                  esac ;;
       
 56312 +              esac ;;
       
 56313 +          esac
       
 56314 +          if test "x$icc_flags" != x; then
       
 56315 +            for flag in $icc_flags; do
       
 56316 +              AX_CHECK_COMPILE_FLAG($flag, [icc_archflag=$flag; break])
       
 56317 +            done
       
 56318 +          fi
       
 56319 +          AC_MSG_CHECKING([for icc architecture flag])
       
 56320 +	  AC_MSG_RESULT($icc_archflag)
       
 56321 +          if test "x$icc_archflag" != xunknown; then
       
 56322 +            CFLAGS="$CFLAGS $icc_archflag"
       
 56323 +          fi
       
 56324 +        fi
       
 56325 +	;;
       
 56326 +
       
 56327 +    gnu)
       
 56328 +     # default optimization flags for gcc on all systems
       
 56329 +     CFLAGS="-O3 -fomit-frame-pointer"
       
 56330 +
       
 56331 +     # -malign-double for x86 systems
       
 56332 +     # LIBFFI -- DON'T DO THIS - CHANGES ABI
       
 56333 +     # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double")
       
 56334 +
       
 56335 +     #  -fstrict-aliasing for gcc-2.95+
       
 56336 +     AX_CHECK_COMPILE_FLAG(-fstrict-aliasing,
       
 56337 +	CFLAGS="$CFLAGS -fstrict-aliasing")
       
 56338 +
       
 56339 +     # note that we enable "unsafe" fp optimization with other compilers, too
       
 56340 +     AX_CHECK_COMPILE_FLAG(-ffast-math, CFLAGS="$CFLAGS -ffast-math")
       
 56341 +
       
 56342 +     AX_GCC_ARCHFLAG($acx_maxopt_portable)
       
 56343 +     ;;
       
 56344 +  esac
       
 56345 +
       
 56346 +  if test -z "$CFLAGS"; then
       
 56347 +	echo ""
       
 56348 +	echo "********************************************************"
       
 56349 +        echo "* WARNING: Don't know the best CFLAGS for this system  *"
       
 56350 +        echo "* Use ./configure CFLAGS=... to specify your own flags *"
       
 56351 +	echo "* (otherwise, a default of CFLAGS=-O3 will be used)    *"
       
 56352 +	echo "********************************************************"
       
 56353 +	echo ""
       
 56354 +        CFLAGS="-O3"
       
 56355 +  fi
       
 56356 +
       
 56357 +  AX_CHECK_COMPILE_FLAG($CFLAGS, [], [
       
 56358 +	echo ""
       
 56359 +        echo "********************************************************"
       
 56360 +        echo "* WARNING: The guessed CFLAGS don't seem to work with  *"
       
 56361 +        echo "* your compiler.                                       *"
       
 56362 +        echo "* Use ./configure CFLAGS=... to specify your own flags *"
       
 56363 +        echo "********************************************************"
       
 56364 +        echo ""
       
 56365 +        CFLAGS=""
       
 56366 +  ])
       
 56367 +
       
 56368 +fi
       
 56369 +])
       
 56370 diff --git a/js/src/ctypes/libffi/m4/ax_cflags_warn_all.m4 b/js/src/ctypes/libffi/m4/ax_cflags_warn_all.m4
       
 56371 new file mode 100644
       
 56372 --- /dev/null
       
 56373 +++ b/js/src/ctypes/libffi/m4/ax_cflags_warn_all.m4
       
 56374 @@ -0,0 +1,122 @@
       
 56375 +# ===========================================================================
       
 56376 +#    http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html
       
 56377 +# ===========================================================================
       
 56378 +#
       
 56379 +# SYNOPSIS
       
 56380 +#
       
 56381 +#   AX_CFLAGS_WARN_ALL   [(shellvar [,default, [A/NA]])]
       
 56382 +#   AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])]
       
 56383 +#   AX_FCFLAGS_WARN_ALL  [(shellvar [,default, [A/NA]])]
       
 56384 +#
       
 56385 +# DESCRIPTION
       
 56386 +#
       
 56387 +#   Try to find a compiler option that enables most reasonable warnings.
       
 56388 +#
       
 56389 +#   For the GNU compiler it will be -Wall (and -ansi -pedantic) The result
       
 56390 +#   is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default.
       
 56391 +#
       
 56392 +#   Currently this macro knows about the GCC, Solaris, Digital Unix, AIX,
       
 56393 +#   HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and
       
 56394 +#   Intel compilers.  For a given compiler, the Fortran flags are much more
       
 56395 +#   experimental than their C equivalents.
       
 56396 +#
       
 56397 +#    - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS
       
 56398 +#    - $2 add-value-if-not-found : nothing
       
 56399 +#    - $3 action-if-found : add value to shellvariable
       
 56400 +#    - $4 action-if-not-found : nothing
       
 56401 +#
       
 56402 +#   NOTE: These macros depend on AX_APPEND_FLAG.
       
 56403 +#
       
 56404 +# LICENSE
       
 56405 +#
       
 56406 +#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
       
 56407 +#   Copyright (c) 2010 Rhys Ulerich <rhys.ulerich@gmail.com>
       
 56408 +#
       
 56409 +#   This program is free software; you can redistribute it and/or modify it
       
 56410 +#   under the terms of the GNU General Public License as published by the
       
 56411 +#   Free Software Foundation; either version 3 of the License, or (at your
       
 56412 +#   option) any later version.
       
 56413 +#
       
 56414 +#   This program is distributed in the hope that it will be useful, but
       
 56415 +#   WITHOUT ANY WARRANTY; without even the implied warranty of
       
 56416 +#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
       
 56417 +#   Public License for more details.
       
 56418 +#
       
 56419 +#   You should have received a copy of the GNU General Public License along
       
 56420 +#   with this program. If not, see <http://www.gnu.org/licenses/>.
       
 56421 +#
       
 56422 +#   As a special exception, the respective Autoconf Macro's copyright owner
       
 56423 +#   gives unlimited permission to copy, distribute and modify the configure
       
 56424 +#   scripts that are the output of Autoconf when processing the Macro. You
       
 56425 +#   need not follow the terms of the GNU General Public License when using
       
 56426 +#   or distributing such scripts, even though portions of the text of the
       
 56427 +#   Macro appear in them. The GNU General Public License (GPL) does govern
       
 56428 +#   all other use of the material that constitutes the Autoconf Macro.
       
 56429 +#
       
 56430 +#   This special exception to the GPL applies to versions of the Autoconf
       
 56431 +#   Macro released by the Autoconf Archive. When you make and distribute a
       
 56432 +#   modified version of the Autoconf Macro, you may extend this special
       
 56433 +#   exception to the GPL to apply to your modified version as well.
       
 56434 +
       
 56435 +#serial 14
       
 56436 +
       
 56437 +AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl
       
 56438 +AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl
       
 56439 +AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl
       
 56440 +AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
       
 56441 +VAR,[VAR="no, unknown"
       
 56442 +ac_save_[]FLAGS="$[]FLAGS"
       
 56443 +for ac_arg dnl
       
 56444 +in "-warn all  % -warn all"   dnl Intel
       
 56445 +   "-pedantic  % -Wall"       dnl GCC
       
 56446 +   "-xstrconst % -v"          dnl Solaris C
       
 56447 +   "-std1      % -verbose -w0 -warnprotos" dnl Digital Unix
       
 56448 +   "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX
       
 56449 +   "-ansi -ansiE % -fullwarn" dnl IRIX
       
 56450 +   "+ESlit     % +w1"         dnl HP-UX C
       
 56451 +   "-Xc        % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10)
       
 56452 +   "-h conform % -h msglevel 2" dnl Cray C (Unicos)
       
 56453 +   #
       
 56454 +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
       
 56455 +   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
       
 56456 +                     [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
       
 56457 +done
       
 56458 +FLAGS="$ac_save_[]FLAGS"
       
 56459 +])
       
 56460 +AS_VAR_POPDEF([FLAGS])dnl
       
 56461 +AC_REQUIRE([AX_APPEND_FLAG])
       
 56462 +case ".$VAR" in
       
 56463 +     .ok|.ok,*) m4_ifvaln($3,$3) ;;
       
 56464 +   .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;;
       
 56465 +   *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;;
       
 56466 +esac
       
 56467 +AS_VAR_POPDEF([VAR])dnl
       
 56468 +])dnl AX_FLAGS_WARN_ALL
       
 56469 +dnl  implementation tactics:
       
 56470 +dnl   the for-argument contains a list of options. The first part of
       
 56471 +dnl   these does only exist to detect the compiler - usually it is
       
 56472 +dnl   a global option to enable -ansi or -extrawarnings. All other
       
 56473 +dnl   compilers will fail about it. That was needed since a lot of
       
 56474 +dnl   compilers will give false positives for some option-syntax
       
 56475 +dnl   like -Woption or -Xoption as they think of it is a pass-through
       
 56476 +dnl   to later compile stages or something. The "%" is used as a
       
 56477 +dnl   delimiter. A non-option comment can be given after "%%" marks
       
 56478 +dnl   which will be shown but not added to the respective C/CXXFLAGS.
       
 56479 +
       
 56480 +AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl
       
 56481 +AC_LANG_PUSH([C])
       
 56482 +AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
       
 56483 +AC_LANG_POP([C])
       
 56484 +])
       
 56485 +
       
 56486 +AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl
       
 56487 +AC_LANG_PUSH([C++])
       
 56488 +AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
       
 56489 +AC_LANG_POP([C++])
       
 56490 +])
       
 56491 +
       
 56492 +AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl
       
 56493 +AC_LANG_PUSH([Fortran])
       
 56494 +AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
       
 56495 +AC_LANG_POP([Fortran])
       
 56496 +])
       
 56497 diff --git a/js/src/ctypes/libffi/m4/ax_check_compile_flag.m4 b/js/src/ctypes/libffi/m4/ax_check_compile_flag.m4
       
 56498 new file mode 100644
       
 56499 --- /dev/null
       
 56500 +++ b/js/src/ctypes/libffi/m4/ax_check_compile_flag.m4
       
 56501 @@ -0,0 +1,72 @@
       
 56502 +# ===========================================================================
       
 56503 +#   http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
       
 56504 +# ===========================================================================
       
 56505 +#
       
 56506 +# SYNOPSIS
       
 56507 +#
       
 56508 +#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
       
 56509 +#
       
 56510 +# DESCRIPTION
       
 56511 +#
       
 56512 +#   Check whether the given FLAG works with the current language's compiler
       
 56513 +#   or gives an error.  (Warnings, however, are ignored)
       
 56514 +#
       
 56515 +#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
       
 56516 +#   success/failure.
       
 56517 +#
       
 56518 +#   If EXTRA-FLAGS is defined, it is added to the current language's default
       
 56519 +#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
       
 56520 +#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
       
 56521 +#   force the compiler to issue an error when a bad flag is given.
       
 56522 +#
       
 56523 +#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
       
 56524 +#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
       
 56525 +#
       
 56526 +# LICENSE
       
 56527 +#
       
 56528 +#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
       
 56529 +#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
       
 56530 +#
       
 56531 +#   This program is free software: you can redistribute it and/or modify it
       
 56532 +#   under the terms of the GNU General Public License as published by the
       
 56533 +#   Free Software Foundation, either version 3 of the License, or (at your
       
 56534 +#   option) any later version.
       
 56535 +#
       
 56536 +#   This program is distributed in the hope that it will be useful, but
       
 56537 +#   WITHOUT ANY WARRANTY; without even the implied warranty of
       
 56538 +#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
       
 56539 +#   Public License for more details.
       
 56540 +#
       
 56541 +#   You should have received a copy of the GNU General Public License along
       
 56542 +#   with this program. If not, see <http://www.gnu.org/licenses/>.
       
 56543 +#
       
 56544 +#   As a special exception, the respective Autoconf Macro's copyright owner
       
 56545 +#   gives unlimited permission to copy, distribute and modify the configure
       
 56546 +#   scripts that are the output of Autoconf when processing the Macro. You
       
 56547 +#   need not follow the terms of the GNU General Public License when using
       
 56548 +#   or distributing such scripts, even though portions of the text of the
       
 56549 +#   Macro appear in them. The GNU General Public License (GPL) does govern
       
 56550 +#   all other use of the material that constitutes the Autoconf Macro.
       
 56551 +#
       
 56552 +#   This special exception to the GPL applies to versions of the Autoconf
       
 56553 +#   Macro released by the Autoconf Archive. When you make and distribute a
       
 56554 +#   modified version of the Autoconf Macro, you may extend this special
       
 56555 +#   exception to the GPL to apply to your modified version as well.
       
 56556 +
       
 56557 +#serial 2
       
 56558 +
       
 56559 +AC_DEFUN([AX_CHECK_COMPILE_FLAG],
       
 56560 +[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
       
 56561 +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
       
 56562 +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
       
 56563 +  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
       
 56564 +  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
       
 56565 +  AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
       
 56566 +    [AS_VAR_SET(CACHEVAR,[yes])],
       
 56567 +    [AS_VAR_SET(CACHEVAR,[no])])
       
 56568 +  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
       
 56569 +AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
       
 56570 +  [m4_default([$2], :)],
       
 56571 +  [m4_default([$3], :)])
       
 56572 +AS_VAR_POPDEF([CACHEVAR])dnl
       
 56573 +])dnl AX_CHECK_COMPILE_FLAGS
       
 56574 diff --git a/js/src/ctypes/libffi/m4/ax_compiler_vendor.m4 b/js/src/ctypes/libffi/m4/ax_compiler_vendor.m4
       
 56575 new file mode 100644
       
 56576 --- /dev/null
       
 56577 +++ b/js/src/ctypes/libffi/m4/ax_compiler_vendor.m4
       
 56578 @@ -0,0 +1,84 @@
       
 56579 +# ===========================================================================
       
 56580 +#    http://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
       
 56581 +# ===========================================================================
       
 56582 +#
       
 56583 +# SYNOPSIS
       
 56584 +#
       
 56585 +#   AX_COMPILER_VENDOR
       
 56586 +#
       
 56587 +# DESCRIPTION
       
 56588 +#
       
 56589 +#   Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
       
 56590 +#   hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
       
 56591 +#   watcom, etc. The vendor is returned in the cache variable
       
 56592 +#   $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
       
 56593 +#
       
 56594 +# LICENSE
       
 56595 +#
       
 56596 +#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
       
 56597 +#   Copyright (c) 2008 Matteo Frigo
       
 56598 +#
       
 56599 +#   This program is free software: you can redistribute it and/or modify it
       
 56600 +#   under the terms of the GNU General Public License as published by the
       
 56601 +#   Free Software Foundation, either version 3 of the License, or (at your
       
 56602 +#   option) any later version.
       
 56603 +#
       
 56604 +#   This program is distributed in the hope that it will be useful, but
       
 56605 +#   WITHOUT ANY WARRANTY; without even the implied warranty of
       
 56606 +#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
       
 56607 +#   Public License for more details.
       
 56608 +#
       
 56609 +#   You should have received a copy of the GNU General Public License along
       
 56610 +#   with this program. If not, see <http://www.gnu.org/licenses/>.
       
 56611 +#
       
 56612 +#   As a special exception, the respective Autoconf Macro's copyright owner
       
 56613 +#   gives unlimited permission to copy, distribute and modify the configure
       
 56614 +#   scripts that are the output of Autoconf when processing the Macro. You
       
 56615 +#   need not follow the terms of the GNU General Public License when using
       
 56616 +#   or distributing such scripts, even though portions of the text of the
       
 56617 +#   Macro appear in them. The GNU General Public License (GPL) does govern
       
 56618 +#   all other use of the material that constitutes the Autoconf Macro.
       
 56619 +#
       
 56620 +#   This special exception to the GPL applies to versions of the Autoconf
       
 56621 +#   Macro released by the Autoconf Archive. When you make and distribute a
       
 56622 +#   modified version of the Autoconf Macro, you may extend this special
       
 56623 +#   exception to the GPL to apply to your modified version as well.
       
 56624 +
       
 56625 +#serial 11
       
 56626 +
       
 56627 +AC_DEFUN([AX_COMPILER_VENDOR],
       
 56628 +[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
       
 56629 +  [# note: don't check for gcc first since some other compilers define __GNUC__
       
 56630 +  vendors="intel:     __ICC,__ECC,__INTEL_COMPILER
       
 56631 +           ibm:       __xlc__,__xlC__,__IBMC__,__IBMCPP__
       
 56632 +           pathscale: __PATHCC__,__PATHSCALE__
       
 56633 +           clang:     __clang__
       
 56634 +           gnu:       __GNUC__
       
 56635 +           sun:       __SUNPRO_C,__SUNPRO_CC
       
 56636 +           hp:        __HP_cc,__HP_aCC
       
 56637 +           dec:       __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
       
 56638 +           borland:   __BORLANDC__,__TURBOC__
       
 56639 +           comeau:    __COMO__
       
 56640 +           cray:      _CRAYC
       
 56641 +           kai:       __KCC
       
 56642 +           lcc:       __LCC__
       
 56643 +           sgi:       __sgi,sgi
       
 56644 +           microsoft: _MSC_VER
       
 56645 +           metrowerks: __MWERKS__
       
 56646 +           watcom:    __WATCOMC__
       
 56647 +           portland:  __PGI
       
 56648 +           unknown:   UNKNOWN"
       
 56649 +  for ventest in $vendors; do
       
 56650 +    case $ventest in
       
 56651 +      *:) vendor=$ventest; continue ;;
       
 56652 +      *)  vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
       
 56653 +    esac
       
 56654 +    AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
       
 56655 +      #if !($vencpp)
       
 56656 +        thisisanerror;
       
 56657 +      #endif
       
 56658 +    ])], [break])
       
 56659 +  done
       
 56660 +  ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
       
 56661 + ])
       
 56662 +])
       
 56663 diff --git a/js/src/ctypes/libffi/m4/ax_configure_args.m4 b/js/src/ctypes/libffi/m4/ax_configure_args.m4
       
 56664 new file mode 100644
       
 56665 --- /dev/null
       
 56666 +++ b/js/src/ctypes/libffi/m4/ax_configure_args.m4
       
 56667 @@ -0,0 +1,70 @@
       
 56668 +# ===========================================================================
       
 56669 +#     http://www.gnu.org/software/autoconf-archive/ax_configure_args.html
       
 56670 +# ===========================================================================
       
 56671 +#
       
 56672 +# SYNOPSIS
       
 56673 +#
       
 56674 +#   AX_CONFIGURE_ARGS
       
 56675 +#
       
 56676 +# DESCRIPTION
       
 56677 +#
       
 56678 +#   Helper macro for AX_ENABLE_BUILDDIR.
       
 56679 +#
       
 56680 +#   The traditional way of starting a subdir-configure is running the script
       
 56681 +#   with ${1+"$@"} but since autoconf 2.60 this is broken. Instead we have
       
 56682 +#   to rely on eval'ing $ac_configure_args however some old autoconf
       
 56683 +#   versions do not provide that. To ensure maximum portability of autoconf
       
 56684 +#   extension macros this helper can be AC_REQUIRE'd so that
       
 56685 +#   $ac_configure_args will alsways be present.
       
 56686 +#
       
 56687 +#   Sadly, the traditional "exec $SHELL" of the enable_builddir macros is
       
 56688 +#   spoiled now and must be replaced by "eval + exit $?".
       
 56689 +#
       
 56690 +#   Example:
       
 56691 +#
       
 56692 +#     AC_DEFUN([AX_ENABLE_SUBDIR],[dnl
       
 56693 +#       AC_REQUIRE([AX_CONFIGURE_ARGS])dnl
       
 56694 +#       eval $SHELL $ac_configure_args || exit $?
       
 56695 +#       ...])
       
 56696 +#
       
 56697 +# LICENSE
       
 56698 +#
       
 56699 +#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
       
 56700 +#
       
 56701 +#   This program is free software; you can redistribute it and/or modify it
       
 56702 +#   under the terms of the GNU General Public License as published by the
       
 56703 +#   Free Software Foundation; either version 3 of the License, or (at your
       
 56704 +#   option) any later version.
       
 56705 +#
       
 56706 +#   This program is distributed in the hope that it will be useful, but
       
 56707 +#   WITHOUT ANY WARRANTY; without even the implied warranty of
       
 56708 +#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
       
 56709 +#   Public License for more details.
       
 56710 +#
       
 56711 +#   You should have received a copy of the GNU General Public License along
       
 56712 +#   with this program. If not, see <http://www.gnu.org/licenses/>.
       
 56713 +#
       
 56714 +#   As a special exception, the respective Autoconf Macro's copyright owner
       
 56715 +#   gives unlimited permission to copy, distribute and modify the configure
       
 56716 +#   scripts that are the output of Autoconf when processing the Macro. You
       
 56717 +#   need not follow the terms of the GNU General Public License when using
       
 56718 +#   or distributing such scripts, even though portions of the text of the
       
 56719 +#   Macro appear in them. The GNU General Public License (GPL) does govern
       
 56720 +#   all other use of the material that constitutes the Autoconf Macro.
       
 56721 +#
       
 56722 +#   This special exception to the GPL applies to versions of the Autoconf
       
 56723 +#   Macro released by the Autoconf Archive. When you make and distribute a
       
 56724 +#   modified version of the Autoconf Macro, you may extend this special
       
 56725 +#   exception to the GPL to apply to your modified version as well.
       
 56726 +
       
 56727 +#serial 9
       
 56728 +
       
 56729 +AC_DEFUN([AX_CONFIGURE_ARGS],[
       
 56730 +   # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args
       
 56731 +   if test "${ac_configure_args+set}" != "set" ; then
       
 56732 +      ac_configure_args=
       
 56733 +      for ac_arg in ${1+"[$]@"}; do
       
 56734 +         ac_configure_args="$ac_configure_args '$ac_arg'"
       
 56735 +      done
       
 56736 +   fi
       
 56737 +])
       
 56738 diff --git a/js/src/ctypes/libffi/m4/ax_enable_builddir.m4 b/js/src/ctypes/libffi/m4/ax_enable_builddir.m4
       
 56739 new file mode 100644
       
 56740 --- /dev/null
       
 56741 +++ b/js/src/ctypes/libffi/m4/ax_enable_builddir.m4
       
 56742 @@ -0,0 +1,300 @@
       
 56743 +# ===========================================================================
       
 56744 +#    http://www.gnu.org/software/autoconf-archive/ax_enable_builddir.html
       
 56745 +# ===========================================================================
       
 56746 +#
       
 56747 +# SYNOPSIS
       
 56748 +#
       
 56749 +#   AX_ENABLE_BUILDDIR [(dirstring-or-command [,Makefile.mk [,-all]])]
       
 56750 +#
       
 56751 +# DESCRIPTION
       
 56752 +#
       
 56753 +#   If the current configure was run within the srcdir then we move all
       
 56754 +#   configure-files into a subdir and let the configure steps continue
       
 56755 +#   there. We provide an option --disable-builddir to suppress the move into
       
 56756 +#   a separate builddir.
       
 56757 +#
       
 56758 +#   Defaults:
       
 56759 +#
       
 56760 +#     $1 = $host (overridden with $HOST)
       
 56761 +#     $2 = Makefile.mk
       
 56762 +#     $3 = -all
       
 56763 +#
       
 56764 +#   This macro must be called before AM_INIT_AUTOMAKE. It creates a default
       
 56765 +#   toplevel srcdir Makefile from the information found in the created
       
 56766 +#   toplevel builddir Makefile. It just copies the variables and
       
 56767 +#   rule-targets, each extended with a default rule-execution that recurses
       
 56768 +#   into the build directory of the current "HOST". You can override the
       
 56769 +#   auto-dection through `config.guess` and build-time of course, as in
       
 56770 +#
       
 56771 +#     make HOST=i386-mingw-cross
       
 56772 +#
       
 56773 +#   which can of course set at configure time as well using
       
 56774 +#
       
 56775 +#     configure --host=i386-mingw-cross
       
 56776 +#
       
 56777 +#   After the default has been created, additional rules can be appended
       
 56778 +#   that will not just recurse into the subdirectories and only ever exist
       
 56779 +#   in the srcdir toplevel makefile - these parts are read from the $2 =
       
 56780 +#   Makefile.mk file
       
 56781 +#
       
 56782 +#   The automatic rules are usually scanning the toplevel Makefile for lines
       
 56783 +#   like '#### $host |$builddir' to recognize the place where to recurse
       
 56784 +#   into. Usually, the last one is the only one used. However, almost all
       
 56785 +#   targets have an additional "*-all" rule which makes the script to
       
 56786 +#   recurse into _all_ variants of the current HOST (!!) setting. The "-all"
       
 56787 +#   suffix can be overriden for the macro as well.
       
 56788 +#
       
 56789 +#   a special rule is only given for things like "dist" that will copy the
       
 56790 +#   tarball from the builddir to the sourcedir (or $(PUB)) for reason of
       
 56791 +#   convenience.
       
 56792 +#
       
 56793 +# LICENSE
       
 56794 +#
       
 56795 +#   Copyright (c) 2009 Guido U. Draheim <guidod@gmx.de>
       
 56796 +#   Copyright (c) 2009 Alan Jenkins <alan-jenkins@tuffmail.co.uk>
       
 56797 +#
       
 56798 +#   This program is free software; you can redistribute it and/or modify it
       
 56799 +#   under the terms of the GNU General Public License as published by the
       
 56800 +#   Free Software Foundation; either version 3 of the License, or (at your
       
 56801 +#   option) any later version.
       
 56802 +#
       
 56803 +#   This program is distributed in the hope that it will be useful, but
       
 56804 +#   WITHOUT ANY WARRANTY; without even the implied warranty of
       
 56805 +#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
       
 56806 +#   Public License for more details.
       
 56807 +#
       
 56808 +#   You should have received a copy of the GNU General Public License along
       
 56809 +#   with this program. If not, see <http://www.gnu.org/licenses/>.
       
 56810 +#
       
 56811 +#   As a special exception, the respective Autoconf Macro's copyright owner
       
 56812 +#   gives unlimited permission to copy, distribute and modify the configure
       
 56813 +#   scripts that are the output of Autoconf when processing the Macro. You
       
 56814 +#   need not follow the terms of the GNU General Public License when using
       
 56815 +#   or distributing such scripts, even though portions of the text of the
       
 56816 +#   Macro appear in them. The GNU General Public License (GPL) does govern
       
 56817 +#   all other use of the material that constitutes the Autoconf Macro.
       
 56818 +#
       
 56819 +#   This special exception to the GPL applies to versions of the Autoconf
       
 56820 +#   Macro released by the Autoconf Archive. When you make and distribute a
       
 56821 +#   modified version of the Autoconf Macro, you may extend this special
       
 56822 +#   exception to the GPL to apply to your modified version as well.
       
 56823 +
       
 56824 +#serial 23
       
 56825 +
       
 56826 +AC_DEFUN([AX_ENABLE_BUILDDIR],[
       
 56827 +AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
       
 56828 +AC_REQUIRE([AX_CONFIGURE_ARGS])[]dnl
       
 56829 +AC_REQUIRE([AM_AUX_DIR_EXPAND])[]dnl
       
 56830 +AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl
       
 56831 +AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl
       
 56832 +AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl
       
 56833 +AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl
       
 56834 +SUB="."
       
 56835 +AC_ARG_ENABLE([builddir], AS_HELP_STRING(
       
 56836 +  [--disable-builddir],[disable automatic build in subdir of sources])
       
 56837 +  ,[SUB="$enableval"], [SUB="auto"])
       
 56838 +if test ".$ac_srcdir_defaulted" != ".no" ; then
       
 56839 +if test ".$srcdir" = ".." ; then
       
 56840 +  if test -f config.status ; then
       
 56841 +    AC_MSG_NOTICE(toplevel srcdir already configured... skipping subdir build)
       
 56842 +  else
       
 56843 +    test ".$SUB" = "."  && SUB="."
       
 56844 +    test ".$SUB" = ".no"  && SUB="."
       
 56845 +    test ".$TARGET" = "." && TARGET="$target"
       
 56846 +    test ".$SUB" = ".auto" && SUB="m4_ifval([$1], [$1],[$TARGET])"
       
 56847 +    if test ".$SUB" != ".." ; then    # we know where to go and
       
 56848 +      AS_MKDIR_P([$SUB])
       
 56849 +      echo __.$SUB.__ > $SUB/conftest.tmp
       
 56850 +      cd $SUB
       
 56851 +      if grep __.$SUB.__ conftest.tmp >/dev/null 2>/dev/null ; then
       
 56852 +        rm conftest.tmp
       
 56853 +        AC_MSG_RESULT([continue configure in default builddir "./$SUB"])
       
 56854 +      else
       
 56855 +        AC_MSG_ERROR([could not change to default builddir "./$SUB"])
       
 56856 +      fi
       
 56857 +      srcdir=`echo "$SUB" |
       
 56858 +              sed -e 's,^\./,,;s,[[^/]]$,&/,;s,[[^/]]*/,../,g;s,[[/]]$,,;'`
       
 56859 +      # going to restart from subdirectory location
       
 56860 +      test -f $srcdir/config.log   && mv $srcdir/config.log   .
       
 56861 +      test -f $srcdir/confdefs.h   && mv $srcdir/confdefs.h   .
       
 56862 +      test -f $srcdir/conftest.log && mv $srcdir/conftest.log .
       
 56863 +      test -f $srcdir/$cache_file  && mv $srcdir/$cache_file  .
       
 56864 +      AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"})
       
 56865 +      case "[$]0" in # restart
       
 56866 +       [/\\]*) eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
       
 56867 +       *) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
       
 56868 +      esac ; exit $?
       
 56869 +    fi
       
 56870 +  fi
       
 56871 +fi fi
       
 56872 +test ".$SUB" = ".auto" && SUB="."
       
 56873 +dnl ac_path_prog uses "set dummy" to override $@ which would defeat the "exec"
       
 56874 +AC_PATH_PROG(SED,gsed sed, sed)
       
 56875 +AUX="$am_aux_dir"
       
 56876 +AS_VAR_POPDEF([SED])dnl
       
 56877 +AS_VAR_POPDEF([AUX])dnl
       
 56878 +AS_VAR_POPDEF([SUB])dnl
       
 56879 +AC_CONFIG_COMMANDS([buildir],[dnl .............. config.status ..............
       
 56880 +AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl
       
 56881 +AS_VAR_PUSHDEF([TOP],[top_srcdir])dnl
       
 56882 +AS_VAR_PUSHDEF([SRC],[ac_top_srcdir])dnl
       
 56883 +AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl
       
 56884 +AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl
       
 56885 +pushdef([END],[Makefile.mk])dnl
       
 56886 +pushdef([_ALL],[ifelse([$3],,[-all],[$3])])dnl
       
 56887 +  SRC="$ax_enable_builddir_srcdir"
       
 56888 +  if test ".$SUB" = ".." ; then
       
 56889 +    if test -f "$TOP/Makefile" ; then
       
 56890 +      AC_MSG_NOTICE([skipping TOP/Makefile - left untouched])
       
 56891 +    else
       
 56892 +      AC_MSG_NOTICE([skipping TOP/Makefile - not created])
       
 56893 +    fi
       
 56894 +  else
       
 56895 +    if test -f "$SRC/Makefile" ; then
       
 56896 +      a=`grep "^VERSION " "$SRC/Makefile"` ; b=`grep "^VERSION " Makefile`
       
 56897 +      test "$a" != "$b" && rm "$SRC/Makefile"
       
 56898 +    fi
       
 56899 +    if test -f "$SRC/Makefile" ; then
       
 56900 +	echo "$SRC/Makefile : $SRC/Makefile.in" > $tmp/conftemp.mk
       
 56901 +	echo "	[]@ echo 'REMOVED,,,' >\$[]@" >> $tmp/conftemp.mk
       
 56902 +      eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null"
       
 56903 +      if grep '^REMOVED,,,' "$SRC/Makefile" >/dev/null
       
 56904 +      then rm $SRC/Makefile ; fi
       
 56905 +      cp $tmp/conftemp.mk $SRC/makefiles.mk~      ## DEBUGGING
       
 56906 +    fi
       
 56907 +    if test ! -f "$SRC/Makefile" ; then
       
 56908 +      AC_MSG_NOTICE([create TOP/Makefile guessed from local Makefile])
       
 56909 +      x='`' ; cat >$tmp/conftemp.sed <<_EOF
       
 56910 +/^\$/n
       
 56911 +x
       
 56912 +/^\$/bS
       
 56913 +x
       
 56914 +/\\\\\$/{H;d;}
       
 56915 +{H;s/.*//;x;}
       
 56916 +bM
       
 56917 +:S
       
 56918 +x
       
 56919 +/\\\\\$/{h;d;}
       
 56920 +{h;s/.*//;x;}
       
 56921 +:M
       
 56922 +s/\\(\\n\\)	/\\1 /g
       
 56923 +/^	/d
       
 56924 +/^[[	 ]]*[[\\#]]/d
       
 56925 +/^VPATH *=/d
       
 56926 +s/^srcdir *=.*/srcdir = ./
       
 56927 +s/^top_srcdir *=.*/top_srcdir = ./
       
 56928 +/[[:=]]/!d
       
 56929 +/^\\./d
       
 56930 +dnl Now handle rules (i.e. lines containing ":" but not " = ").
       
 56931 +/ = /b
       
 56932 +/ .= /b
       
 56933 +/:/!b
       
 56934 +s/:.*/:/
       
 56935 +s/ /  /g
       
 56936 +s/ \\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/ \\1 \\1[]_ALL\\2/g
       
 56937 +s/^\\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/\\1 \\1[]_ALL\\2/
       
 56938 +s/  / /g
       
 56939 +/^all all[]_ALL[[ :]]/i\\
       
 56940 +all-configured : all[]_ALL
       
 56941 +dnl dist-all exists... and would make for dist-all-all
       
 56942 +s/ [[a-zA-Z0-9-]]*[]_ALL [[a-zA-Z0-9-]]*[]_ALL[]_ALL//g
       
 56943 +/[]_ALL[]_ALL/d
       
 56944 +a\\
       
 56945 +	@ HOST="\$(HOST)\" \\\\\\
       
 56946 +	; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
       
 56947 +	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
       
 56948 +	; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
       
 56949 +	; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\
       
 56950 +	; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
       
 56951 +	; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
       
 56952 +	; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
       
 56953 +	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 56954 +	; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done
       
 56955 +dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree)
       
 56956 +/dist[]_ALL *:/a\\
       
 56957 +	@ HOST="\$(HOST)\" \\\\\\
       
 56958 +	; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
       
 56959 +	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
       
 56960 +	; found=$x echo \$\$BUILD | wc -w $x \\\\\\
       
 56961 +	; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
       
 56962 +	; if test "\$\$found" -eq "0" ; then : \\\\\\
       
 56963 +	; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
       
 56964 +	; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 56965 +	; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
       
 56966 +	; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
       
 56967 +dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source tree)
       
 56968 +/dist-[[a-zA-Z0-9]]*[]_ALL *:/a\\
       
 56969 +	@ HOST="\$(HOST)\" \\\\\\
       
 56970 +	; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\
       
 56971 +	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
       
 56972 +	; found=$x echo \$\$BUILD | wc -w $x \\\\\\
       
 56973 +	; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
       
 56974 +	; if test "\$\$found" -eq "0" ; then : \\\\\\
       
 56975 +	; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
       
 56976 +	; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 56977 +	; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
       
 56978 +	; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
       
 56979 +dnl special rule add-on: "distclean" removes all local builddirs completely
       
 56980 +/distclean[]_ALL *:/a\\
       
 56981 +	@ HOST="\$(HOST)\" \\\\\\
       
 56982 +	; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
       
 56983 +	; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\
       
 56984 +	; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
       
 56985 +	; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\
       
 56986 +	; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
       
 56987 +	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 56988 +	; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\
       
 56989 +	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
       
 56990 +	; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\
       
 56991 +	; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\
       
 56992 +	; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile
       
 56993 +_EOF
       
 56994 +      cp "$tmp/conftemp.sed" "$SRC/makefile.sed~"            ## DEBUGGING
       
 56995 +      $SED -f $tmp/conftemp.sed Makefile >$SRC/Makefile
       
 56996 +      if test -f "$SRC/m4_ifval([$2],[$2],[END])" ; then
       
 56997 +        AC_MSG_NOTICE([extend TOP/Makefile with TOP/m4_ifval([$2],[$2],[END])])
       
 56998 +        cat $SRC/END >>$SRC/Makefile
       
 56999 +      fi ; xxxx="####"
       
 57000 +      echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$SRC/Makefile
       
 57001 +      # sanity check
       
 57002 +      if grep '^; echo "MAKE ' $SRC/Makefile >/dev/null ; then
       
 57003 +        AC_MSG_NOTICE([buggy sed found - it deletes tab in "a" text parts])
       
 57004 +        $SED -e '/^@ HOST=/s/^/	/' -e '/^; /s/^/	/' $SRC/Makefile \
       
 57005 +          >$SRC/Makefile~
       
 57006 +        (test -s $SRC/Makefile~ && mv $SRC/Makefile~ $SRC/Makefile) 2>/dev/null
       
 57007 +      fi
       
 57008 +    else
       
 57009 +      xxxx="\\#\\#\\#\\#"
       
 57010 +      # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed
       
 57011 +      echo "s!^$xxxx [[^|]]* | *$SUB *\$!$xxxx ...... $SUB!" >$tmp/conftemp.sed
       
 57012 +      $SED -f "$tmp/conftemp.sed" "$SRC/Makefile" >$tmp/mkfile.tmp
       
 57013 +        cp "$tmp/conftemp.sed" "$SRC/makefiles.sed~"         ## DEBUGGING
       
 57014 +        cp "$tmp/mkfile.tmp"   "$SRC/makefiles.out~"         ## DEBUGGING
       
 57015 +      if cmp -s "$SRC/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then
       
 57016 +        AC_MSG_NOTICE([keeping TOP/Makefile from earlier configure])
       
 57017 +        rm "$tmp/mkfile.tmp"
       
 57018 +      else
       
 57019 +        AC_MSG_NOTICE([reusing TOP/Makefile from earlier configure])
       
 57020 +        mv "$tmp/mkfile.tmp" "$SRC/Makefile"
       
 57021 +      fi
       
 57022 +    fi
       
 57023 +    AC_MSG_NOTICE([build in $SUB (HOST=$ax_enable_builddir_host)])
       
 57024 +    xxxx="####"
       
 57025 +    echo "$xxxx" "$ax_enable_builddir_host" "|$SUB" >>$SRC/Makefile
       
 57026 +  fi
       
 57027 +popdef([END])dnl
       
 57028 +AS_VAR_POPDEF([SED])dnl
       
 57029 +AS_VAR_POPDEF([AUX])dnl
       
 57030 +AS_VAR_POPDEF([SRC])dnl
       
 57031 +AS_VAR_POPDEF([TOP])dnl
       
 57032 +AS_VAR_POPDEF([SUB])dnl
       
 57033 +],[dnl
       
 57034 +ax_enable_builddir_srcdir="$srcdir"                    # $srcdir
       
 57035 +ax_enable_builddir_host="$HOST"                        # $HOST / $host
       
 57036 +ax_enable_builddir_version="$VERSION"                  # $VERSION
       
 57037 +ax_enable_builddir_package="$PACKAGE"                  # $PACKAGE
       
 57038 +ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX
       
 57039 +ax_enable_builddir_sed="$ax_enable_builddir_sed"       # $SED
       
 57040 +ax_enable_builddir="$ax_enable_builddir"               # $SUB
       
 57041 +])dnl
       
 57042 +])
       
 57043 diff --git a/js/src/ctypes/libffi/m4/ax_gcc_archflag.m4 b/js/src/ctypes/libffi/m4/ax_gcc_archflag.m4
       
 57044 new file mode 100644
       
 57045 --- /dev/null
       
 57046 +++ b/js/src/ctypes/libffi/m4/ax_gcc_archflag.m4
       
 57047 @@ -0,0 +1,225 @@
       
 57048 +# ===========================================================================
       
 57049 +#      http://www.gnu.org/software/autoconf-archive/ax_gcc_archflag.html
       
 57050 +# ===========================================================================
       
 57051 +#
       
 57052 +# SYNOPSIS
       
 57053 +#
       
 57054 +#   AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE])
       
 57055 +#
       
 57056 +# DESCRIPTION
       
 57057 +#
       
 57058 +#   This macro tries to guess the "native" arch corresponding to the target
       
 57059 +#   architecture for use with gcc's -march=arch or -mtune=arch flags. If
       
 57060 +#   found, the cache variable $ax_cv_gcc_archflag is set to this flag and
       
 57061 +#   ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to
       
 57062 +#   "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is
       
 57063 +#   to add $ax_cv_gcc_archflag to the end of $CFLAGS.
       
 57064 +#
       
 57065 +#   PORTABLE? should be either [yes] (default) or [no]. In the former case,
       
 57066 +#   the flag is set to -mtune (or equivalent) so that the architecture is
       
 57067 +#   only used for tuning, but the instruction set used is still portable. In
       
 57068 +#   the latter case, the flag is set to -march (or equivalent) so that
       
 57069 +#   architecture-specific instructions are enabled.
       
 57070 +#
       
 57071 +#   The user can specify --with-gcc-arch=<arch> in order to override the
       
 57072 +#   macro's choice of architecture, or --without-gcc-arch to disable this.
       
 57073 +#
       
 57074 +#   When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is
       
 57075 +#   called unless the user specified --with-gcc-arch manually.
       
 57076 +#
       
 57077 +#   Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID
       
 57078 +#
       
 57079 +#   (The main emphasis here is on recent CPUs, on the principle that doing
       
 57080 +#   high-performance computing on old hardware is uncommon.)
       
 57081 +#
       
 57082 +# LICENSE
       
 57083 +#
       
 57084 +#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
       
 57085 +#   Copyright (c) 2008 Matteo Frigo
       
 57086 +#   Copyright (c) 2012 Tsukasa Oi
       
 57087 +#
       
 57088 +#   This program is free software: you can redistribute it and/or modify it
       
 57089 +#   under the terms of the GNU General Public License as published by the
       
 57090 +#   Free Software Foundation, either version 3 of the License, or (at your
       
 57091 +#   option) any later version.
       
 57092 +#
       
 57093 +#   This program is distributed in the hope that it will be useful, but
       
 57094 +#   WITHOUT ANY WARRANTY; without even the implied warranty of
       
 57095 +#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
       
 57096 +#   Public License for more details.
       
 57097 +#
       
 57098 +#   You should have received a copy of the GNU General Public License along
       
 57099 +#   with this program. If not, see <http://www.gnu.org/licenses/>.
       
 57100 +#
       
 57101 +#   As a special exception, the respective Autoconf Macro's copyright owner
       
 57102 +#   gives unlimited permission to copy, distribute and modify the configure
       
 57103 +#   scripts that are the output of Autoconf when processing the Macro. You
       
 57104 +#   need not follow the terms of the GNU General Public License when using
       
 57105 +#   or distributing such scripts, even though portions of the text of the
       
 57106 +#   Macro appear in them. The GNU General Public License (GPL) does govern
       
 57107 +#   all other use of the material that constitutes the Autoconf Macro.
       
 57108 +#
       
 57109 +#   This special exception to the GPL applies to versions of the Autoconf
       
 57110 +#   Macro released by the Autoconf Archive. When you make and distribute a
       
 57111 +#   modified version of the Autoconf Macro, you may extend this special
       
 57112 +#   exception to the GPL to apply to your modified version as well.
       
 57113 +
       
 57114 +#serial 11
       
 57115 +
       
 57116 +AC_DEFUN([AX_GCC_ARCHFLAG],
       
 57117 +[AC_REQUIRE([AC_PROG_CC])
       
 57118 +AC_REQUIRE([AC_CANONICAL_HOST])
       
 57119 +
       
 57120 +AC_ARG_WITH(gcc-arch, [AS_HELP_STRING([--with-gcc-arch=<arch>], [use architecture <arch> for gcc -march/-mtune, instead of guessing])],
       
 57121 +	ax_gcc_arch=$withval, ax_gcc_arch=yes)
       
 57122 +
       
 57123 +AC_MSG_CHECKING([for gcc architecture flag])
       
 57124 +AC_MSG_RESULT([])
       
 57125 +AC_CACHE_VAL(ax_cv_gcc_archflag,
       
 57126 +[
       
 57127 +ax_cv_gcc_archflag="unknown"
       
 57128 +
       
 57129 +if test "$GCC" = yes; then
       
 57130 +
       
 57131 +if test "x$ax_gcc_arch" = xyes; then
       
 57132 +ax_gcc_arch=""
       
 57133 +if test "$cross_compiling" = no; then
       
 57134 +case $host_cpu in
       
 57135 +  i[[3456]]86*|x86_64*) # use cpuid codes
       
 57136 +     AX_GCC_X86_CPUID(0)
       
 57137 +     AX_GCC_X86_CPUID(1)
       
 57138 +     case $ax_cv_gcc_x86_cpuid_0 in
       
 57139 +       *:756e6547:*:*) # Intel
       
 57140 +          case $ax_cv_gcc_x86_cpuid_1 in
       
 57141 +	    *5[[48]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
       
 57142 +	    *5??:*:*:*) ax_gcc_arch=pentium ;;
       
 57143 +	    *0?6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
       
 57144 +	    *0?6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
       
 57145 +	    *0?6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
       
 57146 +	    *0?6[[9de]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
       
 57147 +	    *0?6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
       
 57148 +	    *0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;;
       
 57149 +	    *1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;;
       
 57150 +	    *1?6[[aef]]?:*:*:*|*2?6[[5cef]]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;;
       
 57151 +	    *1?6c?:*:*:*|*[[23]]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;;
       
 57152 +	    *2?6[[ad]]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
       
 57153 +	    *0?6??:*:*:*) ax_gcc_arch=pentiumpro ;;
       
 57154 +	    *6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;;
       
 57155 +	    ?000?f3[[347]]:*:*:*|?000?f4[1347]:*:*:*|?000?f6?:*:*:*)
       
 57156 +		case $host_cpu in
       
 57157 +	          x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
       
 57158 +	          *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
       
 57159 +	        esac ;;
       
 57160 +	    ?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
       
 57161 +          esac ;;
       
 57162 +       *:68747541:*:*) # AMD
       
 57163 +          case $ax_cv_gcc_x86_cpuid_1 in
       
 57164 +	    *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;;
       
 57165 +	    *5[[8d]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
       
 57166 +	    *5[[9]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
       
 57167 +	    *60?:*:*:*) ax_gcc_arch=k7 ;;
       
 57168 +	    *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;;
       
 57169 +	    *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
       
 57170 +	    *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
       
 57171 +	    *6[[68a]]?:*:*:*)
       
 57172 +	       AX_GCC_X86_CPUID(0x80000006) # L2 cache size
       
 57173 +	       case $ax_cv_gcc_x86_cpuid_0x80000006 in
       
 57174 +                 *:*:*[[1-9a-f]]??????:*) # (L2 = ecx >> 16) >= 256
       
 57175 +			ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
       
 57176 +                 *) ax_gcc_arch="athlon-4 athlon k7" ;;
       
 57177 +	       esac ;;
       
 57178 +	    ?00??f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
       
 57179 +	    ?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
       
 57180 +	    ?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
       
 57181 +	    ?00??f??:*:*:*) ax_gcc_arch="k8" ;;
       
 57182 +	    ?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;;
       
 57183 +	    ?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;;
       
 57184 +	    *f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;;
       
 57185 +          esac ;;
       
 57186 +	*:746e6543:*:*) # IDT
       
 57187 +	   case $ax_cv_gcc_x86_cpuid_1 in
       
 57188 +	     *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
       
 57189 +	     *58?:*:*:*) ax_gcc_arch=winchip2 ;;
       
 57190 +	     *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;;
       
 57191 +	     *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
       
 57192 +	   esac ;;
       
 57193 +     esac
       
 57194 +     if test x"$ax_gcc_arch" = x; then # fallback
       
 57195 +	case $host_cpu in
       
 57196 +	  i586*) ax_gcc_arch=pentium ;;
       
 57197 +	  i686*) ax_gcc_arch=pentiumpro ;;
       
 57198 +        esac
       
 57199 +     fi
       
 57200 +     ;;
       
 57201 +
       
 57202 +  sparc*)
       
 57203 +     AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/])
       
 57204 +     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`
       
 57205 +     cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters`
       
 57206 +     case $cputype in
       
 57207 +         *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
       
 57208 +         *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
       
 57209 +         *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
       
 57210 +         *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;;
       
 57211 +         *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;;
       
 57212 +         *cypress*) ax_gcc_arch=cypress ;;
       
 57213 +     esac ;;
       
 57214 +
       
 57215 +  alphaev5) ax_gcc_arch=ev5 ;;
       
 57216 +  alphaev56) ax_gcc_arch=ev56 ;;
       
 57217 +  alphapca56) ax_gcc_arch="pca56 ev56" ;;
       
 57218 +  alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
       
 57219 +  alphaev6) ax_gcc_arch=ev6 ;;
       
 57220 +  alphaev67) ax_gcc_arch=ev67 ;;
       
 57221 +  alphaev68) ax_gcc_arch="ev68 ev67" ;;
       
 57222 +  alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
       
 57223 +  alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
       
 57224 +  alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
       
 57225 +
       
 57226 +  powerpc*)
       
 57227 +     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`
       
 57228 +     cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
       
 57229 +     case $cputype in
       
 57230 +       *750*) ax_gcc_arch="750 G3" ;;
       
 57231 +       *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;;
       
 57232 +       *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;;
       
 57233 +       *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;;
       
 57234 +       *970*) ax_gcc_arch="970 G5 power4";;
       
 57235 +       *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
       
 57236 +       *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
       
 57237 +       603ev|8240) ax_gcc_arch="$cputype 603e 603";;
       
 57238 +       *) ax_gcc_arch=$cputype ;;
       
 57239 +     esac
       
 57240 +     ax_gcc_arch="$ax_gcc_arch powerpc"
       
 57241 +     ;;
       
 57242 +esac
       
 57243 +fi # not cross-compiling
       
 57244 +fi # guess arch
       
 57245 +
       
 57246 +if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
       
 57247 +for arch in $ax_gcc_arch; do
       
 57248 +  if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code
       
 57249 +    flags="-mtune=$arch"
       
 57250 +    # -mcpu=$arch and m$arch generate nonportable code on every arch except
       
 57251 +    # x86.  And some other arches (e.g. Alpha) don't accept -mtune.  Grrr.
       
 57252 +    case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
       
 57253 +  else
       
 57254 +    flags="-march=$arch -mcpu=$arch -m$arch"
       
 57255 +  fi
       
 57256 +  for flag in $flags; do
       
 57257 +    AX_CHECK_COMPILE_FLAG($flag, [ax_cv_gcc_archflag=$flag; break])
       
 57258 +  done
       
 57259 +  test "x$ax_cv_gcc_archflag" = xunknown || break
       
 57260 +done
       
 57261 +fi
       
 57262 +
       
 57263 +fi # $GCC=yes
       
 57264 +])
       
 57265 +AC_MSG_CHECKING([for gcc architecture flag])
       
 57266 +AC_MSG_RESULT($ax_cv_gcc_archflag)
       
 57267 +if test "x$ax_cv_gcc_archflag" = xunknown; then
       
 57268 +  m4_default([$3],:)
       
 57269 +else
       
 57270 +  m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"])
       
 57271 +fi
       
 57272 +])
       
 57273 diff --git a/js/src/ctypes/libffi/m4/ax_gcc_x86_cpuid.m4 b/js/src/ctypes/libffi/m4/ax_gcc_x86_cpuid.m4
       
 57274 new file mode 100644
       
 57275 --- /dev/null
       
 57276 +++ b/js/src/ctypes/libffi/m4/ax_gcc_x86_cpuid.m4
       
 57277 @@ -0,0 +1,79 @@
       
 57278 +# ===========================================================================
       
 57279 +#     http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html
       
 57280 +# ===========================================================================
       
 57281 +#
       
 57282 +# SYNOPSIS
       
 57283 +#
       
 57284 +#   AX_GCC_X86_CPUID(OP)
       
 57285 +#
       
 57286 +# DESCRIPTION
       
 57287 +#
       
 57288 +#   On Pentium and later x86 processors, with gcc or a compiler that has a
       
 57289 +#   compatible syntax for inline assembly instructions, run a small program
       
 57290 +#   that executes the cpuid instruction with input OP. This can be used to
       
 57291 +#   detect the CPU type.
       
 57292 +#
       
 57293 +#   On output, the values of the eax, ebx, ecx, and edx registers are stored
       
 57294 +#   as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable
       
 57295 +#   ax_cv_gcc_x86_cpuid_OP.
       
 57296 +#
       
 57297 +#   If the cpuid instruction fails (because you are running a
       
 57298 +#   cross-compiler, or because you are not using gcc, or because you are on
       
 57299 +#   a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP
       
 57300 +#   is set to the string "unknown".
       
 57301 +#
       
 57302 +#   This macro mainly exists to be used in AX_GCC_ARCHFLAG.
       
 57303 +#
       
 57304 +# LICENSE
       
 57305 +#
       
 57306 +#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
       
 57307 +#   Copyright (c) 2008 Matteo Frigo
       
 57308 +#
       
 57309 +#   This program is free software: you can redistribute it and/or modify it
       
 57310 +#   under the terms of the GNU General Public License as published by the
       
 57311 +#   Free Software Foundation, either version 3 of the License, or (at your
       
 57312 +#   option) any later version.
       
 57313 +#
       
 57314 +#   This program is distributed in the hope that it will be useful, but
       
 57315 +#   WITHOUT ANY WARRANTY; without even the implied warranty of
       
 57316 +#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
       
 57317 +#   Public License for more details.
       
 57318 +#
       
 57319 +#   You should have received a copy of the GNU General Public License along
       
 57320 +#   with this program. If not, see <http://www.gnu.org/licenses/>.
       
 57321 +#
       
 57322 +#   As a special exception, the respective Autoconf Macro's copyright owner
       
 57323 +#   gives unlimited permission to copy, distribute and modify the configure
       
 57324 +#   scripts that are the output of Autoconf when processing the Macro. You
       
 57325 +#   need not follow the terms of the GNU General Public License when using
       
 57326 +#   or distributing such scripts, even though portions of the text of the
       
 57327 +#   Macro appear in them. The GNU General Public License (GPL) does govern
       
 57328 +#   all other use of the material that constitutes the Autoconf Macro.
       
 57329 +#
       
 57330 +#   This special exception to the GPL applies to versions of the Autoconf
       
 57331 +#   Macro released by the Autoconf Archive. When you make and distribute a
       
 57332 +#   modified version of the Autoconf Macro, you may extend this special
       
 57333 +#   exception to the GPL to apply to your modified version as well.
       
 57334 +
       
 57335 +#serial 7
       
 57336 +
       
 57337 +AC_DEFUN([AX_GCC_X86_CPUID],
       
 57338 +[AC_REQUIRE([AC_PROG_CC])
       
 57339 +AC_LANG_PUSH([C])
       
 57340 +AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
       
 57341 + [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
       
 57342 +     int op = $1, eax, ebx, ecx, edx;
       
 57343 +     FILE *f;
       
 57344 +      __asm__("cpuid"
       
 57345 +        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
       
 57346 +        : "a" (op));
       
 57347 +     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
       
 57348 +     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
       
 57349 +     fclose(f);
       
 57350 +     return 0;
       
 57351 +])],
       
 57352 +     [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid],
       
 57353 +     [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid],
       
 57354 +     [ax_cv_gcc_x86_cpuid_$1=unknown])])
       
 57355 +AC_LANG_POP([C])
       
 57356 +])
       
 57357 diff --git a/js/src/ctypes/libffi/m4/libtool.m4 b/js/src/ctypes/libffi/m4/libtool.m4
       
 57358 --- a/js/src/ctypes/libffi/m4/libtool.m4
       
 57359 +++ b/js/src/ctypes/libffi/m4/libtool.m4
       
 57360 @@ -1,21 +1,23 @@
       
 57361  # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
       
 57362  #
       
 57363  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
       
 57364 -#                 2006, 2007, 2008 Free Software Foundation, Inc.
       
 57365 +#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
       
 57366 +#                 Foundation, Inc.
       
 57367  #   Written by Gordon Matzigkeit, 1996
       
 57368  #
       
 57369  # This file is free software; the Free Software Foundation gives
       
 57370  # unlimited permission to copy and/or distribute it, with or without
       
 57371  # modifications, as long as this notice is preserved.
       
 57372  
       
 57373  m4_define([_LT_COPYING], [dnl
       
 57374  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
       
 57375 -#                 2006, 2007, 2008 Free Software Foundation, Inc.
       
 57376 +#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
       
 57377 +#                 Foundation, Inc.
       
 57378  #   Written by Gordon Matzigkeit, 1996
       
 57379  #
       
 57380  #   This file is part of GNU Libtool.
       
 57381  #
       
 57382  # GNU Libtool is free software; you can redistribute it and/or
       
 57383  # modify it under the terms of the GNU General Public License as
       
 57384  # published by the Free Software Foundation; either version 2 of
       
 57385  # the License, or (at your option) any later version.
       
 57386 @@ -32,17 +34,17 @@ m4_define([_LT_COPYING], [dnl
       
 57387  #
       
 57388  # You should have received a copy of the GNU General Public License
       
 57389  # along with GNU Libtool; see the file COPYING.  If not, a copy
       
 57390  # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
       
 57391  # obtained by writing to the Free Software Foundation, Inc.,
       
 57392  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       
 57393  ])
       
 57394  
       
 57395 -# serial 56 LT_INIT
       
 57396 +# serial 57 LT_INIT
       
 57397  
       
 57398  
       
 57399  # LT_PREREQ(VERSION)
       
 57400  # ------------------
       
 57401  # Complain and exit if this libtool version is less that VERSION.
       
 57402  m4_defun([LT_PREREQ],
       
 57403  [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
       
 57404         [m4_default([$3],
       
 57405 @@ -61,32 +63,35 @@ m4_defun([_LT_CHECK_BUILDDIR],
       
 57406  esac
       
 57407  ])
       
 57408  
       
 57409  
       
 57410  # LT_INIT([OPTIONS])
       
 57411  # ------------------
       
 57412  AC_DEFUN([LT_INIT],
       
 57413  [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
       
 57414 +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
       
 57415  AC_BEFORE([$0], [LT_LANG])dnl
       
 57416  AC_BEFORE([$0], [LT_OUTPUT])dnl
       
 57417  AC_BEFORE([$0], [LTDL_INIT])dnl
       
 57418  m4_require([_LT_CHECK_BUILDDIR])dnl
       
 57419  
       
 57420  dnl Autoconf doesn't catch unexpanded LT_ macros by default:
       
 57421  m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
       
 57422  m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
       
 57423  dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
       
 57424  dnl unless we require an AC_DEFUNed macro:
       
 57425  AC_REQUIRE([LTOPTIONS_VERSION])dnl
       
 57426  AC_REQUIRE([LTSUGAR_VERSION])dnl
       
 57427  AC_REQUIRE([LTVERSION_VERSION])dnl
       
 57428  AC_REQUIRE([LTOBSOLETE_VERSION])dnl
       
 57429  m4_require([_LT_PROG_LTMAIN])dnl
       
 57430  
       
 57431 +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
       
 57432 +
       
 57433  dnl Parse OPTIONS
       
 57434  _LT_SET_OPTIONS([$0], [$1])
       
 57435  
       
 57436  # This can be used to rebuild libtool when needed
       
 57437  LIBTOOL_DEPS="$ltmain"
       
 57438  
       
 57439  # Always use our own libtool.
       
 57440  LIBTOOL='$(SHELL) $(top_builddir)/libtool'
       
 57441 @@ -113,17 +118,17 @@ m4_defun([_LT_CC_BASENAME],
       
 57442  [for cc_temp in $1""; do
       
 57443    case $cc_temp in
       
 57444      compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
       
 57445      distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
       
 57446      \-*) ;;
       
 57447      *) break;;
       
 57448    esac
       
 57449  done
       
 57450 -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
       
 57451 +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
       
 57452  ])
       
 57453  
       
 57454  
       
 57455  # _LT_FILEUTILS_DEFAULTS
       
 57456  # ----------------------
       
 57457  # It is okay to use these file commands and assume they have been set
       
 57458  # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
       
 57459  m4_defun([_LT_FILEUTILS_DEFAULTS],
       
 57460 @@ -133,16 +138,21 @@ m4_defun([_LT_FILEUTILS_DEFAULTS],
       
 57461  ])# _LT_FILEUTILS_DEFAULTS
       
 57462  
       
 57463  
       
 57464  # _LT_SETUP
       
 57465  # ---------
       
 57466  m4_defun([_LT_SETUP],
       
 57467  [AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 57468  AC_REQUIRE([AC_CANONICAL_BUILD])dnl
       
 57469 +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
       
 57470 +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
       
 57471 +
       
 57472 +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
       
 57473 +dnl
       
 57474  _LT_DECL([], [host_alias], [0], [The host system])dnl
       
 57475  _LT_DECL([], [host], [0])dnl
       
 57476  _LT_DECL([], [host_os], [0])dnl
       
 57477  dnl
       
 57478  _LT_DECL([], [build_alias], [0], [The build system])dnl
       
 57479  _LT_DECL([], [build], [0])dnl
       
 57480  _LT_DECL([], [build_os], [0])dnl
       
 57481  dnl
       
 57482 @@ -155,66 +165,51 @@ test -z "$LN_S" && LN_S="ln -s"
       
 57483  _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
       
 57484  dnl
       
 57485  AC_REQUIRE([LT_CMD_MAX_LEN])dnl
       
 57486  _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
       
 57487  _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
       
 57488  dnl
       
 57489  m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 57490  m4_require([_LT_CHECK_SHELL_FEATURES])dnl
       
 57491 +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
       
 57492  m4_require([_LT_CMD_RELOAD])dnl
       
 57493  m4_require([_LT_CHECK_MAGIC_METHOD])dnl
       
 57494 +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
       
 57495  m4_require([_LT_CMD_OLD_ARCHIVE])dnl
       
 57496  m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
       
 57497 +m4_require([_LT_WITH_SYSROOT])dnl
       
 57498  
       
 57499  _LT_CONFIG_LIBTOOL_INIT([
       
 57500  # See if we are running on zsh, and set the options which allow our
       
 57501  # commands through without removal of \ escapes INIT.
       
 57502  if test -n "\${ZSH_VERSION+set}" ; then
       
 57503     setopt NO_GLOB_SUBST
       
 57504  fi
       
 57505  ])
       
 57506  if test -n "${ZSH_VERSION+set}" ; then
       
 57507     setopt NO_GLOB_SUBST
       
 57508  fi
       
 57509  
       
 57510  _LT_CHECK_OBJDIR
       
 57511  
       
 57512  m4_require([_LT_TAG_COMPILER])dnl
       
 57513 -_LT_PROG_ECHO_BACKSLASH
       
 57514  
       
 57515  case $host_os in
       
 57516  aix3*)
       
 57517    # AIX sometimes has problems with the GCC collect2 program.  For some
       
 57518    # reason, if we set the COLLECT_NAMES environment variable, the problems
       
 57519    # vanish in a puff of smoke.
       
 57520    if test "X${COLLECT_NAMES+set}" != Xset; then
       
 57521      COLLECT_NAMES=
       
 57522      export COLLECT_NAMES
       
 57523    fi
       
 57524    ;;
       
 57525  esac
       
 57526  
       
 57527 -# Sed substitution that helps us do robust quoting.  It backslashifies
       
 57528 -# metacharacters that are still active within double-quoted strings.
       
 57529 -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
       
 57530 -
       
 57531 -# Same as above, but do not quote variable references.
       
 57532 -double_quote_subst='s/\([["`\\]]\)/\\\1/g'
       
 57533 -
       
 57534 -# Sed substitution to delay expansion of an escaped shell variable in a
       
 57535 -# double_quote_subst'ed string.
       
 57536 -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
       
 57537 -
       
 57538 -# Sed substitution to delay expansion of an escaped single quote.
       
 57539 -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
       
 57540 -
       
 57541 -# Sed substitution to avoid accidental globbing in evaled expressions
       
 57542 -no_glob_subst='s/\*/\\\*/g'
       
 57543 -
       
 57544  # Global variables:
       
 57545  ofile=libtool
       
 57546  can_build_shared=yes
       
 57547  
       
 57548  # All known linkers require a `.a' archive for static linking (except MSVC,
       
 57549  # which needs '.lib').
       
 57550  libext=a
       
 57551  
       
 57552 @@ -245,16 +240,38 @@ esac
       
 57553  # Use C for the default configuration in the libtool script
       
 57554  LT_SUPPORTED_TAG([CC])
       
 57555  _LT_LANG_C_CONFIG
       
 57556  _LT_LANG_DEFAULT_CONFIG
       
 57557  _LT_CONFIG_COMMANDS
       
 57558  ])# _LT_SETUP
       
 57559  
       
 57560  
       
 57561 +# _LT_PREPARE_SED_QUOTE_VARS
       
 57562 +# --------------------------
       
 57563 +# Define a few sed substitution that help us do robust quoting.
       
 57564 +m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
       
 57565 +[# Backslashify metacharacters that are still active within
       
 57566 +# double-quoted strings.
       
 57567 +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
       
 57568 +
       
 57569 +# Same as above, but do not quote variable references.
       
 57570 +double_quote_subst='s/\([["`\\]]\)/\\\1/g'
       
 57571 +
       
 57572 +# Sed substitution to delay expansion of an escaped shell variable in a
       
 57573 +# double_quote_subst'ed string.
       
 57574 +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
       
 57575 +
       
 57576 +# Sed substitution to delay expansion of an escaped single quote.
       
 57577 +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
       
 57578 +
       
 57579 +# Sed substitution to avoid accidental globbing in evaled expressions
       
 57580 +no_glob_subst='s/\*/\\\*/g'
       
 57581 +])
       
 57582 +
       
 57583  # _LT_PROG_LTMAIN
       
 57584  # ---------------
       
 57585  # Note that this code is called both from `configure', and `config.status'
       
 57586  # now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
       
 57587  # `config.status' has no value for ac_aux_dir unless we are using Automake,
       
 57588  # so we pass a copy along to make sure it has a sensible value anyway.
       
 57589  m4_defun([_LT_PROG_LTMAIN],
       
 57590  [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
       
 57591 @@ -403,27 +420,27 @@ m4_define([_lt_decl_all_varnames],
       
 57592  
       
 57593  
       
 57594  # _LT_CONFIG_STATUS_DECLARE([VARNAME])
       
 57595  # ------------------------------------
       
 57596  # Quote a variable value, and forward it to `config.status' so that its
       
 57597  # declaration there will have the same value as in `configure'.  VARNAME
       
 57598  # must have a single quote delimited value for this to work.
       
 57599  m4_define([_LT_CONFIG_STATUS_DECLARE],
       
 57600 -[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
       
 57601 +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
       
 57602  
       
 57603  
       
 57604  # _LT_CONFIG_STATUS_DECLARATIONS
       
 57605  # ------------------------------
       
 57606  # We delimit libtool config variables with single quotes, so when
       
 57607  # we write them to config.status, we have to be sure to quote all
       
 57608  # embedded single quotes properly.  In configure, this macro expands
       
 57609  # each variable declared with _LT_DECL (and _LT_TAGDECL) into:
       
 57610  #
       
 57611 -#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
       
 57612 +#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
       
 57613  m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
       
 57614  [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
       
 57615      [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
       
 57616  
       
 57617  
       
 57618  # _LT_LIBTOOL_TAGS
       
 57619  # ----------------
       
 57620  # Output comment and list of tags supported by the script
       
 57621 @@ -512,75 +529,96 @@ m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_I
       
 57622  sed_quote_subst='$sed_quote_subst'
       
 57623  double_quote_subst='$double_quote_subst'
       
 57624  delay_variable_subst='$delay_variable_subst'
       
 57625  _LT_CONFIG_STATUS_DECLARATIONS
       
 57626  LTCC='$LTCC'
       
 57627  LTCFLAGS='$LTCFLAGS'
       
 57628  compiler='$compiler_DEFAULT'
       
 57629  
       
 57630 +# A function that is used when there is no print builtin or printf.
       
 57631 +func_fallback_echo ()
       
 57632 +{
       
 57633 +  eval 'cat <<_LTECHO_EOF
       
 57634 +\$[]1
       
 57635 +_LTECHO_EOF'
       
 57636 +}
       
 57637 +
       
 57638  # Quote evaled strings.
       
 57639  for var in lt_decl_all_varnames([[ \
       
 57640  ]], lt_decl_quote_varnames); do
       
 57641 -    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
       
 57642 +    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
       
 57643      *[[\\\\\\\`\\"\\\$]]*)
       
 57644 -      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       
 57645 +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       
 57646        ;;
       
 57647      *)
       
 57648        eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
       
 57649        ;;
       
 57650      esac
       
 57651  done
       
 57652  
       
 57653  # Double-quote double-evaled strings.
       
 57654  for var in lt_decl_all_varnames([[ \
       
 57655  ]], lt_decl_dquote_varnames); do
       
 57656 -    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
       
 57657 +    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
       
 57658      *[[\\\\\\\`\\"\\\$]]*)
       
 57659 -      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       
 57660 +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       
 57661        ;;
       
 57662      *)
       
 57663        eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
       
 57664        ;;
       
 57665      esac
       
 57666  done
       
 57667  
       
 57668 -# Fix-up fallback echo if it was mangled by the above quoting rules.
       
 57669 -case \$lt_ECHO in
       
 57670 -*'\\\[$]0 --fallback-echo"')dnl "
       
 57671 -  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
       
 57672 -  ;;
       
 57673 -esac
       
 57674 -
       
 57675  _LT_OUTPUT_LIBTOOL_INIT
       
 57676  ])
       
 57677  
       
 57678 +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
       
 57679 +# ------------------------------------
       
 57680 +# Generate a child script FILE with all initialization necessary to
       
 57681 +# reuse the environment learned by the parent script, and make the
       
 57682 +# file executable.  If COMMENT is supplied, it is inserted after the
       
 57683 +# `#!' sequence but before initialization text begins.  After this
       
 57684 +# macro, additional text can be appended to FILE to form the body of
       
 57685 +# the child script.  The macro ends with non-zero status if the
       
 57686 +# file could not be fully written (such as if the disk is full).
       
 57687 +m4_ifdef([AS_INIT_GENERATED],
       
 57688 +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
       
 57689 +[m4_defun([_LT_GENERATED_FILE_INIT],
       
 57690 +[m4_require([AS_PREPARE])]dnl
       
 57691 +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
       
 57692 +[lt_write_fail=0
       
 57693 +cat >$1 <<_ASEOF || lt_write_fail=1
       
 57694 +#! $SHELL
       
 57695 +# Generated by $as_me.
       
 57696 +$2
       
 57697 +SHELL=\${CONFIG_SHELL-$SHELL}
       
 57698 +export SHELL
       
 57699 +_ASEOF
       
 57700 +cat >>$1 <<\_ASEOF || lt_write_fail=1
       
 57701 +AS_SHELL_SANITIZE
       
 57702 +_AS_PREPARE
       
 57703 +exec AS_MESSAGE_FD>&1
       
 57704 +_ASEOF
       
 57705 +test $lt_write_fail = 0 && chmod +x $1[]dnl
       
 57706 +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
       
 57707  
       
 57708  # LT_OUTPUT
       
 57709  # ---------
       
 57710  # This macro allows early generation of the libtool script (before
       
 57711  # AC_OUTPUT is called), incase it is used in configure for compilation
       
 57712  # tests.
       
 57713  AC_DEFUN([LT_OUTPUT],
       
 57714  [: ${CONFIG_LT=./config.lt}
       
 57715  AC_MSG_NOTICE([creating $CONFIG_LT])
       
 57716 -cat >"$CONFIG_LT" <<_LTEOF
       
 57717 -#! $SHELL
       
 57718 -# Generated by $as_me.
       
 57719 -# Run this file to recreate a libtool stub with the current configuration.
       
 57720 -
       
 57721 +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
       
 57722 +[# Run this file to recreate a libtool stub with the current configuration.])
       
 57723 +
       
 57724 +cat >>"$CONFIG_LT" <<\_LTEOF
       
 57725  lt_cl_silent=false
       
 57726 -SHELL=\${CONFIG_SHELL-$SHELL}
       
 57727 -_LTEOF
       
 57728 -
       
 57729 -cat >>"$CONFIG_LT" <<\_LTEOF
       
 57730 -AS_SHELL_SANITIZE
       
 57731 -_AS_PREPARE
       
 57732 -
       
 57733 -exec AS_MESSAGE_FD>&1
       
 57734  exec AS_MESSAGE_LOG_FD>>config.log
       
 57735  {
       
 57736    echo
       
 57737    AS_BOX([Running $as_me.])
       
 57738  } >&AS_MESSAGE_LOG_FD
       
 57739  
       
 57740  lt_cl_help="\
       
 57741  \`$as_me' creates a local libtool stub from the current configuration,
       
 57742 @@ -596,17 +634,17 @@ Usage: $[0] [[OPTIONS]]
       
 57743  
       
 57744  Report bugs to <bug-libtool@gnu.org>."
       
 57745  
       
 57746  lt_cl_version="\
       
 57747  m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
       
 57748  m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
       
 57749  configured by $[0], generated by m4_PACKAGE_STRING.
       
 57750  
       
 57751 -Copyright (C) 2008 Free Software Foundation, Inc.
       
 57752 +Copyright (C) 2011 Free Software Foundation, Inc.
       
 57753  This config.lt script is free software; the Free Software Foundation
       
 57754  gives unlimited permision to copy, distribute and modify it."
       
 57755  
       
 57756  while test $[#] != 0
       
 57757  do
       
 57758    case $[1] in
       
 57759      --version | --v* | -V )
       
 57760        echo "$lt_cl_version"; exit 0 ;;
       
 57761 @@ -641,25 +679,23 @@ AC_MSG_NOTICE([creating $ofile])
       
 57762  AS_EXIT(0)
       
 57763  _LTEOF
       
 57764  chmod +x "$CONFIG_LT"
       
 57765  
       
 57766  # configure is writing to config.log, but config.lt does its own redirection,
       
 57767  # appending to config.log, which fails on DOS, as config.log is still kept
       
 57768  # open by configure.  Here we exec the FD to /dev/null, effectively closing
       
 57769  # config.log, so it can be properly (re)opened and appended to by config.lt.
       
 57770 -if test "$no_create" != yes; then
       
 57771 -  lt_cl_success=:
       
 57772 -  test "$silent" = yes &&
       
 57773 -    lt_config_lt_args="$lt_config_lt_args --quiet"
       
 57774 -  exec AS_MESSAGE_LOG_FD>/dev/null
       
 57775 -  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
       
 57776 -  exec AS_MESSAGE_LOG_FD>>config.log
       
 57777 -  $lt_cl_success || AS_EXIT(1)
       
 57778 -fi
       
 57779 +lt_cl_success=:
       
 57780 +test "$silent" = yes &&
       
 57781 +  lt_config_lt_args="$lt_config_lt_args --quiet"
       
 57782 +exec AS_MESSAGE_LOG_FD>/dev/null
       
 57783 +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
       
 57784 +exec AS_MESSAGE_LOG_FD>>config.log
       
 57785 +$lt_cl_success || AS_EXIT(1)
       
 57786  ])# LT_OUTPUT
       
 57787  
       
 57788  
       
 57789  # _LT_CONFIG(TAG)
       
 57790  # ---------------
       
 57791  # If TAG is the built-in tag, create an initial libtool script with a
       
 57792  # default configuration from the untagged config vars.  Otherwise add code
       
 57793  # to config.status for appending the configuration named by TAG from the
       
 57794 @@ -712,25 +748,22 @@ fi
       
 57795    esac
       
 57796  
       
 57797    _LT_PROG_LTMAIN
       
 57798  
       
 57799    # We use sed instead of cat because bash on DJGPP gets confused if
       
 57800    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
       
 57801    # text mode, it properly converts lines to CR/LF.  This bash problem
       
 57802    # is reportedly fixed, but why not run on old versions too?
       
 57803 -  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
       
 57804 -    || (rm -f "$cfgfile"; exit 1)
       
 57805 -
       
 57806 -  _LT_PROG_XSI_SHELLFNS
       
 57807 -
       
 57808 -  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
       
 57809 -    || (rm -f "$cfgfile"; exit 1)
       
 57810 -
       
 57811 -  mv -f "$cfgfile" "$ofile" ||
       
 57812 +  sed '$q' "$ltmain" >> "$cfgfile" \
       
 57813 +     || (rm -f "$cfgfile"; exit 1)
       
 57814 +
       
 57815 +  _LT_PROG_REPLACE_SHELLFNS
       
 57816 +
       
 57817 +   mv -f "$cfgfile" "$ofile" ||
       
 57818      (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
       
 57819    chmod +x "$ofile"
       
 57820  ],
       
 57821  [cat <<_LT_EOF >> "$ofile"
       
 57822  
       
 57823  dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
       
 57824  dnl in a comment (ie after a #).
       
 57825  # ### BEGIN LIBTOOL TAG CONFIG: $1
       
 57826 @@ -765,16 +798,17 @@ m4_define([_LT_TAGS], [])
       
 57827  # LT_LANG(LANG)
       
 57828  # -------------
       
 57829  # Enable libtool support for the given language if not already enabled.
       
 57830  AC_DEFUN([LT_LANG],
       
 57831  [AC_BEFORE([$0], [LT_OUTPUT])dnl
       
 57832  m4_case([$1],
       
 57833    [C],			[_LT_LANG(C)],
       
 57834    [C++],		[_LT_LANG(CXX)],
       
 57835 +  [Go],			[_LT_LANG(GO)],
       
 57836    [Java],		[_LT_LANG(GCJ)],
       
 57837    [Fortran 77],		[_LT_LANG(F77)],
       
 57838    [Fortran],		[_LT_LANG(FC)],
       
 57839    [Windows Resource],	[_LT_LANG(RC)],
       
 57840    [m4_ifdef([_LT_LANG_]$1[_CONFIG],
       
 57841      [_LT_LANG($1)],
       
 57842      [m4_fatal([$0: unsupported language: "$1"])])])dnl
       
 57843  ])# LT_LANG
       
 57844 @@ -786,16 +820,41 @@ m4_defun([_LT_LANG],
       
 57845  [m4_ifdef([_LT_LANG_]$1[_enabled], [],
       
 57846    [LT_SUPPORTED_TAG([$1])dnl
       
 57847    m4_append([_LT_TAGS], [$1 ])dnl
       
 57848    m4_define([_LT_LANG_]$1[_enabled], [])dnl
       
 57849    _LT_LANG_$1_CONFIG($1)])dnl
       
 57850  ])# _LT_LANG
       
 57851  
       
 57852  
       
 57853 +m4_ifndef([AC_PROG_GO], [
       
 57854 +############################################################
       
 57855 +# NOTE: This macro has been submitted for inclusion into   #
       
 57856 +#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
       
 57857 +#  a released version of Autoconf we should remove this    #
       
 57858 +#  macro and use it instead.                               #
       
 57859 +############################################################
       
 57860 +m4_defun([AC_PROG_GO],
       
 57861 +[AC_LANG_PUSH(Go)dnl
       
 57862 +AC_ARG_VAR([GOC],     [Go compiler command])dnl
       
 57863 +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
       
 57864 +_AC_ARG_VAR_LDFLAGS()dnl
       
 57865 +AC_CHECK_TOOL(GOC, gccgo)
       
 57866 +if test -z "$GOC"; then
       
 57867 +  if test -n "$ac_tool_prefix"; then
       
 57868 +    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
       
 57869 +  fi
       
 57870 +fi
       
 57871 +if test -z "$GOC"; then
       
 57872 +  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
       
 57873 +fi
       
 57874 +])#m4_defun
       
 57875 +])#m4_ifndef
       
 57876 +
       
 57877 +
       
 57878  # _LT_LANG_DEFAULT_CONFIG
       
 57879  # -----------------------
       
 57880  m4_defun([_LT_LANG_DEFAULT_CONFIG],
       
 57881  [AC_PROVIDE_IFELSE([AC_PROG_CXX],
       
 57882    [LT_LANG(CXX)],
       
 57883    [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
       
 57884  
       
 57885  AC_PROVIDE_IFELSE([AC_PROG_F77],
       
 57886 @@ -816,31 +875,37 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
       
 57887        [LT_LANG(GCJ)],
       
 57888        [m4_ifdef([AC_PROG_GCJ],
       
 57889  	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
       
 57890         m4_ifdef([A][M_PROG_GCJ],
       
 57891  	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
       
 57892         m4_ifdef([LT_PROG_GCJ],
       
 57893  	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
       
 57894  
       
 57895 +AC_PROVIDE_IFELSE([AC_PROG_GO],
       
 57896 +  [LT_LANG(GO)],
       
 57897 +  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
       
 57898 +
       
 57899  AC_PROVIDE_IFELSE([LT_PROG_RC],
       
 57900    [LT_LANG(RC)],
       
 57901    [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
       
 57902  ])# _LT_LANG_DEFAULT_CONFIG
       
 57903  
       
 57904  # Obsolete macros:
       
 57905  AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
       
 57906  AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
       
 57907  AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
       
 57908  AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
       
 57909 +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
       
 57910  dnl aclocal-1.4 backwards compatibility:
       
 57911  dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
       
 57912  dnl AC_DEFUN([AC_LIBTOOL_F77], [])
       
 57913  dnl AC_DEFUN([AC_LIBTOOL_FC], [])
       
 57914  dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
       
 57915 +dnl AC_DEFUN([AC_LIBTOOL_RC], [])
       
 57916  
       
 57917  
       
 57918  # _LT_TAG_COMPILER
       
 57919  # ----------------
       
 57920  m4_defun([_LT_TAG_COMPILER],
       
 57921  [AC_REQUIRE([AC_PROG_CC])dnl
       
 57922  
       
 57923  _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
       
 57924 @@ -916,35 +981,70 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECK
       
 57925  	# link flags.
       
 57926  	rm -rf libconftest.dylib*
       
 57927  	echo "int foo(void){return 1;}" > conftest.c
       
 57928  	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
       
 57929  -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
       
 57930  	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
       
 57931  	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
       
 57932          _lt_result=$?
       
 57933 -	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
       
 57934 +	# If there is a non-empty error log, and "single_module"
       
 57935 +	# appears in it, assume the flag caused a linker warning
       
 57936 +        if test -s conftest.err && $GREP single_module conftest.err; then
       
 57937 +	  cat conftest.err >&AS_MESSAGE_LOG_FD
       
 57938 +	# Otherwise, if the output was created with a 0 exit code from
       
 57939 +	# the compiler, it worked.
       
 57940 +	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
       
 57941  	  lt_cv_apple_cc_single_mod=yes
       
 57942  	else
       
 57943  	  cat conftest.err >&AS_MESSAGE_LOG_FD
       
 57944  	fi
       
 57945  	rm -rf libconftest.dylib*
       
 57946  	rm -f conftest.*
       
 57947        fi])
       
 57948 +
       
 57949      AC_CACHE_CHECK([for -exported_symbols_list linker flag],
       
 57950        [lt_cv_ld_exported_symbols_list],
       
 57951        [lt_cv_ld_exported_symbols_list=no
       
 57952        save_LDFLAGS=$LDFLAGS
       
 57953        echo "_main" > conftest.sym
       
 57954        LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
       
 57955        AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
       
 57956  	[lt_cv_ld_exported_symbols_list=yes],
       
 57957  	[lt_cv_ld_exported_symbols_list=no])
       
 57958  	LDFLAGS="$save_LDFLAGS"
       
 57959      ])
       
 57960 +
       
 57961 +    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
       
 57962 +      [lt_cv_ld_force_load=no
       
 57963 +      cat > conftest.c << _LT_EOF
       
 57964 +int forced_loaded() { return 2;}
       
 57965 +_LT_EOF
       
 57966 +      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
       
 57967 +      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
       
 57968 +      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
       
 57969 +      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
       
 57970 +      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
       
 57971 +      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
       
 57972 +      cat > conftest.c << _LT_EOF
       
 57973 +int main() { return 0;}
       
 57974 +_LT_EOF
       
 57975 +      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
       
 57976 +      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       
 57977 +      _lt_result=$?
       
 57978 +      if test -s conftest.err && $GREP force_load conftest.err; then
       
 57979 +	cat conftest.err >&AS_MESSAGE_LOG_FD
       
 57980 +      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
       
 57981 +	lt_cv_ld_force_load=yes
       
 57982 +      else
       
 57983 +	cat conftest.err >&AS_MESSAGE_LOG_FD
       
 57984 +      fi
       
 57985 +        rm -f conftest.err libconftest.a conftest conftest.c
       
 57986 +        rm -rf conftest.dSYM
       
 57987 +    ])
       
 57988      case $host_os in
       
 57989      rhapsody* | darwin1.[[012]])
       
 57990        _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
       
 57991      darwin1.*)
       
 57992        _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
       
 57993      darwin*) # darwin 5.x on
       
 57994        # if running on 10.5 or later, the deployment target defaults
       
 57995        # to the OS version, if on x86, and 10.4, the deployment
       
 57996 @@ -962,257 +1062,202 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECK
       
 57997      if test "$lt_cv_apple_cc_single_mod" = "yes"; then
       
 57998        _lt_dar_single_mod='$single_module'
       
 57999      fi
       
 58000      if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
       
 58001        _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
       
 58002      else
       
 58003        _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
       
 58004      fi
       
 58005 -    if test "$DSYMUTIL" != ":"; then
       
 58006 +    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
       
 58007        _lt_dsymutil='~$DSYMUTIL $lib || :'
       
 58008      else
       
 58009        _lt_dsymutil=
       
 58010      fi
       
 58011      ;;
       
 58012    esac
       
 58013  ])
       
 58014  
       
 58015  
       
 58016 -# _LT_DARWIN_LINKER_FEATURES
       
 58017 -# --------------------------
       
 58018 +# _LT_DARWIN_LINKER_FEATURES([TAG])
       
 58019 +# ---------------------------------
       
 58020  # Checks for linker and compiler features on darwin
       
 58021  m4_defun([_LT_DARWIN_LINKER_FEATURES],
       
 58022  [
       
 58023    m4_require([_LT_REQUIRED_DARWIN_CHECKS])
       
 58024    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 58025    _LT_TAGVAR(hardcode_direct, $1)=no
       
 58026    _LT_TAGVAR(hardcode_automatic, $1)=yes
       
 58027    _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
       
 58028 -  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
       
 58029 +  if test "$lt_cv_ld_force_load" = "yes"; then
       
 58030 +    _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\"`'
       
 58031 +    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
       
 58032 +                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
       
 58033 +  else
       
 58034 +    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
       
 58035 +  fi
       
 58036    _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 58037    _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
       
 58038    case $cc_basename in
       
 58039       ifort*) _lt_dar_can_shared=yes ;;
       
 58040       *) _lt_dar_can_shared=$GCC ;;
       
 58041    esac
       
 58042    if test "$_lt_dar_can_shared" = "yes"; then
       
 58043 -    output_verbose_link_cmd=echo
       
 58044 +    output_verbose_link_cmd=func_echo_all
       
 58045      _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}"
       
 58046      _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
       
 58047      _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}"
       
 58048      _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}"
       
 58049      m4_if([$1], [CXX],
       
 58050  [   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
       
 58051        _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}"
       
 58052        _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}"
       
 58053      fi
       
 58054  ],[])
       
 58055    else
       
 58056    _LT_TAGVAR(ld_shlibs, $1)=no
       
 58057    fi
       
 58058  ])
       
 58059  
       
 58060 -# _LT_SYS_MODULE_PATH_AIX
       
 58061 -# -----------------------
       
 58062 +# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
       
 58063 +# ----------------------------------
       
 58064  # Links a minimal program and checks the executable
       
 58065  # for the system default hardcoded library path. In most cases,
       
 58066  # this is /usr/lib:/lib, but when the MPI compilers are used
       
 58067  # the location of the communication and MPI libs are included too.
       
 58068  # If we don't find anything, use the default library path according
       
 58069  # to the aix ld manual.
       
 58070 +# Store the results from the different compilers for each TAGNAME.
       
 58071 +# Allow to override them for all tags through lt_cv_aix_libpath.
       
 58072  m4_defun([_LT_SYS_MODULE_PATH_AIX],
       
 58073  [m4_require([_LT_DECL_SED])dnl
       
 58074 -AC_LINK_IFELSE(AC_LANG_PROGRAM,[
       
 58075 -lt_aix_libpath_sed='
       
 58076 -    /Import File Strings/,/^$/ {
       
 58077 -	/^0/ {
       
 58078 -	    s/^0  *\(.*\)$/\1/
       
 58079 -	    p
       
 58080 -	}
       
 58081 -    }'
       
 58082 -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 58083 -# Check for a 64-bit object if we didn't find anything.
       
 58084 -if test -z "$aix_libpath"; then
       
 58085 -  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 58086 -fi],[])
       
 58087 -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       
 58088 +if test "${lt_cv_aix_libpath+set}" = set; then
       
 58089 +  aix_libpath=$lt_cv_aix_libpath
       
 58090 +else
       
 58091 +  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
       
 58092 +  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
       
 58093 +  lt_aix_libpath_sed='[
       
 58094 +      /Import File Strings/,/^$/ {
       
 58095 +	  /^0/ {
       
 58096 +	      s/^0  *\([^ ]*\) *$/\1/
       
 58097 +	      p
       
 58098 +	  }
       
 58099 +      }]'
       
 58100 +  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 58101 +  # Check for a 64-bit object if we didn't find anything.
       
 58102 +  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
       
 58103 +    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
       
 58104 +  fi],[])
       
 58105 +  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
       
 58106 +    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
       
 58107 +  fi
       
 58108 +  ])
       
 58109 +  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
       
 58110 +fi
       
 58111  ])# _LT_SYS_MODULE_PATH_AIX
       
 58112  
       
 58113  
       
 58114  # _LT_SHELL_INIT(ARG)
       
 58115  # -------------------
       
 58116  m4_define([_LT_SHELL_INIT],
       
 58117 -[ifdef([AC_DIVERSION_NOTICE],
       
 58118 -	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
       
 58119 -	 [AC_DIVERT_PUSH(NOTICE)])
       
 58120 -$1
       
 58121 -AC_DIVERT_POP
       
 58122 -])# _LT_SHELL_INIT
       
 58123 +[m4_divert_text([M4SH-INIT], [$1
       
 58124 +])])# _LT_SHELL_INIT
       
 58125 +
       
 58126  
       
 58127  
       
 58128  # _LT_PROG_ECHO_BACKSLASH
       
 58129  # -----------------------
       
 58130 -# Add some code to the start of the generated configure script which
       
 58131 -# will find an echo command which doesn't interpret backslashes.
       
 58132 +# Find how we can fake an echo command that does not interpret backslash.
       
 58133 +# In particular, with Autoconf 2.60 or later we add some code to the start
       
 58134 +# of the generated configure script which will find a shell with a builtin
       
 58135 +# printf (which we can use as an echo command).
       
 58136  m4_defun([_LT_PROG_ECHO_BACKSLASH],
       
 58137 -[_LT_SHELL_INIT([
       
 58138 -# Check that we are running under the correct shell.
       
 58139 -SHELL=${CONFIG_SHELL-/bin/sh}
       
 58140 -
       
 58141 -case X$lt_ECHO in
       
 58142 -X*--fallback-echo)
       
 58143 -  # Remove one level of quotation (which was required for Make).
       
 58144 -  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
       
 58145 -  ;;
       
 58146 +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
       
 58147 +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
       
 58148 +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
       
 58149 +
       
 58150 +AC_MSG_CHECKING([how to print strings])
       
 58151 +# Test print first, because it will be a builtin if present.
       
 58152 +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
       
 58153 +   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
       
 58154 +  ECHO='print -r --'
       
 58155 +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
       
 58156 +  ECHO='printf %s\n'
       
 58157 +else
       
 58158 +  # Use this function as a fallback that always works.
       
 58159 +  func_fallback_echo ()
       
 58160 +  {
       
 58161 +    eval 'cat <<_LTECHO_EOF
       
 58162 +$[]1
       
 58163 +_LTECHO_EOF'
       
 58164 +  }
       
 58165 +  ECHO='func_fallback_echo'
       
 58166 +fi
       
 58167 +
       
 58168 +# func_echo_all arg...
       
 58169 +# Invoke $ECHO with all args, space-separated.
       
 58170 +func_echo_all ()
       
 58171 +{
       
 58172 +    $ECHO "$*" 
       
 58173 +}
       
 58174 +
       
 58175 +case "$ECHO" in
       
 58176 +  printf*) AC_MSG_RESULT([printf]) ;;
       
 58177 +  print*) AC_MSG_RESULT([print -r]) ;;
       
 58178 +  *) AC_MSG_RESULT([cat]) ;;
       
 58179  esac
       
 58180  
       
 58181 -ECHO=${lt_ECHO-echo}
       
 58182 -if test "X[$]1" = X--no-reexec; then
       
 58183 -  # Discard the --no-reexec flag, and continue.
       
 58184 -  shift
       
 58185 -elif test "X[$]1" = X--fallback-echo; then
       
 58186 -  # Avoid inline document here, it may be left over
       
 58187 -  :
       
 58188 -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
       
 58189 -  # Yippee, $ECHO works!
       
 58190 -  :
       
 58191 -else
       
 58192 -  # Restart under the correct shell.
       
 58193 -  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
       
 58194 -fi
       
 58195 -
       
 58196 -if test "X[$]1" = X--fallback-echo; then
       
 58197 -  # used as fallback echo
       
 58198 -  shift
       
 58199 -  cat <<_LT_EOF
       
 58200 -[$]*
       
 58201 -_LT_EOF
       
 58202 -  exit 0
       
 58203 -fi
       
 58204 -
       
 58205 -# The HP-UX ksh and POSIX shell print the target directory to stdout
       
 58206 -# if CDPATH is set.
       
 58207 -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
       
 58208 -
       
 58209 -if test -z "$lt_ECHO"; then
       
 58210 -  if test "X${echo_test_string+set}" != Xset; then
       
 58211 -    # find a string as large as possible, as long as the shell can cope with it
       
 58212 -    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
       
 58213 -      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
       
 58214 -      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
       
 58215 -	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
       
 58216 -      then
       
 58217 -        break
       
 58218 -      fi
       
 58219 -    done
       
 58220 -  fi
       
 58221 -
       
 58222 -  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
       
 58223 -     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
       
 58224 -     test "X$echo_testing_string" = "X$echo_test_string"; then
       
 58225 -    :
       
 58226 -  else
       
 58227 -    # The Solaris, AIX, and Digital Unix default echo programs unquote
       
 58228 -    # backslashes.  This makes it impossible to quote backslashes using
       
 58229 -    #   echo "$something" | sed 's/\\/\\\\/g'
       
 58230 -    #
       
 58231 -    # So, first we look for a working echo in the user's PATH.
       
 58232 -
       
 58233 -    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
       
 58234 -    for dir in $PATH /usr/ucb; do
       
 58235 -      IFS="$lt_save_ifs"
       
 58236 -      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
       
 58237 -         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
       
 58238 -         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
       
 58239 -         test "X$echo_testing_string" = "X$echo_test_string"; then
       
 58240 -        ECHO="$dir/echo"
       
 58241 -        break
       
 58242 -      fi
       
 58243 -    done
       
 58244 -    IFS="$lt_save_ifs"
       
 58245 -
       
 58246 -    if test "X$ECHO" = Xecho; then
       
 58247 -      # We didn't find a better echo, so look for alternatives.
       
 58248 -      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
       
 58249 -         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
       
 58250 -         test "X$echo_testing_string" = "X$echo_test_string"; then
       
 58251 -        # This shell has a builtin print -r that does the trick.
       
 58252 -        ECHO='print -r'
       
 58253 -      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
       
 58254 -	   test "X$CONFIG_SHELL" != X/bin/ksh; then
       
 58255 -        # If we have ksh, try running configure again with it.
       
 58256 -        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
       
 58257 -        export ORIGINAL_CONFIG_SHELL
       
 58258 -        CONFIG_SHELL=/bin/ksh
       
 58259 -        export CONFIG_SHELL
       
 58260 -        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
       
 58261 -      else
       
 58262 -        # Try using printf.
       
 58263 -        ECHO='printf %s\n'
       
 58264 -        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
       
 58265 -	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
       
 58266 -	   test "X$echo_testing_string" = "X$echo_test_string"; then
       
 58267 -	  # Cool, printf works
       
 58268 -	  :
       
 58269 -        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
       
 58270 -	     test "X$echo_testing_string" = 'X\t' &&
       
 58271 -	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
       
 58272 -	     test "X$echo_testing_string" = "X$echo_test_string"; then
       
 58273 -	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
       
 58274 -	  export CONFIG_SHELL
       
 58275 -	  SHELL="$CONFIG_SHELL"
       
 58276 -	  export SHELL
       
 58277 -	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
       
 58278 -        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
       
 58279 -	     test "X$echo_testing_string" = 'X\t' &&
       
 58280 -	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
       
 58281 -	     test "X$echo_testing_string" = "X$echo_test_string"; then
       
 58282 -	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
       
 58283 -        else
       
 58284 -	  # maybe with a smaller string...
       
 58285 -	  prev=:
       
 58286 -
       
 58287 -	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
       
 58288 -	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
       
 58289 -	    then
       
 58290 -	      break
       
 58291 -	    fi
       
 58292 -	    prev="$cmd"
       
 58293 -	  done
       
 58294 -
       
 58295 -	  if test "$prev" != 'sed 50q "[$]0"'; then
       
 58296 -	    echo_test_string=`eval $prev`
       
 58297 -	    export echo_test_string
       
 58298 -	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
       
 58299 -	  else
       
 58300 -	    # Oops.  We lost completely, so just stick with echo.
       
 58301 -	    ECHO=echo
       
 58302 -	  fi
       
 58303 -        fi
       
 58304 -      fi
       
 58305 -    fi
       
 58306 -  fi
       
 58307 -fi
       
 58308 -
       
 58309 -# Copy echo and quote the copy suitably for passing to libtool from
       
 58310 -# the Makefile, instead of quoting the original, which is used later.
       
 58311 -lt_ECHO=$ECHO
       
 58312 -if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
       
 58313 -   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
       
 58314 -fi
       
 58315 -
       
 58316 -AC_SUBST(lt_ECHO)
       
 58317 -])
       
 58318 +m4_ifdef([_AS_DETECT_SUGGESTED],
       
 58319 +[_AS_DETECT_SUGGESTED([
       
 58320 +  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
       
 58321 +    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
       
 58322 +    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
       
 58323 +    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
       
 58324 +    PATH=/empty FPATH=/empty; export PATH FPATH
       
 58325 +    test "X`printf %s $ECHO`" = "X$ECHO" \
       
 58326 +      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
       
 58327 +
       
 58328  _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
       
 58329 -_LT_DECL([], [ECHO], [1],
       
 58330 -    [An echo program that does not interpret backslashes])
       
 58331 +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
       
 58332  ])# _LT_PROG_ECHO_BACKSLASH
       
 58333  
       
 58334  
       
 58335 +# _LT_WITH_SYSROOT
       
 58336 +# ----------------
       
 58337 +AC_DEFUN([_LT_WITH_SYSROOT],
       
 58338 +[AC_MSG_CHECKING([for sysroot])
       
 58339 +AC_ARG_WITH([sysroot],
       
 58340 +[  --with-sysroot[=DIR] Search for dependent libraries within DIR
       
 58341 +                        (or the compiler's sysroot if not specified).],
       
 58342 +[], [with_sysroot=no])
       
 58343 +
       
 58344 +dnl lt_sysroot will always be passed unquoted.  We quote it here
       
 58345 +dnl in case the user passed a directory name.
       
 58346 +lt_sysroot=
       
 58347 +case ${with_sysroot} in #(
       
 58348 + yes)
       
 58349 +   if test "$GCC" = yes; then
       
 58350 +     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
       
 58351 +   fi
       
 58352 +   ;; #(
       
 58353 + /*)
       
 58354 +   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
       
 58355 +   ;; #(
       
 58356 + no|'')
       
 58357 +   ;; #(
       
 58358 + *)
       
 58359 +   AC_MSG_RESULT([${with_sysroot}])
       
 58360 +   AC_MSG_ERROR([The sysroot must be an absolute path.])
       
 58361 +   ;;
       
 58362 +esac
       
 58363 +
       
 58364 + AC_MSG_RESULT([${lt_sysroot:-no}])
       
 58365 +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
       
 58366 +[dependent libraries, and in which our libraries should be installed.])])
       
 58367 +
       
 58368  # _LT_ENABLE_LOCK
       
 58369  # ---------------
       
 58370  m4_defun([_LT_ENABLE_LOCK],
       
 58371  [AC_ARG_ENABLE([libtool-lock],
       
 58372    [AS_HELP_STRING([--disable-libtool-lock],
       
 58373      [avoid locking (might break parallel builds)])])
       
 58374  test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
       
 58375  
       
 58376 @@ -1231,17 +1276,17 @@ ia64-*-hpux*)
       
 58377  	HPUX_IA64_MODE="64"
       
 58378  	;;
       
 58379      esac
       
 58380    fi
       
 58381    rm -rf conftest*
       
 58382    ;;
       
 58383  *-*-irix6*)
       
 58384    # Find out which ABI we are using.
       
 58385 -  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
       
 58386 +  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
       
 58387    if AC_TRY_EVAL(ac_compile); then
       
 58388      if test "$lt_cv_prog_gnu_ld" = yes; then
       
 58389        case `/usr/bin/file conftest.$ac_objext` in
       
 58390  	*32-bit*)
       
 58391  	  LD="${LD-ld} -melf32bsmip"
       
 58392  	  ;;
       
 58393  	*N32*)
       
 58394  	  LD="${LD-ld} -melf32bmipn32"
       
 58395 @@ -1330,24 +1375,37 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
       
 58396      [AC_LANG_PUSH(C)
       
 58397       AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
       
 58398       AC_LANG_POP])
       
 58399    if test x"$lt_cv_cc_needs_belf" != x"yes"; then
       
 58400      # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
       
 58401      CFLAGS="$SAVE_CFLAGS"
       
 58402    fi
       
 58403    ;;
       
 58404 -sparc*-*solaris*)
       
 58405 +*-*solaris*)
       
 58406    # Find out which ABI we are using.
       
 58407    echo 'int i;' > conftest.$ac_ext
       
 58408    if AC_TRY_EVAL(ac_compile); then
       
 58409      case `/usr/bin/file conftest.o` in
       
 58410      *64-bit*)
       
 58411        case $lt_cv_prog_gnu_ld in
       
 58412 -      yes*) LD="${LD-ld} -m elf64_sparc" ;;
       
 58413 +      yes*)
       
 58414 +        case $host in
       
 58415 +        i?86-*-solaris*)
       
 58416 +          LD="${LD-ld} -m elf_x86_64"
       
 58417 +          ;;
       
 58418 +        sparc*-*-solaris*)
       
 58419 +          LD="${LD-ld} -m elf64_sparc"
       
 58420 +          ;;
       
 58421 +        esac
       
 58422 +        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
       
 58423 +        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
       
 58424 +          LD="${LD-ld}_sol2"
       
 58425 +        fi
       
 58426 +        ;;
       
 58427        *)
       
 58428  	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
       
 58429  	  LD="${LD-ld} -64"
       
 58430  	fi
       
 58431  	;;
       
 58432        esac
       
 58433        ;;
       
 58434      esac
       
 58435 @@ -1355,24 +1413,57 @@ sparc*-*solaris*)
       
 58436    rm -rf conftest*
       
 58437    ;;
       
 58438  esac
       
 58439  
       
 58440  need_locks="$enable_libtool_lock"
       
 58441  ])# _LT_ENABLE_LOCK
       
 58442  
       
 58443  
       
 58444 +# _LT_PROG_AR
       
 58445 +# -----------
       
 58446 +m4_defun([_LT_PROG_AR],
       
 58447 +[AC_CHECK_TOOLS(AR, [ar], false)
       
 58448 +: ${AR=ar}
       
 58449 +: ${AR_FLAGS=cru}
       
 58450 +_LT_DECL([], [AR], [1], [The archiver])
       
 58451 +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
       
 58452 +
       
 58453 +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
       
 58454 +  [lt_cv_ar_at_file=no
       
 58455 +   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
       
 58456 +     [echo conftest.$ac_objext > conftest.lst
       
 58457 +      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
       
 58458 +      AC_TRY_EVAL([lt_ar_try])
       
 58459 +      if test "$ac_status" -eq 0; then
       
 58460 +	# Ensure the archiver fails upon bogus file names.
       
 58461 +	rm -f conftest.$ac_objext libconftest.a
       
 58462 +	AC_TRY_EVAL([lt_ar_try])
       
 58463 +	if test "$ac_status" -ne 0; then
       
 58464 +          lt_cv_ar_at_file=@
       
 58465 +        fi
       
 58466 +      fi
       
 58467 +      rm -f conftest.* libconftest.a
       
 58468 +     ])
       
 58469 +  ])
       
 58470 +
       
 58471 +if test "x$lt_cv_ar_at_file" = xno; then
       
 58472 +  archiver_list_spec=
       
 58473 +else
       
 58474 +  archiver_list_spec=$lt_cv_ar_at_file
       
 58475 +fi
       
 58476 +_LT_DECL([], [archiver_list_spec], [1],
       
 58477 +  [How to feed a file listing to the archiver])
       
 58478 +])# _LT_PROG_AR
       
 58479 +
       
 58480 +
       
 58481  # _LT_CMD_OLD_ARCHIVE
       
 58482  # -------------------
       
 58483  m4_defun([_LT_CMD_OLD_ARCHIVE],
       
 58484 -[AC_CHECK_TOOL(AR, ar, false)
       
 58485 -test -z "$AR" && AR=ar
       
 58486 -test -z "$AR_FLAGS" && AR_FLAGS=cru
       
 58487 -_LT_DECL([], [AR], [1], [The archiver])
       
 58488 -_LT_DECL([], [AR_FLAGS], [1])
       
 58489 +[_LT_PROG_AR
       
 58490  
       
 58491  AC_CHECK_TOOL(STRIP, strip, :)
       
 58492  test -z "$STRIP" && STRIP=:
       
 58493  _LT_DECL([], [STRIP], [1], [A symbol stripping program])
       
 58494  
       
 58495  AC_CHECK_TOOL(RANLIB, ranlib, :)
       
 58496  test -z "$RANLIB" && RANLIB=:
       
 58497  _LT_DECL([], [RANLIB], [1],
       
 58498 @@ -1381,28 +1472,37 @@ test -z "$RANLIB" && RANLIB=:
       
 58499  # Determine commands to create old-style static archives.
       
 58500  old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
       
 58501  old_postinstall_cmds='chmod 644 $oldlib'
       
 58502  old_postuninstall_cmds=
       
 58503  
       
 58504  if test -n "$RANLIB"; then
       
 58505    case $host_os in
       
 58506    openbsd*)
       
 58507 -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
       
 58508 +    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
       
 58509      ;;
       
 58510    *)
       
 58511 -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
       
 58512 +    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
       
 58513      ;;
       
 58514    esac
       
 58515 -  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
       
 58516 +  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
       
 58517  fi
       
 58518 +
       
 58519 +case $host_os in
       
 58520 +  darwin*)
       
 58521 +    lock_old_archive_extraction=yes ;;
       
 58522 +  *)
       
 58523 +    lock_old_archive_extraction=no ;;
       
 58524 +esac
       
 58525  _LT_DECL([], [old_postinstall_cmds], [2])
       
 58526  _LT_DECL([], [old_postuninstall_cmds], [2])
       
 58527  _LT_TAGDECL([], [old_archive_cmds], [2],
       
 58528      [Commands used to build an old-style archive])
       
 58529 +_LT_DECL([], [lock_old_archive_extraction], [0],
       
 58530 +    [Whether to use a lock for old archive extraction])
       
 58531  ])# _LT_CMD_OLD_ARCHIVE
       
 58532  
       
 58533  
       
 58534  # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
       
 58535  #		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
       
 58536  # ----------------------------------------------------------------
       
 58537  # Check whether the given compiler option works
       
 58538  AC_DEFUN([_LT_COMPILER_OPTION],
       
 58539 @@ -1417,25 +1517,25 @@ AC_CACHE_CHECK([$1], [$2],
       
 58540     # (2) before a word containing "conftest.", or (3) at the end.
       
 58541     # Note that $ac_compile itself does not contain backslashes and begins
       
 58542     # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 58543     # The option is referenced via a variable to avoid confusing sed.
       
 58544     lt_compile=`echo "$ac_compile" | $SED \
       
 58545     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 58546     -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
       
 58547     -e 's:$: $lt_compiler_flag:'`
       
 58548 -   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
       
 58549 +   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
       
 58550     (eval "$lt_compile" 2>conftest.err)
       
 58551     ac_status=$?
       
 58552     cat conftest.err >&AS_MESSAGE_LOG_FD
       
 58553 -   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
       
 58554 +   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
       
 58555     if (exit $ac_status) && test -s "$ac_outfile"; then
       
 58556       # The compiler can only warn and ignore the option if not recognized
       
 58557       # So say no if there are warnings other than the usual output.
       
 58558 -     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
       
 58559 +     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
       
 58560       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 58561       if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
       
 58562         $2=yes
       
 58563       fi
       
 58564     fi
       
 58565     $RM conftest*
       
 58566  ])
       
 58567  
       
 58568 @@ -1465,17 +1565,17 @@ AC_CACHE_CHECK([$1], [$2],
       
 58569     LDFLAGS="$LDFLAGS $3"
       
 58570     echo "$lt_simple_link_test_code" > conftest.$ac_ext
       
 58571     if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
       
 58572       # The linker can only warn and ignore the option if not recognized
       
 58573       # So say no if there are warnings
       
 58574       if test -s conftest.err; then
       
 58575         # Append any errors to the config.log.
       
 58576         cat conftest.err 1>&AS_MESSAGE_LOG_FD
       
 58577 -       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
       
 58578 +       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
       
 58579         $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 58580         if diff conftest.exp conftest.er2 >/dev/null; then
       
 58581           $2=yes
       
 58582         fi
       
 58583       else
       
 58584         $2=yes
       
 58585       fi
       
 58586     fi
       
 58587 @@ -1528,16 +1628,21 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d
       
 58588      # Worse, since 9x/ME are not pre-emptively multitasking,
       
 58589      # you end up with a "frozen" computer, even though with patience
       
 58590      # the test eventually succeeds (with a max line length of 256k).
       
 58591      # Instead, let's just punt: use the minimum linelength reported by
       
 58592      # all of the supported platforms: 8192 (on NT/2K/XP).
       
 58593      lt_cv_sys_max_cmd_len=8192;
       
 58594      ;;
       
 58595  
       
 58596 +  mint*)
       
 58597 +    # On MiNT this can take a long time and run out of memory.
       
 58598 +    lt_cv_sys_max_cmd_len=8192;
       
 58599 +    ;;
       
 58600 +
       
 58601    amigaos*)
       
 58602      # On AmigaOS with pdksh, this test takes hours, literally.
       
 58603      # So we just punt and use a minimum line length of 8192.
       
 58604      lt_cv_sys_max_cmd_len=8192;
       
 58605      ;;
       
 58606  
       
 58607    netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
       
 58608      # This has been around since 386BSD, at least.  Likely further.
       
 58609 @@ -1553,16 +1658,21 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d
       
 58610      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
       
 58611      ;;
       
 58612  
       
 58613    interix*)
       
 58614      # We know the value 262144 and hardcode it with a safety zone (like BSD)
       
 58615      lt_cv_sys_max_cmd_len=196608
       
 58616      ;;
       
 58617  
       
 58618 +  os2*)
       
 58619 +    # The test takes a long time on OS/2.
       
 58620 +    lt_cv_sys_max_cmd_len=8192
       
 58621 +    ;;
       
 58622 +
       
 58623    osf*)
       
 58624      # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
       
 58625      # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
       
 58626      # nice to cause kernel panics so lets avoid the loop below.
       
 58627      # First set a reasonable default.
       
 58628      lt_cv_sys_max_cmd_len=16384
       
 58629      #
       
 58630      if test -x /sbin/sysconfig; then
       
 58631 @@ -1592,18 +1702,18 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d
       
 58632        # a 1K string should be a reasonable start.
       
 58633        for i in 1 2 3 4 5 6 7 8 ; do
       
 58634          teststring=$teststring$teststring
       
 58635        done
       
 58636        SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
       
 58637        # If test is not a shell built-in, we'll probably end up computing a
       
 58638        # maximum length that is only half of the actual maximum length, but
       
 58639        # we can't tell.
       
 58640 -      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
       
 58641 -	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
       
 58642 +      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
       
 58643 +	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
       
 58644  	      test $i != 17 # 1/2 MB should be enough
       
 58645        do
       
 58646          i=`expr $i + 1`
       
 58647          teststring=$teststring$teststring
       
 58648        done
       
 58649        # Only check the string length outside the loop.
       
 58650        lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
       
 58651        teststring=
       
 58652 @@ -1644,17 +1754,17 @@ m4_defun([_LT_HEADER_DLFCN],
       
 58653  m4_defun([_LT_TRY_DLOPEN_SELF],
       
 58654  [m4_require([_LT_HEADER_DLFCN])dnl
       
 58655  if test "$cross_compiling" = yes; then :
       
 58656    [$4]
       
 58657  else
       
 58658    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
       
 58659    lt_status=$lt_dlunknown
       
 58660    cat > conftest.$ac_ext <<_LT_EOF
       
 58661 -[#line __oline__ "configure"
       
 58662 +[#line $LINENO "configure"
       
 58663  #include "confdefs.h"
       
 58664  
       
 58665  #if HAVE_DLFCN_H
       
 58666  #include <dlfcn.h>
       
 58667  #endif
       
 58668  
       
 58669  #include <stdio.h>
       
 58670  
       
 58671 @@ -1685,26 +1795,36 @@ else
       
 58672  #        else
       
 58673  #          define LT_DLLAZY_OR_NOW	0
       
 58674  #        endif
       
 58675  #      endif
       
 58676  #    endif
       
 58677  #  endif
       
 58678  #endif
       
 58679  
       
 58680 -void fnord() { int i=42;}
       
 58681 +/* When -fvisbility=hidden is used, assume the code has been annotated
       
 58682 +   correspondingly for the symbols needed.  */
       
 58683 +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
       
 58684 +int fnord () __attribute__((visibility("default")));
       
 58685 +#endif
       
 58686 +
       
 58687 +int fnord () { return 42; }
       
 58688  int main ()
       
 58689  {
       
 58690    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
       
 58691    int status = $lt_dlunknown;
       
 58692  
       
 58693    if (self)
       
 58694      {
       
 58695        if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
       
 58696 -      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
       
 58697 +      else
       
 58698 +        {
       
 58699 +	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
       
 58700 +          else puts (dlerror ());
       
 58701 +	}
       
 58702        /* dlclose (self); */
       
 58703      }
       
 58704    else
       
 58705      puts (dlerror ());
       
 58706  
       
 58707    return status;
       
 58708  }]
       
 58709  _LT_EOF
       
 58710 @@ -1870,26 +1990,26 @@ AC_CACHE_CHECK([if $compiler supports -c
       
 58711     # Insert the option either (1) after the last *FLAGS variable, or
       
 58712     # (2) before a word containing "conftest.", or (3) at the end.
       
 58713     # Note that $ac_compile itself does not contain backslashes and begins
       
 58714     # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 58715     lt_compile=`echo "$ac_compile" | $SED \
       
 58716     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 58717     -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
       
 58718     -e 's:$: $lt_compiler_flag:'`
       
 58719 -   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
       
 58720 +   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
       
 58721     (eval "$lt_compile" 2>out/conftest.err)
       
 58722     ac_status=$?
       
 58723     cat out/conftest.err >&AS_MESSAGE_LOG_FD
       
 58724 -   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
       
 58725 +   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
       
 58726     if (exit $ac_status) && test -s out/conftest2.$ac_objext
       
 58727     then
       
 58728       # The compiler can only warn and ignore the option if not recognized
       
 58729       # So say no if there are warnings
       
 58730 -     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
       
 58731 +     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
       
 58732       $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
       
 58733       if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
       
 58734         _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
       
 58735       fi
       
 58736     fi
       
 58737     chmod u+w . 2>&AS_MESSAGE_LOG_FD
       
 58738     $RM conftest*
       
 58739     # SGI C++ compiler will create directory out/ii_files/ for
       
 58740 @@ -2038,47 +2158,55 @@ fi
       
 58741  # -----------------------------
       
 58742  # PORTME Fill in your ld.so characteristics
       
 58743  m4_defun([_LT_SYS_DYNAMIC_LINKER],
       
 58744  [AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 58745  m4_require([_LT_DECL_EGREP])dnl
       
 58746  m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 58747  m4_require([_LT_DECL_OBJDUMP])dnl
       
 58748  m4_require([_LT_DECL_SED])dnl
       
 58749 +m4_require([_LT_CHECK_SHELL_FEATURES])dnl
       
 58750  AC_MSG_CHECKING([dynamic linker characteristics])
       
 58751  m4_if([$1],
       
 58752  	[], [
       
 58753  if test "$GCC" = yes; then
       
 58754    case $host_os in
       
 58755      darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
       
 58756      *) lt_awk_arg="/^libraries:/" ;;
       
 58757    esac
       
 58758 -  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
       
 58759 -  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
       
 58760 +  case $host_os in
       
 58761 +    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
       
 58762 +    *) lt_sed_strip_eq="s,=/,/,g" ;;
       
 58763 +  esac
       
 58764 +  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
       
 58765 +  case $lt_search_path_spec in
       
 58766 +  *\;*)
       
 58767      # if the path contains ";" then we assume it to be the separator
       
 58768      # otherwise default to the standard path separator (i.e. ":") - it is
       
 58769      # assumed that no part of a normal pathname contains ";" but that should
       
 58770      # okay in the real world where ";" in dirpaths is itself problematic.
       
 58771 -    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
       
 58772 -  else
       
 58773 -    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
       
 58774 -  fi
       
 58775 +    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
       
 58776 +    ;;
       
 58777 +  *)
       
 58778 +    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
       
 58779 +    ;;
       
 58780 +  esac
       
 58781    # Ok, now we have the path, separated by spaces, we can step through it
       
 58782    # and add multilib dir if necessary.
       
 58783    lt_tmp_lt_search_path_spec=
       
 58784    lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
       
 58785    for lt_sys_path in $lt_search_path_spec; do
       
 58786      if test -d "$lt_sys_path/$lt_multi_os_dir"; then
       
 58787        lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
       
 58788      else
       
 58789        test -d "$lt_sys_path" && \
       
 58790  	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
       
 58791      fi
       
 58792    done
       
 58793 -  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
       
 58794 +  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
       
 58795  BEGIN {RS=" "; FS="/|\n";} {
       
 58796    lt_foo="";
       
 58797    lt_count=0;
       
 58798    for (lt_i = NF; lt_i > 0; lt_i--) {
       
 58799      if ($lt_i != "" && $lt_i != ".") {
       
 58800        if ($lt_i == "..") {
       
 58801          lt_count++;
       
 58802        } else {
       
 58803 @@ -2088,17 +2216,23 @@ BEGIN {RS=" "; FS="/|\n";} {
       
 58804            lt_count--;
       
 58805          }
       
 58806        }
       
 58807      }
       
 58808    }
       
 58809    if (lt_foo != "") { lt_freq[[lt_foo]]++; }
       
 58810    if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
       
 58811  }'`
       
 58812 -  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
       
 58813 +  # AWK program above erroneously prepends '/' to C:/dos/paths
       
 58814 +  # for these hosts.
       
 58815 +  case $host_os in
       
 58816 +    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
       
 58817 +      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
       
 58818 +  esac
       
 58819 +  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
       
 58820  else
       
 58821    sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
       
 58822  fi])
       
 58823  library_names_spec=
       
 58824  libname_spec='lib$name'
       
 58825  soname_spec=
       
 58826  shrext_cmds=".so"
       
 58827  postinstall_cmds=
       
 58828 @@ -2114,26 +2248,26 @@ need_lib_prefix=unknown
       
 58829  hardcode_into_libs=no
       
 58830  
       
 58831  # when you set need_version to no, make sure it does not cause -set_version
       
 58832  # flags to be left without arguments
       
 58833  need_version=unknown
       
 58834  
       
 58835  case $host_os in
       
 58836  aix3*)
       
 58837 -  version_type=linux
       
 58838 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 58839    library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
       
 58840    shlibpath_var=LIBPATH
       
 58841  
       
 58842    # AIX 3 has no versioning support, so we append a major version to the name.
       
 58843    soname_spec='${libname}${release}${shared_ext}$major'
       
 58844    ;;
       
 58845  
       
 58846  aix[[4-9]]*)
       
 58847 -  version_type=linux
       
 58848 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 58849    need_lib_prefix=no
       
 58850    need_version=no
       
 58851    hardcode_into_libs=yes
       
 58852    if test "$host_cpu" = ia64; then
       
 58853      # AIX 5 supports IA64
       
 58854      library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
       
 58855      shlibpath_var=LD_LIBRARY_PATH
       
 58856    else
       
 58857 @@ -2176,29 +2310,29 @@ amigaos*)
       
 58858    powerpc)
       
 58859      # Since July 2007 AmigaOS4 officially supports .so libraries.
       
 58860      # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
       
 58861      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 58862      ;;
       
 58863    m68k)
       
 58864      library_names_spec='$libname.ixlibrary $libname.a'
       
 58865      # Create ${libname}_ixlibrary.a entries in /sys/libs.
       
 58866 -    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'
       
 58867 +    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'
       
 58868      ;;
       
 58869    esac
       
 58870    ;;
       
 58871  
       
 58872  beos*)
       
 58873    library_names_spec='${libname}${shared_ext}'
       
 58874    dynamic_linker="$host_os ld.so"
       
 58875    shlibpath_var=LIBRARY_PATH
       
 58876    ;;
       
 58877  
       
 58878  bsdi[[45]]*)
       
 58879 -  version_type=linux
       
 58880 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 58881    need_version=no
       
 58882    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 58883    soname_spec='${libname}${release}${shared_ext}$major'
       
 58884    finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
       
 58885    shlibpath_var=LD_LIBRARY_PATH
       
 58886    sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
       
 58887    sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
       
 58888    # the default ld.so.conf also contains /usr/contrib/lib and
       
 58889 @@ -2207,18 +2341,19 @@ bsdi[[45]]*)
       
 58890    ;;
       
 58891  
       
 58892  cygwin* | mingw* | pw32* | cegcc*)
       
 58893    version_type=windows
       
 58894    shrext_cmds=".dll"
       
 58895    need_version=no
       
 58896    need_lib_prefix=no
       
 58897  
       
 58898 -  case $GCC,$host_os in
       
 58899 -  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
       
 58900 +  case $GCC,$cc_basename in
       
 58901 +  yes,*)
       
 58902 +    # gcc
       
 58903      library_names_spec='$libname.dll.a'
       
 58904      # DLL is installed to $(libdir)/../bin by postinstall_cmds
       
 58905      postinstall_cmds='base_file=`basename \${file}`~
       
 58906        dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
       
 58907        dldir=$destdir/`dirname \$dlpath`~
       
 58908        test -d \$dldir || mkdir -p \$dldir~
       
 58909        $install_prog $dir/$dlname \$dldir/$dlname~
       
 58910        chmod a+x \$dldir/$dlname~
       
 58911 @@ -2229,46 +2364,93 @@ cygwin* | mingw* | pw32* | cegcc*)
       
 58912        dlpath=$dir/\$dldll~
       
 58913         $RM \$dlpath'
       
 58914      shlibpath_overrides_runpath=yes
       
 58915  
       
 58916      case $host_os in
       
 58917      cygwin*)
       
 58918        # Cygwin DLLs use 'cyg' prefix rather than 'lib'
       
 58919        soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       
 58920 -      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
       
 58921 +m4_if([$1], [],[
       
 58922 +      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
       
 58923        ;;
       
 58924      mingw* | cegcc*)
       
 58925        # MinGW DLLs use traditional 'lib' prefix
       
 58926        soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       
 58927 -      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
       
 58928 -      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
       
 58929 -        # It is most probably a Windows format PATH printed by
       
 58930 -        # mingw gcc, but we are running on Cygwin. Gcc prints its search
       
 58931 -        # path with ; separators, and with drive letters. We can handle the
       
 58932 -        # drive letters (cygwin fileutils understands them), so leave them,
       
 58933 -        # especially as we might pass files found there to a mingw objdump,
       
 58934 -        # which wouldn't understand a cygwinified path. Ahh.
       
 58935 -        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
       
 58936 -      else
       
 58937 -        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
       
 58938 -      fi
       
 58939        ;;
       
 58940      pw32*)
       
 58941        # pw32 DLLs use 'pw' prefix rather than 'lib'
       
 58942        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       
 58943        ;;
       
 58944      esac
       
 58945 +    dynamic_linker='Win32 ld.exe'
       
 58946      ;;
       
 58947  
       
 58948 +  *,cl*)
       
 58949 +    # Native MSVC
       
 58950 +    libname_spec='$name'
       
 58951 +    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       
 58952 +    library_names_spec='${libname}.dll.lib'
       
 58953 +
       
 58954 +    case $build_os in
       
 58955 +    mingw*)
       
 58956 +      sys_lib_search_path_spec=
       
 58957 +      lt_save_ifs=$IFS
       
 58958 +      IFS=';'
       
 58959 +      for lt_path in $LIB
       
 58960 +      do
       
 58961 +        IFS=$lt_save_ifs
       
 58962 +        # Let DOS variable expansion print the short 8.3 style file name.
       
 58963 +        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
       
 58964 +        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
       
 58965 +      done
       
 58966 +      IFS=$lt_save_ifs
       
 58967 +      # Convert to MSYS style.
       
 58968 +      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
       
 58969 +      ;;
       
 58970 +    cygwin*)
       
 58971 +      # Convert to unix form, then to dos form, then back to unix form
       
 58972 +      # but this time dos style (no spaces!) so that the unix form looks
       
 58973 +      # like /cygdrive/c/PROGRA~1:/cygdr...
       
 58974 +      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
       
 58975 +      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
       
 58976 +      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       
 58977 +      ;;
       
 58978 +    *)
       
 58979 +      sys_lib_search_path_spec="$LIB"
       
 58980 +      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
       
 58981 +        # It is most probably a Windows format PATH.
       
 58982 +        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
       
 58983 +      else
       
 58984 +        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       
 58985 +      fi
       
 58986 +      # FIXME: find the short name or the path components, as spaces are
       
 58987 +      # common. (e.g. "Program Files" -> "PROGRA~1")
       
 58988 +      ;;
       
 58989 +    esac
       
 58990 +
       
 58991 +    # DLL is installed to $(libdir)/../bin by postinstall_cmds
       
 58992 +    postinstall_cmds='base_file=`basename \${file}`~
       
 58993 +      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
       
 58994 +      dldir=$destdir/`dirname \$dlpath`~
       
 58995 +      test -d \$dldir || mkdir -p \$dldir~
       
 58996 +      $install_prog $dir/$dlname \$dldir/$dlname'
       
 58997 +    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
       
 58998 +      dlpath=$dir/\$dldll~
       
 58999 +       $RM \$dlpath'
       
 59000 +    shlibpath_overrides_runpath=yes
       
 59001 +    dynamic_linker='Win32 link.exe'
       
 59002 +    ;;
       
 59003 +
       
 59004    *)
       
 59005 +    # Assume MSVC wrapper
       
 59006      library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
       
 59007 +    dynamic_linker='Win32 ld.exe'
       
 59008      ;;
       
 59009    esac
       
 59010 -  dynamic_linker='Win32 ld.exe'
       
 59011    # FIXME: first we should search . and the directory the executable is in
       
 59012    shlibpath_var=PATH
       
 59013    ;;
       
 59014  
       
 59015  darwin* | rhapsody*)
       
 59016    dynamic_linker="$host_os dyld"
       
 59017    version_type=darwin
       
 59018    need_lib_prefix=no
       
 59019 @@ -2279,36 +2461,32 @@ darwin* | rhapsody*)
       
 59020    shlibpath_var=DYLD_LIBRARY_PATH
       
 59021    shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
       
 59022  m4_if([$1], [],[
       
 59023    sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
       
 59024    sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
       
 59025    ;;
       
 59026  
       
 59027  dgux*)
       
 59028 -  version_type=linux
       
 59029 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59030    need_lib_prefix=no
       
 59031    need_version=no
       
 59032    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
       
 59033    soname_spec='${libname}${release}${shared_ext}$major'
       
 59034    shlibpath_var=LD_LIBRARY_PATH
       
 59035    ;;
       
 59036  
       
 59037 -freebsd1*)
       
 59038 -  dynamic_linker=no
       
 59039 -  ;;
       
 59040 -
       
 59041  freebsd* | dragonfly*)
       
 59042    # DragonFly does not have aout.  When/if they implement a new
       
 59043    # versioning mechanism, adjust this.
       
 59044    if test -x /usr/bin/objformat; then
       
 59045      objformat=`/usr/bin/objformat`
       
 59046    else
       
 59047      case $host_os in
       
 59048 -    freebsd[[123]]*) objformat=aout ;;
       
 59049 +    freebsd[[23]].*) objformat=aout ;;
       
 59050      *) objformat=elf ;;
       
 59051      esac
       
 59052    fi
       
 59053    version_type=freebsd-$objformat
       
 59054    case $version_type in
       
 59055      freebsd-elf*)
       
 59056        library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
       
 59057        need_version=no
       
 59058 @@ -2316,17 +2494,17 @@ freebsd* | dragonfly*)
       
 59059        ;;
       
 59060      freebsd-*)
       
 59061        library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
       
 59062        need_version=yes
       
 59063        ;;
       
 59064    esac
       
 59065    shlibpath_var=LD_LIBRARY_PATH
       
 59066    case $host_os in
       
 59067 -  freebsd2*)
       
 59068 +  freebsd2.*)
       
 59069      shlibpath_overrides_runpath=yes
       
 59070      ;;
       
 59071    freebsd3.[[01]]* | freebsdelf3.[[01]]*)
       
 59072      shlibpath_overrides_runpath=yes
       
 59073      hardcode_into_libs=yes
       
 59074      ;;
       
 59075    freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
       
 59076    freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
       
 59077 @@ -2336,22 +2514,36 @@ freebsd* | dragonfly*)
       
 59078    *) # from 4.6 on, and DragonFly
       
 59079      shlibpath_overrides_runpath=yes
       
 59080      hardcode_into_libs=yes
       
 59081      ;;
       
 59082    esac
       
 59083    ;;
       
 59084  
       
 59085  gnu*)
       
 59086 -  version_type=linux
       
 59087 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59088    need_lib_prefix=no
       
 59089    need_version=no
       
 59090    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
       
 59091    soname_spec='${libname}${release}${shared_ext}$major'
       
 59092    shlibpath_var=LD_LIBRARY_PATH
       
 59093 +  shlibpath_overrides_runpath=no
       
 59094 +  hardcode_into_libs=yes
       
 59095 +  ;;
       
 59096 +
       
 59097 +haiku*)
       
 59098 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59099 +  need_lib_prefix=no
       
 59100 +  need_version=no
       
 59101 +  dynamic_linker="$host_os runtime_loader"
       
 59102 +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
       
 59103 +  soname_spec='${libname}${release}${shared_ext}$major'
       
 59104 +  shlibpath_var=LIBRARY_PATH
       
 59105 +  shlibpath_overrides_runpath=yes
       
 59106 +  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
       
 59107    hardcode_into_libs=yes
       
 59108    ;;
       
 59109  
       
 59110  hpux9* | hpux10* | hpux11*)
       
 59111    # Give a soname corresponding to the major version so that dld.sl refuses to
       
 59112    # link against other versions.
       
 59113    version_type=sunos
       
 59114    need_lib_prefix=no
       
 59115 @@ -2387,38 +2579,40 @@ hpux9* | hpux10* | hpux11*)
       
 59116      shrext_cmds='.sl'
       
 59117      dynamic_linker="$host_os dld.sl"
       
 59118      shlibpath_var=SHLIB_PATH
       
 59119      shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
       
 59120      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 59121      soname_spec='${libname}${release}${shared_ext}$major'
       
 59122      ;;
       
 59123    esac
       
 59124 -  # HP-UX runs *really* slowly unless shared libraries are mode 555.
       
 59125 +  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
       
 59126    postinstall_cmds='chmod 555 $lib'
       
 59127 +  # or fails outright, so override atomically:
       
 59128 +  install_override_mode=555
       
 59129    ;;
       
 59130  
       
 59131  interix[[3-9]]*)
       
 59132 -  version_type=linux
       
 59133 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59134    need_lib_prefix=no
       
 59135    need_version=no
       
 59136    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
       
 59137    soname_spec='${libname}${release}${shared_ext}$major'
       
 59138    dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
       
 59139    shlibpath_var=LD_LIBRARY_PATH
       
 59140    shlibpath_overrides_runpath=no
       
 59141    hardcode_into_libs=yes
       
 59142    ;;
       
 59143  
       
 59144  irix5* | irix6* | nonstopux*)
       
 59145    case $host_os in
       
 59146      nonstopux*) version_type=nonstopux ;;
       
 59147      *)
       
 59148  	if test "$lt_cv_prog_gnu_ld" = yes; then
       
 59149 -		version_type=linux
       
 59150 +		version_type=linux # correct to gnu/linux during the next big refactor
       
 59151  	else
       
 59152  		version_type=irix
       
 59153  	fi ;;
       
 59154    esac
       
 59155    need_lib_prefix=no
       
 59156    need_version=no
       
 59157    soname_spec='${libname}${release}${shared_ext}$major'
       
 59158    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
       
 59159 @@ -2445,49 +2639,55 @@ irix5* | irix6* | nonstopux*)
       
 59160    hardcode_into_libs=yes
       
 59161    ;;
       
 59162  
       
 59163  # No shared lib support for Linux oldld, aout, or coff.
       
 59164  linux*oldld* | linux*aout* | linux*coff*)
       
 59165    dynamic_linker=no
       
 59166    ;;
       
 59167  
       
 59168 -# This must be Linux ELF.
       
 59169 -linux* | k*bsd*-gnu)
       
 59170 -  version_type=linux
       
 59171 +# This must be glibc/ELF.
       
 59172 +linux* | k*bsd*-gnu | kopensolaris*-gnu)
       
 59173 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59174    need_lib_prefix=no
       
 59175    need_version=no
       
 59176    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 59177    soname_spec='${libname}${release}${shared_ext}$major'
       
 59178    finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
       
 59179    shlibpath_var=LD_LIBRARY_PATH
       
 59180    shlibpath_overrides_runpath=no
       
 59181 +
       
 59182    # Some binutils ld are patched to set DT_RUNPATH
       
 59183 -  save_LDFLAGS=$LDFLAGS
       
 59184 -  save_libdir=$libdir
       
 59185 -  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
       
 59186 -       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
       
 59187 -  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
       
 59188 -    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
       
 59189 -       [shlibpath_overrides_runpath=yes])])
       
 59190 -  LDFLAGS=$save_LDFLAGS
       
 59191 -  libdir=$save_libdir
       
 59192 +  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
       
 59193 +    [lt_cv_shlibpath_overrides_runpath=no
       
 59194 +    save_LDFLAGS=$LDFLAGS
       
 59195 +    save_libdir=$libdir
       
 59196 +    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
       
 59197 +	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
       
 59198 +    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
       
 59199 +      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
       
 59200 +	 [lt_cv_shlibpath_overrides_runpath=yes])])
       
 59201 +    LDFLAGS=$save_LDFLAGS
       
 59202 +    libdir=$save_libdir
       
 59203 +    ])
       
 59204 +  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
       
 59205  
       
 59206    # This implies no fast_install, which is unacceptable.
       
 59207    # Some rework will be needed to allow for fast_install
       
 59208    # before this can be enabled.
       
 59209    hardcode_into_libs=yes
       
 59210  
       
 59211    # Add ABI-specific directories to the system library path.
       
 59212    sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
       
 59213  
       
 59214    # Append ld.so.conf contents to the search path
       
 59215    if test -f /etc/ld.so.conf; then
       
 59216 -    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' ' '`
       
 59217 +    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' ' '`
       
 59218      sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
       
 59219 +
       
 59220    fi
       
 59221  
       
 59222    # We used to test for /lib/ld.so.1 and disable shared libraries on
       
 59223    # powerpc, because MkLinux only supported shared libraries with the
       
 59224    # GNU dynamic linker.  Since this was broken with cross compilers,
       
 59225    # most powerpc-linux boxes support dynamic linking these days and
       
 59226    # people can always --disable-shared, the test was removed, and we
       
 59227    # assume the GNU/Linux dynamic linker is in use.
       
 59228 @@ -2508,17 +2708,17 @@ netbsd*)
       
 59229      dynamic_linker='NetBSD ld.elf_so'
       
 59230    fi
       
 59231    shlibpath_var=LD_LIBRARY_PATH
       
 59232    shlibpath_overrides_runpath=yes
       
 59233    hardcode_into_libs=yes
       
 59234    ;;
       
 59235  
       
 59236  newsos6)
       
 59237 -  version_type=linux
       
 59238 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59239    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 59240    shlibpath_var=LD_LIBRARY_PATH
       
 59241    shlibpath_overrides_runpath=yes
       
 59242    ;;
       
 59243  
       
 59244  *nto* | *qnx*)
       
 59245    version_type=qnx
       
 59246    need_lib_prefix=no
       
 59247 @@ -2577,17 +2777,17 @@ osf3* | osf4* | osf5*)
       
 59248    sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
       
 59249    ;;
       
 59250  
       
 59251  rdos*)
       
 59252    dynamic_linker=no
       
 59253    ;;
       
 59254  
       
 59255  solaris*)
       
 59256 -  version_type=linux
       
 59257 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59258    need_lib_prefix=no
       
 59259    need_version=no
       
 59260    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 59261    soname_spec='${libname}${release}${shared_ext}$major'
       
 59262    shlibpath_var=LD_LIBRARY_PATH
       
 59263    shlibpath_overrides_runpath=yes
       
 59264    hardcode_into_libs=yes
       
 59265    # ldd complains unless libraries are executable
       
 59266 @@ -2602,17 +2802,17 @@ sunos4*)
       
 59267    shlibpath_overrides_runpath=yes
       
 59268    if test "$with_gnu_ld" = yes; then
       
 59269      need_lib_prefix=no
       
 59270    fi
       
 59271    need_version=yes
       
 59272    ;;
       
 59273  
       
 59274  sysv4 | sysv4.3*)
       
 59275 -  version_type=linux
       
 59276 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59277    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 59278    soname_spec='${libname}${release}${shared_ext}$major'
       
 59279    shlibpath_var=LD_LIBRARY_PATH
       
 59280    case $host_vendor in
       
 59281      sni)
       
 59282        shlibpath_overrides_runpath=no
       
 59283        need_lib_prefix=no
       
 59284        runpath_var=LD_RUN_PATH
       
 59285 @@ -2626,17 +2826,17 @@ sysv4 | sysv4.3*)
       
 59286        shlibpath_overrides_runpath=no
       
 59287        sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
       
 59288        ;;
       
 59289    esac
       
 59290    ;;
       
 59291  
       
 59292  sysv4*MP*)
       
 59293    if test -d /usr/nec ;then
       
 59294 -    version_type=linux
       
 59295 +    version_type=linux # correct to gnu/linux during the next big refactor
       
 59296      library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
       
 59297      soname_spec='$libname${shared_ext}.$major'
       
 59298      shlibpath_var=LD_LIBRARY_PATH
       
 59299    fi
       
 59300    ;;
       
 59301  
       
 59302  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
       
 59303    version_type=freebsd-elf
       
 59304 @@ -2657,27 +2857,27 @@ sysv5* | sco3.2v5* | sco5v6* | unixware*
       
 59305  	;;
       
 59306      esac
       
 59307    fi
       
 59308    sys_lib_dlsearch_path_spec='/usr/lib'
       
 59309    ;;
       
 59310  
       
 59311  tpf*)
       
 59312    # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
       
 59313 -  version_type=linux
       
 59314 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59315    need_lib_prefix=no
       
 59316    need_version=no
       
 59317    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 59318    shlibpath_var=LD_LIBRARY_PATH
       
 59319    shlibpath_overrides_runpath=no
       
 59320    hardcode_into_libs=yes
       
 59321    ;;
       
 59322  
       
 59323  uts4*)
       
 59324 -  version_type=linux
       
 59325 +  version_type=linux # correct to gnu/linux during the next big refactor
       
 59326    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
       
 59327    soname_spec='${libname}${release}${shared_ext}$major'
       
 59328    shlibpath_var=LD_LIBRARY_PATH
       
 59329    ;;
       
 59330  
       
 59331  *)
       
 59332    dynamic_linker=no
       
 59333    ;;
       
 59334 @@ -2709,16 +2909,18 @@ fi
       
 59335  _LT_DECL([], [shlibpath_overrides_runpath], [0],
       
 59336      [Is shlibpath searched before the hard-coded library search path?])
       
 59337  _LT_DECL([], [libname_spec], [1], [Format of library name prefix])
       
 59338  _LT_DECL([], [library_names_spec], [1],
       
 59339      [[List of archive names.  First name is the real one, the rest are links.
       
 59340      The last name is the one that the linker finds with -lNAME]])
       
 59341  _LT_DECL([], [soname_spec], [1],
       
 59342      [[The coded name of the library, if different from the real name]])
       
 59343 +_LT_DECL([], [install_override_mode], [1],
       
 59344 +    [Permission mode override for installation of shared libraries])
       
 59345  _LT_DECL([], [postinstall_cmds], [2],
       
 59346      [Command to use after installation of a shared archive])
       
 59347  _LT_DECL([], [postuninstall_cmds], [2],
       
 59348      [Command to use after uninstallation of a shared archive])
       
 59349  _LT_DECL([], [finish_cmds], [2],
       
 59350      [Commands used to finish a libtool library installation in a directory])
       
 59351  _LT_DECL([], [finish_eval], [1],
       
 59352      [[As "finish_cmds", except a single script fragment to be evaled but
       
 59353 @@ -2821,16 +3023,17 @@ fi
       
 59354  # ----------
       
 59355  # find the pathname to the GNU or non-GNU linker
       
 59356  AC_DEFUN([LT_PATH_LD],
       
 59357  [AC_REQUIRE([AC_PROG_CC])dnl
       
 59358  AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 59359  AC_REQUIRE([AC_CANONICAL_BUILD])dnl
       
 59360  m4_require([_LT_DECL_SED])dnl
       
 59361  m4_require([_LT_DECL_EGREP])dnl
       
 59362 +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
       
 59363  
       
 59364  AC_ARG_WITH([gnu-ld],
       
 59365      [AS_HELP_STRING([--with-gnu-ld],
       
 59366  	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
       
 59367      [test "$withval" = no || with_gnu_ld=yes],
       
 59368      [with_gnu_ld=no])dnl
       
 59369  
       
 59370  ac_prog=ld
       
 59371 @@ -2942,26 +3145,31 @@ m4_defun([_LT_CMD_RELOAD],
       
 59372    [lt_cv_ld_reload_flag='-r'])
       
 59373  reload_flag=$lt_cv_ld_reload_flag
       
 59374  case $reload_flag in
       
 59375  "" | " "*) ;;
       
 59376  *) reload_flag=" $reload_flag" ;;
       
 59377  esac
       
 59378  reload_cmds='$LD$reload_flag -o $output$reload_objs'
       
 59379  case $host_os in
       
 59380 +  cygwin* | mingw* | pw32* | cegcc*)
       
 59381 +    if test "$GCC" != yes; then
       
 59382 +      reload_cmds=false
       
 59383 +    fi
       
 59384 +    ;;
       
 59385    darwin*)
       
 59386      if test "$GCC" = yes; then
       
 59387        reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
       
 59388      else
       
 59389        reload_cmds='$LD$reload_flag -o $output$reload_objs'
       
 59390      fi
       
 59391      ;;
       
 59392  esac
       
 59393 -_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
       
 59394 -_LT_DECL([], [reload_cmds], [2])dnl
       
 59395 +_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
       
 59396 +_LT_TAGDECL([], [reload_cmds], [2])dnl
       
 59397  ])# _LT_CMD_RELOAD
       
 59398  
       
 59399  
       
 59400  # _LT_CHECK_MAGIC_METHOD
       
 59401  # ----------------------
       
 59402  # how to check for library dependencies
       
 59403  #  -- PORTME fill in with the dynamic library characteristics
       
 59404  m4_defun([_LT_CHECK_MAGIC_METHOD],
       
 59405 @@ -3003,26 +3211,28 @@ cygwin*)
       
 59406    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
       
 59407    lt_cv_file_magic_cmd='func_win32_libid'
       
 59408    ;;
       
 59409  
       
 59410  mingw* | pw32*)
       
 59411    # Base MSYS/MinGW do not provide the 'file' command needed by
       
 59412    # func_win32_libid shell function, so use a weaker test based on 'objdump',
       
 59413    # unless we find 'file', for example because we are cross-compiling.
       
 59414 -  if ( file / ) >/dev/null 2>&1; then
       
 59415 +  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
       
 59416 +  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
       
 59417      lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
       
 59418      lt_cv_file_magic_cmd='func_win32_libid'
       
 59419    else
       
 59420 -    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
       
 59421 +    # Keep this pattern in sync with the one in func_win32_libid.
       
 59422 +    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
       
 59423      lt_cv_file_magic_cmd='$OBJDUMP -f'
       
 59424    fi
       
 59425    ;;
       
 59426  
       
 59427 -cegcc)
       
 59428 +cegcc*)
       
 59429    # use the weaker test based on 'objdump'. See mingw*.
       
 59430    lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
       
 59431    lt_cv_file_magic_cmd='$OBJDUMP -f'
       
 59432    ;;
       
 59433  
       
 59434  darwin* | rhapsody*)
       
 59435    lt_cv_deplibs_check_method=pass_all
       
 59436    ;;
       
 59437 @@ -3042,29 +3252,33 @@ freebsd* | dragonfly*)
       
 59438      lt_cv_deplibs_check_method=pass_all
       
 59439    fi
       
 59440    ;;
       
 59441  
       
 59442  gnu*)
       
 59443    lt_cv_deplibs_check_method=pass_all
       
 59444    ;;
       
 59445  
       
 59446 +haiku*)
       
 59447 +  lt_cv_deplibs_check_method=pass_all
       
 59448 +  ;;
       
 59449 +
       
 59450  hpux10.20* | hpux11*)
       
 59451    lt_cv_file_magic_cmd=/usr/bin/file
       
 59452    case $host_cpu in
       
 59453    ia64*)
       
 59454      lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
       
 59455      lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
       
 59456      ;;
       
 59457    hppa*64*)
       
 59458 -    [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]']
       
 59459 +    [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]']
       
 59460      lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
       
 59461      ;;
       
 59462    *)
       
 59463 -    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
       
 59464 +    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
       
 59465      lt_cv_file_magic_test_file=/usr/lib/libc.sl
       
 59466      ;;
       
 59467    esac
       
 59468    ;;
       
 59469  
       
 59470  interix[[3-9]]*)
       
 59471    # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
       
 59472    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
       
 59473 @@ -3075,18 +3289,18 @@ irix5* | irix6* | nonstopux*)
       
 59474    *-32|*"-32 ") libmagic=32-bit;;
       
 59475    *-n32|*"-n32 ") libmagic=N32;;
       
 59476    *-64|*"-64 ") libmagic=64-bit;;
       
 59477    *) libmagic=never-match;;
       
 59478    esac
       
 59479    lt_cv_deplibs_check_method=pass_all
       
 59480    ;;
       
 59481  
       
 59482 -# This must be Linux ELF.
       
 59483 -linux* | k*bsd*-gnu)
       
 59484 +# This must be glibc/ELF.
       
 59485 +linux* | k*bsd*-gnu | kopensolaris*-gnu)
       
 59486    lt_cv_deplibs_check_method=pass_all
       
 59487    ;;
       
 59488  
       
 59489  netbsd*)
       
 59490    if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
       
 59491      lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
       
 59492    else
       
 59493      lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
       
 59494 @@ -3154,24 +3368,43 @@ sysv4 | sysv4.3*)
       
 59495    esac
       
 59496    ;;
       
 59497  
       
 59498  tpf*)
       
 59499    lt_cv_deplibs_check_method=pass_all
       
 59500    ;;
       
 59501  esac
       
 59502  ])
       
 59503 +
       
 59504 +file_magic_glob=
       
 59505 +want_nocaseglob=no
       
 59506 +if test "$build" = "$host"; then
       
 59507 +  case $host_os in
       
 59508 +  mingw* | pw32*)
       
 59509 +    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
       
 59510 +      want_nocaseglob=yes
       
 59511 +    else
       
 59512 +      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
       
 59513 +    fi
       
 59514 +    ;;
       
 59515 +  esac
       
 59516 +fi
       
 59517 +
       
 59518  file_magic_cmd=$lt_cv_file_magic_cmd
       
 59519  deplibs_check_method=$lt_cv_deplibs_check_method
       
 59520  test -z "$deplibs_check_method" && deplibs_check_method=unknown
       
 59521  
       
 59522  _LT_DECL([], [deplibs_check_method], [1],
       
 59523      [Method to check whether dependent libraries are shared objects])
       
 59524  _LT_DECL([], [file_magic_cmd], [1],
       
 59525 -    [Command to use when deplibs_check_method == "file_magic"])
       
 59526 +    [Command to use when deplibs_check_method = "file_magic"])
       
 59527 +_LT_DECL([], [file_magic_glob], [1],
       
 59528 +    [How to find potential files when deplibs_check_method = "file_magic"])
       
 59529 +_LT_DECL([], [want_nocaseglob], [1],
       
 59530 +    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
       
 59531  ])# _LT_CHECK_MAGIC_METHOD
       
 59532  
       
 59533  
       
 59534  # LT_PATH_NM
       
 59535  # ----------
       
 59536  # find the pathname to a BSD- or MS-compatible name lister
       
 59537  AC_DEFUN([LT_PATH_NM],
       
 59538  [AC_REQUIRE([AC_PROG_CC])dnl
       
 59539 @@ -3218,59 +3451,132 @@ else
       
 59540      IFS="$lt_save_ifs"
       
 59541    done
       
 59542    : ${lt_cv_path_NM=no}
       
 59543  fi])
       
 59544  if test "$lt_cv_path_NM" != "no"; then
       
 59545    NM="$lt_cv_path_NM"
       
 59546  else
       
 59547    # Didn't find any BSD compatible name lister, look for dumpbin.
       
 59548 -  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
       
 59549 +  if test -n "$DUMPBIN"; then :
       
 59550 +    # Let the user override the test.
       
 59551 +  else
       
 59552 +    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
       
 59553 +    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
       
 59554 +    *COFF*)
       
 59555 +      DUMPBIN="$DUMPBIN -symbols"
       
 59556 +      ;;
       
 59557 +    *)
       
 59558 +      DUMPBIN=:
       
 59559 +      ;;
       
 59560 +    esac
       
 59561 +  fi
       
 59562    AC_SUBST([DUMPBIN])
       
 59563    if test "$DUMPBIN" != ":"; then
       
 59564      NM="$DUMPBIN"
       
 59565    fi
       
 59566  fi
       
 59567  test -z "$NM" && NM=nm
       
 59568  AC_SUBST([NM])
       
 59569  _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
       
 59570  
       
 59571  AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
       
 59572    [lt_cv_nm_interface="BSD nm"
       
 59573    echo "int some_variable = 0;" > conftest.$ac_ext
       
 59574 -  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
       
 59575 +  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
       
 59576    (eval "$ac_compile" 2>conftest.err)
       
 59577    cat conftest.err >&AS_MESSAGE_LOG_FD
       
 59578 -  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
       
 59579 +  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
       
 59580    (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
       
 59581    cat conftest.err >&AS_MESSAGE_LOG_FD
       
 59582 -  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
       
 59583 +  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
       
 59584    cat conftest.out >&AS_MESSAGE_LOG_FD
       
 59585    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
       
 59586      lt_cv_nm_interface="MS dumpbin"
       
 59587    fi
       
 59588    rm -f conftest*])
       
 59589  ])# LT_PATH_NM
       
 59590  
       
 59591  # Old names:
       
 59592  AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
       
 59593  AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
       
 59594  dnl aclocal-1.4 backwards compatibility:
       
 59595  dnl AC_DEFUN([AM_PROG_NM], [])
       
 59596  dnl AC_DEFUN([AC_PROG_NM], [])
       
 59597  
       
 59598 +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
       
 59599 +# --------------------------------
       
 59600 +# how to determine the name of the shared library
       
 59601 +# associated with a specific link library.
       
 59602 +#  -- PORTME fill in with the dynamic library characteristics
       
 59603 +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
       
 59604 +[m4_require([_LT_DECL_EGREP])
       
 59605 +m4_require([_LT_DECL_OBJDUMP])
       
 59606 +m4_require([_LT_DECL_DLLTOOL])
       
 59607 +AC_CACHE_CHECK([how to associate runtime and link libraries],
       
 59608 +lt_cv_sharedlib_from_linklib_cmd,
       
 59609 +[lt_cv_sharedlib_from_linklib_cmd='unknown'
       
 59610 +
       
 59611 +case $host_os in
       
 59612 +cygwin* | mingw* | pw32* | cegcc*)
       
 59613 +  # two different shell functions defined in ltmain.sh
       
 59614 +  # decide which to use based on capabilities of $DLLTOOL
       
 59615 +  case `$DLLTOOL --help 2>&1` in
       
 59616 +  *--identify-strict*)
       
 59617 +    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
       
 59618 +    ;;
       
 59619 +  *)
       
 59620 +    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
       
 59621 +    ;;
       
 59622 +  esac
       
 59623 +  ;;
       
 59624 +*)
       
 59625 +  # fallback: assume linklib IS sharedlib
       
 59626 +  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
       
 59627 +  ;;
       
 59628 +esac
       
 59629 +])
       
 59630 +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
       
 59631 +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
       
 59632 +
       
 59633 +_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
       
 59634 +    [Command to associate shared and link libraries])
       
 59635 +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
       
 59636 +
       
 59637 +
       
 59638 +# _LT_PATH_MANIFEST_TOOL
       
 59639 +# ----------------------
       
 59640 +# locate the manifest tool
       
 59641 +m4_defun([_LT_PATH_MANIFEST_TOOL],
       
 59642 +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
       
 59643 +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
       
 59644 +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
       
 59645 +  [lt_cv_path_mainfest_tool=no
       
 59646 +  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
       
 59647 +  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
       
 59648 +  cat conftest.err >&AS_MESSAGE_LOG_FD
       
 59649 +  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
       
 59650 +    lt_cv_path_mainfest_tool=yes
       
 59651 +  fi
       
 59652 +  rm -f conftest*])
       
 59653 +if test "x$lt_cv_path_mainfest_tool" != xyes; then
       
 59654 +  MANIFEST_TOOL=:
       
 59655 +fi
       
 59656 +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
       
 59657 +])# _LT_PATH_MANIFEST_TOOL
       
 59658 +
       
 59659  
       
 59660  # LT_LIB_M
       
 59661  # --------
       
 59662  # check for math library
       
 59663  AC_DEFUN([LT_LIB_M],
       
 59664  [AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 59665  LIBM=
       
 59666  case $host in
       
 59667 -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
       
 59668 +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
       
 59669    # These system don't have libm, or don't need it
       
 59670    ;;
       
 59671  *-ncr-sysv4.3*)
       
 59672    AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
       
 59673    AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
       
 59674    ;;
       
 59675  *)
       
 59676    AC_CHECK_LIB(m, cos, LIBM="-lm")
       
 59677 @@ -3288,33 +3594,39 @@ dnl AC_DEFUN([AC_CHECK_LIBM], [])
       
 59678  # _LT_COMPILER_NO_RTTI([TAGNAME])
       
 59679  # -------------------------------
       
 59680  m4_defun([_LT_COMPILER_NO_RTTI],
       
 59681  [m4_require([_LT_TAG_COMPILER])dnl
       
 59682  
       
 59683  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
       
 59684  
       
 59685  if test "$GCC" = yes; then
       
 59686 -  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
       
 59687 +  case $cc_basename in
       
 59688 +  nvcc*)
       
 59689 +    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
       
 59690 +  *)
       
 59691 +    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
       
 59692 +  esac
       
 59693  
       
 59694    _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
       
 59695      lt_cv_prog_compiler_rtti_exceptions,
       
 59696      [-fno-rtti -fno-exceptions], [],
       
 59697      [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
       
 59698  fi
       
 59699  _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
       
 59700  	[Compiler flag to turn off builtin functions])
       
 59701  ])# _LT_COMPILER_NO_RTTI
       
 59702  
       
 59703  
       
 59704  # _LT_CMD_GLOBAL_SYMBOLS
       
 59705  # ----------------------
       
 59706  m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
       
 59707  [AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 59708  AC_REQUIRE([AC_PROG_CC])dnl
       
 59709 +AC_REQUIRE([AC_PROG_AWK])dnl
       
 59710  AC_REQUIRE([LT_PATH_NM])dnl
       
 59711  AC_REQUIRE([LT_PATH_LD])dnl
       
 59712  m4_require([_LT_DECL_SED])dnl
       
 59713  m4_require([_LT_DECL_EGREP])dnl
       
 59714  m4_require([_LT_TAG_COMPILER])dnl
       
 59715  
       
 59716  # Check for command to grab the raw symbol name followed by C symbol from nm.
       
 59717  AC_MSG_CHECKING([command to parse $NM output from $compiler object])
       
 59718 @@ -3372,18 +3684,18 @@ case `$NM -V 2>&1` in
       
 59719  esac
       
 59720  
       
 59721  # Transform an extracted symbol line into a proper C declaration.
       
 59722  # Some systems (esp. on ia64) link data and code symbols differently,
       
 59723  # so use this general approach.
       
 59724  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
       
 59725  
       
 59726  # Transform an extracted symbol line into symbol name and symbol address
       
 59727 -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
       
 59728 -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'"
       
 59729 +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
       
 59730 +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'"
       
 59731  
       
 59732  # Handle CRLF in mingw tool chain
       
 59733  opt_cr=
       
 59734  case $build_os in
       
 59735  mingw*)
       
 59736    opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
       
 59737    ;;
       
 59738  esac
       
 59739 @@ -3397,28 +3709,30 @@ for ac_symprfx in "" "_"; do
       
 59740    # Write the raw and C identifiers.
       
 59741    if test "$lt_cv_nm_interface" = "MS dumpbin"; then
       
 59742      # Fake it for dumpbin and say T for any non-static function
       
 59743      # and D for any global variable.
       
 59744      # Also find C++ and __fastcall symbols from MSVC++,
       
 59745      # which start with @ or ?.
       
 59746      lt_cv_sys_global_symbol_pipe="$AWK ['"\
       
 59747  "     {last_section=section; section=\$ 3};"\
       
 59748 +"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
       
 59749  "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
       
 59750  "     \$ 0!~/External *\|/{next};"\
       
 59751  "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
       
 59752  "     {if(hide[section]) next};"\
       
 59753  "     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
       
 59754  "     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
       
 59755  "     s[1]~/^[@?]/{print s[1], s[1]; next};"\
       
 59756  "     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
       
 59757  "     ' prfx=^$ac_symprfx]"
       
 59758    else
       
 59759      lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
       
 59760    fi
       
 59761 +  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
       
 59762  
       
 59763    # Check to see that the pipe works correctly.
       
 59764    pipe_works=no
       
 59765  
       
 59766    rm -f conftest*
       
 59767    cat > conftest.$ac_ext <<_LT_EOF
       
 59768  #ifdef __cplusplus
       
 59769  extern "C" {
       
 59770 @@ -3430,40 +3744,52 @@ void nm_test_func(void){}
       
 59771  }
       
 59772  #endif
       
 59773  int main(){nm_test_var='a';nm_test_func();return(0);}
       
 59774  _LT_EOF
       
 59775  
       
 59776    if AC_TRY_EVAL(ac_compile); then
       
 59777      # Now try to grab the symbols.
       
 59778      nlist=conftest.nm
       
 59779 -    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
       
 59780 +    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
       
 59781        # Try sorting and uniquifying the output.
       
 59782        if sort "$nlist" | uniq > "$nlist"T; then
       
 59783  	mv -f "$nlist"T "$nlist"
       
 59784        else
       
 59785  	rm -f "$nlist"T
       
 59786        fi
       
 59787  
       
 59788        # Make sure that we snagged all the symbols we need.
       
 59789        if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
       
 59790  	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
       
 59791  	  cat <<_LT_EOF > conftest.$ac_ext
       
 59792 +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
       
 59793 +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
       
 59794 +/* DATA imports from DLLs on WIN32 con't be const, because runtime
       
 59795 +   relocations are performed -- see ld's documentation on pseudo-relocs.  */
       
 59796 +# define LT@&t@_DLSYM_CONST
       
 59797 +#elif defined(__osf__)
       
 59798 +/* This system does not cope well with relocations in const data.  */
       
 59799 +# define LT@&t@_DLSYM_CONST
       
 59800 +#else
       
 59801 +# define LT@&t@_DLSYM_CONST const
       
 59802 +#endif
       
 59803 +
       
 59804  #ifdef __cplusplus
       
 59805  extern "C" {
       
 59806  #endif
       
 59807  
       
 59808  _LT_EOF
       
 59809  	  # Now generate the symbol file.
       
 59810  	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
       
 59811  
       
 59812  	  cat <<_LT_EOF >> conftest.$ac_ext
       
 59813  
       
 59814  /* The mapping between symbol names and symbols.  */
       
 59815 -const struct {
       
 59816 +LT@&t@_DLSYM_CONST struct {
       
 59817    const char *name;
       
 59818    void       *address;
       
 59819  }
       
 59820  lt__PROGRAM__LTX_preloaded_symbols[[]] =
       
 59821  {
       
 59822    { "@PROGRAM@", (void *) 0 },
       
 59823  _LT_EOF
       
 59824  	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
       
 59825 @@ -3479,25 +3805,25 @@ static const void *lt_preloaded_setup() 
       
 59826  #endif
       
 59827  
       
 59828  #ifdef __cplusplus
       
 59829  }
       
 59830  #endif
       
 59831  _LT_EOF
       
 59832  	  # Now try linking the two files.
       
 59833  	  mv conftest.$ac_objext conftstm.$ac_objext
       
 59834 -	  lt_save_LIBS="$LIBS"
       
 59835 -	  lt_save_CFLAGS="$CFLAGS"
       
 59836 +	  lt_globsym_save_LIBS=$LIBS
       
 59837 +	  lt_globsym_save_CFLAGS=$CFLAGS
       
 59838  	  LIBS="conftstm.$ac_objext"
       
 59839  	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
       
 59840  	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
       
 59841  	    pipe_works=yes
       
 59842  	  fi
       
 59843 -	  LIBS="$lt_save_LIBS"
       
 59844 -	  CFLAGS="$lt_save_CFLAGS"
       
 59845 +	  LIBS=$lt_globsym_save_LIBS
       
 59846 +	  CFLAGS=$lt_globsym_save_CFLAGS
       
 59847  	else
       
 59848  	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
       
 59849  	fi
       
 59850        else
       
 59851  	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
       
 59852        fi
       
 59853      else
       
 59854        echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
       
 59855 @@ -3520,38 +3846,46 @@ if test -z "$lt_cv_sys_global_symbol_pip
       
 59856    lt_cv_sys_global_symbol_to_cdecl=
       
 59857  fi
       
 59858  if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
       
 59859    AC_MSG_RESULT(failed)
       
 59860  else
       
 59861    AC_MSG_RESULT(ok)
       
 59862  fi
       
 59863  
       
 59864 +# Response file support.
       
 59865 +if test "$lt_cv_nm_interface" = "MS dumpbin"; then
       
 59866 +  nm_file_list_spec='@'
       
 59867 +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
       
 59868 +  nm_file_list_spec='@'
       
 59869 +fi
       
 59870 +
       
 59871  _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
       
 59872      [Take the output of nm and produce a listing of raw symbols and C names])
       
 59873  _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
       
 59874      [Transform the output of nm in a proper C declaration])
       
 59875  _LT_DECL([global_symbol_to_c_name_address],
       
 59876      [lt_cv_sys_global_symbol_to_c_name_address], [1],
       
 59877      [Transform the output of nm in a C name address pair])
       
 59878  _LT_DECL([global_symbol_to_c_name_address_lib_prefix],
       
 59879      [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
       
 59880      [Transform the output of nm in a C name address pair when lib prefix is needed])
       
 59881 +_LT_DECL([], [nm_file_list_spec], [1],
       
 59882 +    [Specify filename containing input files for $NM])
       
 59883  ]) # _LT_CMD_GLOBAL_SYMBOLS
       
 59884  
       
 59885  
       
 59886  # _LT_COMPILER_PIC([TAGNAME])
       
 59887  # ---------------------------
       
 59888  m4_defun([_LT_COMPILER_PIC],
       
 59889  [m4_require([_LT_TAG_COMPILER])dnl
       
 59890  _LT_TAGVAR(lt_prog_compiler_wl, $1)=
       
 59891  _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 59892  _LT_TAGVAR(lt_prog_compiler_static, $1)=
       
 59893  
       
 59894 -AC_MSG_CHECKING([for $compiler option to produce PIC])
       
 59895  m4_if([$1], [CXX], [
       
 59896    # C++ specific cases for pic, static, wl, etc.
       
 59897    if test "$GXX" = yes; then
       
 59898      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 59899      _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 59900  
       
 59901      case $host_os in
       
 59902      aix*)
       
 59903 @@ -3592,16 +3926,21 @@ m4_if([$1], [CXX], [
       
 59904        # PIC is the default on this platform
       
 59905        # Common symbols not allowed in MH_DYLIB files
       
 59906        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
       
 59907        ;;
       
 59908      *djgpp*)
       
 59909        # DJGPP does not support shared libraries at all
       
 59910        _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 59911        ;;
       
 59912 +    haiku*)
       
 59913 +      # PIC is the default for Haiku.
       
 59914 +      # The "-static" flag exists, but is broken.
       
 59915 +      _LT_TAGVAR(lt_prog_compiler_static, $1)=
       
 59916 +      ;;
       
 59917      interix[[3-9]]*)
       
 59918        # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       
 59919        # Instead, we relocate shared libraries at runtime.
       
 59920        ;;
       
 59921      sysv4*MP*)
       
 59922        if test -d /usr/nec; then
       
 59923  	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
       
 59924        fi
       
 59925 @@ -3641,16 +3980,22 @@ m4_if([$1], [CXX], [
       
 59926        chorus*)
       
 59927  	case $cc_basename in
       
 59928  	cxch68*)
       
 59929  	  # Green Hills C++ Compiler
       
 59930  	  # _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"
       
 59931  	  ;;
       
 59932  	esac
       
 59933  	;;
       
 59934 +      mingw* | cygwin* | os2* | pw32* | cegcc*)
       
 59935 +	# This hack is so that the source file can tell whether it is being
       
 59936 +	# built for inclusion in a dll (and should export symbols for example).
       
 59937 +	m4_if([$1], [GCJ], [],
       
 59938 +	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       
 59939 +	;;
       
 59940        dgux*)
       
 59941  	case $cc_basename in
       
 59942  	  ec++*)
       
 59943  	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 59944  	    ;;
       
 59945  	  ghcx*)
       
 59946  	    # Green Hills C++ Compiler
       
 59947  	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
       
 59948 @@ -3697,17 +4042,17 @@ m4_if([$1], [CXX], [
       
 59949  	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 59950  	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 59951  	    # CC pic flag -KPIC is the default.
       
 59952  	    ;;
       
 59953  	  *)
       
 59954  	    ;;
       
 59955  	esac
       
 59956  	;;
       
 59957 -      linux* | k*bsd*-gnu)
       
 59958 +      linux* | k*bsd*-gnu | kopensolaris*-gnu)
       
 59959  	case $cc_basename in
       
 59960  	  KCC*)
       
 59961  	    # KAI C++ Compiler
       
 59962  	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
       
 59963  	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 59964  	    ;;
       
 59965  	  ecpc* )
       
 59966  	    # old Intel C++ for x86_64 which still supported -KPIC.
       
 59967 @@ -3730,18 +4075,18 @@ m4_if([$1], [CXX], [
       
 59968  	    ;;
       
 59969  	  cxx*)
       
 59970  	    # Compaq C++
       
 59971  	    # Make sure the PIC flag is empty.  It appears that all Alpha
       
 59972  	    # Linux and Compaq Tru64 Unix objects are PIC.
       
 59973  	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 59974  	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 59975  	    ;;
       
 59976 -	  xlc* | xlC*)
       
 59977 -	    # IBM XL 8.0 on PPC
       
 59978 +	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
       
 59979 +	    # IBM XL 8.0, 9.0 on PPC and BlueGene
       
 59980  	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 59981  	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
       
 59982  	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
       
 59983  	    ;;
       
 59984  	  *)
       
 59985  	    case `$CC -V 2>&1 | sed 5q` in
       
 59986  	    *Sun\ C*)
       
 59987  	      # Sun C++ 5.9
       
 59988 @@ -3793,17 +4138,17 @@ m4_if([$1], [CXX], [
       
 59989  	  *)
       
 59990  	    ;;
       
 59991  	esac
       
 59992  	;;
       
 59993        psos*)
       
 59994  	;;
       
 59995        solaris*)
       
 59996  	case $cc_basename in
       
 59997 -	  CC*)
       
 59998 +	  CC* | sunCC*)
       
 59999  	    # Sun C++ 4.2, 5.x and Centerline C++
       
 60000  	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 60001  	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 60002  	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
       
 60003  	    ;;
       
 60004  	  gcx*)
       
 60005  	    # Green Hills C++ Compiler
       
 60006  	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
       
 60007 @@ -3897,16 +4242,22 @@ m4_if([$1], [CXX], [
       
 60008        ;;
       
 60009  
       
 60010      darwin* | rhapsody*)
       
 60011        # PIC is the default on this platform
       
 60012        # Common symbols not allowed in MH_DYLIB files
       
 60013        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
       
 60014        ;;
       
 60015  
       
 60016 +    haiku*)
       
 60017 +      # PIC is the default for Haiku.
       
 60018 +      # The "-static" flag exists, but is broken.
       
 60019 +      _LT_TAGVAR(lt_prog_compiler_static, $1)=
       
 60020 +      ;;
       
 60021 +
       
 60022      hpux*)
       
 60023        # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
       
 60024        # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
       
 60025        # sets the default TLS model and affects inlining.
       
 60026        case $host_cpu in
       
 60027        hppa*64*)
       
 60028  	# +Z the default
       
 60029  	;;
       
 60030 @@ -3939,16 +4290,25 @@ m4_if([$1], [CXX], [
       
 60031  	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
       
 60032        fi
       
 60033        ;;
       
 60034  
       
 60035      *)
       
 60036        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 60037        ;;
       
 60038      esac
       
 60039 +
       
 60040 +    case $cc_basename in
       
 60041 +    nvcc*) # Cuda Compiler Driver 2.2
       
 60042 +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
       
 60043 +      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
       
 60044 +        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
       
 60045 +      fi
       
 60046 +      ;;
       
 60047 +    esac
       
 60048    else
       
 60049      # PORTME Check for flag to pass linker flags through the system compiler.
       
 60050      case $host_os in
       
 60051      aix*)
       
 60052        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60053        if test "$host_cpu" = ia64; then
       
 60054  	# AIX 5 now supports IA64 processor
       
 60055  	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 60056 @@ -3981,17 +4341,17 @@ m4_if([$1], [CXX], [
       
 60057        ;;
       
 60058  
       
 60059      irix5* | irix6* | nonstopux*)
       
 60060        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60061        # PIC (with -KPIC) is the default.
       
 60062        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 60063        ;;
       
 60064  
       
 60065 -    linux* | k*bsd*-gnu)
       
 60066 +    linux* | k*bsd*-gnu | kopensolaris*-gnu)
       
 60067        case $cc_basename in
       
 60068        # old Intel for x86_64 which still supported -KPIC.
       
 60069        ecc*)
       
 60070  	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60071  	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 60072  	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 60073          ;;
       
 60074        # icc used to be incompatible with GCC.
       
 60075 @@ -4002,47 +4362,68 @@ m4_if([$1], [CXX], [
       
 60076  	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 60077          ;;
       
 60078        # Lahey Fortran 8.1.
       
 60079        lf95*)
       
 60080  	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60081  	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
       
 60082  	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
       
 60083  	;;
       
 60084 -      pgcc* | pgf77* | pgf90* | pgf95*)
       
 60085 +      nagfor*)
       
 60086 +	# NAG Fortran compiler
       
 60087 +	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
       
 60088 +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
       
 60089 +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 60090 +	;;
       
 60091 +      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
       
 60092          # Portland Group compilers (*not* the Pentium gcc compiler,
       
 60093  	# which looks to be a dead project)
       
 60094  	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60095  	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
       
 60096  	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 60097          ;;
       
 60098        ccc*)
       
 60099          _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60100          # All Alpha code is PIC.
       
 60101          _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 60102          ;;
       
 60103 -      xl*)
       
 60104 -	# IBM XL C 8.0/Fortran 10.1 on PPC
       
 60105 +      xl* | bgxl* | bgf* | mpixl*)
       
 60106 +	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
       
 60107  	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60108  	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
       
 60109  	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
       
 60110  	;;
       
 60111        *)
       
 60112  	case `$CC -V 2>&1 | sed 5q` in
       
 60113 +	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
       
 60114 +	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
       
 60115 +	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 60116 +	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 60117 +	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
       
 60118 +	  ;;
       
 60119 +	*Sun\ F* | *Sun*Fortran*)
       
 60120 +	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 60121 +	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 60122 +	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
       
 60123 +	  ;;
       
 60124  	*Sun\ C*)
       
 60125  	  # Sun C 5.9
       
 60126  	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 60127  	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 60128  	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60129  	  ;;
       
 60130 -	*Sun\ F*)
       
 60131 -	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
       
 60132 -	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 60133 +        *Intel*\ [[CF]]*Compiler*)
       
 60134 +	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60135 +	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       
 60136 +	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
       
 60137 +	  ;;
       
 60138 +	*Portland\ Group*)
       
 60139 +	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       
 60140 +	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
       
 60141  	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 60142 -	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
       
 60143  	  ;;
       
 60144  	esac
       
 60145  	;;
       
 60146        esac
       
 60147        ;;
       
 60148  
       
 60149      newsos6)
       
 60150        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 60151 @@ -4064,17 +4445,17 @@ m4_if([$1], [CXX], [
       
 60152      rdos*)
       
 60153        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       
 60154        ;;
       
 60155  
       
 60156      solaris*)
       
 60157        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       
 60158        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       
 60159        case $cc_basename in
       
 60160 -      f77* | f90* | f95*)
       
 60161 +      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
       
 60162  	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
       
 60163        *)
       
 60164  	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
       
 60165        esac
       
 60166        ;;
       
 60167  
       
 60168      sunos4*)
       
 60169        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
       
 60170 @@ -4121,19 +4502,21 @@ case $host_os in
       
 60171    # For platforms which do not support PIC, -DPIC is meaningless:
       
 60172    *djgpp*)
       
 60173      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 60174      ;;
       
 60175    *)
       
 60176      _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
       
 60177      ;;
       
 60178  esac
       
 60179 -AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
       
 60180 -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
       
 60181 -	[How to pass a linker flag through the compiler])
       
 60182 +
       
 60183 +AC_CACHE_CHECK([for $compiler option to produce PIC],
       
 60184 +  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
       
 60185 +  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
       
 60186 +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
       
 60187  
       
 60188  #
       
 60189  # Check to make sure the PIC flag actually works.
       
 60190  #
       
 60191  if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
       
 60192    _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
       
 60193      [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
       
 60194      [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
       
 60195 @@ -4142,16 +4525,18 @@ if test -n "$_LT_TAGVAR(lt_prog_compiler
       
 60196       *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
       
 60197       esac],
       
 60198      [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
       
 60199       _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
       
 60200  fi
       
 60201  _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
       
 60202  	[Additional compiler flags for building library objects])
       
 60203  
       
 60204 +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
       
 60205 +	[How to pass a linker flag through the compiler])
       
 60206  #
       
 60207  # Check to make sure the static flag actually works.
       
 60208  #
       
 60209  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
       
 60210  _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
       
 60211    _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
       
 60212    $lt_tmp_static_flag,
       
 60213    [],
       
 60214 @@ -4162,60 +4547,70 @@ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) 
       
 60215  
       
 60216  
       
 60217  # _LT_LINKER_SHLIBS([TAGNAME])
       
 60218  # ----------------------------
       
 60219  # See if the linker supports building shared libraries.
       
 60220  m4_defun([_LT_LINKER_SHLIBS],
       
 60221  [AC_REQUIRE([LT_PATH_LD])dnl
       
 60222  AC_REQUIRE([LT_PATH_NM])dnl
       
 60223 +m4_require([_LT_PATH_MANIFEST_TOOL])dnl
       
 60224  m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 60225  m4_require([_LT_DECL_EGREP])dnl
       
 60226  m4_require([_LT_DECL_SED])dnl
       
 60227  m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
       
 60228  m4_require([_LT_TAG_COMPILER])dnl
       
 60229  AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
       
 60230  m4_if([$1], [CXX], [
       
 60231    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
       
 60232 +  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
       
 60233    case $host_os in
       
 60234    aix[[4-9]]*)
       
 60235      # If we're using GNU nm, then we don't want the "-C" option.
       
 60236      # -C means demangle to AIX nm, but means don't demangle with GNU nm
       
 60237 +    # Also, AIX nm treats weak defined symbols like other global defined
       
 60238 +    # symbols, whereas GNU nm marks them as "W".
       
 60239      if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
       
 60240 -      _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'
       
 60241 +      _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'
       
 60242      else
       
 60243        _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'
       
 60244      fi
       
 60245      ;;
       
 60246    pw32*)
       
 60247      _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
       
 60248 -  ;;
       
 60249 +    ;;
       
 60250    cygwin* | mingw* | cegcc*)
       
 60251 -    _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'
       
 60252 -  ;;
       
 60253 +    case $cc_basename in
       
 60254 +    cl*)
       
 60255 +      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
       
 60256 +      ;;
       
 60257 +    *)
       
 60258 +      _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'
       
 60259 +      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
       
 60260 +      ;;
       
 60261 +    esac
       
 60262 +    ;;
       
 60263    *)
       
 60264      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
       
 60265 -  ;;
       
 60266 +    ;;
       
 60267    esac
       
 60268 -  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
       
 60269  ], [
       
 60270    runpath_var=
       
 60271    _LT_TAGVAR(allow_undefined_flag, $1)=
       
 60272    _LT_TAGVAR(always_export_symbols, $1)=no
       
 60273    _LT_TAGVAR(archive_cmds, $1)=
       
 60274    _LT_TAGVAR(archive_expsym_cmds, $1)=
       
 60275    _LT_TAGVAR(compiler_needs_object, $1)=no
       
 60276    _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
       
 60277    _LT_TAGVAR(export_dynamic_flag_spec, $1)=
       
 60278    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
       
 60279    _LT_TAGVAR(hardcode_automatic, $1)=no
       
 60280    _LT_TAGVAR(hardcode_direct, $1)=no
       
 60281    _LT_TAGVAR(hardcode_direct_absolute, $1)=no
       
 60282    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 60283 -  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
       
 60284    _LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 60285    _LT_TAGVAR(hardcode_minus_L, $1)=no
       
 60286    _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
       
 60287    _LT_TAGVAR(inherit_rpath, $1)=no
       
 60288    _LT_TAGVAR(link_all_deplibs, $1)=unknown
       
 60289    _LT_TAGVAR(module_cmds, $1)=
       
 60290    _LT_TAGVAR(module_expsym_cmds, $1)=
       
 60291    _LT_TAGVAR(old_archive_from_new_cmds, $1)=
       
 60292 @@ -4253,17 +4648,43 @@ dnl Note also adjust exclude_expsyms for
       
 60293      with_gnu_ld=yes
       
 60294      ;;
       
 60295    openbsd*)
       
 60296      with_gnu_ld=no
       
 60297      ;;
       
 60298    esac
       
 60299  
       
 60300    _LT_TAGVAR(ld_shlibs, $1)=yes
       
 60301 +
       
 60302 +  # On some targets, GNU ld is compatible enough with the native linker
       
 60303 +  # that we're better off using the native interface for both.
       
 60304 +  lt_use_gnu_ld_interface=no
       
 60305    if test "$with_gnu_ld" = yes; then
       
 60306 +    case $host_os in
       
 60307 +      aix*)
       
 60308 +	# The AIX port of GNU ld has always aspired to compatibility
       
 60309 +	# with the native linker.  However, as the warning in the GNU ld
       
 60310 +	# block says, versions before 2.19.5* couldn't really create working
       
 60311 +	# shared libraries, regardless of the interface used.
       
 60312 +	case `$LD -v 2>&1` in
       
 60313 +	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
       
 60314 +	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
       
 60315 +	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
       
 60316 +	  *)
       
 60317 +	    lt_use_gnu_ld_interface=yes
       
 60318 +	    ;;
       
 60319 +	esac
       
 60320 +	;;
       
 60321 +      *)
       
 60322 +	lt_use_gnu_ld_interface=yes
       
 60323 +	;;
       
 60324 +    esac
       
 60325 +  fi
       
 60326 +
       
 60327 +  if test "$lt_use_gnu_ld_interface" = yes; then
       
 60328      # If archive_cmds runs LD, not CC, wlarc should be empty
       
 60329      wlarc='${wl}'
       
 60330  
       
 60331      # Set some defaults for GNU ld with shared library support. These
       
 60332      # are reset later if shared libraries are not supported. Putting them
       
 60333      # here allows them to be overridden if necessary.
       
 60334      runpath_var=LD_RUN_PATH
       
 60335      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 60336 @@ -4271,36 +4692,38 @@ dnl Note also adjust exclude_expsyms for
       
 60337      # ancient GNU ld didn't support --whole-archive et. al.
       
 60338      if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
       
 60339        _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
       
 60340      else
       
 60341        _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 60342      fi
       
 60343      supports_anon_versioning=no
       
 60344      case `$LD -v 2>&1` in
       
 60345 +      *GNU\ gold*) supports_anon_versioning=yes ;;
       
 60346        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
       
 60347        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
       
 60348        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
       
 60349        *\ 2.11.*) ;; # other 2.11 versions
       
 60350        *) supports_anon_versioning=yes ;;
       
 60351      esac
       
 60352  
       
 60353      # See if GNU ld supports shared libraries.
       
 60354      case $host_os in
       
 60355      aix[[3-9]]*)
       
 60356        # On AIX/PPC, the GNU linker is very broken
       
 60357        if test "$host_cpu" != ia64; then
       
 60358  	_LT_TAGVAR(ld_shlibs, $1)=no
       
 60359  	cat <<_LT_EOF 1>&2
       
 60360  
       
 60361 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported
       
 60362 +*** Warning: the GNU linker, at least up to release 2.19, is reported
       
 60363  *** to be unable to reliably create shared libraries on AIX.
       
 60364  *** Therefore, libtool is disabling shared libraries support.  If you
       
 60365 -*** really care for shared libraries, you may want to modify your PATH
       
 60366 -*** so that a non-GNU linker is found, and then restart.
       
 60367 +*** really care for shared libraries, you may want to install binutils
       
 60368 +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
       
 60369 +*** You will then need to restart the configuration process.
       
 60370  
       
 60371  _LT_EOF
       
 60372        fi
       
 60373        ;;
       
 60374  
       
 60375      amigaos*)
       
 60376        case $host_cpu in
       
 60377        powerpc)
       
 60378 @@ -4326,20 +4749,22 @@ dnl Note also adjust exclude_expsyms for
       
 60379  	_LT_TAGVAR(ld_shlibs, $1)=no
       
 60380        fi
       
 60381        ;;
       
 60382  
       
 60383      cygwin* | mingw* | pw32* | cegcc*)
       
 60384        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       
 60385        # as there is no search path for DLLs.
       
 60386        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 60387 +      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
       
 60388        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 60389        _LT_TAGVAR(always_export_symbols, $1)=no
       
 60390        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 60391 -      _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'
       
 60392 +      _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'
       
 60393 +      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
       
 60394  
       
 60395        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
       
 60396          _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'
       
 60397  	# If the export-symbols file already is a .def file (1st line
       
 60398  	# is EXPORTS), use it as is; otherwise, prepend...
       
 60399  	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
       
 60400  	  cp $export_symbols $output_objdir/$soname.def;
       
 60401  	else
       
 60402 @@ -4347,108 +4772,117 @@ dnl Note also adjust exclude_expsyms for
       
 60403  	  cat $export_symbols >> $output_objdir/$soname.def;
       
 60404  	fi~
       
 60405  	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       
 60406        else
       
 60407  	_LT_TAGVAR(ld_shlibs, $1)=no
       
 60408        fi
       
 60409        ;;
       
 60410  
       
 60411 +    haiku*)
       
 60412 +      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 60413 +      _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 60414 +      ;;
       
 60415 +
       
 60416      interix[[3-9]]*)
       
 60417        _LT_TAGVAR(hardcode_direct, $1)=no
       
 60418        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 60419        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 60420        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 60421        # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       
 60422        # Instead, shared libraries are loaded at an image base (0x10000000 by
       
 60423        # default) and relocated if they conflict, which is a slow very memory
       
 60424        # consuming and fragmenting process.  To avoid this, we pick a random,
       
 60425        # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       
 60426        # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
       
 60427        _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'
       
 60428        _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'
       
 60429        ;;
       
 60430  
       
 60431 -    gnu* | linux* | tpf* | k*bsd*-gnu)
       
 60432 +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       
 60433        tmp_diet=no
       
 60434        if test "$host_os" = linux-dietlibc; then
       
 60435  	case $cc_basename in
       
 60436  	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
       
 60437  	esac
       
 60438        fi
       
 60439        if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
       
 60440  	 && test "$tmp_diet" = no
       
 60441        then
       
 60442 -	tmp_addflag=
       
 60443 +	tmp_addflag=' $pic_flag'
       
 60444  	tmp_sharedflag='-shared'
       
 60445  	case $cc_basename,$host_cpu in
       
 60446          pgcc*)				# Portland Group C compiler
       
 60447 -	  _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'
       
 60448 +	  _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'
       
 60449  	  tmp_addflag=' $pic_flag'
       
 60450  	  ;;
       
 60451 -	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
       
 60452 -	  _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'
       
 60453 +	pgf77* | pgf90* | pgf95* | pgfortran*)
       
 60454 +					# Portland Group f77 and f90 compilers
       
 60455 +	  _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'
       
 60456  	  tmp_addflag=' $pic_flag -Mnomain' ;;
       
 60457  	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
       
 60458  	  tmp_addflag=' -i_dynamic' ;;
       
 60459  	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
       
 60460  	  tmp_addflag=' -i_dynamic -nofor_main' ;;
       
 60461  	ifc* | ifort*)			# Intel Fortran compiler
       
 60462  	  tmp_addflag=' -nofor_main' ;;
       
 60463  	lf95*)				# Lahey Fortran 8.1
       
 60464  	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 60465  	  tmp_sharedflag='--shared' ;;
       
 60466 -	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
       
 60467 +	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
       
 60468  	  tmp_sharedflag='-qmkshrobj'
       
 60469  	  tmp_addflag= ;;
       
 60470 +	nvcc*)	# Cuda Compiler Driver 2.2
       
 60471 +	  _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'
       
 60472 +	  _LT_TAGVAR(compiler_needs_object, $1)=yes
       
 60473 +	  ;;
       
 60474  	esac
       
 60475  	case `$CC -V 2>&1 | sed 5q` in
       
 60476  	*Sun\ C*)			# Sun C 5.9
       
 60477 -	  _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'
       
 60478 +	  _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'
       
 60479  	  _LT_TAGVAR(compiler_needs_object, $1)=yes
       
 60480  	  tmp_sharedflag='-G' ;;
       
 60481  	*Sun\ F*)			# Sun Fortran 8.3
       
 60482  	  tmp_sharedflag='-G' ;;
       
 60483  	esac
       
 60484  	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 60485  
       
 60486          if test "x$supports_anon_versioning" = xyes; then
       
 60487            _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
       
 60488  	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
       
 60489  	    echo "local: *; };" >> $output_objdir/$libname.ver~
       
 60490  	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
       
 60491          fi
       
 60492  
       
 60493  	case $cc_basename in
       
 60494 -	xlf*)
       
 60495 +	xlf* | bgf* | bgxlf* | mpixlf*)
       
 60496  	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
       
 60497  	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
       
 60498 -	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 60499 -	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
       
 60500 -	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
       
 60501 +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 60502 +	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
       
 60503  	  if test "x$supports_anon_versioning" = xyes; then
       
 60504  	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
       
 60505  	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
       
 60506  	      echo "local: *; };" >> $output_objdir/$libname.ver~
       
 60507 -	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
       
 60508 +	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
       
 60509  	  fi
       
 60510  	  ;;
       
 60511  	esac
       
 60512        else
       
 60513          _LT_TAGVAR(ld_shlibs, $1)=no
       
 60514        fi
       
 60515        ;;
       
 60516  
       
 60517      netbsd*)
       
 60518        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
       
 60519  	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
       
 60520  	wlarc=
       
 60521        else
       
 60522 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 60523 -	_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'
       
 60524 +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 60525 +	_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'
       
 60526        fi
       
 60527        ;;
       
 60528  
       
 60529      solaris*)
       
 60530        if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
       
 60531  	_LT_TAGVAR(ld_shlibs, $1)=no
       
 60532  	cat <<_LT_EOF 1>&2
       
 60533  
       
 60534 @@ -4456,18 +4890,18 @@ dnl Note also adjust exclude_expsyms for
       
 60535  *** create shared libraries on Solaris systems.  Therefore, libtool
       
 60536  *** is disabling shared libraries support.  We urge you to upgrade GNU
       
 60537  *** binutils to release 2.9.1 or newer.  Another option is to modify
       
 60538  *** your PATH or compiler configuration so that the native linker is
       
 60539  *** used, and then restart.
       
 60540  
       
 60541  _LT_EOF
       
 60542        elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
       
 60543 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 60544 -	_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'
       
 60545 +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 60546 +	_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'
       
 60547        else
       
 60548  	_LT_TAGVAR(ld_shlibs, $1)=no
       
 60549        fi
       
 60550        ;;
       
 60551  
       
 60552      sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
       
 60553        case `$LD -v 2>&1` in
       
 60554          *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
       
 60555 @@ -4503,18 +4937,18 @@ dnl Note also adjust exclude_expsyms for
       
 60556        _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       
 60557        wlarc=
       
 60558        _LT_TAGVAR(hardcode_direct, $1)=yes
       
 60559        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 60560        ;;
       
 60561  
       
 60562      *)
       
 60563        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
       
 60564 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 60565 -	_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'
       
 60566 +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 60567 +	_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'
       
 60568        else
       
 60569  	_LT_TAGVAR(ld_shlibs, $1)=no
       
 60570        fi
       
 60571        ;;
       
 60572      esac
       
 60573  
       
 60574      if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
       
 60575        runpath_var=
       
 60576 @@ -4544,18 +4978,20 @@ dnl Note also adjust exclude_expsyms for
       
 60577  	# On IA64, the linker does run time linking by default, so we don't
       
 60578  	# have to do anything special.
       
 60579  	aix_use_runtimelinking=no
       
 60580  	exp_sym_flag='-Bexport'
       
 60581  	no_entry_flag=""
       
 60582        else
       
 60583  	# If we're using GNU nm, then we don't want the "-C" option.
       
 60584  	# -C means demangle to AIX nm, but means don't demangle with GNU nm
       
 60585 +	# Also, AIX nm treats weak defined symbols like other global
       
 60586 +	# defined symbols, whereas GNU nm marks them as "W".
       
 60587  	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
       
 60588 -	  _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'
       
 60589 +	  _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'
       
 60590  	else
       
 60591  	  _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'
       
 60592  	fi
       
 60593  	aix_use_runtimelinking=no
       
 60594  
       
 60595  	# Test if we are trying to use run time linking or normal
       
 60596  	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
       
 60597  	# need to do runtime linking.
       
 60598 @@ -4632,35 +5068,40 @@ dnl Note also adjust exclude_expsyms for
       
 60599        # underscore (_), so it is better to generate a list of symbols to export.
       
 60600        _LT_TAGVAR(always_export_symbols, $1)=yes
       
 60601        if test "$aix_use_runtimelinking" = yes; then
       
 60602  	# Warning - without using the other runtime loading flags (-brtl),
       
 60603  	# -berok will link without error, but may produce a broken library.
       
 60604  	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
       
 60605          # Determine the default libpath from the value encoded in an
       
 60606          # empty executable.
       
 60607 -        _LT_SYS_MODULE_PATH_AIX
       
 60608 +        _LT_SYS_MODULE_PATH_AIX([$1])
       
 60609          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 60610 -        _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"
       
 60611 +        _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"
       
 60612        else
       
 60613  	if test "$host_cpu" = ia64; then
       
 60614  	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
       
 60615  	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
       
 60616  	  _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"
       
 60617  	else
       
 60618  	 # Determine the default libpath from the value encoded in an
       
 60619  	 # empty executable.
       
 60620 -	 _LT_SYS_MODULE_PATH_AIX
       
 60621 +	 _LT_SYS_MODULE_PATH_AIX([$1])
       
 60622  	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 60623  	  # Warning - without using the other run time loading flags,
       
 60624  	  # -berok will link without error, but may produce a broken library.
       
 60625  	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
       
 60626  	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
       
 60627 -	  # Exported symbols can be pulled into shared objects from archives
       
 60628 -	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
       
 60629 +	  if test "$with_gnu_ld" = yes; then
       
 60630 +	    # We only use this code for GNU lds that support --whole-archive.
       
 60631 +	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
       
 60632 +	  else
       
 60633 +	    # Exported symbols can be pulled into shared objects from archives
       
 60634 +	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
       
 60635 +	  fi
       
 60636  	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
       
 60637  	  # This is similar to how AIX traditionally builds its shared libraries.
       
 60638  	  _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'
       
 60639  	fi
       
 60640        fi
       
 60641        ;;
       
 60642  
       
 60643      amigaos*)
       
 60644 @@ -4682,131 +5123,177 @@ dnl Note also adjust exclude_expsyms for
       
 60645        _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
       
 60646        ;;
       
 60647  
       
 60648      cygwin* | mingw* | pw32* | cegcc*)
       
 60649        # When not using gcc, we currently assume that we are using
       
 60650        # Microsoft Visual C++.
       
 60651        # hardcode_libdir_flag_spec is actually meaningless, as there is
       
 60652        # no search path for DLLs.
       
 60653 -      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
       
 60654 -      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 60655 -      # Tell ltmain to make .lib files, not .a files.
       
 60656 -      libext=lib
       
 60657 -      # Tell ltmain to make .dll files, not .so files.
       
 60658 -      shrext_cmds=".dll"
       
 60659 -      # FIXME: Setting linknames here is a bad hack.
       
 60660 -      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
       
 60661 -      # The linker will automatically build a .lib file if we build a DLL.
       
 60662 -      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
       
 60663 -      # FIXME: Should let the user specify the lib program.
       
 60664 -      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
       
 60665 -      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
       
 60666 -      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 60667 +      case $cc_basename in
       
 60668 +      cl*)
       
 60669 +	# Native MSVC
       
 60670 +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
       
 60671 +	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 60672 +	_LT_TAGVAR(always_export_symbols, $1)=yes
       
 60673 +	_LT_TAGVAR(file_list_spec, $1)='@'
       
 60674 +	# Tell ltmain to make .lib files, not .a files.
       
 60675 +	libext=lib
       
 60676 +	# Tell ltmain to make .dll files, not .so files.
       
 60677 +	shrext_cmds=".dll"
       
 60678 +	# FIXME: Setting linknames here is a bad hack.
       
 60679 +	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
       
 60680 +	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
       
 60681 +	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
       
 60682 +	  else
       
 60683 +	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
       
 60684 +	  fi~
       
 60685 +	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
       
 60686 +	  linknames='
       
 60687 +	# The linker will not automatically build a static lib if we build a DLL.
       
 60688 +	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
       
 60689 +	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 60690 +	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
       
 60691 +	_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'
       
 60692 +	# Don't use ranlib
       
 60693 +	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
       
 60694 +	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
       
 60695 +	  lt_tool_outputfile="@TOOL_OUTPUT@"~
       
 60696 +	  case $lt_outputfile in
       
 60697 +	    *.exe|*.EXE) ;;
       
 60698 +	    *)
       
 60699 +	      lt_outputfile="$lt_outputfile.exe"
       
 60700 +	      lt_tool_outputfile="$lt_tool_outputfile.exe"
       
 60701 +	      ;;
       
 60702 +	  esac~
       
 60703 +	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
       
 60704 +	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
       
 60705 +	    $RM "$lt_outputfile.manifest";
       
 60706 +	  fi'
       
 60707 +	;;
       
 60708 +      *)
       
 60709 +	# Assume MSVC wrapper
       
 60710 +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
       
 60711 +	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 60712 +	# Tell ltmain to make .lib files, not .a files.
       
 60713 +	libext=lib
       
 60714 +	# Tell ltmain to make .dll files, not .so files.
       
 60715 +	shrext_cmds=".dll"
       
 60716 +	# FIXME: Setting linknames here is a bad hack.
       
 60717 +	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
       
 60718 +	# The linker will automatically build a .lib file if we build a DLL.
       
 60719 +	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
       
 60720 +	# FIXME: Should let the user specify the lib program.
       
 60721 +	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
       
 60722 +	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 60723 +	;;
       
 60724 +      esac
       
 60725        ;;
       
 60726  
       
 60727      darwin* | rhapsody*)
       
 60728        _LT_DARWIN_LINKER_FEATURES($1)
       
 60729        ;;
       
 60730  
       
 60731      dgux*)
       
 60732        _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 60733        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 60734        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 60735        ;;
       
 60736  
       
 60737 -    freebsd1*)
       
 60738 -      _LT_TAGVAR(ld_shlibs, $1)=no
       
 60739 -      ;;
       
 60740 -
       
 60741      # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
       
 60742      # support.  Future versions do this automatically, but an explicit c++rt0.o
       
 60743      # does not break anything, and helps significantly (at the cost of a little
       
 60744      # extra space).
       
 60745      freebsd2.2*)
       
 60746        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
       
 60747        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 60748        _LT_TAGVAR(hardcode_direct, $1)=yes
       
 60749        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 60750        ;;
       
 60751  
       
 60752      # Unfortunately, older versions of FreeBSD 2 do not have this feature.
       
 60753 -    freebsd2*)
       
 60754 +    freebsd2.*)
       
 60755        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       
 60756        _LT_TAGVAR(hardcode_direct, $1)=yes
       
 60757        _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 60758        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 60759        ;;
       
 60760  
       
 60761      # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
       
 60762      freebsd* | dragonfly*)
       
 60763 -      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
       
 60764 +      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       
 60765        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 60766        _LT_TAGVAR(hardcode_direct, $1)=yes
       
 60767        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       
 60768        ;;
       
 60769  
       
 60770      hpux9*)
       
 60771        if test "$GCC" = yes; then
       
 60772 -	_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'
       
 60773 +	_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'
       
 60774        else
       
 60775  	_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'
       
 60776        fi
       
 60777        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       
 60778        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 60779        _LT_TAGVAR(hardcode_direct, $1)=yes
       
 60780  
       
 60781        # hardcode_minus_L: Not really in the search PATH,
       
 60782        # but as the default location of the library.
       
 60783        _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 60784        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 60785        ;;
       
 60786  
       
 60787      hpux10*)
       
 60788 -      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
       
 60789 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 60790 +      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
       
 60791 +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 60792        else
       
 60793  	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       
 60794        fi
       
 60795        if test "$with_gnu_ld" = no; then
       
 60796  	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       
 60797 -	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
       
 60798  	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 60799  	_LT_TAGVAR(hardcode_direct, $1)=yes
       
 60800  	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       
 60801  	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 60802  	# hardcode_minus_L: Not really in the search PATH,
       
 60803  	# but as the default location of the library.
       
 60804  	_LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 60805        fi
       
 60806        ;;
       
 60807  
       
 60808      hpux11*)
       
 60809 -      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
       
 60810 +      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
       
 60811  	case $host_cpu in
       
 60812  	hppa*64*)
       
 60813  	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 60814  	  ;;
       
 60815  	ia64*)
       
 60816 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
       
 60817 +	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
       
 60818  	  ;;
       
 60819  	*)
       
 60820 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 60821 +	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 60822  	  ;;
       
 60823  	esac
       
 60824        else
       
 60825  	case $host_cpu in
       
 60826  	hppa*64*)
       
 60827  	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 60828  	  ;;
       
 60829  	ia64*)
       
 60830  	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
       
 60831  	  ;;
       
 60832  	*)
       
 60833 -	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       
 60834 +	m4_if($1, [], [
       
 60835 +	  # Older versions of the 11.00 compiler do not understand -b yet
       
 60836 +	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
       
 60837 +	  _LT_LINKER_OPTION([if $CC understands -b],
       
 60838 +	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
       
 60839 +	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
       
 60840 +	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
       
 60841 +	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
       
 60842  	  ;;
       
 60843  	esac
       
 60844        fi
       
 60845        if test "$with_gnu_ld" = no; then
       
 60846  	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       
 60847  	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 60848  
       
 60849  	case $host_cpu in
       
 60850 @@ -4824,29 +5311,44 @@ dnl Note also adjust exclude_expsyms for
       
 60851  	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 60852  	  ;;
       
 60853  	esac
       
 60854        fi
       
 60855        ;;
       
 60856  
       
 60857      irix5* | irix6* | nonstopux*)
       
 60858        if test "$GCC" = yes; then
       
 60859 -	_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'
       
 60860 +	_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'
       
 60861  	# Try to use the -exported_symbol ld option, if it does not
       
 60862  	# work, assume that -exports_file does not work either and
       
 60863  	# implicitly export all symbols.
       
 60864 -        save_LDFLAGS="$LDFLAGS"
       
 60865 -        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
       
 60866 -        AC_LINK_IFELSE(int foo(void) {},
       
 60867 -          _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'
       
 60868 -        )
       
 60869 -        LDFLAGS="$save_LDFLAGS"
       
 60870 +	# This should be the same for all languages, so no per-tag cache variable.
       
 60871 +	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
       
 60872 +	  [lt_cv_irix_exported_symbol],
       
 60873 +	  [save_LDFLAGS="$LDFLAGS"
       
 60874 +	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
       
 60875 +	   AC_LINK_IFELSE(
       
 60876 +	     [AC_LANG_SOURCE(
       
 60877 +	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
       
 60878 +			      [C++], [[int foo (void) { return 0; }]],
       
 60879 +			      [Fortran 77], [[
       
 60880 +      subroutine foo
       
 60881 +      end]],
       
 60882 +			      [Fortran], [[
       
 60883 +      subroutine foo
       
 60884 +      end]])])],
       
 60885 +	      [lt_cv_irix_exported_symbol=yes],
       
 60886 +	      [lt_cv_irix_exported_symbol=no])
       
 60887 +           LDFLAGS="$save_LDFLAGS"])
       
 60888 +	if test "$lt_cv_irix_exported_symbol" = yes; then
       
 60889 +          _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'
       
 60890 +	fi
       
 60891        else
       
 60892 -	_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'
       
 60893 -	_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'
       
 60894 +	_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'
       
 60895 +	_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'
       
 60896        fi
       
 60897        _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       
 60898        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 60899        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 60900        _LT_TAGVAR(inherit_rpath, $1)=yes
       
 60901        _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 60902        ;;
       
 60903  
       
 60904 @@ -4898,58 +5400,58 @@ dnl Note also adjust exclude_expsyms for
       
 60905  	_LT_TAGVAR(ld_shlibs, $1)=no
       
 60906        fi
       
 60907        ;;
       
 60908  
       
 60909      os2*)
       
 60910        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 60911        _LT_TAGVAR(hardcode_minus_L, $1)=yes
       
 60912        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 60913 -      _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'
       
 60914 +      _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'
       
 60915        _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
       
 60916        ;;
       
 60917  
       
 60918      osf3*)
       
 60919        if test "$GCC" = yes; then
       
 60920  	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
       
 60921 -	_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'
       
 60922 +	_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'
       
 60923        else
       
 60924  	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
       
 60925 -	_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'
       
 60926 +	_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'
       
 60927        fi
       
 60928        _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       
 60929        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 60930        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 60931        ;;
       
 60932  
       
 60933      osf4* | osf5*)	# as osf3* with the addition of -msym flag
       
 60934        if test "$GCC" = yes; then
       
 60935  	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
       
 60936 -	_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'
       
 60937 +	_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'
       
 60938  	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 60939        else
       
 60940  	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
       
 60941 -	_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'
       
 60942 +	_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'
       
 60943  	_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~
       
 60944 -	$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'
       
 60945 +	$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'
       
 60946  
       
 60947  	# Both c and cxx compiler support -rpath directly
       
 60948  	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
       
 60949        fi
       
 60950        _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       
 60951        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 60952        ;;
       
 60953  
       
 60954      solaris*)
       
 60955        _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
       
 60956        if test "$GCC" = yes; then
       
 60957  	wlarc='${wl}'
       
 60958 -	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 60959 +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 60960  	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 60961 -	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       
 60962 +	  $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'
       
 60963        else
       
 60964  	case `$CC -V 2>&1` in
       
 60965  	*"Compilers 5.0"*)
       
 60966  	  wlarc=''
       
 60967  	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
       
 60968  	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 60969  	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
       
 60970  	  ;;
       
 60971 @@ -5115,46 +5617,48 @@ x|xyes)
       
 60972      case $_LT_TAGVAR(archive_cmds, $1) in
       
 60973      *'~'*)
       
 60974        # FIXME: we may have to deal with multi-command sequences.
       
 60975        ;;
       
 60976      '$CC '*)
       
 60977        # Test whether the compiler implicitly links with -lc since on some
       
 60978        # systems, -lgcc has to come before -lc. If gcc already passes -lc
       
 60979        # to ld, don't add -lc before -lgcc.
       
 60980 -      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
       
 60981 -      $RM conftest*
       
 60982 -      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 60983 -
       
 60984 -      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
       
 60985 -        soname=conftest
       
 60986 -        lib=conftest
       
 60987 -        libobjs=conftest.$ac_objext
       
 60988 -        deplibs=
       
 60989 -        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
       
 60990 -	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
       
 60991 -        compiler_flags=-v
       
 60992 -        linker_flags=-v
       
 60993 -        verstring=
       
 60994 -        output_objdir=.
       
 60995 -        libname=conftest
       
 60996 -        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
       
 60997 -        _LT_TAGVAR(allow_undefined_flag, $1)=
       
 60998 -        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
       
 60999 -        then
       
 61000 -	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 61001 -        else
       
 61002 -	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
       
 61003 -        fi
       
 61004 -        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
       
 61005 -      else
       
 61006 -        cat conftest.err 1>&5
       
 61007 -      fi
       
 61008 -      $RM conftest*
       
 61009 -      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
       
 61010 +      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
       
 61011 +	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
       
 61012 +	[$RM conftest*
       
 61013 +	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
       
 61014 +
       
 61015 +	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
       
 61016 +	  soname=conftest
       
 61017 +	  lib=conftest
       
 61018 +	  libobjs=conftest.$ac_objext
       
 61019 +	  deplibs=
       
 61020 +	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
       
 61021 +	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
       
 61022 +	  compiler_flags=-v
       
 61023 +	  linker_flags=-v
       
 61024 +	  verstring=
       
 61025 +	  output_objdir=.
       
 61026 +	  libname=conftest
       
 61027 +	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
       
 61028 +	  _LT_TAGVAR(allow_undefined_flag, $1)=
       
 61029 +	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
       
 61030 +	  then
       
 61031 +	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 61032 +	  else
       
 61033 +	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
       
 61034 +	  fi
       
 61035 +	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
       
 61036 +	else
       
 61037 +	  cat conftest.err 1>&5
       
 61038 +	fi
       
 61039 +	$RM conftest*
       
 61040 +	])
       
 61041 +      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
       
 61042        ;;
       
 61043      esac
       
 61044    fi
       
 61045    ;;
       
 61046  esac
       
 61047  
       
 61048  _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
       
 61049      [Whether or not to add -lc for building shared libraries])
       
 61050 @@ -5181,19 +5685,16 @@ esac
       
 61051      [Whether we are building with GNU ld or not])
       
 61052  _LT_TAGDECL([], [allow_undefined_flag], [1],
       
 61053      [Flag that allows shared libraries with undefined symbols to be built])
       
 61054  _LT_TAGDECL([], [no_undefined_flag], [1],
       
 61055      [Flag that enforces no undefined symbols])
       
 61056  _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
       
 61057      [Flag to hardcode $libdir into a binary during linking.
       
 61058      This must work even if $libdir does not exist])
       
 61059 -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
       
 61060 -    [[If ld is used when linking, flag to hardcode $libdir into a binary
       
 61061 -    during linking.  This must work even if $libdir does not exist]])
       
 61062  _LT_TAGDECL([], [hardcode_libdir_separator], [1],
       
 61063      [Whether we need a single "-rpath" flag with a separated argument])
       
 61064  _LT_TAGDECL([], [hardcode_direct], [0],
       
 61065      [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
       
 61066      DIR into the resulting binary])
       
 61067  _LT_TAGDECL([], [hardcode_direct_absolute], [0],
       
 61068      [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
       
 61069      DIR into the resulting binary and the resulting library dependency is
       
 61070 @@ -5209,28 +5710,28 @@ esac
       
 61071      [Set to "yes" if building a shared library automatically hardcodes DIR
       
 61072      into the library and all subsequent libraries and executables linked
       
 61073      against it])
       
 61074  _LT_TAGDECL([], [inherit_rpath], [0],
       
 61075      [Set to yes if linker adds runtime paths of dependent libraries
       
 61076      to runtime path list])
       
 61077  _LT_TAGDECL([], [link_all_deplibs], [0],
       
 61078      [Whether libtool must link a program against all its dependency libraries])
       
 61079 -_LT_TAGDECL([], [fix_srcfile_path], [1],
       
 61080 -    [Fix the shell variable $srcfile for the compiler])
       
 61081  _LT_TAGDECL([], [always_export_symbols], [0],
       
 61082      [Set to "yes" if exported symbols are required])
       
 61083  _LT_TAGDECL([], [export_symbols_cmds], [2],
       
 61084      [The commands to list exported symbols])
       
 61085  _LT_TAGDECL([], [exclude_expsyms], [1],
       
 61086      [Symbols that should not be listed in the preloaded symbols])
       
 61087  _LT_TAGDECL([], [include_expsyms], [1],
       
 61088      [Symbols that must always be exported])
       
 61089  _LT_TAGDECL([], [prelink_cmds], [2],
       
 61090      [Commands necessary for linking programs (against libraries) with templates])
       
 61091 +_LT_TAGDECL([], [postlink_cmds], [2],
       
 61092 +    [Commands necessary for finishing linking programs])
       
 61093  _LT_TAGDECL([], [file_list_spec], [1],
       
 61094      [Specify filename containing input files])
       
 61095  dnl FIXME: Not yet implemented
       
 61096  dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
       
 61097  dnl    [Compiler flag to generate thread safe objects])
       
 61098  ])# _LT_LINKER_SHLIBS
       
 61099  
       
 61100  
       
 61101 @@ -5314,68 +5815,54 @@ if test -n "$compiler"; then
       
 61102  
       
 61103    _LT_CONFIG($1)
       
 61104  fi
       
 61105  AC_LANG_POP
       
 61106  CC="$lt_save_CC"
       
 61107  ])# _LT_LANG_C_CONFIG
       
 61108  
       
 61109  
       
 61110 -# _LT_PROG_CXX
       
 61111 -# ------------
       
 61112 -# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
       
 61113 -# compiler, we have our own version here.
       
 61114 -m4_defun([_LT_PROG_CXX],
       
 61115 -[
       
 61116 -pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
       
 61117 -AC_PROG_CXX
       
 61118 +# _LT_LANG_CXX_CONFIG([TAG])
       
 61119 +# --------------------------
       
 61120 +# Ensure that the configuration variables for a C++ compiler are suitably
       
 61121 +# defined.  These variables are subsequently used by _LT_CONFIG to write
       
 61122 +# the compiler configuration to `libtool'.
       
 61123 +m4_defun([_LT_LANG_CXX_CONFIG],
       
 61124 +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 61125 +m4_require([_LT_DECL_EGREP])dnl
       
 61126 +m4_require([_LT_PATH_MANIFEST_TOOL])dnl
       
 61127  if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
       
 61128      ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
       
 61129      (test "X$CXX" != "Xg++"))) ; then
       
 61130    AC_PROG_CXXCPP
       
 61131  else
       
 61132    _lt_caught_CXX_error=yes
       
 61133  fi
       
 61134 -popdef([AC_MSG_ERROR])
       
 61135 -])# _LT_PROG_CXX
       
 61136 -
       
 61137 -dnl aclocal-1.4 backwards compatibility:
       
 61138 -dnl AC_DEFUN([_LT_PROG_CXX], [])
       
 61139 -
       
 61140 -
       
 61141 -# _LT_LANG_CXX_CONFIG([TAG])
       
 61142 -# --------------------------
       
 61143 -# Ensure that the configuration variables for a C++ compiler are suitably
       
 61144 -# defined.  These variables are subsequently used by _LT_CONFIG to write
       
 61145 -# the compiler configuration to `libtool'.
       
 61146 -m4_defun([_LT_LANG_CXX_CONFIG],
       
 61147 -[AC_REQUIRE([_LT_PROG_CXX])dnl
       
 61148 -m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 61149 -m4_require([_LT_DECL_EGREP])dnl
       
 61150  
       
 61151  AC_LANG_PUSH(C++)
       
 61152  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 61153  _LT_TAGVAR(allow_undefined_flag, $1)=
       
 61154  _LT_TAGVAR(always_export_symbols, $1)=no
       
 61155  _LT_TAGVAR(archive_expsym_cmds, $1)=
       
 61156  _LT_TAGVAR(compiler_needs_object, $1)=no
       
 61157  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
       
 61158  _LT_TAGVAR(hardcode_direct, $1)=no
       
 61159  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
       
 61160  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 61161 -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
       
 61162  _LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 61163  _LT_TAGVAR(hardcode_minus_L, $1)=no
       
 61164  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
       
 61165  _LT_TAGVAR(hardcode_automatic, $1)=no
       
 61166  _LT_TAGVAR(inherit_rpath, $1)=no
       
 61167  _LT_TAGVAR(module_cmds, $1)=
       
 61168  _LT_TAGVAR(module_expsym_cmds, $1)=
       
 61169  _LT_TAGVAR(link_all_deplibs, $1)=unknown
       
 61170  _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
       
 61171 +_LT_TAGVAR(reload_flag, $1)=$reload_flag
       
 61172 +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
       
 61173  _LT_TAGVAR(no_undefined_flag, $1)=
       
 61174  _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 61175  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
       
 61176  
       
 61177  # Source file extension for C++ test sources.
       
 61178  ac_ext=cpp
       
 61179  
       
 61180  # Object file extension for compiled C++ test sources.
       
 61181 @@ -5397,16 +5884,17 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61182    _LT_TAG_COMPILER
       
 61183  
       
 61184    # save warnings/boilerplate of simple test code
       
 61185    _LT_COMPILER_BOILERPLATE
       
 61186    _LT_LINKER_BOILERPLATE
       
 61187  
       
 61188    # Allow CC to be a program name with arguments.
       
 61189    lt_save_CC=$CC
       
 61190 +  lt_save_CFLAGS=$CFLAGS
       
 61191    lt_save_LD=$LD
       
 61192    lt_save_GCC=$GCC
       
 61193    GCC=$GXX
       
 61194    lt_save_with_gnu_ld=$with_gnu_ld
       
 61195    lt_save_path_LD=$lt_cv_path_LD
       
 61196    if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
       
 61197      lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
       
 61198    else
       
 61199 @@ -5414,16 +5902,17 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61200    fi
       
 61201    if test -n "${lt_cv_path_LDCXX+set}"; then
       
 61202      lt_cv_path_LD=$lt_cv_path_LDCXX
       
 61203    else
       
 61204      $as_unset lt_cv_path_LD
       
 61205    fi
       
 61206    test -z "${LDCXX+set}" || LD=$LDCXX
       
 61207    CC=${CXX-"c++"}
       
 61208 +  CFLAGS=$CXXFLAGS
       
 61209    compiler=$CC
       
 61210    _LT_TAGVAR(compiler, $1)=$CC
       
 61211    _LT_CC_BASENAME([$compiler])
       
 61212  
       
 61213    if test -n "$compiler"; then
       
 61214      # We don't want -fno-exception when compiling C++ code, so set the
       
 61215      # no_builtin_flag separately
       
 61216      if test "$GXX" = yes; then
       
 61217 @@ -5435,18 +5924,18 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61218      if test "$GXX" = yes; then
       
 61219        # Set up default GNU C++ configuration
       
 61220  
       
 61221        LT_PATH_LD
       
 61222  
       
 61223        # Check if GNU C++ uses GNU ld as the underlying linker, since the
       
 61224        # archiving commands below assume that GNU ld is being used.
       
 61225        if test "$with_gnu_ld" = yes; then
       
 61226 -        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 61227 -        _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'
       
 61228 +        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 61229 +        _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'
       
 61230  
       
 61231          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 61232          _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 61233  
       
 61234          # If archive_cmds runs LD, not CC, wlarc should be empty
       
 61235          # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
       
 61236          #     investigate it a little bit more. (MM)
       
 61237          wlarc='${wl}'
       
 61238 @@ -5468,17 +5957,17 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61239          # overridden to take advantage of the native linker features on
       
 61240          # the platform it is being used on.
       
 61241          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
       
 61242        fi
       
 61243  
       
 61244        # Commands to make compiler produce verbose output that lists
       
 61245        # what "hidden" libraries, object files and flags are used when
       
 61246        # linking a shared library.
       
 61247 -      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
       
 61248 +      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
       
 61249  
       
 61250      else
       
 61251        GXX=no
       
 61252        with_gnu_ld=no
       
 61253        wlarc=
       
 61254      fi
       
 61255  
       
 61256      # PORTME: fill in a description of your system's C++ link characteristics
       
 61257 @@ -5577,36 +6066,41 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61258  	# export.
       
 61259          _LT_TAGVAR(always_export_symbols, $1)=yes
       
 61260          if test "$aix_use_runtimelinking" = yes; then
       
 61261            # Warning - without using the other runtime loading flags (-brtl),
       
 61262            # -berok will link without error, but may produce a broken library.
       
 61263            _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
       
 61264            # Determine the default libpath from the value encoded in an empty
       
 61265            # executable.
       
 61266 -          _LT_SYS_MODULE_PATH_AIX
       
 61267 +          _LT_SYS_MODULE_PATH_AIX([$1])
       
 61268            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 61269  
       
 61270 -          _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"
       
 61271 +          _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"
       
 61272          else
       
 61273            if test "$host_cpu" = ia64; then
       
 61274  	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
       
 61275  	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
       
 61276  	    _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"
       
 61277            else
       
 61278  	    # Determine the default libpath from the value encoded in an
       
 61279  	    # empty executable.
       
 61280 -	    _LT_SYS_MODULE_PATH_AIX
       
 61281 +	    _LT_SYS_MODULE_PATH_AIX([$1])
       
 61282  	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
       
 61283  	    # Warning - without using the other run time loading flags,
       
 61284  	    # -berok will link without error, but may produce a broken library.
       
 61285  	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
       
 61286  	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
       
 61287 -	    # Exported symbols can be pulled into shared objects from archives
       
 61288 -	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
       
 61289 +	    if test "$with_gnu_ld" = yes; then
       
 61290 +	      # We only use this code for GNU lds that support --whole-archive.
       
 61291 +	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
       
 61292 +	    else
       
 61293 +	      # Exported symbols can be pulled into shared objects from archives
       
 61294 +	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
       
 61295 +	    fi
       
 61296  	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
       
 61297  	    # This is similar to how AIX traditionally builds its shared
       
 61298  	    # libraries.
       
 61299  	    _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'
       
 61300            fi
       
 61301          fi
       
 61302          ;;
       
 61303  
       
 61304 @@ -5626,38 +6120,85 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61305            *)
       
 61306  	  # FIXME: insert proper C++ library support
       
 61307  	  _LT_TAGVAR(ld_shlibs, $1)=no
       
 61308  	  ;;
       
 61309          esac
       
 61310          ;;
       
 61311  
       
 61312        cygwin* | mingw* | pw32* | cegcc*)
       
 61313 -        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       
 61314 -        # as there is no search path for DLLs.
       
 61315 -        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 61316 -        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 61317 -        _LT_TAGVAR(always_export_symbols, $1)=no
       
 61318 -        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 61319 -
       
 61320 -        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
       
 61321 -          _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'
       
 61322 -          # If the export-symbols file already is a .def file (1st line
       
 61323 -          # is EXPORTS), use it as is; otherwise, prepend...
       
 61324 -          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
       
 61325 -	    cp $export_symbols $output_objdir/$soname.def;
       
 61326 -          else
       
 61327 -	    echo EXPORTS > $output_objdir/$soname.def;
       
 61328 -	    cat $export_symbols >> $output_objdir/$soname.def;
       
 61329 -          fi~
       
 61330 -          $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'
       
 61331 -        else
       
 61332 -          _LT_TAGVAR(ld_shlibs, $1)=no
       
 61333 -        fi
       
 61334 -        ;;
       
 61335 +	case $GXX,$cc_basename in
       
 61336 +	,cl* | no,cl*)
       
 61337 +	  # Native MSVC
       
 61338 +	  # hardcode_libdir_flag_spec is actually meaningless, as there is
       
 61339 +	  # no search path for DLLs.
       
 61340 +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
       
 61341 +	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 61342 +	  _LT_TAGVAR(always_export_symbols, $1)=yes
       
 61343 +	  _LT_TAGVAR(file_list_spec, $1)='@'
       
 61344 +	  # Tell ltmain to make .lib files, not .a files.
       
 61345 +	  libext=lib
       
 61346 +	  # Tell ltmain to make .dll files, not .so files.
       
 61347 +	  shrext_cmds=".dll"
       
 61348 +	  # FIXME: Setting linknames here is a bad hack.
       
 61349 +	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
       
 61350 +	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
       
 61351 +	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
       
 61352 +	    else
       
 61353 +	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
       
 61354 +	    fi~
       
 61355 +	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
       
 61356 +	    linknames='
       
 61357 +	  # The linker will not automatically build a static lib if we build a DLL.
       
 61358 +	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
       
 61359 +	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 61360 +	  # Don't use ranlib
       
 61361 +	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
       
 61362 +	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
       
 61363 +	    lt_tool_outputfile="@TOOL_OUTPUT@"~
       
 61364 +	    case $lt_outputfile in
       
 61365 +	      *.exe|*.EXE) ;;
       
 61366 +	      *)
       
 61367 +		lt_outputfile="$lt_outputfile.exe"
       
 61368 +		lt_tool_outputfile="$lt_tool_outputfile.exe"
       
 61369 +		;;
       
 61370 +	    esac~
       
 61371 +	    func_to_tool_file "$lt_outputfile"~
       
 61372 +	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
       
 61373 +	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
       
 61374 +	      $RM "$lt_outputfile.manifest";
       
 61375 +	    fi'
       
 61376 +	  ;;
       
 61377 +	*)
       
 61378 +	  # g++
       
 61379 +	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       
 61380 +	  # as there is no search path for DLLs.
       
 61381 +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       
 61382 +	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
       
 61383 +	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       
 61384 +	  _LT_TAGVAR(always_export_symbols, $1)=no
       
 61385 +	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 61386 +
       
 61387 +	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
       
 61388 +	    _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'
       
 61389 +	    # If the export-symbols file already is a .def file (1st line
       
 61390 +	    # is EXPORTS), use it as is; otherwise, prepend...
       
 61391 +	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
       
 61392 +	      cp $export_symbols $output_objdir/$soname.def;
       
 61393 +	    else
       
 61394 +	      echo EXPORTS > $output_objdir/$soname.def;
       
 61395 +	      cat $export_symbols >> $output_objdir/$soname.def;
       
 61396 +	    fi~
       
 61397 +	    $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'
       
 61398 +	  else
       
 61399 +	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 61400 +	  fi
       
 61401 +	  ;;
       
 61402 +	esac
       
 61403 +	;;
       
 61404        darwin* | rhapsody*)
       
 61405          _LT_DARWIN_LINKER_FEATURES($1)
       
 61406  	;;
       
 61407  
       
 61408        dgux*)
       
 61409          case $cc_basename in
       
 61410            ec++*)
       
 61411  	    # FIXME: insert proper C++ library support
       
 61412 @@ -5670,17 +6211,17 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61413  	    ;;
       
 61414            *)
       
 61415  	    # FIXME: insert proper C++ library support
       
 61416  	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 61417  	    ;;
       
 61418          esac
       
 61419          ;;
       
 61420  
       
 61421 -      freebsd[[12]]*)
       
 61422 +      freebsd2.*)
       
 61423          # C++ shared libraries reported to be fairly broken before
       
 61424  	# switch to ELF
       
 61425          _LT_TAGVAR(ld_shlibs, $1)=no
       
 61426          ;;
       
 61427  
       
 61428        freebsd-elf*)
       
 61429          _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 61430          ;;
       
 61431 @@ -5689,16 +6230,21 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61432          # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
       
 61433          # conventions
       
 61434          _LT_TAGVAR(ld_shlibs, $1)=yes
       
 61435          ;;
       
 61436  
       
 61437        gnu*)
       
 61438          ;;
       
 61439  
       
 61440 +      haiku*)
       
 61441 +        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 61442 +        _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 61443 +        ;;
       
 61444 +
       
 61445        hpux9*)
       
 61446          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       
 61447          _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 61448          _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 61449          _LT_TAGVAR(hardcode_direct, $1)=yes
       
 61450          _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
       
 61451  				             # but as the default
       
 61452  				             # location of the library.
       
 61453 @@ -5713,21 +6259,21 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61454              # Commands to make compiler produce verbose output that lists
       
 61455              # what "hidden" libraries, object files and flags are used when
       
 61456              # linking a shared library.
       
 61457              #
       
 61458              # There doesn't appear to be a way to prevent this compiler from
       
 61459              # explicitly linking system object files so we need to strip them
       
 61460              # from the output so that they don't get included in the library
       
 61461              # dependencies.
       
 61462 -            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'
       
 61463 +            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"'
       
 61464              ;;
       
 61465            *)
       
 61466              if test "$GXX" = yes; then
       
 61467 -              _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'
       
 61468 +              _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'
       
 61469              else
       
 61470                # FIXME: insert proper C++ library support
       
 61471                _LT_TAGVAR(ld_shlibs, $1)=no
       
 61472              fi
       
 61473              ;;
       
 61474          esac
       
 61475          ;;
       
 61476  
       
 61477 @@ -5778,30 +6324,30 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61478  	    # Commands to make compiler produce verbose output that lists
       
 61479  	    # what "hidden" libraries, object files and flags are used when
       
 61480  	    # linking a shared library.
       
 61481  	    #
       
 61482  	    # There doesn't appear to be a way to prevent this compiler from
       
 61483  	    # explicitly linking system object files so we need to strip them
       
 61484  	    # from the output so that they don't get included in the library
       
 61485  	    # dependencies.
       
 61486 -	    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'
       
 61487 +	    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"'
       
 61488  	    ;;
       
 61489            *)
       
 61490  	    if test "$GXX" = yes; then
       
 61491  	      if test $with_gnu_ld = no; then
       
 61492  	        case $host_cpu in
       
 61493  	          hppa*64*)
       
 61494  	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
       
 61495  	            ;;
       
 61496  	          ia64*)
       
 61497 -	            _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'
       
 61498 +	            _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'
       
 61499  	            ;;
       
 61500  	          *)
       
 61501 -	            _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'
       
 61502 +	            _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'
       
 61503  	            ;;
       
 61504  	        esac
       
 61505  	      fi
       
 61506  	    else
       
 61507  	      # FIXME: insert proper C++ library support
       
 61508  	      _LT_TAGVAR(ld_shlibs, $1)=no
       
 61509  	    fi
       
 61510  	    ;;
       
 61511 @@ -5821,41 +6367,41 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61512  	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
       
 61513  	_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'
       
 61514  	_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'
       
 61515  	;;
       
 61516        irix5* | irix6*)
       
 61517          case $cc_basename in
       
 61518            CC*)
       
 61519  	    # SGI C++
       
 61520 -	    _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'
       
 61521 +	    _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'
       
 61522  
       
 61523  	    # Archives containing C++ object files must be created using
       
 61524  	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
       
 61525  	    # necessary to make sure instantiated templates are included
       
 61526  	    # in the archive.
       
 61527  	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
       
 61528  	    ;;
       
 61529            *)
       
 61530  	    if test "$GXX" = yes; then
       
 61531  	      if test "$with_gnu_ld" = no; then
       
 61532 -	        _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'
       
 61533 +	        _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'
       
 61534  	      else
       
 61535 -	        _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'
       
 61536 +	        _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'
       
 61537  	      fi
       
 61538  	    fi
       
 61539  	    _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 61540  	    ;;
       
 61541          esac
       
 61542          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 61543          _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 61544          _LT_TAGVAR(inherit_rpath, $1)=yes
       
 61545          ;;
       
 61546  
       
 61547 -      linux* | k*bsd*-gnu)
       
 61548 +      linux* | k*bsd*-gnu | kopensolaris*-gnu)
       
 61549          case $cc_basename in
       
 61550            KCC*)
       
 61551  	    # Kuck and Associates, Inc. (KAI) C++ Compiler
       
 61552  
       
 61553  	    # KCC will only create a shared library if the output file
       
 61554  	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
       
 61555  	    # to its proper name (with version) after linking.
       
 61556  	    _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'
       
 61557 @@ -5863,17 +6409,17 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61558  	    # Commands to make compiler produce verbose output that lists
       
 61559  	    # what "hidden" libraries, object files and flags are used when
       
 61560  	    # linking a shared library.
       
 61561  	    #
       
 61562  	    # There doesn't appear to be a way to prevent this compiler from
       
 61563  	    # explicitly linking system object files so we need to strip them
       
 61564  	    # from the output so that they don't get included in the library
       
 61565  	    # dependencies.
       
 61566 -	    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'
       
 61567 +	    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"'
       
 61568  
       
 61569  	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 61570  	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 61571  
       
 61572  	    # Archives containing C++ object files must be created using
       
 61573  	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
       
 61574  	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
       
 61575  	    ;;
       
 61576 @@ -5900,44 +6446,44 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61577  	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 61578  	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 61579  	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 61580  	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
       
 61581  	    ;;
       
 61582            pgCC* | pgcpp*)
       
 61583              # Portland Group C++ compiler
       
 61584  	    case `$CC -V` in
       
 61585 -	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
       
 61586 +	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
       
 61587  	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
       
 61588  		rm -rf $tpldir~
       
 61589  		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
       
 61590 -		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
       
 61591 +		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
       
 61592  	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
       
 61593  		rm -rf $tpldir~
       
 61594  		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
       
 61595 -		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
       
 61596 +		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
       
 61597  		$RANLIB $oldlib'
       
 61598  	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
       
 61599  		rm -rf $tpldir~
       
 61600  		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
       
 61601 -		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
       
 61602 +		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
       
 61603  	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
       
 61604  		rm -rf $tpldir~
       
 61605  		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
       
 61606 -		$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'
       
 61607 +		$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'
       
 61608  	      ;;
       
 61609 -	    *) # Version 6 will use weak symbols
       
 61610 +	    *) # Version 6 and above use weak symbols
       
 61611  	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
       
 61612  	      _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'
       
 61613  	      ;;
       
 61614  	    esac
       
 61615  
       
 61616  	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
       
 61617  	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 61618 -	    _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'
       
 61619 +	    _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'
       
 61620              ;;
       
 61621  	  cxx*)
       
 61622  	    # Compaq C++
       
 61623  	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 61624  	    _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'
       
 61625  
       
 61626  	    runpath_var=LD_RUN_PATH
       
 61627  	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
       
 61628 @@ -5946,19 +6492,19 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61629  	    # Commands to make compiler produce verbose output that lists
       
 61630  	    # what "hidden" libraries, object files and flags are used when
       
 61631  	    # linking a shared library.
       
 61632  	    #
       
 61633  	    # There doesn't appear to be a way to prevent this compiler from
       
 61634  	    # explicitly linking system object files so we need to strip them
       
 61635  	    # from the output so that they don't get included in the library
       
 61636  	    # dependencies.
       
 61637 -	    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'
       
 61638 +	    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'
       
 61639  	    ;;
       
 61640 -	  xl*)
       
 61641 +	  xl* | mpixl* | bgxl*)
       
 61642  	    # IBM XL 8.0 on PPC, with GNU ld
       
 61643  	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 61644  	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
       
 61645  	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       
 61646  	    if test "x$supports_anon_versioning" = xyes; then
       
 61647  	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
       
 61648  		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
       
 61649  		echo "local: *; };" >> $output_objdir/$libname.ver~
       
 61650 @@ -5968,23 +6514,23 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61651  	  *)
       
 61652  	    case `$CC -V 2>&1 | sed 5q` in
       
 61653  	    *Sun\ C*)
       
 61654  	      # Sun C++ 5.9
       
 61655  	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
       
 61656  	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
       
 61657  	      _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'
       
 61658  	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 61659 -	      _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'
       
 61660 +	      _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'
       
 61661  	      _LT_TAGVAR(compiler_needs_object, $1)=yes
       
 61662  
       
 61663  	      # Not sure whether something based on
       
 61664  	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
       
 61665  	      # would be better.
       
 61666 -	      output_verbose_link_cmd='echo'
       
 61667 +	      output_verbose_link_cmd='func_echo_all'
       
 61668  
       
 61669  	      # Archives containing C++ object files must be created using
       
 61670  	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
       
 61671  	      # necessary to make sure instantiated templates are included
       
 61672  	      # in the archive.
       
 61673  	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
       
 61674  	      ;;
       
 61675  	    esac
       
 61676 @@ -6043,17 +6589,17 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61677  	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       
 61678  	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
       
 61679  	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
       
 61680  	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
       
 61681  	    _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'
       
 61682  	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       
 61683  	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
       
 61684  	  fi
       
 61685 -	  output_verbose_link_cmd=echo
       
 61686 +	  output_verbose_link_cmd=func_echo_all
       
 61687  	else
       
 61688  	  _LT_TAGVAR(ld_shlibs, $1)=no
       
 61689  	fi
       
 61690  	;;
       
 61691  
       
 61692        osf3* | osf4* | osf5*)
       
 61693          case $cc_basename in
       
 61694            KCC*)
       
 61695 @@ -6078,61 +6624,61 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61696  	    # Rational C++ 2.4.1
       
 61697  	    # FIXME: insert proper C++ library support
       
 61698  	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 61699  	    ;;
       
 61700            cxx*)
       
 61701  	    case $host in
       
 61702  	      osf3*)
       
 61703  	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
       
 61704 -	        _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'
       
 61705 +	        _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'
       
 61706  	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 61707  		;;
       
 61708  	      *)
       
 61709  	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
       
 61710 -	        _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'
       
 61711 +	        _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'
       
 61712  	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
       
 61713  	          echo "-hidden">> $lib.exp~
       
 61714 -	          $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~
       
 61715 +	          $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~
       
 61716  	          $RM $lib.exp'
       
 61717  	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
       
 61718  		;;
       
 61719  	    esac
       
 61720  
       
 61721  	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 61722  
       
 61723  	    # Commands to make compiler produce verbose output that lists
       
 61724  	    # what "hidden" libraries, object files and flags are used when
       
 61725  	    # linking a shared library.
       
 61726  	    #
       
 61727  	    # There doesn't appear to be a way to prevent this compiler from
       
 61728  	    # explicitly linking system object files so we need to strip them
       
 61729  	    # from the output so that they don't get included in the library
       
 61730  	    # dependencies.
       
 61731 -	    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'
       
 61732 +	    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"'
       
 61733  	    ;;
       
 61734  	  *)
       
 61735  	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
       
 61736  	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
       
 61737  	      case $host in
       
 61738  	        osf3*)
       
 61739 -	          _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'
       
 61740 +	          _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'
       
 61741  		  ;;
       
 61742  	        *)
       
 61743 -	          _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'
       
 61744 +	          _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'
       
 61745  		  ;;
       
 61746  	      esac
       
 61747  
       
 61748  	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       
 61749  	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       
 61750  
       
 61751  	      # Commands to make compiler produce verbose output that lists
       
 61752  	      # what "hidden" libraries, object files and flags are used when
       
 61753  	      # linking a shared library.
       
 61754 -	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
       
 61755 +	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
       
 61756  
       
 61757  	    else
       
 61758  	      # FIXME: insert proper C++ library support
       
 61759  	      _LT_TAGVAR(ld_shlibs, $1)=no
       
 61760  	    fi
       
 61761  	    ;;
       
 61762          esac
       
 61763          ;;
       
 61764 @@ -6158,17 +6704,17 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61765  	    # FIXME: insert proper C++ library support
       
 61766  	    _LT_TAGVAR(ld_shlibs, $1)=no
       
 61767  	    ;;
       
 61768          esac
       
 61769          ;;
       
 61770  
       
 61771        solaris*)
       
 61772          case $cc_basename in
       
 61773 -          CC*)
       
 61774 +          CC* | sunCC*)
       
 61775  	    # Sun C++ 4.2, 5.x and Centerline C++
       
 61776              _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
       
 61777  	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
       
 61778  	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
       
 61779  	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 61780  	      $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'
       
 61781  
       
 61782  	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       
 61783 @@ -6179,17 +6725,17 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61784  		# The compiler driver will combine and reorder linker options,
       
 61785  		# but understands `-z linker_flag'.
       
 61786  	        # Supported since Solaris 2.6 (maybe 2.5.1?)
       
 61787  		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
       
 61788  	        ;;
       
 61789  	    esac
       
 61790  	    _LT_TAGVAR(link_all_deplibs, $1)=yes
       
 61791  
       
 61792 -	    output_verbose_link_cmd='echo'
       
 61793 +	    output_verbose_link_cmd='func_echo_all'
       
 61794  
       
 61795  	    # Archives containing C++ object files must be created using
       
 61796  	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
       
 61797  	    # necessary to make sure instantiated templates are included
       
 61798  	    # in the archive.
       
 61799  	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
       
 61800  	    ;;
       
 61801            gcx*)
       
 61802 @@ -6199,35 +6745,35 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61803  	    # The C++ compiler must be used to create the archive.
       
 61804  	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
       
 61805  	    ;;
       
 61806            *)
       
 61807  	    # GNU C++ compiler with Solaris linker
       
 61808  	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
       
 61809  	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
       
 61810  	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
       
 61811 -	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
       
 61812 +	        _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'
       
 61813  	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 61814 -		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
       
 61815 +		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
       
 61816  
       
 61817  	        # Commands to make compiler produce verbose output that lists
       
 61818  	        # what "hidden" libraries, object files and flags are used when
       
 61819  	        # linking a shared library.
       
 61820 -	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
       
 61821 +	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
       
 61822  	      else
       
 61823  	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
       
 61824  	        # platform.
       
 61825  	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
       
 61826  	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
       
 61827  		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
       
 61828  
       
 61829  	        # Commands to make compiler produce verbose output that lists
       
 61830  	        # what "hidden" libraries, object files and flags are used when
       
 61831  	        # linking a shared library.
       
 61832 -	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
       
 61833 +	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
       
 61834  	      fi
       
 61835  
       
 61836  	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
       
 61837  	      case $host_os in
       
 61838  		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
       
 61839  		*)
       
 61840  		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
       
 61841  		  ;;
       
 61842 @@ -6271,16 +6817,20 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61843  	_LT_TAGVAR(link_all_deplibs, $1)=yes
       
 61844  	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
       
 61845  	runpath_var='LD_RUN_PATH'
       
 61846  
       
 61847  	case $cc_basename in
       
 61848            CC*)
       
 61849  	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 61850  	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 61851 +	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
       
 61852 +	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
       
 61853 +	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
       
 61854 +	      '"$_LT_TAGVAR(reload_cmds, $1)"
       
 61855  	    ;;
       
 61856  	  *)
       
 61857  	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 61858  	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       
 61859  	    ;;
       
 61860  	esac
       
 61861        ;;
       
 61862  
       
 61863 @@ -6326,38 +6876,63 @@ if test "$_lt_caught_CXX_error" != yes; 
       
 61864      _LT_LINKER_SHLIBS($1)
       
 61865      _LT_SYS_DYNAMIC_LINKER($1)
       
 61866      _LT_LINKER_HARDCODE_LIBPATH($1)
       
 61867  
       
 61868      _LT_CONFIG($1)
       
 61869    fi # test -n "$compiler"
       
 61870  
       
 61871    CC=$lt_save_CC
       
 61872 +  CFLAGS=$lt_save_CFLAGS
       
 61873    LDCXX=$LD
       
 61874    LD=$lt_save_LD
       
 61875    GCC=$lt_save_GCC
       
 61876    with_gnu_ld=$lt_save_with_gnu_ld
       
 61877    lt_cv_path_LDCXX=$lt_cv_path_LD
       
 61878    lt_cv_path_LD=$lt_save_path_LD
       
 61879    lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
       
 61880    lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
       
 61881  fi # test "$_lt_caught_CXX_error" != yes
       
 61882  
       
 61883  AC_LANG_POP
       
 61884  ])# _LT_LANG_CXX_CONFIG
       
 61885  
       
 61886  
       
 61887 +# _LT_FUNC_STRIPNAME_CNF
       
 61888 +# ----------------------
       
 61889 +# func_stripname_cnf prefix suffix name
       
 61890 +# strip PREFIX and SUFFIX off of NAME.
       
 61891 +# PREFIX and SUFFIX must not contain globbing or regex special
       
 61892 +# characters, hashes, percent signs, but SUFFIX may contain a leading
       
 61893 +# dot (in which case that matches only a dot).
       
 61894 +#
       
 61895 +# This function is identical to the (non-XSI) version of func_stripname,
       
 61896 +# except this one can be used by m4 code that may be executed by configure,
       
 61897 +# rather than the libtool script.
       
 61898 +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
       
 61899 +AC_REQUIRE([_LT_DECL_SED])
       
 61900 +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
       
 61901 +func_stripname_cnf ()
       
 61902 +{
       
 61903 +  case ${2} in
       
 61904 +  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
       
 61905 +  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
       
 61906 +  esac
       
 61907 +} # func_stripname_cnf
       
 61908 +])# _LT_FUNC_STRIPNAME_CNF
       
 61909 +
       
 61910  # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
       
 61911  # ---------------------------------
       
 61912  # Figure out "hidden" library dependencies from verbose
       
 61913  # compiler output when linking a shared library.
       
 61914  # Parse the compiler output and extract the necessary
       
 61915  # objects, libraries and library flags.
       
 61916  m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
       
 61917  [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
       
 61918 +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
       
 61919  # Dependencies to place before and after the object being linked:
       
 61920  _LT_TAGVAR(predep_objects, $1)=
       
 61921  _LT_TAGVAR(postdep_objects, $1)=
       
 61922  _LT_TAGVAR(predeps, $1)=
       
 61923  _LT_TAGVAR(postdeps, $1)=
       
 61924  _LT_TAGVAR(compiler_lib_search_path, $1)=
       
 61925  
       
 61926  dnl we can't use the lt_simple_compile_test_code here,
       
 61927 @@ -6397,44 +6972,66 @@ private:
       
 61928  ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
       
 61929  public class foo {
       
 61930    private int a;
       
 61931    public void bar (void) {
       
 61932      a = 0;
       
 61933    }
       
 61934  };
       
 61935  _LT_EOF
       
 61936 +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
       
 61937 +package foo
       
 61938 +func foo() {
       
 61939 +}
       
 61940 +_LT_EOF
       
 61941  ])
       
 61942 +
       
 61943 +_lt_libdeps_save_CFLAGS=$CFLAGS
       
 61944 +case "$CC $CFLAGS " in #(
       
 61945 +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
       
 61946 +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
       
 61947 +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
       
 61948 +esac
       
 61949 +
       
 61950  dnl Parse the compiler output and extract the necessary
       
 61951  dnl objects, libraries and library flags.
       
 61952  if AC_TRY_EVAL(ac_compile); then
       
 61953    # Parse the compiler output and extract the necessary
       
 61954    # objects, libraries and library flags.
       
 61955  
       
 61956    # Sentinel used to keep track of whether or not we are before
       
 61957    # the conftest object file.
       
 61958    pre_test_object_deps_done=no
       
 61959  
       
 61960    for p in `eval "$output_verbose_link_cmd"`; do
       
 61961 -    case $p in
       
 61962 +    case ${prev}${p} in
       
 61963  
       
 61964      -L* | -R* | -l*)
       
 61965         # Some compilers place space between "-{L,R}" and the path.
       
 61966         # Remove the space.
       
 61967         if test $p = "-L" ||
       
 61968            test $p = "-R"; then
       
 61969  	 prev=$p
       
 61970  	 continue
       
 61971 -       else
       
 61972 -	 prev=
       
 61973         fi
       
 61974  
       
 61975 +       # Expand the sysroot to ease extracting the directories later.
       
 61976 +       if test -z "$prev"; then
       
 61977 +         case $p in
       
 61978 +         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
       
 61979 +         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
       
 61980 +         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
       
 61981 +         esac
       
 61982 +       fi
       
 61983 +       case $p in
       
 61984 +       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
       
 61985 +       esac
       
 61986         if test "$pre_test_object_deps_done" = no; then
       
 61987 -	 case $p in
       
 61988 -	 -L* | -R*)
       
 61989 +	 case ${prev} in
       
 61990 +	 -L | -R)
       
 61991  	   # Internal compiler library paths should come after those
       
 61992  	   # provided the user.  The postdeps already come after the
       
 61993  	   # user supplied libs so there is no need to process them.
       
 61994  	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
       
 61995  	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
       
 61996  	   else
       
 61997  	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
       
 61998  	   fi
       
 61999 @@ -6444,18 +7041,20 @@ if AC_TRY_EVAL(ac_compile); then
       
 62000  	 esac
       
 62001         else
       
 62002  	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
       
 62003  	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
       
 62004  	 else
       
 62005  	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
       
 62006  	 fi
       
 62007         fi
       
 62008 +       prev=
       
 62009         ;;
       
 62010  
       
 62011 +    *.lto.$objext) ;; # Ignore GCC LTO objects
       
 62012      *.$objext)
       
 62013         # This assumes that the test object file only shows up
       
 62014         # once in the compiler output.
       
 62015         if test "$p" = "conftest.$objext"; then
       
 62016  	 pre_test_object_deps_done=yes
       
 62017  	 continue
       
 62018         fi
       
 62019  
       
 62020 @@ -6481,16 +7080,17 @@ if AC_TRY_EVAL(ac_compile); then
       
 62021  
       
 62022    # Clean up.
       
 62023    rm -f a.out a.exe
       
 62024  else
       
 62025    echo "libtool.m4: error: problem compiling $1 test program"
       
 62026  fi
       
 62027  
       
 62028  $RM -f confest.$objext
       
 62029 +CFLAGS=$_lt_libdeps_save_CFLAGS
       
 62030  
       
 62031  # PORTME: override above test on systems where it is broken
       
 62032  m4_if([$1], [CXX],
       
 62033  [case $host_os in
       
 62034  interix[[3-9]]*)
       
 62035    # Interix 3.5 installs completely hosed .la files for C++, so rather than
       
 62036    # hack all around it, let's just trust "g++" to DTRT.
       
 62037    _LT_TAGVAR(predep_objects,$1)=
       
 62038 @@ -6517,17 +7117,17 @@ linux*)
       
 62039        _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
       
 62040      fi
       
 62041      ;;
       
 62042    esac
       
 62043    ;;
       
 62044  
       
 62045  solaris*)
       
 62046    case $cc_basename in
       
 62047 -  CC*)
       
 62048 +  CC* | sunCC*)
       
 62049      # The more standards-conforming stlport4 library is
       
 62050      # incompatible with the Cstd library. Avoid specifying
       
 62051      # it if it's in CXXFLAGS. Ignore libCrun as
       
 62052      # -library=stlport4 depends on it.
       
 62053      case " $CXX $CXXFLAGS " in
       
 62054      *" -library=stlport4 "*)
       
 62055        solaris_use_stlport4=yes
       
 62056        ;;
       
 62057 @@ -6561,60 +7161,45 @@ fi
       
 62058  _LT_TAGDECL([], [predeps], [1])
       
 62059  _LT_TAGDECL([], [postdeps], [1])
       
 62060  _LT_TAGDECL([], [compiler_lib_search_path], [1],
       
 62061      [The library search path used internally by the compiler when linking
       
 62062      a shared library])
       
 62063  ])# _LT_SYS_HIDDEN_LIBDEPS
       
 62064  
       
 62065  
       
 62066 -# _LT_PROG_F77
       
 62067 -# ------------
       
 62068 -# Since AC_PROG_F77 is broken, in that it returns the empty string
       
 62069 -# if there is no fortran compiler, we have our own version here.
       
 62070 -m4_defun([_LT_PROG_F77],
       
 62071 -[
       
 62072 -pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
       
 62073 -AC_PROG_F77
       
 62074 -if test -z "$F77" || test "X$F77" = "Xno"; then
       
 62075 -  _lt_disable_F77=yes
       
 62076 -fi
       
 62077 -popdef([AC_MSG_ERROR])
       
 62078 -])# _LT_PROG_F77
       
 62079 -
       
 62080 -dnl aclocal-1.4 backwards compatibility:
       
 62081 -dnl AC_DEFUN([_LT_PROG_F77], [])
       
 62082 -
       
 62083 -
       
 62084  # _LT_LANG_F77_CONFIG([TAG])
       
 62085  # --------------------------
       
 62086  # Ensure that the configuration variables for a Fortran 77 compiler are
       
 62087  # suitably defined.  These variables are subsequently used by _LT_CONFIG
       
 62088  # to write the compiler configuration to `libtool'.
       
 62089  m4_defun([_LT_LANG_F77_CONFIG],
       
 62090 -[AC_REQUIRE([_LT_PROG_F77])dnl
       
 62091 -AC_LANG_PUSH(Fortran 77)
       
 62092 +[AC_LANG_PUSH(Fortran 77)
       
 62093 +if test -z "$F77" || test "X$F77" = "Xno"; then
       
 62094 +  _lt_disable_F77=yes
       
 62095 +fi
       
 62096  
       
 62097  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 62098  _LT_TAGVAR(allow_undefined_flag, $1)=
       
 62099  _LT_TAGVAR(always_export_symbols, $1)=no
       
 62100  _LT_TAGVAR(archive_expsym_cmds, $1)=
       
 62101  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
       
 62102  _LT_TAGVAR(hardcode_direct, $1)=no
       
 62103  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
       
 62104  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 62105 -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
       
 62106  _LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 62107  _LT_TAGVAR(hardcode_minus_L, $1)=no
       
 62108  _LT_TAGVAR(hardcode_automatic, $1)=no
       
 62109  _LT_TAGVAR(inherit_rpath, $1)=no
       
 62110  _LT_TAGVAR(module_cmds, $1)=
       
 62111  _LT_TAGVAR(module_expsym_cmds, $1)=
       
 62112  _LT_TAGVAR(link_all_deplibs, $1)=unknown
       
 62113  _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
       
 62114 +_LT_TAGVAR(reload_flag, $1)=$reload_flag
       
 62115 +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
       
 62116  _LT_TAGVAR(no_undefined_flag, $1)=
       
 62117  _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 62118  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
       
 62119  
       
 62120  # Source file extension for f77 test sources.
       
 62121  ac_ext=f
       
 62122  
       
 62123  # Object file extension for compiled f77 test sources.
       
 62124 @@ -6644,17 +7229,19 @@ if test "$_lt_disable_F77" != yes; then
       
 62125  
       
 62126    # save warnings/boilerplate of simple test code
       
 62127    _LT_COMPILER_BOILERPLATE
       
 62128    _LT_LINKER_BOILERPLATE
       
 62129  
       
 62130    # Allow CC to be a program name with arguments.
       
 62131    lt_save_CC="$CC"
       
 62132    lt_save_GCC=$GCC
       
 62133 +  lt_save_CFLAGS=$CFLAGS
       
 62134    CC=${F77-"f77"}
       
 62135 +  CFLAGS=$FFLAGS
       
 62136    compiler=$CC
       
 62137    _LT_TAGVAR(compiler, $1)=$CC
       
 62138    _LT_CC_BASENAME([$compiler])
       
 62139    GCC=$G77
       
 62140    if test -n "$compiler"; then
       
 62141      AC_MSG_CHECKING([if libtool supports shared libraries])
       
 62142      AC_MSG_RESULT([$can_build_shared])
       
 62143  
       
 62144 @@ -6698,66 +7285,53 @@ if test "$_lt_disable_F77" != yes; then
       
 62145      _LT_SYS_DYNAMIC_LINKER($1)
       
 62146      _LT_LINKER_HARDCODE_LIBPATH($1)
       
 62147  
       
 62148      _LT_CONFIG($1)
       
 62149    fi # test -n "$compiler"
       
 62150  
       
 62151    GCC=$lt_save_GCC
       
 62152    CC="$lt_save_CC"
       
 62153 +  CFLAGS="$lt_save_CFLAGS"
       
 62154  fi # test "$_lt_disable_F77" != yes
       
 62155  
       
 62156  AC_LANG_POP
       
 62157  ])# _LT_LANG_F77_CONFIG
       
 62158  
       
 62159  
       
 62160 -# _LT_PROG_FC
       
 62161 -# -----------
       
 62162 -# Since AC_PROG_FC is broken, in that it returns the empty string
       
 62163 -# if there is no fortran compiler, we have our own version here.
       
 62164 -m4_defun([_LT_PROG_FC],
       
 62165 -[
       
 62166 -pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
       
 62167 -AC_PROG_FC
       
 62168 -if test -z "$FC" || test "X$FC" = "Xno"; then
       
 62169 -  _lt_disable_FC=yes
       
 62170 -fi
       
 62171 -popdef([AC_MSG_ERROR])
       
 62172 -])# _LT_PROG_FC
       
 62173 -
       
 62174 -dnl aclocal-1.4 backwards compatibility:
       
 62175 -dnl AC_DEFUN([_LT_PROG_FC], [])
       
 62176 -
       
 62177 -
       
 62178  # _LT_LANG_FC_CONFIG([TAG])
       
 62179  # -------------------------
       
 62180  # Ensure that the configuration variables for a Fortran compiler are
       
 62181  # suitably defined.  These variables are subsequently used by _LT_CONFIG
       
 62182  # to write the compiler configuration to `libtool'.
       
 62183  m4_defun([_LT_LANG_FC_CONFIG],
       
 62184 -[AC_REQUIRE([_LT_PROG_FC])dnl
       
 62185 -AC_LANG_PUSH(Fortran)
       
 62186 +[AC_LANG_PUSH(Fortran)
       
 62187 +
       
 62188 +if test -z "$FC" || test "X$FC" = "Xno"; then
       
 62189 +  _lt_disable_FC=yes
       
 62190 +fi
       
 62191  
       
 62192  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 62193  _LT_TAGVAR(allow_undefined_flag, $1)=
       
 62194  _LT_TAGVAR(always_export_symbols, $1)=no
       
 62195  _LT_TAGVAR(archive_expsym_cmds, $1)=
       
 62196  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
       
 62197  _LT_TAGVAR(hardcode_direct, $1)=no
       
 62198  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
       
 62199  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       
 62200 -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
       
 62201  _LT_TAGVAR(hardcode_libdir_separator, $1)=
       
 62202  _LT_TAGVAR(hardcode_minus_L, $1)=no
       
 62203  _LT_TAGVAR(hardcode_automatic, $1)=no
       
 62204  _LT_TAGVAR(inherit_rpath, $1)=no
       
 62205  _LT_TAGVAR(module_cmds, $1)=
       
 62206  _LT_TAGVAR(module_expsym_cmds, $1)=
       
 62207  _LT_TAGVAR(link_all_deplibs, $1)=unknown
       
 62208  _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
       
 62209 +_LT_TAGVAR(reload_flag, $1)=$reload_flag
       
 62210 +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
       
 62211  _LT_TAGVAR(no_undefined_flag, $1)=
       
 62212  _LT_TAGVAR(whole_archive_flag_spec, $1)=
       
 62213  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
       
 62214  
       
 62215  # Source file extension for fc test sources.
       
 62216  ac_ext=${ac_fc_srcext-f}
       
 62217  
       
 62218  # Object file extension for compiled fc test sources.
       
 62219 @@ -6787,17 +7361,19 @@ if test "$_lt_disable_FC" != yes; then
       
 62220  
       
 62221    # save warnings/boilerplate of simple test code
       
 62222    _LT_COMPILER_BOILERPLATE
       
 62223    _LT_LINKER_BOILERPLATE
       
 62224  
       
 62225    # Allow CC to be a program name with arguments.
       
 62226    lt_save_CC="$CC"
       
 62227    lt_save_GCC=$GCC
       
 62228 +  lt_save_CFLAGS=$CFLAGS
       
 62229    CC=${FC-"f95"}
       
 62230 +  CFLAGS=$FCFLAGS
       
 62231    compiler=$CC
       
 62232    GCC=$ac_cv_fc_compiler_gnu
       
 62233  
       
 62234    _LT_TAGVAR(compiler, $1)=$CC
       
 62235    _LT_CC_BASENAME([$compiler])
       
 62236  
       
 62237    if test -n "$compiler"; then
       
 62238      AC_MSG_CHECKING([if libtool supports shared libraries])
       
 62239 @@ -6843,17 +7419,18 @@ if test "$_lt_disable_FC" != yes; then
       
 62240      _LT_LINKER_SHLIBS($1)
       
 62241      _LT_SYS_DYNAMIC_LINKER($1)
       
 62242      _LT_LINKER_HARDCODE_LIBPATH($1)
       
 62243  
       
 62244      _LT_CONFIG($1)
       
 62245    fi # test -n "$compiler"
       
 62246  
       
 62247    GCC=$lt_save_GCC
       
 62248 -  CC="$lt_save_CC"
       
 62249 +  CC=$lt_save_CC
       
 62250 +  CFLAGS=$lt_save_CFLAGS
       
 62251  fi # test "$_lt_disable_FC" != yes
       
 62252  
       
 62253  AC_LANG_POP
       
 62254  ])# _LT_LANG_FC_CONFIG
       
 62255  
       
 62256  
       
 62257  # _LT_LANG_GCJ_CONFIG([TAG])
       
 62258  # --------------------------
       
 62259 @@ -6880,29 +7457,33 @@ lt_simple_link_test_code='public class c
       
 62260  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
       
 62261  _LT_TAG_COMPILER
       
 62262  
       
 62263  # save warnings/boilerplate of simple test code
       
 62264  _LT_COMPILER_BOILERPLATE
       
 62265  _LT_LINKER_BOILERPLATE
       
 62266  
       
 62267  # Allow CC to be a program name with arguments.
       
 62268 -lt_save_CC="$CC"
       
 62269 +lt_save_CC=$CC
       
 62270 +lt_save_CFLAGS=$CFLAGS
       
 62271  lt_save_GCC=$GCC
       
 62272  GCC=yes
       
 62273  CC=${GCJ-"gcj"}
       
 62274 +CFLAGS=$GCJFLAGS
       
 62275  compiler=$CC
       
 62276  _LT_TAGVAR(compiler, $1)=$CC
       
 62277  _LT_TAGVAR(LD, $1)="$LD"
       
 62278  _LT_CC_BASENAME([$compiler])
       
 62279  
       
 62280  # GCJ did not exist at the time GCC didn't implicitly link libc in.
       
 62281  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 62282  
       
 62283  _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
       
 62284 +_LT_TAGVAR(reload_flag, $1)=$reload_flag
       
 62285 +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
       
 62286  
       
 62287  ## CAVEAT EMPTOR:
       
 62288  ## There is no encapsulation within the following macros, do not change
       
 62289  ## the running order or otherwise move them around unless you know exactly
       
 62290  ## what you are doing...
       
 62291  if test -n "$compiler"; then
       
 62292    _LT_COMPILER_NO_RTTI($1)
       
 62293    _LT_COMPILER_PIC($1)
       
 62294 @@ -6912,20 +7493,92 @@ if test -n "$compiler"; then
       
 62295    _LT_LINKER_HARDCODE_LIBPATH($1)
       
 62296  
       
 62297    _LT_CONFIG($1)
       
 62298  fi
       
 62299  
       
 62300  AC_LANG_RESTORE
       
 62301  
       
 62302  GCC=$lt_save_GCC
       
 62303 -CC="$lt_save_CC"
       
 62304 +CC=$lt_save_CC
       
 62305 +CFLAGS=$lt_save_CFLAGS
       
 62306  ])# _LT_LANG_GCJ_CONFIG
       
 62307  
       
 62308  
       
 62309 +# _LT_LANG_GO_CONFIG([TAG])
       
 62310 +# --------------------------
       
 62311 +# Ensure that the configuration variables for the GNU Go compiler
       
 62312 +# are suitably defined.  These variables are subsequently used by _LT_CONFIG
       
 62313 +# to write the compiler configuration to `libtool'.
       
 62314 +m4_defun([_LT_LANG_GO_CONFIG],
       
 62315 +[AC_REQUIRE([LT_PROG_GO])dnl
       
 62316 +AC_LANG_SAVE
       
 62317 +
       
 62318 +# Source file extension for Go test sources.
       
 62319 +ac_ext=go
       
 62320 +
       
 62321 +# Object file extension for compiled Go test sources.
       
 62322 +objext=o
       
 62323 +_LT_TAGVAR(objext, $1)=$objext
       
 62324 +
       
 62325 +# Code to be used in simple compile tests
       
 62326 +lt_simple_compile_test_code="package main; func main() { }"
       
 62327 +
       
 62328 +# Code to be used in simple link tests
       
 62329 +lt_simple_link_test_code='package main; func main() { }'
       
 62330 +
       
 62331 +# ltmain only uses $CC for tagged configurations so make sure $CC is set.
       
 62332 +_LT_TAG_COMPILER
       
 62333 +
       
 62334 +# save warnings/boilerplate of simple test code
       
 62335 +_LT_COMPILER_BOILERPLATE
       
 62336 +_LT_LINKER_BOILERPLATE
       
 62337 +
       
 62338 +# Allow CC to be a program name with arguments.
       
 62339 +lt_save_CC=$CC
       
 62340 +lt_save_CFLAGS=$CFLAGS
       
 62341 +lt_save_GCC=$GCC
       
 62342 +GCC=yes
       
 62343 +CC=${GOC-"gccgo"}
       
 62344 +CFLAGS=$GOFLAGS
       
 62345 +compiler=$CC
       
 62346 +_LT_TAGVAR(compiler, $1)=$CC
       
 62347 +_LT_TAGVAR(LD, $1)="$LD"
       
 62348 +_LT_CC_BASENAME([$compiler])
       
 62349 +
       
 62350 +# Go did not exist at the time GCC didn't implicitly link libc in.
       
 62351 +_LT_TAGVAR(archive_cmds_need_lc, $1)=no
       
 62352 +
       
 62353 +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
       
 62354 +_LT_TAGVAR(reload_flag, $1)=$reload_flag
       
 62355 +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
       
 62356 +
       
 62357 +## CAVEAT EMPTOR:
       
 62358 +## There is no encapsulation within the following macros, do not change
       
 62359 +## the running order or otherwise move them around unless you know exactly
       
 62360 +## what you are doing...
       
 62361 +if test -n "$compiler"; then
       
 62362 +  _LT_COMPILER_NO_RTTI($1)
       
 62363 +  _LT_COMPILER_PIC($1)
       
 62364 +  _LT_COMPILER_C_O($1)
       
 62365 +  _LT_COMPILER_FILE_LOCKS($1)
       
 62366 +  _LT_LINKER_SHLIBS($1)
       
 62367 +  _LT_LINKER_HARDCODE_LIBPATH($1)
       
 62368 +
       
 62369 +  _LT_CONFIG($1)
       
 62370 +fi
       
 62371 +
       
 62372 +AC_LANG_RESTORE
       
 62373 +
       
 62374 +GCC=$lt_save_GCC
       
 62375 +CC=$lt_save_CC
       
 62376 +CFLAGS=$lt_save_CFLAGS
       
 62377 +])# _LT_LANG_GO_CONFIG
       
 62378 +
       
 62379 +
       
 62380  # _LT_LANG_RC_CONFIG([TAG])
       
 62381  # -------------------------
       
 62382  # Ensure that the configuration variables for the Windows resource compiler
       
 62383  # are suitably defined.  These variables are subsequently used by _LT_CONFIG
       
 62384  # to write the compiler configuration to `libtool'.
       
 62385  m4_defun([_LT_LANG_RC_CONFIG],
       
 62386  [AC_REQUIRE([LT_PROG_RC])dnl
       
 62387  AC_LANG_SAVE
       
 62388 @@ -6947,32 +7600,35 @@ lt_simple_link_test_code="$lt_simple_com
       
 62389  _LT_TAG_COMPILER
       
 62390  
       
 62391  # save warnings/boilerplate of simple test code
       
 62392  _LT_COMPILER_BOILERPLATE
       
 62393  _LT_LINKER_BOILERPLATE
       
 62394  
       
 62395  # Allow CC to be a program name with arguments.
       
 62396  lt_save_CC="$CC"
       
 62397 +lt_save_CFLAGS=$CFLAGS
       
 62398  lt_save_GCC=$GCC
       
 62399  GCC=
       
 62400  CC=${RC-"windres"}
       
 62401 +CFLAGS=
       
 62402  compiler=$CC
       
 62403  _LT_TAGVAR(compiler, $1)=$CC
       
 62404  _LT_CC_BASENAME([$compiler])
       
 62405  _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
       
 62406  
       
 62407  if test -n "$compiler"; then
       
 62408    :
       
 62409    _LT_CONFIG($1)
       
 62410  fi
       
 62411  
       
 62412  GCC=$lt_save_GCC
       
 62413  AC_LANG_RESTORE
       
 62414 -CC="$lt_save_CC"
       
 62415 +CC=$lt_save_CC
       
 62416 +CFLAGS=$lt_save_CFLAGS
       
 62417  ])# _LT_LANG_RC_CONFIG
       
 62418  
       
 62419  
       
 62420  # LT_PROG_GCJ
       
 62421  # -----------
       
 62422  AC_DEFUN([LT_PROG_GCJ],
       
 62423  [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
       
 62424    [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
       
 62425 @@ -6982,16 +7638,23 @@ AC_DEFUN([LT_PROG_GCJ],
       
 62426  ])
       
 62427  
       
 62428  # Old name:
       
 62429  AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
       
 62430  dnl aclocal-1.4 backwards compatibility:
       
 62431  dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
       
 62432  
       
 62433  
       
 62434 +# LT_PROG_GO
       
 62435 +# ----------
       
 62436 +AC_DEFUN([LT_PROG_GO],
       
 62437 +[AC_CHECK_TOOL(GOC, gccgo,)
       
 62438 +])
       
 62439 +
       
 62440 +
       
 62441  # LT_PROG_RC
       
 62442  # ----------
       
 62443  AC_DEFUN([LT_PROG_RC],
       
 62444  [AC_CHECK_TOOL(RC, windres,)
       
 62445  ])
       
 62446  
       
 62447  # Old name:
       
 62448  AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
       
 62449 @@ -7021,16 +7684,25 @@ AC_SUBST([GREP])
       
 62450  # available, choose the one first in the user's PATH.
       
 62451  m4_defun([_LT_DECL_OBJDUMP],
       
 62452  [AC_CHECK_TOOL(OBJDUMP, objdump, false)
       
 62453  test -z "$OBJDUMP" && OBJDUMP=objdump
       
 62454  _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
       
 62455  AC_SUBST([OBJDUMP])
       
 62456  ])
       
 62457  
       
 62458 +# _LT_DECL_DLLTOOL
       
 62459 +# ----------------
       
 62460 +# Ensure DLLTOOL variable is set.
       
 62461 +m4_defun([_LT_DECL_DLLTOOL],
       
 62462 +[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
       
 62463 +test -z "$DLLTOOL" && DLLTOOL=dlltool
       
 62464 +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
       
 62465 +AC_SUBST([DLLTOOL])
       
 62466 +])
       
 62467  
       
 62468  # _LT_DECL_SED
       
 62469  # ------------
       
 62470  # Check for a fully-functional sed program, that truncates
       
 62471  # as few characters as possible.  Prefer GNU sed if found.
       
 62472  m4_defun([_LT_DECL_SED],
       
 62473  [AC_PROG_SED
       
 62474  test -z "$SED" && SED=sed
       
 62475 @@ -7114,18 +7786,18 @@ dnl AC_DEFUN([LT_AC_PROG_SED], [])
       
 62476  # ------------------------
       
 62477  # Find out whether the shell is Bourne or XSI compatible,
       
 62478  # or has some other useful features.
       
 62479  m4_defun([_LT_CHECK_SHELL_FEATURES],
       
 62480  [AC_MSG_CHECKING([whether the shell understands some XSI constructs])
       
 62481  # Try some XSI features
       
 62482  xsi_shell=no
       
 62483  ( _lt_dummy="a/b/c"
       
 62484 -  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
       
 62485 -      = c,a/b,, \
       
 62486 +  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
       
 62487 +      = c,a/b,b/c, \
       
 62488      && eval 'test $(( 1 + 1 )) -eq 2 \
       
 62489      && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
       
 62490    && xsi_shell=yes
       
 62491  AC_MSG_RESULT([$xsi_shell])
       
 62492  _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
       
 62493  
       
 62494  AC_MSG_CHECKING([whether the shell understands "+="])
       
 62495  lt_shell_append=no
       
 62496 @@ -7154,213 +7826,167 @@ case `echo X|tr X '\101'` in
       
 62497    lt_NL2SP='tr \r\n \100\100'
       
 62498    ;;
       
 62499  esac
       
 62500  _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
       
 62501  _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
       
 62502  ])# _LT_CHECK_SHELL_FEATURES
       
 62503  
       
 62504  
       
 62505 -# _LT_PROG_XSI_SHELLFNS
       
 62506 -# ---------------------
       
 62507 -# Bourne and XSI compatible variants of some useful shell functions.
       
 62508 -m4_defun([_LT_PROG_XSI_SHELLFNS],
       
 62509 -[case $xsi_shell in
       
 62510 -  yes)
       
 62511 -    cat << \_LT_EOF >> "$cfgfile"
       
 62512 -
       
 62513 -# func_dirname file append nondir_replacement
       
 62514 -# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
       
 62515 -# otherwise set result to NONDIR_REPLACEMENT.
       
 62516 -func_dirname ()
       
 62517 -{
       
 62518 -  case ${1} in
       
 62519 -    */*) func_dirname_result="${1%/*}${2}" ;;
       
 62520 -    *  ) func_dirname_result="${3}" ;;
       
 62521 -  esac
       
 62522 -}
       
 62523 -
       
 62524 -# func_basename file
       
 62525 -func_basename ()
       
 62526 -{
       
 62527 -  func_basename_result="${1##*/}"
       
 62528 -}
       
 62529 -
       
 62530 -# func_dirname_and_basename file append nondir_replacement
       
 62531 -# perform func_basename and func_dirname in a single function
       
 62532 -# call:
       
 62533 -#   dirname:  Compute the dirname of FILE.  If nonempty,
       
 62534 -#             add APPEND to the result, otherwise set result
       
 62535 -#             to NONDIR_REPLACEMENT.
       
 62536 -#             value returned in "$func_dirname_result"
       
 62537 -#   basename: Compute filename of FILE.
       
 62538 -#             value retuned in "$func_basename_result"
       
 62539 -# Implementation must be kept synchronized with func_dirname
       
 62540 -# and func_basename. For efficiency, we do not delegate to
       
 62541 -# those functions but instead duplicate the functionality here.
       
 62542 -func_dirname_and_basename ()
       
 62543 -{
       
 62544 -  case ${1} in
       
 62545 -    */*) func_dirname_result="${1%/*}${2}" ;;
       
 62546 -    *  ) func_dirname_result="${3}" ;;
       
 62547 -  esac
       
 62548 -  func_basename_result="${1##*/}"
       
 62549 -}
       
 62550 -
       
 62551 -# func_stripname prefix suffix name
       
 62552 -# strip PREFIX and SUFFIX off of NAME.
       
 62553 -# PREFIX and SUFFIX must not contain globbing or regex special
       
 62554 -# characters, hashes, percent signs, but SUFFIX may contain a leading
       
 62555 -# dot (in which case that matches only a dot).
       
 62556 -func_stripname ()
       
 62557 -{
       
 62558 -  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
       
 62559 -  # positional parameters, so assign one to ordinary parameter first.
       
 62560 -  func_stripname_result=${3}
       
 62561 -  func_stripname_result=${func_stripname_result#"${1}"}
       
 62562 -  func_stripname_result=${func_stripname_result%"${2}"}
       
 62563 -}
       
 62564 -
       
 62565 -# func_opt_split
       
 62566 -func_opt_split ()
       
 62567 -{
       
 62568 -  func_opt_split_opt=${1%%=*}
       
 62569 -  func_opt_split_arg=${1#*=}
       
 62570 -}
       
 62571 -
       
 62572 -# func_lo2o object
       
 62573 -func_lo2o ()
       
 62574 -{
       
 62575 -  case ${1} in
       
 62576 -    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
       
 62577 -    *)    func_lo2o_result=${1} ;;
       
 62578 -  esac
       
 62579 -}
       
 62580 -
       
 62581 -# func_xform libobj-or-source
       
 62582 -func_xform ()
       
 62583 -{
       
 62584 -  func_xform_result=${1%.*}.lo
       
 62585 -}
       
 62586 -
       
 62587 -# func_arith arithmetic-term...
       
 62588 -func_arith ()
       
 62589 -{
       
 62590 -  func_arith_result=$(( $[*] ))
       
 62591 -}
       
 62592 -
       
 62593 -# func_len string
       
 62594 -# STRING may not start with a hyphen.
       
 62595 -func_len ()
       
 62596 -{
       
 62597 -  func_len_result=${#1}
       
 62598 -}
       
 62599 -
       
 62600 -_LT_EOF
       
 62601 +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
       
 62602 +# ------------------------------------------------------
       
 62603 +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
       
 62604 +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
       
 62605 +m4_defun([_LT_PROG_FUNCTION_REPLACE],
       
 62606 +[dnl {
       
 62607 +sed -e '/^$1 ()$/,/^} # $1 /c\
       
 62608 +$1 ()\
       
 62609 +{\
       
 62610 +m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
       
 62611 +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
       
 62612 +  && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 62613 +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 62614 +test 0 -eq $? || _lt_function_replace_fail=:
       
 62615 +])
       
 62616 +
       
 62617 +
       
 62618 +# _LT_PROG_REPLACE_SHELLFNS
       
 62619 +# -------------------------
       
 62620 +# Replace existing portable implementations of several shell functions with
       
 62621 +# equivalent extended shell implementations where those features are available..
       
 62622 +m4_defun([_LT_PROG_REPLACE_SHELLFNS],
       
 62623 +[if test x"$xsi_shell" = xyes; then
       
 62624 +  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
       
 62625 +    case ${1} in
       
 62626 +      */*) func_dirname_result="${1%/*}${2}" ;;
       
 62627 +      *  ) func_dirname_result="${3}" ;;
       
 62628 +    esac])
       
 62629 +
       
 62630 +  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
       
 62631 +    func_basename_result="${1##*/}"])
       
 62632 +
       
 62633 +  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
       
 62634 +    case ${1} in
       
 62635 +      */*) func_dirname_result="${1%/*}${2}" ;;
       
 62636 +      *  ) func_dirname_result="${3}" ;;
       
 62637 +    esac
       
 62638 +    func_basename_result="${1##*/}"])
       
 62639 +
       
 62640 +  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
       
 62641 +    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
       
 62642 +    # positional parameters, so assign one to ordinary parameter first.
       
 62643 +    func_stripname_result=${3}
       
 62644 +    func_stripname_result=${func_stripname_result#"${1}"}
       
 62645 +    func_stripname_result=${func_stripname_result%"${2}"}])
       
 62646 +
       
 62647 +  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
       
 62648 +    func_split_long_opt_name=${1%%=*}
       
 62649 +    func_split_long_opt_arg=${1#*=}])
       
 62650 +
       
 62651 +  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
       
 62652 +    func_split_short_opt_arg=${1#??}
       
 62653 +    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
       
 62654 +
       
 62655 +  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
       
 62656 +    case ${1} in
       
 62657 +      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
       
 62658 +      *)    func_lo2o_result=${1} ;;
       
 62659 +    esac])
       
 62660 +
       
 62661 +  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
       
 62662 +
       
 62663 +  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
       
 62664 +
       
 62665 +  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
       
 62666 +fi
       
 62667 +
       
 62668 +if test x"$lt_shell_append" = xyes; then
       
 62669 +  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
       
 62670 +
       
 62671 +  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
       
 62672 +    func_quote_for_eval "${2}"
       
 62673 +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
       
 62674 +    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
       
 62675 +
       
 62676 +  # Save a `func_append' function call where possible by direct use of '+='
       
 62677 +  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
       
 62678 +    && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 62679 +      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 62680 +  test 0 -eq $? || _lt_function_replace_fail=:
       
 62681 +else
       
 62682 +  # Save a `func_append' function call even when '+=' is not available
       
 62683 +  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
       
 62684 +    && mv -f "$cfgfile.tmp" "$cfgfile" \
       
 62685 +      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
       
 62686 +  test 0 -eq $? || _lt_function_replace_fail=:
       
 62687 +fi
       
 62688 +
       
 62689 +if test x"$_lt_function_replace_fail" = x":"; then
       
 62690 +  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
       
 62691 +fi
       
 62692 +])
       
 62693 +
       
 62694 +# _LT_PATH_CONVERSION_FUNCTIONS
       
 62695 +# -----------------------------
       
 62696 +# Determine which file name conversion functions should be used by
       
 62697 +# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
       
 62698 +# for certain cross-compile configurations and native mingw.
       
 62699 +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
       
 62700 +[AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 62701 +AC_REQUIRE([AC_CANONICAL_BUILD])dnl
       
 62702 +AC_MSG_CHECKING([how to convert $build file names to $host format])
       
 62703 +AC_CACHE_VAL(lt_cv_to_host_file_cmd,
       
 62704 +[case $host in
       
 62705 +  *-*-mingw* )
       
 62706 +    case $build in
       
 62707 +      *-*-mingw* ) # actually msys
       
 62708 +        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
       
 62709 +        ;;
       
 62710 +      *-*-cygwin* )
       
 62711 +        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
       
 62712 +        ;;
       
 62713 +      * ) # otherwise, assume *nix
       
 62714 +        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
       
 62715 +        ;;
       
 62716 +    esac
       
 62717      ;;
       
 62718 -  *) # Bourne compatible functions.
       
 62719 -    cat << \_LT_EOF >> "$cfgfile"
       
 62720 -
       
 62721 -# func_dirname file append nondir_replacement
       
 62722 -# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
       
 62723 -# otherwise set result to NONDIR_REPLACEMENT.
       
 62724 -func_dirname ()
       
 62725 -{
       
 62726 -  # Extract subdirectory from the argument.
       
 62727 -  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
       
 62728 -  if test "X$func_dirname_result" = "X${1}"; then
       
 62729 -    func_dirname_result="${3}"
       
 62730 -  else
       
 62731 -    func_dirname_result="$func_dirname_result${2}"
       
 62732 -  fi
       
 62733 -}
       
 62734 -
       
 62735 -# func_basename file
       
 62736 -func_basename ()
       
 62737 -{
       
 62738 -  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
       
 62739 -}
       
 62740 -
       
 62741 -dnl func_dirname_and_basename
       
 62742 -dnl A portable version of this function is already defined in general.m4sh
       
 62743 -dnl so there is no need for it here.
       
 62744 -
       
 62745 -# func_stripname prefix suffix name
       
 62746 -# strip PREFIX and SUFFIX off of NAME.
       
 62747 -# PREFIX and SUFFIX must not contain globbing or regex special
       
 62748 -# characters, hashes, percent signs, but SUFFIX may contain a leading
       
 62749 -# dot (in which case that matches only a dot).
       
 62750 -# func_strip_suffix prefix name
       
 62751 -func_stripname ()
       
 62752 -{
       
 62753 -  case ${2} in
       
 62754 -    .*) func_stripname_result=`$ECHO "X${3}" \
       
 62755 -           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
       
 62756 -    *)  func_stripname_result=`$ECHO "X${3}" \
       
 62757 -           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
       
 62758 -  esac
       
 62759 -}
       
 62760 -
       
 62761 -# sed scripts:
       
 62762 -my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
       
 62763 -my_sed_long_arg='1s/^-[[^=]]*=//'
       
 62764 -
       
 62765 -# func_opt_split
       
 62766 -func_opt_split ()
       
 62767 -{
       
 62768 -  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
       
 62769 -  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
       
 62770 -}
       
 62771 -
       
 62772 -# func_lo2o object
       
 62773 -func_lo2o ()
       
 62774 -{
       
 62775 -  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
       
 62776 -}
       
 62777 -
       
 62778 -# func_xform libobj-or-source
       
 62779 -func_xform ()
       
 62780 -{
       
 62781 -  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
       
 62782 -}
       
 62783 -
       
 62784 -# func_arith arithmetic-term...
       
 62785 -func_arith ()
       
 62786 -{
       
 62787 -  func_arith_result=`expr "$[@]"`
       
 62788 -}
       
 62789 -
       
 62790 -# func_len string
       
 62791 -# STRING may not start with a hyphen.
       
 62792 -func_len ()
       
 62793 -{
       
 62794 -  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
       
 62795 -}
       
 62796 -
       
 62797 -_LT_EOF
       
 62798 +  *-*-cygwin* )
       
 62799 +    case $build in
       
 62800 +      *-*-mingw* ) # actually msys
       
 62801 +        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
       
 62802 +        ;;
       
 62803 +      *-*-cygwin* )
       
 62804 +        lt_cv_to_host_file_cmd=func_convert_file_noop
       
 62805 +        ;;
       
 62806 +      * ) # otherwise, assume *nix
       
 62807 +        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
       
 62808 +        ;;
       
 62809 +    esac
       
 62810 +    ;;
       
 62811 +  * ) # unhandled hosts (and "normal" native builds)
       
 62812 +    lt_cv_to_host_file_cmd=func_convert_file_noop
       
 62813 +    ;;
       
 62814  esac
       
 62815 -
       
 62816 -case $lt_shell_append in
       
 62817 -  yes)
       
 62818 -    cat << \_LT_EOF >> "$cfgfile"
       
 62819 -
       
 62820 -# func_append var value
       
 62821 -# Append VALUE to the end of shell variable VAR.
       
 62822 -func_append ()
       
 62823 -{
       
 62824 -  eval "$[1]+=\$[2]"
       
 62825 -}
       
 62826 -_LT_EOF
       
 62827 +])
       
 62828 +to_host_file_cmd=$lt_cv_to_host_file_cmd
       
 62829 +AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
       
 62830 +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
       
 62831 +         [0], [convert $build file names to $host format])dnl
       
 62832 +
       
 62833 +AC_MSG_CHECKING([how to convert $build file names to toolchain format])
       
 62834 +AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
       
 62835 +[#assume ordinary cross tools, or native build.
       
 62836 +lt_cv_to_tool_file_cmd=func_convert_file_noop
       
 62837 +case $host in
       
 62838 +  *-*-mingw* )
       
 62839 +    case $build in
       
 62840 +      *-*-mingw* ) # actually msys
       
 62841 +        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
       
 62842 +        ;;
       
 62843 +    esac
       
 62844      ;;
       
 62845 -  *)
       
 62846 -    cat << \_LT_EOF >> "$cfgfile"
       
 62847 -
       
 62848 -# func_append var value
       
 62849 -# Append VALUE to the end of shell variable VAR.
       
 62850 -func_append ()
       
 62851 -{
       
 62852 -  eval "$[1]=\$$[1]\$[2]"
       
 62853 -}
       
 62854 -
       
 62855 -_LT_EOF
       
 62856 -    ;;
       
 62857 -  esac
       
 62858 +esac
       
 62859  ])
       
 62860 +to_tool_file_cmd=$lt_cv_to_tool_file_cmd
       
 62861 +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
       
 62862 +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
       
 62863 +         [0], [convert $build files to toolchain format])dnl
       
 62864 +])# _LT_PATH_CONVERSION_FUNCTIONS
       
 62865 diff --git a/js/src/ctypes/libffi/m4/ltoptions.m4 b/js/src/ctypes/libffi/m4/ltoptions.m4
       
 62866 --- a/js/src/ctypes/libffi/m4/ltoptions.m4
       
 62867 +++ b/js/src/ctypes/libffi/m4/ltoptions.m4
       
 62868 @@ -1,18 +1,19 @@
       
 62869  # Helper functions for option handling.                    -*- Autoconf -*-
       
 62870  #
       
 62871 -#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
       
 62872 +#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
       
 62873 +#   Inc.
       
 62874  #   Written by Gary V. Vaughan, 2004
       
 62875  #
       
 62876  # This file is free software; the Free Software Foundation gives
       
 62877  # unlimited permission to copy and/or distribute it, with or without
       
 62878  # modifications, as long as this notice is preserved.
       
 62879  
       
 62880 -# serial 6 ltoptions.m4
       
 62881 +# serial 7 ltoptions.m4
       
 62882  
       
 62883  # This is to help aclocal find these macros, as it can't see m4_define.
       
 62884  AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
       
 62885  
       
 62886  
       
 62887  # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
       
 62888  # ------------------------------------------
       
 62889  m4_define([_LT_MANGLE_OPTION],
       
 62890 @@ -120,31 +121,31 @@ dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
       
 62891  
       
 62892  # win32-dll
       
 62893  # ---------
       
 62894  # Declare package support for building win32 dll's.
       
 62895  LT_OPTION_DEFINE([LT_INIT], [win32-dll],
       
 62896  [enable_win32_dll=yes
       
 62897  
       
 62898  case $host in
       
 62899 -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
       
 62900 +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
       
 62901    AC_CHECK_TOOL(AS, as, false)
       
 62902    AC_CHECK_TOOL(DLLTOOL, dlltool, false)
       
 62903    AC_CHECK_TOOL(OBJDUMP, objdump, false)
       
 62904    ;;
       
 62905  esac
       
 62906  
       
 62907  test -z "$AS" && AS=as
       
 62908 -_LT_DECL([], [AS],      [0], [Assembler program])dnl
       
 62909 +_LT_DECL([], [AS],      [1], [Assembler program])dnl
       
 62910  
       
 62911  test -z "$DLLTOOL" && DLLTOOL=dlltool
       
 62912 -_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
       
 62913 +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
       
 62914  
       
 62915  test -z "$OBJDUMP" && OBJDUMP=objdump
       
 62916 -_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
       
 62917 +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
       
 62918  ])# win32-dll
       
 62919  
       
 62920  AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
       
 62921  [AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 62922  _LT_SET_OPTION([LT_INIT], [win32-dll])
       
 62923  AC_DIAGNOSE([obsolete],
       
 62924  [$0: Remove this warning and the call to _LT_SET_OPTION when you
       
 62925  put the `win32-dll' option into LT_INIT's first parameter.])
       
 62926 @@ -320,19 +321,34 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], 
       
 62927  
       
 62928  # _LT_WITH_PIC([MODE])
       
 62929  # --------------------
       
 62930  # implement the --with-pic flag, and support the `pic-only' and `no-pic'
       
 62931  # LT_INIT options.
       
 62932  # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
       
 62933  m4_define([_LT_WITH_PIC],
       
 62934  [AC_ARG_WITH([pic],
       
 62935 -    [AS_HELP_STRING([--with-pic],
       
 62936 +    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
       
 62937  	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
       
 62938 -    [pic_mode="$withval"],
       
 62939 +    [lt_p=${PACKAGE-default}
       
 62940 +    case $withval in
       
 62941 +    yes|no) pic_mode=$withval ;;
       
 62942 +    *)
       
 62943 +      pic_mode=default
       
 62944 +      # Look at the argument we got.  We use all the common list separators.
       
 62945 +      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
       
 62946 +      for lt_pkg in $withval; do
       
 62947 +	IFS="$lt_save_ifs"
       
 62948 +	if test "X$lt_pkg" = "X$lt_p"; then
       
 62949 +	  pic_mode=yes
       
 62950 +	fi
       
 62951 +      done
       
 62952 +      IFS="$lt_save_ifs"
       
 62953 +      ;;
       
 62954 +    esac],
       
 62955      [pic_mode=default])
       
 62956  
       
 62957  test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
       
 62958  
       
 62959  _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
       
 62960  ])# _LT_WITH_PIC
       
 62961  
       
 62962  LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
       
 62963 diff --git a/js/src/ctypes/libffi/m4/ltversion.m4 b/js/src/ctypes/libffi/m4/ltversion.m4
       
 62964 --- a/js/src/ctypes/libffi/m4/ltversion.m4
       
 62965 +++ b/js/src/ctypes/libffi/m4/ltversion.m4
       
 62966 @@ -2,22 +2,22 @@
       
 62967  #
       
 62968  #   Copyright (C) 2004 Free Software Foundation, Inc.
       
 62969  #   Written by Scott James Remnant, 2004
       
 62970  #
       
 62971  # This file is free software; the Free Software Foundation gives
       
 62972  # unlimited permission to copy and/or distribute it, with or without
       
 62973  # modifications, as long as this notice is preserved.
       
 62974  
       
 62975 -# Generated from ltversion.in.
       
 62976 +# @configure_input@
       
 62977  
       
 62978 -# serial 3017 ltversion.m4
       
 62979 +# serial 3337 ltversion.m4
       
 62980  # This file is part of GNU Libtool
       
 62981  
       
 62982 -m4_define([LT_PACKAGE_VERSION], [2.2.6b])
       
 62983 -m4_define([LT_PACKAGE_REVISION], [1.3017])
       
 62984 +m4_define([LT_PACKAGE_VERSION], [2.4.2])
       
 62985 +m4_define([LT_PACKAGE_REVISION], [1.3337])
       
 62986  
       
 62987  AC_DEFUN([LTVERSION_VERSION],
       
 62988 -[macro_version='2.2.6b'
       
 62989 -macro_revision='1.3017'
       
 62990 +[macro_version='2.4.2'
       
 62991 +macro_revision='1.3337'
       
 62992  _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
       
 62993  _LT_DECL(, macro_revision, 0)
       
 62994  ])
       
 62995 diff --git a/js/src/ctypes/libffi/m4/lt~obsolete.m4 b/js/src/ctypes/libffi/m4/lt~obsolete.m4
       
 62996 --- a/js/src/ctypes/libffi/m4/lt~obsolete.m4
       
 62997 +++ b/js/src/ctypes/libffi/m4/lt~obsolete.m4
       
 62998 @@ -1,18 +1,18 @@
       
 62999  # lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
       
 63000  #
       
 63001 -#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
       
 63002 +#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
       
 63003  #   Written by Scott James Remnant, 2004.
       
 63004  #
       
 63005  # This file is free software; the Free Software Foundation gives
       
 63006  # unlimited permission to copy and/or distribute it, with or without
       
 63007  # modifications, as long as this notice is preserved.
       
 63008  
       
 63009 -# serial 4 lt~obsolete.m4
       
 63010 +# serial 5 lt~obsolete.m4
       
 63011  
       
 63012  # These exist entirely to fool aclocal when bootstrapping libtool.
       
 63013  #
       
 63014  # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
       
 63015  # which have later been changed to m4_define as they aren't part of the
       
 63016  # exported API, or moved to Autoconf or Automake where they belong.
       
 63017  #
       
 63018  # The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
       
 63019 @@ -72,21 +72,27 @@ m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN
       
 63020  m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
       
 63021  m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
       
 63022  m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
       
 63023  m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
       
 63024  m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
       
 63025  m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
       
 63026  m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
       
 63027  m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
       
 63028 -m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
       
 63029  m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
       
 63030  m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
       
 63031  m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
       
 63032  m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
       
 63033  m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
       
 63034  m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
       
 63035  m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
       
 63036  m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
       
 63037  m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
       
 63038  m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
       
 63039  m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
       
 63040  m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
       
 63041 +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
       
 63042 +m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
       
 63043 +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
       
 63044 +m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
       
 63045 +m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
       
 63046 +m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
       
 63047 +m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
       
 63048 diff --git a/js/src/ctypes/libffi/man/Makefile.am b/js/src/ctypes/libffi/man/Makefile.am
       
 63049 --- a/js/src/ctypes/libffi/man/Makefile.am
       
 63050 +++ b/js/src/ctypes/libffi/man/Makefile.am
       
 63051 @@ -1,8 +1,8 @@
       
 63052  ## Process this with automake to create Makefile.in
       
 63053  
       
 63054  AUTOMAKE_OPTIONS=foreign
       
 63055  
       
 63056 -EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3
       
 63057 +EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
       
 63058  
       
 63059 -man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3
       
 63060 +man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
       
 63061  
       
 63062 diff --git a/js/src/ctypes/libffi/man/Makefile.in b/js/src/ctypes/libffi/man/Makefile.in
       
 63063 --- a/js/src/ctypes/libffi/man/Makefile.in
       
 63064 +++ b/js/src/ctypes/libffi/man/Makefile.in
       
 63065 @@ -1,25 +1,69 @@
       
 63066 -# Makefile.in generated by automake 1.11.1 from Makefile.am.
       
 63067 +# Makefile.in generated by automake 1.13.4 from Makefile.am.
       
 63068  # @configure_input@
       
 63069  
       
 63070 -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
       
 63071 -# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
       
 63072 -# Inc.
       
 63073 +# Copyright (C) 1994-2013 Free Software Foundation, Inc.
       
 63074 +
       
 63075  # This Makefile.in is free software; the Free Software Foundation
       
 63076  # gives unlimited permission to copy and/or distribute it,
       
 63077  # with or without modifications, as long as this notice is preserved.
       
 63078  
       
 63079  # This program is distributed in the hope that it will be useful,
       
 63080  # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
       
 63081  # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
       
 63082  # PARTICULAR PURPOSE.
       
 63083  
       
 63084  @SET_MAKE@
       
 63085  VPATH = @srcdir@
       
 63086 +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
       
 63087 +am__make_running_with_option = \
       
 63088 +  case $${target_option-} in \
       
 63089 +      ?) ;; \
       
 63090 +      *) echo "am__make_running_with_option: internal error: invalid" \
       
 63091 +              "target option '$${target_option-}' specified" >&2; \
       
 63092 +         exit 1;; \
       
 63093 +  esac; \
       
 63094 +  has_opt=no; \
       
 63095 +  sane_makeflags=$$MAKEFLAGS; \
       
 63096 +  if $(am__is_gnu_make); then \
       
 63097 +    sane_makeflags=$$MFLAGS; \
       
 63098 +  else \
       
 63099 +    case $$MAKEFLAGS in \
       
 63100 +      *\\[\ \	]*) \
       
 63101 +        bs=\\; \
       
 63102 +        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
       
 63103 +          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
       
 63104 +    esac; \
       
 63105 +  fi; \
       
 63106 +  skip_next=no; \
       
 63107 +  strip_trailopt () \
       
 63108 +  { \
       
 63109 +    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
       
 63110 +  }; \
       
 63111 +  for flg in $$sane_makeflags; do \
       
 63112 +    test $$skip_next = yes && { skip_next=no; continue; }; \
       
 63113 +    case $$flg in \
       
 63114 +      *=*|--*) continue;; \
       
 63115 +        -*I) strip_trailopt 'I'; skip_next=yes;; \
       
 63116 +      -*I?*) strip_trailopt 'I';; \
       
 63117 +        -*O) strip_trailopt 'O'; skip_next=yes;; \
       
 63118 +      -*O?*) strip_trailopt 'O';; \
       
 63119 +        -*l) strip_trailopt 'l'; skip_next=yes;; \
       
 63120 +      -*l?*) strip_trailopt 'l';; \
       
 63121 +      -[dEDm]) skip_next=yes;; \
       
 63122 +      -[JT]) skip_next=yes;; \
       
 63123 +    esac; \
       
 63124 +    case $$flg in \
       
 63125 +      *$$target_option*) has_opt=yes; break;; \
       
 63126 +    esac; \
       
 63127 +  done; \
       
 63128 +  test $$has_opt = yes
       
 63129 +am__make_dryrun = (target_option=n; $(am__make_running_with_option))
       
 63130 +am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
       
 63131  pkgdatadir = $(datadir)/@PACKAGE@
       
 63132  pkgincludedir = $(includedir)/@PACKAGE@
       
 63133  pkglibdir = $(libdir)/@PACKAGE@
       
 63134  pkglibexecdir = $(libexecdir)/@PACKAGE@
       
 63135  am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
       
 63136  install_sh_DATA = $(install_sh) -c -m 644
       
 63137  install_sh_PROGRAM = $(install_sh) -c
       
 63138  install_sh_SCRIPT = $(install_sh) -c
       
 63139 @@ -30,28 +74,57 @@ PRE_INSTALL = :
       
 63140  POST_INSTALL = :
       
 63141  NORMAL_UNINSTALL = :
       
 63142  PRE_UNINSTALL = :
       
 63143  POST_UNINSTALL = :
       
 63144  build_triplet = @build@
       
 63145  host_triplet = @host@
       
 63146  target_triplet = @target@
       
 63147  subdir = man
       
 63148 -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
       
 63149 +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
       
 63150  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
       
 63151 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
       
 63152 +am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
       
 63153 +	$(top_srcdir)/m4/ax_append_flag.m4 \
       
 63154 +	$(top_srcdir)/m4/ax_cc_maxopt.m4 \
       
 63155 +	$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
       
 63156 +	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
       
 63157 +	$(top_srcdir)/m4/ax_compiler_vendor.m4 \
       
 63158 +	$(top_srcdir)/m4/ax_configure_args.m4 \
       
 63159 +	$(top_srcdir)/m4/ax_enable_builddir.m4 \
       
 63160 +	$(top_srcdir)/m4/ax_gcc_archflag.m4 \
       
 63161 +	$(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
       
 63162 +	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
       
 63163 +	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
       
 63164 +	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
       
 63165  	$(top_srcdir)/configure.ac
       
 63166  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
       
 63167  	$(ACLOCAL_M4)
       
 63168  mkinstalldirs = $(install_sh) -d
       
 63169  CONFIG_HEADER = $(top_builddir)/fficonfig.h
       
 63170  CONFIG_CLEAN_FILES =
       
 63171  CONFIG_CLEAN_VPATH_FILES =
       
 63172 +AM_V_P = $(am__v_P_@AM_V@)
       
 63173 +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
       
 63174 +am__v_P_0 = false
       
 63175 +am__v_P_1 = :
       
 63176 +AM_V_GEN = $(am__v_GEN_@AM_V@)
       
 63177 +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
       
 63178 +am__v_GEN_0 = @echo "  GEN     " $@;
       
 63179 +am__v_GEN_1 = 
       
 63180 +AM_V_at = $(am__v_at_@AM_V@)
       
 63181 +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
       
 63182 +am__v_at_0 = @
       
 63183 +am__v_at_1 = 
       
 63184  SOURCES =
       
 63185  DIST_SOURCES =
       
 63186 +am__can_run_installinfo = \
       
 63187 +  case $$AM_UPDATE_INFO_DIR in \
       
 63188 +    n|no|NO) false;; \
       
 63189 +    *) (install-info --version) >/dev/null 2>&1;; \
       
 63190 +  esac
       
 63191  am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
       
 63192  am__vpath_adj = case $$p in \
       
 63193      $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
       
 63194      *) f=$$p;; \
       
 63195    esac;
       
 63196  am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
       
 63197  am__install_max = 40
       
 63198  am__nobase_strip_setup = \
       
 63199 @@ -63,24 +136,32 @@ am__nobase_list = $(am__nobase_strip_set
       
 63200    sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
       
 63201    $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
       
 63202      if (++n[$$2] == $(am__install_max)) \
       
 63203        { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
       
 63204      END { for (dir in files) print dir, files[dir] }'
       
 63205  am__base_list = \
       
 63206    sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
       
 63207    sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
       
 63208 +am__uninstall_files_from_dir = { \
       
 63209 +  test -z "$$files" \
       
 63210 +    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
       
 63211 +    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
       
 63212 +         $(am__cd) "$$dir" && rm -f $$files; }; \
       
 63213 +  }
       
 63214  man3dir = $(mandir)/man3
       
 63215  am__installdirs = "$(DESTDIR)$(man3dir)"
       
 63216  NROFF = nroff
       
 63217  MANS = $(man_MANS)
       
 63218 +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
       
 63219  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
       
 63220  ACLOCAL = @ACLOCAL@
       
 63221  ALLOCA = @ALLOCA@
       
 63222  AMTAR = @AMTAR@
       
 63223 +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
       
 63224  AM_LTLDFLAGS = @AM_LTLDFLAGS@
       
 63225  AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@
       
 63226  AR = @AR@
       
 63227  AUTOCONF = @AUTOCONF@
       
 63228  AUTOHEADER = @AUTOHEADER@
       
 63229  AUTOMAKE = @AUTOMAKE@
       
 63230  AWK = @AWK@
       
 63231  CC = @CC@
       
 63232 @@ -89,75 +170,82 @@ CCASDEPMODE = @CCASDEPMODE@
       
 63233  CCASFLAGS = @CCASFLAGS@
       
 63234  CCDEPMODE = @CCDEPMODE@
       
 63235  CFLAGS = @CFLAGS@
       
 63236  CPP = @CPP@
       
 63237  CPPFLAGS = @CPPFLAGS@
       
 63238  CYGPATH_W = @CYGPATH_W@
       
 63239  DEFS = @DEFS@
       
 63240  DEPDIR = @DEPDIR@
       
 63241 +DLLTOOL = @DLLTOOL@
       
 63242  DSYMUTIL = @DSYMUTIL@
       
 63243  DUMPBIN = @DUMPBIN@
       
 63244  ECHO_C = @ECHO_C@
       
 63245  ECHO_N = @ECHO_N@
       
 63246  ECHO_T = @ECHO_T@
       
 63247  EGREP = @EGREP@
       
 63248  EXEEXT = @EXEEXT@
       
 63249 +FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
       
 63250  FGREP = @FGREP@
       
 63251  GREP = @GREP@
       
 63252  HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
       
 63253 +HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@
       
 63254  INSTALL = @INSTALL@
       
 63255  INSTALL_DATA = @INSTALL_DATA@
       
 63256  INSTALL_PROGRAM = @INSTALL_PROGRAM@
       
 63257  INSTALL_SCRIPT = @INSTALL_SCRIPT@
       
 63258  INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
       
 63259  LD = @LD@
       
 63260  LDFLAGS = @LDFLAGS@
       
 63261  LIBOBJS = @LIBOBJS@
       
 63262  LIBS = @LIBS@
       
 63263  LIBTOOL = @LIBTOOL@
       
 63264  LIPO = @LIPO@
       
 63265  LN_S = @LN_S@
       
 63266  LTLIBOBJS = @LTLIBOBJS@
       
 63267  MAINT = @MAINT@
       
 63268  MAKEINFO = @MAKEINFO@
       
 63269 +MANIFEST_TOOL = @MANIFEST_TOOL@
       
 63270  MKDIR_P = @MKDIR_P@
       
 63271  NM = @NM@
       
 63272  NMEDIT = @NMEDIT@
       
 63273  OBJDUMP = @OBJDUMP@
       
 63274  OBJEXT = @OBJEXT@
       
 63275  OTOOL = @OTOOL@
       
 63276  OTOOL64 = @OTOOL64@
       
 63277  PACKAGE = @PACKAGE@
       
 63278  PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
       
 63279  PACKAGE_NAME = @PACKAGE_NAME@
       
 63280  PACKAGE_STRING = @PACKAGE_STRING@
       
 63281  PACKAGE_TARNAME = @PACKAGE_TARNAME@
       
 63282  PACKAGE_URL = @PACKAGE_URL@
       
 63283  PACKAGE_VERSION = @PACKAGE_VERSION@
       
 63284  PATH_SEPARATOR = @PATH_SEPARATOR@
       
 63285 +PRTDIAG = @PRTDIAG@
       
 63286  RANLIB = @RANLIB@
       
 63287  SED = @SED@
       
 63288  SET_MAKE = @SET_MAKE@
       
 63289  SHELL = @SHELL@
       
 63290  STRIP = @STRIP@
       
 63291  TARGET = @TARGET@
       
 63292  TARGETDIR = @TARGETDIR@
       
 63293  VERSION = @VERSION@
       
 63294  abs_builddir = @abs_builddir@
       
 63295  abs_srcdir = @abs_srcdir@
       
 63296  abs_top_builddir = @abs_top_builddir@
       
 63297  abs_top_srcdir = @abs_top_srcdir@
       
 63298 +ac_ct_AR = @ac_ct_AR@
       
 63299  ac_ct_CC = @ac_ct_CC@
       
 63300  ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
       
 63301  am__include = @am__include@
       
 63302  am__leading_dot = @am__leading_dot@
       
 63303  am__quote = @am__quote@
       
 63304  am__tar = @am__tar@
       
 63305  am__untar = @am__untar@
       
 63306 +ax_enable_builddir_sed = @ax_enable_builddir_sed@
       
 63307  bindir = @bindir@
       
 63308  build = @build@
       
 63309  build_alias = @build_alias@
       
 63310  build_cpu = @build_cpu@
       
 63311  build_os = @build_os@
       
 63312  build_vendor = @build_vendor@
       
 63313  builddir = @builddir@
       
 63314  datadir = @datadir@
       
 63315 @@ -173,41 +261,41 @@ host_vendor = @host_vendor@
       
 63316  htmldir = @htmldir@
       
 63317  includedir = @includedir@
       
 63318  infodir = @infodir@
       
 63319  install_sh = @install_sh@
       
 63320  libdir = @libdir@
       
 63321  libexecdir = @libexecdir@
       
 63322  localedir = @localedir@
       
 63323  localstatedir = @localstatedir@
       
 63324 -lt_ECHO = @lt_ECHO@
       
 63325  mandir = @mandir@
       
 63326  mkdir_p = @mkdir_p@
       
 63327  oldincludedir = @oldincludedir@
       
 63328  pdfdir = @pdfdir@
       
 63329  prefix = @prefix@
       
 63330  program_transform_name = @program_transform_name@
       
 63331  psdir = @psdir@
       
 63332  sbindir = @sbindir@
       
 63333  sharedstatedir = @sharedstatedir@
       
 63334  srcdir = @srcdir@
       
 63335 +sys_symbol_underscore = @sys_symbol_underscore@
       
 63336  sysconfdir = @sysconfdir@
       
 63337  target = @target@
       
 63338  target_alias = @target_alias@
       
 63339  target_cpu = @target_cpu@
       
 63340  target_os = @target_os@
       
 63341  target_vendor = @target_vendor@
       
 63342  toolexecdir = @toolexecdir@
       
 63343  toolexeclibdir = @toolexeclibdir@
       
 63344  top_build_prefix = @top_build_prefix@
       
 63345  top_builddir = @top_builddir@
       
 63346  top_srcdir = @top_srcdir@
       
 63347  AUTOMAKE_OPTIONS = foreign
       
 63348 -EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3
       
 63349 -man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3
       
 63350 +EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
       
 63351 +man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
       
 63352  all: all-am
       
 63353  
       
 63354  .SUFFIXES:
       
 63355  $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
       
 63356  	@for dep in $?; do \
       
 63357  	  case '$(am__configure_deps)' in \
       
 63358  	    *$$dep*) \
       
 63359  	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
       
 63360 @@ -239,21 +327,28 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
       
 63361  
       
 63362  mostlyclean-libtool:
       
 63363  	-rm -f *.lo
       
 63364  
       
 63365  clean-libtool:
       
 63366  	-rm -rf .libs _libs
       
 63367  install-man3: $(man_MANS)
       
 63368  	@$(NORMAL_INSTALL)
       
 63369 -	test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)"
       
 63370 -	@list=''; test -n "$(man3dir)" || exit 0; \
       
 63371 -	{ for i in $$list; do echo "$$i"; done; \
       
 63372 -	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
       
 63373 -	  sed -n '/\.3[a-z]*$$/p'; \
       
 63374 +	@list1=''; \
       
 63375 +	list2='$(man_MANS)'; \
       
 63376 +	test -n "$(man3dir)" \
       
 63377 +	  && test -n "`echo $$list1$$list2`" \
       
 63378 +	  || exit 0; \
       
 63379 +	echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
       
 63380 +	$(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
       
 63381 +	{ for i in $$list1; do echo "$$i"; done;  \
       
 63382 +	if test -n "$$list2"; then \
       
 63383 +	  for i in $$list2; do echo "$$i"; done \
       
 63384 +	    | sed -n '/\.3[a-z]*$$/p'; \
       
 63385 +	fi; \
       
 63386  	} | while read p; do \
       
 63387  	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
       
 63388  	  echo "$$d$$p"; echo "$$p"; \
       
 63389  	done | \
       
 63390  	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
       
 63391  	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
       
 63392  	sed 'N;N;s,\n, ,g' | { \
       
 63393  	list=; while read file base inst; do \
       
 63394 @@ -272,40 +367,25 @@ install-man3: $(man_MANS)
       
 63395  uninstall-man3:
       
 63396  	@$(NORMAL_UNINSTALL)
       
 63397  	@list=''; test -n "$(man3dir)" || exit 0; \
       
 63398  	files=`{ for i in $$list; do echo "$$i"; done; \
       
 63399  	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
       
 63400  	  sed -n '/\.3[a-z]*$$/p'; \
       
 63401  	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
       
 63402  	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
       
 63403 -	test -z "$$files" || { \
       
 63404 -	  echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \
       
 63405 -	  cd "$(DESTDIR)$(man3dir)" && rm -f $$files; }
       
 63406 -tags: TAGS
       
 63407 -TAGS:
       
 63408 +	dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
       
 63409 +tags TAGS:
       
 63410  
       
 63411 -ctags: CTAGS
       
 63412 -CTAGS:
       
 63413 +ctags CTAGS:
       
 63414 +
       
 63415 +cscope cscopelist:
       
 63416  
       
 63417  
       
 63418  distdir: $(DISTFILES)
       
 63419 -	@list='$(MANS)'; if test -n "$$list"; then \
       
 63420 -	  list=`for p in $$list; do \
       
 63421 -	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
       
 63422 -	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
       
 63423 -	  if test -n "$$list" && \
       
 63424 -	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
       
 63425 -	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
       
 63426 -	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
       
 63427 -	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
       
 63428 -	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
       
 63429 -	    exit 1; \
       
 63430 -	  else :; fi; \
       
 63431 -	else :; fi
       
 63432  	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
       
 63433  	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
       
 63434  	list='$(DISTFILES)'; \
       
 63435  	  dist_files=`for file in $$list; do echo $$file; done | \
       
 63436  	  sed -e "s|^$$srcdirstrip/||;t" \
       
 63437  	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
       
 63438  	case $$dist_files in \
       
 63439  	  */*) $(MKDIR_P) `echo "$$dist_files" | \
       
 63440 @@ -342,20 +422,25 @@ install-exec: install-exec-am
       
 63441  install-data: install-data-am
       
 63442  uninstall: uninstall-am
       
 63443  
       
 63444  install-am: all-am
       
 63445  	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
       
 63446  
       
 63447  installcheck: installcheck-am
       
 63448  install-strip:
       
 63449 -	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 63450 -	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 63451 -	  `test -z '$(STRIP)' || \
       
 63452 -	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
       
 63453 +	if test -z '$(STRIP)'; then \
       
 63454 +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 63455 +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 63456 +	      install; \
       
 63457 +	else \
       
 63458 +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 63459 +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 63460 +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
       
 63461 +	fi
       
 63462  mostlyclean-generic:
       
 63463  
       
 63464  clean-generic:
       
 63465  
       
 63466  distclean-generic:
       
 63467  	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
       
 63468  	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
       
 63469  
       
 63470 @@ -428,23 +513,24 @@ ps-am:
       
 63471  
       
 63472  uninstall-am: uninstall-man
       
 63473  
       
 63474  uninstall-man: uninstall-man3
       
 63475  
       
 63476  .MAKE: install-am install-strip
       
 63477  
       
 63478  .PHONY: all all-am check check-am clean clean-generic clean-libtool \
       
 63479 -	distclean distclean-generic distclean-libtool distdir dvi \
       
 63480 -	dvi-am html html-am info info-am install install-am \
       
 63481 -	install-data install-data-am install-dvi install-dvi-am \
       
 63482 -	install-exec install-exec-am install-html install-html-am \
       
 63483 -	install-info install-info-am install-man install-man3 \
       
 63484 -	install-pdf install-pdf-am install-ps install-ps-am \
       
 63485 -	install-strip installcheck installcheck-am installdirs \
       
 63486 -	maintainer-clean maintainer-clean-generic mostlyclean \
       
 63487 -	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
       
 63488 -	uninstall uninstall-am uninstall-man uninstall-man3
       
 63489 +	cscopelist-am ctags-am distclean distclean-generic \
       
 63490 +	distclean-libtool distdir dvi dvi-am html html-am info info-am \
       
 63491 +	install install-am install-data install-data-am install-dvi \
       
 63492 +	install-dvi-am install-exec install-exec-am install-html \
       
 63493 +	install-html-am install-info install-info-am install-man \
       
 63494 +	install-man3 install-pdf install-pdf-am install-ps \
       
 63495 +	install-ps-am install-strip installcheck installcheck-am \
       
 63496 +	installdirs maintainer-clean maintainer-clean-generic \
       
 63497 +	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
       
 63498 +	ps ps-am tags-am uninstall uninstall-am uninstall-man \
       
 63499 +	uninstall-man3
       
 63500  
       
 63501  
       
 63502  # Tell versions [3.59,3.63) of GNU make to not export all variables.
       
 63503  # Otherwise a system limit (for SysV at least) may be exceeded.
       
 63504  .NOEXPORT:
       
 63505 diff --git a/js/src/ctypes/libffi/man/ffi.3 b/js/src/ctypes/libffi/man/ffi.3
       
 63506 --- a/js/src/ctypes/libffi/man/ffi.3
       
 63507 +++ b/js/src/ctypes/libffi/man/ffi.3
       
 63508 @@ -11,21 +11,31 @@ libffi, -lffi
       
 63509  .Fo ffi_prep_cif
       
 63510  .Fa "ffi_cif *cif"
       
 63511  .Fa "ffi_abi abi"
       
 63512  .Fa "unsigned int nargs"
       
 63513  .Fa "ffi_type *rtype"
       
 63514  .Fa "ffi_type **atypes"
       
 63515  .Fc
       
 63516  .Ft void
       
 63517 +.Fo ffi_prep_cif_var
       
 63518 +.Fa "ffi_cif *cif"
       
 63519 +.Fa "ffi_abi abi"
       
 63520 +.Fa "unsigned int nfixedargs"
       
 63521 +.Fa "unsigned int ntotalargs"
       
 63522 +.Fa "ffi_type *rtype"
       
 63523 +.Fa "ffi_type **atypes"
       
 63524 +.Fc
       
 63525 +.Ft void
       
 63526  .Fo ffi_call
       
 63527  .Fa "ffi_cif *cif"
       
 63528  .Fa "void (*fn)(void)"
       
 63529  .Fa "void *rvalue"
       
 63530  .Fa "void **avalue"
       
 63531  .Fc
       
 63532  .Sh DESCRIPTION
       
 63533  The foreign function interface provides a mechanism by which a function can
       
 63534  generate a call to another function at runtime without requiring knowledge of
       
 63535  the called function's interface at compile time.
       
 63536  .Sh SEE ALSO
       
 63537  .Xr ffi_prep_cif 3 ,
       
 63538 +.Xr ffi_prep_cif_var 3 ,
       
 63539  .Xr ffi_call 3
       
 63540 diff --git a/js/src/ctypes/libffi/man/ffi_prep_cif.3 b/js/src/ctypes/libffi/man/ffi_prep_cif.3
       
 63541 --- a/js/src/ctypes/libffi/man/ffi_prep_cif.3
       
 63542 +++ b/js/src/ctypes/libffi/man/ffi_prep_cif.3
       
 63543 @@ -32,17 +32,19 @@ is an array of
       
 63544  .Fa nargs
       
 63545  pointers to
       
 63546  .Nm ffi_type
       
 63547  structs that describe the data type, size and alignment of each argument.
       
 63548  .Fa rtype
       
 63549  points to an
       
 63550  .Nm ffi_type
       
 63551  that describes the data type, size and alignment of the
       
 63552 -return value.
       
 63553 +return value. Note that to call a variadic function
       
 63554 +.Nm ffi_prep_cif_var
       
 63555 +must be used instead.
       
 63556  .Sh RETURN VALUES
       
 63557  Upon successful completion,
       
 63558  .Nm ffi_prep_cif
       
 63559  returns
       
 63560  .Nm FFI_OK .
       
 63561  It will return
       
 63562  .Nm FFI_BAD_TYPEDEF
       
 63563  if
       
 63564 @@ -54,13 +56,13 @@ or
       
 63565  or
       
 63566  .Fa rtype
       
 63567  is malformed. If
       
 63568  .Fa abi
       
 63569  does not refer to a valid ABI,
       
 63570  .Nm FFI_BAD_ABI
       
 63571  will be returned. Available ABIs are
       
 63572  defined in
       
 63573 -.Nm <ffitarget.h>
       
 63574 -.
       
 63575 +.Nm <ffitarget.h> .
       
 63576  .Sh SEE ALSO
       
 63577  .Xr ffi 3 ,
       
 63578 -.Xr ffi_call 3 
       
 63579 +.Xr ffi_call 3 ,
       
 63580 +.Xr ffi_prep_cif_var 3
       
 63581 diff --git a/js/src/ctypes/libffi/man/ffi_prep_cif_var.3 b/js/src/ctypes/libffi/man/ffi_prep_cif_var.3
       
 63582 new file mode 100644
       
 63583 --- /dev/null
       
 63584 +++ b/js/src/ctypes/libffi/man/ffi_prep_cif_var.3
       
 63585 @@ -0,0 +1,73 @@
       
 63586 +.Dd January 25, 2011
       
 63587 +.Dt ffi_prep_cif_var 3
       
 63588 +.Sh NAME
       
 63589 +.Nm ffi_prep_cif_var
       
 63590 +.Nd Prepare a
       
 63591 +.Nm ffi_cif
       
 63592 +structure for use with
       
 63593 +.Nm ffi_call
       
 63594 +for variadic functions.
       
 63595 +.Sh SYNOPSIS
       
 63596 +.In ffi.h
       
 63597 +.Ft ffi_status
       
 63598 +.Fo ffi_prep_cif_var
       
 63599 +.Fa "ffi_cif *cif"
       
 63600 +.Fa "ffi_abi abi"
       
 63601 +.Fa "unsigned int nfixedargs"
       
 63602 +.Fa "unsigned int ntotalargs"
       
 63603 +.Fa "ffi_type *rtype"
       
 63604 +.Fa "ffi_type **atypes"
       
 63605 +.Fc
       
 63606 +.Sh DESCRIPTION
       
 63607 +The
       
 63608 +.Nm ffi_prep_cif_var
       
 63609 +function prepares a
       
 63610 +.Nm ffi_cif
       
 63611 +structure for use with
       
 63612 +.Nm ffi_call
       
 63613 +for variadic functions.
       
 63614 +.Fa abi
       
 63615 +specifies a set of calling conventions to use.
       
 63616 +.Fa atypes
       
 63617 +is an array of
       
 63618 +.Fa ntotalargs
       
 63619 +pointers to
       
 63620 +.Nm ffi_type
       
 63621 +structs that describe the data type, size and alignment of each argument.
       
 63622 +.Fa rtype
       
 63623 +points to an
       
 63624 +.Nm ffi_type
       
 63625 +that describes the data type, size and alignment of the
       
 63626 +return value.
       
 63627 +.Fa nfixedargs
       
 63628 +must contain the number of fixed (non-variadic) arguments.
       
 63629 +Note that to call a non-variadic function
       
 63630 +.Nm ffi_prep_cif
       
 63631 +must be used.
       
 63632 +.Sh RETURN VALUES
       
 63633 +Upon successful completion,
       
 63634 +.Nm ffi_prep_cif_var
       
 63635 +returns
       
 63636 +.Nm FFI_OK .
       
 63637 +It will return
       
 63638 +.Nm FFI_BAD_TYPEDEF
       
 63639 +if
       
 63640 +.Fa cif
       
 63641 +is
       
 63642 +.Nm NULL
       
 63643 +or
       
 63644 +.Fa atypes
       
 63645 +or
       
 63646 +.Fa rtype
       
 63647 +is malformed. If
       
 63648 +.Fa abi
       
 63649 +does not refer to a valid ABI,
       
 63650 +.Nm FFI_BAD_ABI
       
 63651 +will be returned. Available ABIs are
       
 63652 +defined in
       
 63653 +.Nm <ffitarget.h>
       
 63654 +.
       
 63655 +.Sh SEE ALSO
       
 63656 +.Xr ffi 3 ,
       
 63657 +.Xr ffi_call 3 ,
       
 63658 +.Xr ffi_prep_cif 3
       
 63659 diff --git a/js/src/ctypes/libffi/mdate-sh b/js/src/ctypes/libffi/mdate-sh
       
 63660 --- a/js/src/ctypes/libffi/mdate-sh
       
 63661 +++ b/js/src/ctypes/libffi/mdate-sh
       
 63662 @@ -1,106 +1,126 @@
       
 63663  #!/bin/sh
       
 63664  # Get modification time of a file or directory and pretty-print it.
       
 63665  
       
 63666 -scriptversion=2005-06-29.22
       
 63667 +scriptversion=2010-08-21.06; # UTC
       
 63668  
       
 63669 -# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software
       
 63670 -# Foundation, Inc.
       
 63671 +# Copyright (C) 1995-2013 Free Software Foundation, Inc.
       
 63672  # written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
       
 63673  #
       
 63674  # This program is free software; you can redistribute it and/or modify
       
 63675  # it under the terms of the GNU General Public License as published by
       
 63676  # the Free Software Foundation; either version 2, or (at your option)
       
 63677  # any later version.
       
 63678  #
       
 63679  # This program is distributed in the hope that it will be useful,
       
 63680  # but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 63681  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 63682  # GNU General Public License for more details.
       
 63683  #
       
 63684  # You should have received a copy of the GNU General Public License
       
 63685 -# along with this program; if not, write to the Free Software Foundation,
       
 63686 -# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       
 63687 +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
       
 63688  
       
 63689  # As a special exception to the GNU General Public License, if you
       
 63690  # distribute this file as part of a program that contains a
       
 63691  # configuration script generated by Autoconf, you may include it under
       
 63692  # the same distribution terms that you use for the rest of that program.
       
 63693  
       
 63694  # This file is maintained in Automake, please report
       
 63695  # bugs to <bug-automake@gnu.org> or send patches to
       
 63696  # <automake-patches@gnu.org>.
       
 63697  
       
 63698 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
       
 63699 +  emulate sh
       
 63700 +  NULLCMD=:
       
 63701 +  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
       
 63702 +  # is contrary to our usage.  Disable this feature.
       
 63703 +  alias -g '${1+"$@"}'='"$@"'
       
 63704 +  setopt NO_GLOB_SUBST
       
 63705 +fi
       
 63706 +
       
 63707  case $1 in
       
 63708    '')
       
 63709 -     echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
       
 63710 +     echo "$0: No file.  Try '$0 --help' for more information." 1>&2
       
 63711       exit 1;
       
 63712       ;;
       
 63713    -h | --h*)
       
 63714      cat <<\EOF
       
 63715  Usage: mdate-sh [--help] [--version] FILE
       
 63716  
       
 63717 -Pretty-print the modification time of FILE.
       
 63718 +Pretty-print the modification day of FILE, in the format:
       
 63719 +1 January 1970
       
 63720  
       
 63721  Report bugs to <bug-automake@gnu.org>.
       
 63722  EOF
       
 63723      exit $?
       
 63724      ;;
       
 63725    -v | --v*)
       
 63726      echo "mdate-sh $scriptversion"
       
 63727      exit $?
       
 63728      ;;
       
 63729  esac
       
 63730  
       
 63731 +error ()
       
 63732 +{
       
 63733 +  echo "$0: $1" >&2
       
 63734 +  exit 1
       
 63735 +}
       
 63736 +
       
 63737 +
       
 63738  # Prevent date giving response in another language.
       
 63739  LANG=C
       
 63740  export LANG
       
 63741  LC_ALL=C
       
 63742  export LC_ALL
       
 63743  LC_TIME=C
       
 63744  export LC_TIME
       
 63745  
       
 63746  # GNU ls changes its time format in response to the TIME_STYLE
       
 63747 -# variable.  Since we cannot assume `unset' works, revert this
       
 63748 +# variable.  Since we cannot assume 'unset' works, revert this
       
 63749  # variable to its documented default.
       
 63750  if test "${TIME_STYLE+set}" = set; then
       
 63751    TIME_STYLE=posix-long-iso
       
 63752    export TIME_STYLE
       
 63753  fi
       
 63754  
       
 63755  save_arg1=$1
       
 63756  
       
 63757  # Find out how to get the extended ls output of a file or directory.
       
 63758  if ls -L /dev/null 1>/dev/null 2>&1; then
       
 63759    ls_command='ls -L -l -d'
       
 63760  else
       
 63761    ls_command='ls -l -d'
       
 63762  fi
       
 63763 +# Avoid user/group names that might have spaces, when possible.
       
 63764 +if ls -n /dev/null 1>/dev/null 2>&1; then
       
 63765 +  ls_command="$ls_command -n"
       
 63766 +fi
       
 63767  
       
 63768 -# A `ls -l' line looks as follows on OS/2.
       
 63769 +# A 'ls -l' line looks as follows on OS/2.
       
 63770  #  drwxrwx---        0 Aug 11  2001 foo
       
 63771  # This differs from Unix, which adds ownership information.
       
 63772  #  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
       
 63773  #
       
 63774  # To find the date, we split the line on spaces and iterate on words
       
 63775  # until we find a month.  This cannot work with files whose owner is a
       
 63776 -# user named `Jan', or `Feb', etc.  However, it's unlikely that `/'
       
 63777 +# user named "Jan", or "Feb", etc.  However, it's unlikely that '/'
       
 63778  # will be owned by a user whose name is a month.  So we first look at
       
 63779  # the extended ls output of the root directory to decide how many
       
 63780  # words should be skipped to get the date.
       
 63781  
       
 63782  # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
       
 63783 -set x`ls -l -d /`
       
 63784 +set x`$ls_command /`
       
 63785  
       
 63786  # Find which argument is the month.
       
 63787  month=
       
 63788  command=
       
 63789  until test $month
       
 63790  do
       
 63791 +  test $# -gt 0 || error "failed parsing '$ls_command /' output"
       
 63792    shift
       
 63793    # Add another shift to the command.
       
 63794    command="$command shift;"
       
 63795    case $1 in
       
 63796      Jan) month=January; nummonth=1;;
       
 63797      Feb) month=February; nummonth=2;;
       
 63798      Mar) month=March; nummonth=3;;
       
 63799      Apr) month=April; nummonth=4;;
       
 63800 @@ -110,18 +130,20 @@ do
       
 63801      Aug) month=August; nummonth=8;;
       
 63802      Sep) month=September; nummonth=9;;
       
 63803      Oct) month=October; nummonth=10;;
       
 63804      Nov) month=November; nummonth=11;;
       
 63805      Dec) month=December; nummonth=12;;
       
 63806    esac
       
 63807  done
       
 63808  
       
 63809 +test -n "$month" || error "failed parsing '$ls_command /' output"
       
 63810 +
       
 63811  # Get the extended ls output of the file or directory.
       
 63812 -set dummy x`eval "$ls_command \"\$save_arg1\""`
       
 63813 +set dummy x`eval "$ls_command \"\\\$save_arg1\""`
       
 63814  
       
 63815  # Remove all preceding arguments
       
 63816  eval $command
       
 63817  
       
 63818  # Because of the dummy argument above, month is in $2.
       
 63819  #
       
 63820  # On a POSIX system, we should have
       
 63821  #
       
 63822 @@ -192,10 +214,11 @@ esac
       
 63823  echo $day $month $year
       
 63824  
       
 63825  # Local Variables:
       
 63826  # mode: shell-script
       
 63827  # sh-indentation: 2
       
 63828  # eval: (add-hook 'write-file-hooks 'time-stamp)
       
 63829  # time-stamp-start: "scriptversion="
       
 63830  # time-stamp-format: "%:y-%02m-%02d.%02H"
       
 63831 -# time-stamp-end: "$"
       
 63832 +# time-stamp-time-zone: "UTC"
       
 63833 +# time-stamp-end: "; # UTC"
       
 63834  # End:
       
 63835 diff --git a/js/src/ctypes/libffi/missing b/js/src/ctypes/libffi/missing
       
 63836 --- a/js/src/ctypes/libffi/missing
       
 63837 +++ b/js/src/ctypes/libffi/missing
       
 63838 @@ -1,360 +1,215 @@
       
 63839  #! /bin/sh
       
 63840 -# Common stub for a few missing GNU programs while installing.
       
 63841 +# Common wrapper for a few potentially missing GNU programs.
       
 63842  
       
 63843 -scriptversion=2005-06-08.21
       
 63844 +scriptversion=2012-06-26.16; # UTC
       
 63845  
       
 63846 -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
       
 63847 -#   Free Software Foundation, Inc.
       
 63848 -# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
       
 63849 +# Copyright (C) 1996-2013 Free Software Foundation, Inc.
       
 63850 +# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
       
 63851  
       
 63852  # This program is free software; you can redistribute it and/or modify
       
 63853  # it under the terms of the GNU General Public License as published by
       
 63854  # the Free Software Foundation; either version 2, or (at your option)
       
 63855  # any later version.
       
 63856  
       
 63857  # This program is distributed in the hope that it will be useful,
       
 63858  # but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 63859  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 63860  # GNU General Public License for more details.
       
 63861  
       
 63862  # You should have received a copy of the GNU General Public License
       
 63863 -# along with this program; if not, write to the Free Software
       
 63864 -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
       
 63865 -# 02110-1301, USA.
       
 63866 +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
       
 63867  
       
 63868  # As a special exception to the GNU General Public License, if you
       
 63869  # distribute this file as part of a program that contains a
       
 63870  # configuration script generated by Autoconf, you may include it under
       
 63871  # the same distribution terms that you use for the rest of that program.
       
 63872  
       
 63873  if test $# -eq 0; then
       
 63874 -  echo 1>&2 "Try \`$0 --help' for more information"
       
 63875 +  echo 1>&2 "Try '$0 --help' for more information"
       
 63876    exit 1
       
 63877  fi
       
 63878  
       
 63879 -run=:
       
 63880 +case $1 in
       
 63881  
       
 63882 -# In the cases where this matters, `missing' is being run in the
       
 63883 -# srcdir already.
       
 63884 -if test -f configure.ac; then
       
 63885 -  configure_ac=configure.ac
       
 63886 -else
       
 63887 -  configure_ac=configure.in
       
 63888 -fi
       
 63889 +  --is-lightweight)
       
 63890 +    # Used by our autoconf macros to check whether the available missing
       
 63891 +    # script is modern enough.
       
 63892 +    exit 0
       
 63893 +    ;;
       
 63894  
       
 63895 -msg="missing on your system"
       
 63896 -
       
 63897 -case "$1" in
       
 63898 ---run)
       
 63899 -  # Try to run requested program, and just exit if it succeeds.
       
 63900 -  run=
       
 63901 -  shift
       
 63902 -  "$@" && exit 0
       
 63903 -  # Exit code 63 means version mismatch.  This often happens
       
 63904 -  # when the user try to use an ancient version of a tool on
       
 63905 -  # a file that requires a minimum version.  In this case we
       
 63906 -  # we should proceed has if the program had been absent, or
       
 63907 -  # if --run hadn't been passed.
       
 63908 -  if test $? = 63; then
       
 63909 -    run=:
       
 63910 -    msg="probably too old"
       
 63911 -  fi
       
 63912 -  ;;
       
 63913 +  --run)
       
 63914 +    # Back-compat with the calling convention used by older automake.
       
 63915 +    shift
       
 63916 +    ;;
       
 63917  
       
 63918    -h|--h|--he|--hel|--help)
       
 63919      echo "\
       
 63920  $0 [OPTION]... PROGRAM [ARGUMENT]...
       
 63921  
       
 63922 -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
       
 63923 -error status if there is no known handling for PROGRAM.
       
 63924 +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
       
 63925 +to PROGRAM being missing or too old.
       
 63926  
       
 63927  Options:
       
 63928    -h, --help      display this help and exit
       
 63929    -v, --version   output version information and exit
       
 63930 -  --run           try to run the given command, and emulate it if it fails
       
 63931  
       
 63932  Supported PROGRAM values:
       
 63933 -  aclocal      touch file \`aclocal.m4'
       
 63934 -  autoconf     touch file \`configure'
       
 63935 -  autoheader   touch file \`config.h.in'
       
 63936 -  automake     touch all \`Makefile.in' files
       
 63937 -  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
       
 63938 -  flex         create \`lex.yy.c', if possible, from existing .c
       
 63939 -  help2man     touch the output file
       
 63940 -  lex          create \`lex.yy.c', if possible, from existing .c
       
 63941 -  makeinfo     touch the output file
       
 63942 -  tar          try tar, gnutar, gtar, then tar without non-portable flags
       
 63943 -  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
       
 63944 +  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
       
 63945 +  bison     yacc      flex         lex       help2man
       
 63946 +
       
 63947 +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
       
 63948 +'g' are ignored when checking the name.
       
 63949  
       
 63950  Send bug reports to <bug-automake@gnu.org>."
       
 63951      exit $?
       
 63952      ;;
       
 63953  
       
 63954    -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
       
 63955      echo "missing $scriptversion (GNU Automake)"
       
 63956      exit $?
       
 63957      ;;
       
 63958  
       
 63959    -*)
       
 63960 -    echo 1>&2 "$0: Unknown \`$1' option"
       
 63961 -    echo 1>&2 "Try \`$0 --help' for more information"
       
 63962 +    echo 1>&2 "$0: unknown '$1' option"
       
 63963 +    echo 1>&2 "Try '$0 --help' for more information"
       
 63964      exit 1
       
 63965      ;;
       
 63966  
       
 63967  esac
       
 63968  
       
 63969 -# Now exit if we have it, but it failed.  Also exit now if we
       
 63970 -# don't have it and --version was passed (most likely to detect
       
 63971 -# the program).
       
 63972 -case "$1" in
       
 63973 -  lex|yacc)
       
 63974 -    # Not GNU programs, they don't have --version.
       
 63975 +# Run the given program, remember its exit status.
       
 63976 +"$@"; st=$?
       
 63977 +
       
 63978 +# If it succeeded, we are done.
       
 63979 +test $st -eq 0 && exit 0
       
 63980 +
       
 63981 +# Also exit now if we it failed (or wasn't found), and '--version' was
       
 63982 +# passed; such an option is passed most likely to detect whether the
       
 63983 +# program is present and works.
       
 63984 +case $2 in --version|--help) exit $st;; esac
       
 63985 +
       
 63986 +# Exit code 63 means version mismatch.  This often happens when the user
       
 63987 +# tries to use an ancient version of a tool on a file that requires a
       
 63988 +# minimum version.
       
 63989 +if test $st -eq 63; then
       
 63990 +  msg="probably too old"
       
 63991 +elif test $st -eq 127; then
       
 63992 +  # Program was missing.
       
 63993 +  msg="missing on your system"
       
 63994 +else
       
 63995 +  # Program was found and executed, but failed.  Give up.
       
 63996 +  exit $st
       
 63997 +fi
       
 63998 +
       
 63999 +perl_URL=http://www.perl.org/
       
 64000 +flex_URL=http://flex.sourceforge.net/
       
 64001 +gnu_software_URL=http://www.gnu.org/software
       
 64002 +
       
 64003 +program_details ()
       
 64004 +{
       
 64005 +  case $1 in
       
 64006 +    aclocal|automake)
       
 64007 +      echo "The '$1' program is part of the GNU Automake package:"
       
 64008 +      echo "<$gnu_software_URL/automake>"
       
 64009 +      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
       
 64010 +      echo "<$gnu_software_URL/autoconf>"
       
 64011 +      echo "<$gnu_software_URL/m4/>"
       
 64012 +      echo "<$perl_URL>"
       
 64013 +      ;;
       
 64014 +    autoconf|autom4te|autoheader)
       
 64015 +      echo "The '$1' program is part of the GNU Autoconf package:"
       
 64016 +      echo "<$gnu_software_URL/autoconf/>"
       
 64017 +      echo "It also requires GNU m4 and Perl in order to run:"
       
 64018 +      echo "<$gnu_software_URL/m4/>"
       
 64019 +      echo "<$perl_URL>"
       
 64020 +      ;;
       
 64021 +  esac
       
 64022 +}
       
 64023 +
       
 64024 +give_advice ()
       
 64025 +{
       
 64026 +  # Normalize program name to check for.
       
 64027 +  normalized_program=`echo "$1" | sed '
       
 64028 +    s/^gnu-//; t
       
 64029 +    s/^gnu//; t
       
 64030 +    s/^g//; t'`
       
 64031 +
       
 64032 +  printf '%s\n' "'$1' is $msg."
       
 64033 +
       
 64034 +  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
       
 64035 +  case $normalized_program in
       
 64036 +    autoconf*)
       
 64037 +      echo "You should only need it if you modified 'configure.ac',"
       
 64038 +      echo "or m4 files included by it."
       
 64039 +      program_details 'autoconf'
       
 64040 +      ;;
       
 64041 +    autoheader*)
       
 64042 +      echo "You should only need it if you modified 'acconfig.h' or"
       
 64043 +      echo "$configure_deps."
       
 64044 +      program_details 'autoheader'
       
 64045 +      ;;
       
 64046 +    automake*)
       
 64047 +      echo "You should only need it if you modified 'Makefile.am' or"
       
 64048 +      echo "$configure_deps."
       
 64049 +      program_details 'automake'
       
 64050 +      ;;
       
 64051 +    aclocal*)
       
 64052 +      echo "You should only need it if you modified 'acinclude.m4' or"
       
 64053 +      echo "$configure_deps."
       
 64054 +      program_details 'aclocal'
       
 64055 +      ;;
       
 64056 +   autom4te*)
       
 64057 +      echo "You might have modified some maintainer files that require"
       
 64058 +      echo "the 'automa4te' program to be rebuilt."
       
 64059 +      program_details 'autom4te'
       
 64060 +      ;;
       
 64061 +    bison*|yacc*)
       
 64062 +      echo "You should only need it if you modified a '.y' file."
       
 64063 +      echo "You may want to install the GNU Bison package:"
       
 64064 +      echo "<$gnu_software_URL/bison/>"
       
 64065 +      ;;
       
 64066 +    lex*|flex*)
       
 64067 +      echo "You should only need it if you modified a '.l' file."
       
 64068 +      echo "You may want to install the Fast Lexical Analyzer package:"
       
 64069 +      echo "<$flex_URL>"
       
 64070 +      ;;
       
 64071 +    help2man*)
       
 64072 +      echo "You should only need it if you modified a dependency" \
       
 64073 +           "of a man page."
       
 64074 +      echo "You may want to install the GNU Help2man package:"
       
 64075 +      echo "<$gnu_software_URL/help2man/>"
       
 64076      ;;
       
 64077 +    makeinfo*)
       
 64078 +      echo "You should only need it if you modified a '.texi' file, or"
       
 64079 +      echo "any other file indirectly affecting the aspect of the manual."
       
 64080 +      echo "You might want to install the Texinfo package:"
       
 64081 +      echo "<$gnu_software_URL/texinfo/>"
       
 64082 +      echo "The spurious makeinfo call might also be the consequence of"
       
 64083 +      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
       
 64084 +      echo "want to install GNU make:"
       
 64085 +      echo "<$gnu_software_URL/make/>"
       
 64086 +      ;;
       
 64087 +    *)
       
 64088 +      echo "You might have modified some files without having the proper"
       
 64089 +      echo "tools for further handling them.  Check the 'README' file, it"
       
 64090 +      echo "often tells you about the needed prerequisites for installing"
       
 64091 +      echo "this package.  You may also peek at any GNU archive site, in"
       
 64092 +      echo "case some other package contains this missing '$1' program."
       
 64093 +      ;;
       
 64094 +  esac
       
 64095 +}
       
 64096  
       
 64097 -  tar)
       
 64098 -    if test -n "$run"; then
       
 64099 -       echo 1>&2 "ERROR: \`tar' requires --run"
       
 64100 -       exit 1
       
 64101 -    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
       
 64102 -       exit 1
       
 64103 -    fi
       
 64104 -    ;;
       
 64105 +give_advice "$1" | sed -e '1s/^/WARNING: /' \
       
 64106 +                       -e '2,$s/^/         /' >&2
       
 64107  
       
 64108 -  *)
       
 64109 -    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
       
 64110 -       # We have it, but it failed.
       
 64111 -       exit 1
       
 64112 -    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
       
 64113 -       # Could not run --version or --help.  This is probably someone
       
 64114 -       # running `$TOOL --version' or `$TOOL --help' to check whether
       
 64115 -       # $TOOL exists and not knowing $TOOL uses missing.
       
 64116 -       exit 1
       
 64117 -    fi
       
 64118 -    ;;
       
 64119 -esac
       
 64120 -
       
 64121 -# If it does not exist, or fails to run (possibly an outdated version),
       
 64122 -# try to emulate it.
       
 64123 -case "$1" in
       
 64124 -  aclocal*)
       
 64125 -    echo 1>&2 "\
       
 64126 -WARNING: \`$1' is $msg.  You should only need it if
       
 64127 -         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
       
 64128 -         to install the \`Automake' and \`Perl' packages.  Grab them from
       
 64129 -         any GNU archive site."
       
 64130 -    touch aclocal.m4
       
 64131 -    ;;
       
 64132 -
       
 64133 -  autoconf)
       
 64134 -    echo 1>&2 "\
       
 64135 -WARNING: \`$1' is $msg.  You should only need it if
       
 64136 -         you modified \`${configure_ac}'.  You might want to install the
       
 64137 -         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
       
 64138 -         archive site."
       
 64139 -    touch configure
       
 64140 -    ;;
       
 64141 -
       
 64142 -  autoheader)
       
 64143 -    echo 1>&2 "\
       
 64144 -WARNING: \`$1' is $msg.  You should only need it if
       
 64145 -         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
       
 64146 -         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
       
 64147 -         from any GNU archive site."
       
 64148 -    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
       
 64149 -    test -z "$files" && files="config.h"
       
 64150 -    touch_files=
       
 64151 -    for f in $files; do
       
 64152 -      case "$f" in
       
 64153 -      *:*) touch_files="$touch_files "`echo "$f" |
       
 64154 -				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
       
 64155 -      *) touch_files="$touch_files $f.in";;
       
 64156 -      esac
       
 64157 -    done
       
 64158 -    touch $touch_files
       
 64159 -    ;;
       
 64160 -
       
 64161 -  automake*)
       
 64162 -    echo 1>&2 "\
       
 64163 -WARNING: \`$1' is $msg.  You should only need it if
       
 64164 -         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
       
 64165 -         You might want to install the \`Automake' and \`Perl' packages.
       
 64166 -         Grab them from any GNU archive site."
       
 64167 -    find . -type f -name Makefile.am -print |
       
 64168 -	   sed 's/\.am$/.in/' |
       
 64169 -	   while read f; do touch "$f"; done
       
 64170 -    ;;
       
 64171 -
       
 64172 -  autom4te)
       
 64173 -    echo 1>&2 "\
       
 64174 -WARNING: \`$1' is needed, but is $msg.
       
 64175 -         You might have modified some files without having the
       
 64176 -         proper tools for further handling them.
       
 64177 -         You can get \`$1' as part of \`Autoconf' from any GNU
       
 64178 -         archive site."
       
 64179 -
       
 64180 -    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
       
 64181 -    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
       
 64182 -    if test -f "$file"; then
       
 64183 -	touch $file
       
 64184 -    else
       
 64185 -	test -z "$file" || exec >$file
       
 64186 -	echo "#! /bin/sh"
       
 64187 -	echo "# Created by GNU Automake missing as a replacement of"
       
 64188 -	echo "#  $ $@"
       
 64189 -	echo "exit 0"
       
 64190 -	chmod +x $file
       
 64191 -	exit 1
       
 64192 -    fi
       
 64193 -    ;;
       
 64194 -
       
 64195 -  bison|yacc)
       
 64196 -    echo 1>&2 "\
       
 64197 -WARNING: \`$1' $msg.  You should only need it if
       
 64198 -         you modified a \`.y' file.  You may need the \`Bison' package
       
 64199 -         in order for those modifications to take effect.  You can get
       
 64200 -         \`Bison' from any GNU archive site."
       
 64201 -    rm -f y.tab.c y.tab.h
       
 64202 -    if [ $# -ne 1 ]; then
       
 64203 -        eval LASTARG="\${$#}"
       
 64204 -	case "$LASTARG" in
       
 64205 -	*.y)
       
 64206 -	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
       
 64207 -	    if [ -f "$SRCFILE" ]; then
       
 64208 -	         cp "$SRCFILE" y.tab.c
       
 64209 -	    fi
       
 64210 -	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
       
 64211 -	    if [ -f "$SRCFILE" ]; then
       
 64212 -	         cp "$SRCFILE" y.tab.h
       
 64213 -	    fi
       
 64214 -	  ;;
       
 64215 -	esac
       
 64216 -    fi
       
 64217 -    if [ ! -f y.tab.h ]; then
       
 64218 -	echo >y.tab.h
       
 64219 -    fi
       
 64220 -    if [ ! -f y.tab.c ]; then
       
 64221 -	echo 'main() { return 0; }' >y.tab.c
       
 64222 -    fi
       
 64223 -    ;;
       
 64224 -
       
 64225 -  lex|flex)
       
 64226 -    echo 1>&2 "\
       
 64227 -WARNING: \`$1' is $msg.  You should only need it if
       
 64228 -         you modified a \`.l' file.  You may need the \`Flex' package
       
 64229 -         in order for those modifications to take effect.  You can get
       
 64230 -         \`Flex' from any GNU archive site."
       
 64231 -    rm -f lex.yy.c
       
 64232 -    if [ $# -ne 1 ]; then
       
 64233 -        eval LASTARG="\${$#}"
       
 64234 -	case "$LASTARG" in
       
 64235 -	*.l)
       
 64236 -	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
       
 64237 -	    if [ -f "$SRCFILE" ]; then
       
 64238 -	         cp "$SRCFILE" lex.yy.c
       
 64239 -	    fi
       
 64240 -	  ;;
       
 64241 -	esac
       
 64242 -    fi
       
 64243 -    if [ ! -f lex.yy.c ]; then
       
 64244 -	echo 'main() { return 0; }' >lex.yy.c
       
 64245 -    fi
       
 64246 -    ;;
       
 64247 -
       
 64248 -  help2man)
       
 64249 -    echo 1>&2 "\
       
 64250 -WARNING: \`$1' is $msg.  You should only need it if
       
 64251 -	 you modified a dependency of a manual page.  You may need the
       
 64252 -	 \`Help2man' package in order for those modifications to take
       
 64253 -	 effect.  You can get \`Help2man' from any GNU archive site."
       
 64254 -
       
 64255 -    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
       
 64256 -    if test -z "$file"; then
       
 64257 -	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
       
 64258 -    fi
       
 64259 -    if [ -f "$file" ]; then
       
 64260 -	touch $file
       
 64261 -    else
       
 64262 -	test -z "$file" || exec >$file
       
 64263 -	echo ".ab help2man is required to generate this page"
       
 64264 -	exit 1
       
 64265 -    fi
       
 64266 -    ;;
       
 64267 -
       
 64268 -  makeinfo)
       
 64269 -    echo 1>&2 "\
       
 64270 -WARNING: \`$1' is $msg.  You should only need it if
       
 64271 -         you modified a \`.texi' or \`.texinfo' file, or any other file
       
 64272 -         indirectly affecting the aspect of the manual.  The spurious
       
 64273 -         call might also be the consequence of using a buggy \`make' (AIX,
       
 64274 -         DU, IRIX).  You might want to install the \`Texinfo' package or
       
 64275 -         the \`GNU make' package.  Grab either from any GNU archive site."
       
 64276 -    # The file to touch is that specified with -o ...
       
 64277 -    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
       
 64278 -    if test -z "$file"; then
       
 64279 -      # ... or it is the one specified with @setfilename ...
       
 64280 -      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
       
 64281 -      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
       
 64282 -      # ... or it is derived from the source name (dir/f.texi becomes f.info)
       
 64283 -      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
       
 64284 -    fi
       
 64285 -    # If the file does not exist, the user really needs makeinfo;
       
 64286 -    # let's fail without touching anything.
       
 64287 -    test -f $file || exit 1
       
 64288 -    touch $file
       
 64289 -    ;;
       
 64290 -
       
 64291 -  tar)
       
 64292 -    shift
       
 64293 -
       
 64294 -    # We have already tried tar in the generic part.
       
 64295 -    # Look for gnutar/gtar before invocation to avoid ugly error
       
 64296 -    # messages.
       
 64297 -    if (gnutar --version > /dev/null 2>&1); then
       
 64298 -       gnutar "$@" && exit 0
       
 64299 -    fi
       
 64300 -    if (gtar --version > /dev/null 2>&1); then
       
 64301 -       gtar "$@" && exit 0
       
 64302 -    fi
       
 64303 -    firstarg="$1"
       
 64304 -    if shift; then
       
 64305 -	case "$firstarg" in
       
 64306 -	*o*)
       
 64307 -	    firstarg=`echo "$firstarg" | sed s/o//`
       
 64308 -	    tar "$firstarg" "$@" && exit 0
       
 64309 -	    ;;
       
 64310 -	esac
       
 64311 -	case "$firstarg" in
       
 64312 -	*h*)
       
 64313 -	    firstarg=`echo "$firstarg" | sed s/h//`
       
 64314 -	    tar "$firstarg" "$@" && exit 0
       
 64315 -	    ;;
       
 64316 -	esac
       
 64317 -    fi
       
 64318 -
       
 64319 -    echo 1>&2 "\
       
 64320 -WARNING: I can't seem to be able to run \`tar' with the given arguments.
       
 64321 -         You may want to install GNU tar or Free paxutils, or check the
       
 64322 -         command line arguments."
       
 64323 -    exit 1
       
 64324 -    ;;
       
 64325 -
       
 64326 -  *)
       
 64327 -    echo 1>&2 "\
       
 64328 -WARNING: \`$1' is needed, and is $msg.
       
 64329 -         You might have modified some files without having the
       
 64330 -         proper tools for further handling them.  Check the \`README' file,
       
 64331 -         it often tells you about the needed prerequisites for installing
       
 64332 -         this package.  You may also peek at any GNU archive site, in case
       
 64333 -         some other package would contain this missing \`$1' program."
       
 64334 -    exit 1
       
 64335 -    ;;
       
 64336 -esac
       
 64337 -
       
 64338 -exit 0
       
 64339 +# Propagate the correct exit status (expected to be 127 for a program
       
 64340 +# not found, 63 for a program that failed due to version mismatch).
       
 64341 +exit $st
       
 64342  
       
 64343  # Local variables:
       
 64344  # eval: (add-hook 'write-file-hooks 'time-stamp)
       
 64345  # time-stamp-start: "scriptversion="
       
 64346  # time-stamp-format: "%:y-%02m-%02d.%02H"
       
 64347 -# time-stamp-end: "$"
       
 64348 +# time-stamp-time-zone: "UTC"
       
 64349 +# time-stamp-end: "; # UTC"
       
 64350  # End:
       
 64351 diff --git a/js/src/ctypes/libffi/msvcc.sh b/js/src/ctypes/libffi/msvcc.sh
       
 64352 --- a/js/src/ctypes/libffi/msvcc.sh
       
 64353 +++ b/js/src/ctypes/libffi/msvcc.sh
       
 64354 @@ -1,19 +1,53 @@
       
 64355  #!/bin/sh
       
 64356  
       
 64357 -# This Source Code Form is subject to the terms of the Mozilla Public
       
 64358 -# License, v. 2.0. If a copy of the MPL was not distributed with this
       
 64359 -# file, You can obtain one at http://mozilla.org/MPL/2.0/.
       
 64360 +# ***** BEGIN LICENSE BLOCK *****
       
 64361 +# Version: MPL 1.1/GPL 2.0/LGPL 2.1
       
 64362 +#
       
 64363 +# The contents of this file are subject to the Mozilla Public License Version
       
 64364 +# 1.1 (the "License"); you may not use this file except in compliance with
       
 64365 +# the License. You may obtain a copy of the License at
       
 64366 +# http://www.mozilla.org/MPL/
       
 64367 +#
       
 64368 +# Software distributed under the License is distributed on an "AS IS" basis,
       
 64369 +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
       
 64370 +# for the specific language governing rights and limitations under the
       
 64371 +# License.
       
 64372 +#
       
 64373 +# The Original Code is the MSVC wrappificator.
       
 64374 +#
       
 64375 +# The Initial Developer of the Original Code is
       
 64376 +# Timothy Wall <twalljava@dev.java.net>.
       
 64377 +# Portions created by the Initial Developer are Copyright (C) 2009
       
 64378 +# the Initial Developer. All Rights Reserved.
       
 64379 +#
       
 64380 +# Contributor(s):
       
 64381 +#   Daniel Witte <dwitte@mozilla.com>
       
 64382 +#
       
 64383 +# Alternatively, the contents of this file may be used under the terms of
       
 64384 +# either the GNU General Public License Version 2 or later (the "GPL"), or
       
 64385 +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
       
 64386 +# in which case the provisions of the GPL or the LGPL are applicable instead
       
 64387 +# of those above. If you wish to allow use of your version of this file only
       
 64388 +# under the terms of either the GPL or the LGPL, and not to allow others to
       
 64389 +# use your version of this file under the terms of the MPL, indicate your
       
 64390 +# decision by deleting the provisions above and replace them with the notice
       
 64391 +# and other provisions required by the GPL or the LGPL. If you do not delete
       
 64392 +# the provisions above, a recipient may use your version of this file under
       
 64393 +# the terms of any one of the MPL, the GPL or the LGPL.
       
 64394 +#
       
 64395 +# ***** END LICENSE BLOCK *****
       
 64396  
       
 64397  #
       
 64398  # GCC-compatible wrapper for cl.exe and ml.exe. Arguments are given in GCC
       
 64399  # format and translated into something sensible for cl or ml.
       
 64400  #
       
 64401  
       
 64402 +args_orig=$@
       
 64403  args="-nologo -W3"
       
 64404  md=-MD
       
 64405  cl="cl"
       
 64406  ml="ml"
       
 64407  safeseh="-safeseh"
       
 64408  output=
       
 64409  
       
 64410  while [ $# -gt 0 ]
       
 64411 @@ -34,24 +68,45 @@ do
       
 64412        safeseh=
       
 64413        shift 1
       
 64414      ;;
       
 64415      -O0)
       
 64416        args="$args -Od"
       
 64417        shift 1
       
 64418      ;;
       
 64419      -O*)
       
 64420 -      # If we're optimizing, make sure we explicitly turn on some optimizations
       
 64421 -      # that are implicitly disabled by debug symbols (-Zi).
       
 64422 -      args="$args $1 -OPT:REF -OPT:ICF -INCREMENTAL:NO"
       
 64423 +      # Runtime error checks (enabled by setting -RTC1 in the -DFFI_DEBUG
       
 64424 +      # case below) are not compatible with optimization flags and will
       
 64425 +      # cause the build to fail. Therefore, drop the optimization flag if
       
 64426 +      # -DFFI_DEBUG is also set.
       
 64427 +      case $args_orig in
       
 64428 +        *-DFFI_DEBUG*)
       
 64429 +          args="$args"
       
 64430 +        ;;
       
 64431 +        *)
       
 64432 +          # The ax_cc_maxopt.m4 macro from the upstream autoconf-archive
       
 64433 +          # project doesn't support MSVC and therefore ends up trying to
       
 64434 +          # use -O3. Use the equivalent "max optimization" flag for MSVC
       
 64435 +          # instead of erroring out.
       
 64436 +          case $1 in
       
 64437 +            -O3)
       
 64438 +              args="$args -O2"
       
 64439 +            ;;
       
 64440 +            *)
       
 64441 +              args="$args $1"
       
 64442 +            ;;
       
 64443 +          esac
       
 64444 +          opt="true"
       
 64445 +        ;;
       
 64446 +      esac
       
 64447        shift 1
       
 64448      ;;
       
 64449      -g)
       
 64450        # Enable debug symbol generation.
       
 64451 -      args="$args -Zi -DEBUG"
       
 64452 +      args="$args -Zi"
       
 64453        shift 1
       
 64454      ;;
       
 64455      -DFFI_DEBUG)
       
 64456        # Link against debug CRT and enable runtime error checks.
       
 64457        args="$args -RTC1"
       
 64458        defines="$defines $1"
       
 64459        md=-MDd
       
 64460        shift 1
       
 64461 @@ -88,16 +143,20 @@ do
       
 64462        # TODO map extra warnings
       
 64463        shift 1
       
 64464      ;;
       
 64465      -Wall)
       
 64466        # -Wall on MSVC is overzealous, and we already build with -W3. Nothing
       
 64467        # to do here.
       
 64468        shift 1
       
 64469      ;;
       
 64470 +    -pedantic)
       
 64471 +      # libffi tests -pedantic with -Wall, so drop it also.
       
 64472 +      shift 1
       
 64473 +    ;;
       
 64474      -Werror)
       
 64475        args="$args -WX"
       
 64476        shift 1
       
 64477      ;;
       
 64478      -W*)
       
 64479        # TODO map specific warnings
       
 64480        shift 1
       
 64481      ;;
       
 64482 @@ -132,16 +191,23 @@ do
       
 64483      *)
       
 64484        # Assume it's an MSVC argument, and pass it through.
       
 64485        args="$args $1"
       
 64486        shift 1
       
 64487      ;;
       
 64488    esac
       
 64489  done
       
 64490  
       
 64491 +# If -Zi is specified, certain optimizations are implicitly disabled
       
 64492 +# by MSVC. Add back those optimizations if this is an optimized build.
       
 64493 +# NOTE: These arguments must come after all others.
       
 64494 +if [ -n "$opt" ]; then
       
 64495 +    args="$args -link -OPT:REF -OPT:ICF -INCREMENTAL:NO"
       
 64496 +fi
       
 64497 +
       
 64498  if [ -n "$assembly" ]; then
       
 64499      if [ -z "$outdir" ]; then
       
 64500        outdir="."
       
 64501      fi
       
 64502      ppsrc="$outdir/$(basename $src|sed 's/.S$/.asm/g')"
       
 64503      echo "$cl -nologo -EP $includes $defines $src > $ppsrc"
       
 64504      "$cl" -nologo -EP $includes $defines $src > $ppsrc || exit $?
       
 64505      output="$(echo $output | sed 's%/F[dpa][^ ]*%%g')"
       
 64506 @@ -151,14 +217,17 @@ if [ -n "$assembly" ]; then
       
 64507      eval "\"$ml\" $args"
       
 64508      result=$?
       
 64509  
       
 64510      # required to fix ml64 broken output?
       
 64511      #mv *.obj $outdir
       
 64512  else
       
 64513      args="$md $args"
       
 64514      echo "$cl $args"
       
 64515 -    eval "\"$cl\" $args"
       
 64516 +    # Return an error code of 1 if an invalid command line parameter is passed
       
 64517 +    # instead of just ignoring it.
       
 64518 +    eval "(\"$cl\" $args 2>&1 1>&3 | \
       
 64519 +          awk '{print \$0} /D9002/ {error=1} END{exit error}' >&2) 3>&1"
       
 64520      result=$?
       
 64521  fi
       
 64522  
       
 64523  exit $result
       
 64524  
       
 64525 diff --git a/js/src/ctypes/libffi/src/aarch64/ffi.c b/js/src/ctypes/libffi/src/aarch64/ffi.c
       
 64526 new file mode 100644
       
 64527 --- /dev/null
       
 64528 +++ b/js/src/ctypes/libffi/src/aarch64/ffi.c
       
 64529 @@ -0,0 +1,1133 @@
       
 64530 +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
       
 64531 +
       
 64532 +Permission is hereby granted, free of charge, to any person obtaining
       
 64533 +a copy of this software and associated documentation files (the
       
 64534 +``Software''), to deal in the Software without restriction, including
       
 64535 +without limitation the rights to use, copy, modify, merge, publish,
       
 64536 +distribute, sublicense, and/or sell copies of the Software, and to
       
 64537 +permit persons to whom the Software is furnished to do so, subject to
       
 64538 +the following conditions:
       
 64539 +
       
 64540 +The above copyright notice and this permission notice shall be
       
 64541 +included in all copies or substantial portions of the Software.
       
 64542 +
       
 64543 +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 64544 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 64545 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 64546 +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 64547 +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 64548 +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 64549 +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
       
 64550 +
       
 64551 +#include <stdio.h>
       
 64552 +
       
 64553 +#include <ffi.h>
       
 64554 +#include <ffi_common.h>
       
 64555 +
       
 64556 +#include <stdlib.h>
       
 64557 +
       
 64558 +/* Stack alignment requirement in bytes */
       
 64559 +#if defined (__APPLE__)
       
 64560 +#define AARCH64_STACK_ALIGN 1
       
 64561 +#else
       
 64562 +#define AARCH64_STACK_ALIGN 16
       
 64563 +#endif
       
 64564 +
       
 64565 +#define N_X_ARG_REG 8
       
 64566 +#define N_V_ARG_REG 8
       
 64567 +
       
 64568 +#define AARCH64_FFI_WITH_V (1 << AARCH64_FFI_WITH_V_BIT)
       
 64569 +
       
 64570 +union _d
       
 64571 +{
       
 64572 +  UINT64 d;
       
 64573 +  UINT32 s[2];
       
 64574 +};
       
 64575 +
       
 64576 +struct call_context
       
 64577 +{
       
 64578 +  UINT64 x [AARCH64_N_XREG];
       
 64579 +  struct
       
 64580 +  {
       
 64581 +    union _d d[2];
       
 64582 +  } v [AARCH64_N_VREG];
       
 64583 +};
       
 64584 +
       
 64585 +#if defined (__clang__) && defined (__APPLE__)
       
 64586 +extern void
       
 64587 +sys_icache_invalidate (void *start, size_t len);
       
 64588 +#endif
       
 64589 +
       
 64590 +static inline void
       
 64591 +ffi_clear_cache (void *start, void *end)
       
 64592 +{
       
 64593 +#if defined (__clang__) && defined (__APPLE__)
       
 64594 +	sys_icache_invalidate (start, (char *)end - (char *)start);
       
 64595 +#elif defined (__GNUC__)
       
 64596 +	__builtin___clear_cache (start, end);
       
 64597 +#else
       
 64598 +#error "Missing builtin to flush instruction cache"
       
 64599 +#endif
       
 64600 +}
       
 64601 +
       
 64602 +static void *
       
 64603 +get_x_addr (struct call_context *context, unsigned n)
       
 64604 +{
       
 64605 +  return &context->x[n];
       
 64606 +}
       
 64607 +
       
 64608 +static void *
       
 64609 +get_s_addr (struct call_context *context, unsigned n)
       
 64610 +{
       
 64611 +#if defined __AARCH64EB__
       
 64612 +  return &context->v[n].d[1].s[1];
       
 64613 +#else
       
 64614 +  return &context->v[n].d[0].s[0];
       
 64615 +#endif
       
 64616 +}
       
 64617 +
       
 64618 +static void *
       
 64619 +get_d_addr (struct call_context *context, unsigned n)
       
 64620 +{
       
 64621 +#if defined __AARCH64EB__
       
 64622 +  return &context->v[n].d[1];
       
 64623 +#else
       
 64624 +  return &context->v[n].d[0];
       
 64625 +#endif
       
 64626 +}
       
 64627 +
       
 64628 +static void *
       
 64629 +get_v_addr (struct call_context *context, unsigned n)
       
 64630 +{
       
 64631 +  return &context->v[n];
       
 64632 +}
       
 64633 +
       
 64634 +/* Return the memory location at which a basic type would reside
       
 64635 +   were it to have been stored in register n.  */
       
 64636 +
       
 64637 +static void *
       
 64638 +get_basic_type_addr (unsigned short type, struct call_context *context,
       
 64639 +		     unsigned n)
       
 64640 +{
       
 64641 +  switch (type)
       
 64642 +    {
       
 64643 +    case FFI_TYPE_FLOAT:
       
 64644 +      return get_s_addr (context, n);
       
 64645 +    case FFI_TYPE_DOUBLE:
       
 64646 +      return get_d_addr (context, n);
       
 64647 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 64648 +    case FFI_TYPE_LONGDOUBLE:
       
 64649 +      return get_v_addr (context, n);
       
 64650 +#endif
       
 64651 +    case FFI_TYPE_UINT8:
       
 64652 +    case FFI_TYPE_SINT8:
       
 64653 +    case FFI_TYPE_UINT16:
       
 64654 +    case FFI_TYPE_SINT16:
       
 64655 +    case FFI_TYPE_UINT32:
       
 64656 +    case FFI_TYPE_SINT32:
       
 64657 +    case FFI_TYPE_INT:
       
 64658 +    case FFI_TYPE_POINTER:
       
 64659 +    case FFI_TYPE_UINT64:
       
 64660 +    case FFI_TYPE_SINT64:
       
 64661 +      return get_x_addr (context, n);
       
 64662 +    case FFI_TYPE_VOID:
       
 64663 +      return NULL;
       
 64664 +    default:
       
 64665 +      FFI_ASSERT (0);
       
 64666 +      return NULL;
       
 64667 +    }
       
 64668 +}
       
 64669 +
       
 64670 +/* Return the alignment width for each of the basic types.  */
       
 64671 +
       
 64672 +static size_t
       
 64673 +get_basic_type_alignment (unsigned short type)
       
 64674 +{
       
 64675 +  switch (type)
       
 64676 +    {
       
 64677 +    case FFI_TYPE_FLOAT:
       
 64678 +    case FFI_TYPE_DOUBLE:
       
 64679 +      return sizeof (UINT64);
       
 64680 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 64681 +    case FFI_TYPE_LONGDOUBLE:
       
 64682 +      return sizeof (long double);
       
 64683 +#endif
       
 64684 +    case FFI_TYPE_UINT8:
       
 64685 +    case FFI_TYPE_SINT8:
       
 64686 +#if defined (__APPLE__)
       
 64687 +	  return sizeof (UINT8);
       
 64688 +#endif
       
 64689 +    case FFI_TYPE_UINT16:
       
 64690 +    case FFI_TYPE_SINT16:
       
 64691 +#if defined (__APPLE__)
       
 64692 +	  return sizeof (UINT16);
       
 64693 +#endif
       
 64694 +    case FFI_TYPE_UINT32:
       
 64695 +    case FFI_TYPE_INT:
       
 64696 +    case FFI_TYPE_SINT32:
       
 64697 +#if defined (__APPLE__)
       
 64698 +	  return sizeof (UINT32);
       
 64699 +#endif
       
 64700 +    case FFI_TYPE_POINTER:
       
 64701 +    case FFI_TYPE_UINT64:
       
 64702 +    case FFI_TYPE_SINT64:
       
 64703 +      return sizeof (UINT64);
       
 64704 +
       
 64705 +    default:
       
 64706 +      FFI_ASSERT (0);
       
 64707 +      return 0;
       
 64708 +    }
       
 64709 +}
       
 64710 +
       
 64711 +/* Return the size in bytes for each of the basic types.  */
       
 64712 +
       
 64713 +static size_t
       
 64714 +get_basic_type_size (unsigned short type)
       
 64715 +{
       
 64716 +  switch (type)
       
 64717 +    {
       
 64718 +    case FFI_TYPE_FLOAT:
       
 64719 +      return sizeof (UINT32);
       
 64720 +    case FFI_TYPE_DOUBLE:
       
 64721 +      return sizeof (UINT64);
       
 64722 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 64723 +    case FFI_TYPE_LONGDOUBLE:
       
 64724 +      return sizeof (long double);
       
 64725 +#endif
       
 64726 +    case FFI_TYPE_UINT8:
       
 64727 +      return sizeof (UINT8);
       
 64728 +    case FFI_TYPE_SINT8:
       
 64729 +      return sizeof (SINT8);
       
 64730 +    case FFI_TYPE_UINT16:
       
 64731 +      return sizeof (UINT16);
       
 64732 +    case FFI_TYPE_SINT16:
       
 64733 +      return sizeof (SINT16);
       
 64734 +    case FFI_TYPE_UINT32:
       
 64735 +      return sizeof (UINT32);
       
 64736 +    case FFI_TYPE_INT:
       
 64737 +    case FFI_TYPE_SINT32:
       
 64738 +      return sizeof (SINT32);
       
 64739 +    case FFI_TYPE_POINTER:
       
 64740 +    case FFI_TYPE_UINT64:
       
 64741 +      return sizeof (UINT64);
       
 64742 +    case FFI_TYPE_SINT64:
       
 64743 +      return sizeof (SINT64);
       
 64744 +
       
 64745 +    default:
       
 64746 +      FFI_ASSERT (0);
       
 64747 +      return 0;
       
 64748 +    }
       
 64749 +}
       
 64750 +
       
 64751 +extern void
       
 64752 +ffi_call_SYSV (unsigned (*)(struct call_context *context, unsigned char *,
       
 64753 +			    extended_cif *),
       
 64754 +               struct call_context *context,
       
 64755 +               extended_cif *,
       
 64756 +               size_t,
       
 64757 +               void (*fn)(void));
       
 64758 +
       
 64759 +extern void
       
 64760 +ffi_closure_SYSV (ffi_closure *);
       
 64761 +
       
 64762 +/* Test for an FFI floating point representation.  */
       
 64763 +
       
 64764 +static unsigned
       
 64765 +is_floating_type (unsigned short type)
       
 64766 +{
       
 64767 +  return (type == FFI_TYPE_FLOAT || type == FFI_TYPE_DOUBLE
       
 64768 +	  || type == FFI_TYPE_LONGDOUBLE);
       
 64769 +}
       
 64770 +
       
 64771 +/* Test for a homogeneous structure.  */
       
 64772 +
       
 64773 +static unsigned short
       
 64774 +get_homogeneous_type (ffi_type *ty)
       
 64775 +{
       
 64776 +  if (ty->type == FFI_TYPE_STRUCT && ty->elements)
       
 64777 +    {
       
 64778 +      unsigned i;
       
 64779 +      unsigned short candidate_type
       
 64780 +	= get_homogeneous_type (ty->elements[0]);
       
 64781 +      for (i =1; ty->elements[i]; i++)
       
 64782 +	{
       
 64783 +	  unsigned short iteration_type = 0;
       
 64784 +	  /* If we have a nested struct, we must find its homogeneous type.
       
 64785 +	     If that fits with our candidate type, we are still
       
 64786 +	     homogeneous.  */
       
 64787 +	  if (ty->elements[i]->type == FFI_TYPE_STRUCT
       
 64788 +	      && ty->elements[i]->elements)
       
 64789 +	    {
       
 64790 +	      iteration_type = get_homogeneous_type (ty->elements[i]);
       
 64791 +	    }
       
 64792 +	  else
       
 64793 +	    {
       
 64794 +	      iteration_type = ty->elements[i]->type;
       
 64795 +	    }
       
 64796 +
       
 64797 +	  /* If we are not homogeneous, return FFI_TYPE_STRUCT.  */
       
 64798 +	  if (candidate_type != iteration_type)
       
 64799 +	    return FFI_TYPE_STRUCT;
       
 64800 +	}
       
 64801 +      return candidate_type;
       
 64802 +    }
       
 64803 +
       
 64804 +  /* Base case, we have no more levels of nesting, so we
       
 64805 +     are a basic type, and so, trivially homogeneous in that type.  */
       
 64806 +  return ty->type;
       
 64807 +}
       
 64808 +
       
 64809 +/* Determine the number of elements within a STRUCT.
       
 64810 +
       
 64811 +   Note, we must handle nested structs.
       
 64812 +
       
 64813 +   If ty is not a STRUCT this function will return 0.  */
       
 64814 +
       
 64815 +static unsigned
       
 64816 +element_count (ffi_type *ty)
       
 64817 +{
       
 64818 +  if (ty->type == FFI_TYPE_STRUCT && ty->elements)
       
 64819 +    {
       
 64820 +      unsigned n;
       
 64821 +      unsigned elems = 0;
       
 64822 +      for (n = 0; ty->elements[n]; n++)
       
 64823 +	{
       
 64824 +	  if (ty->elements[n]->type == FFI_TYPE_STRUCT
       
 64825 +	      && ty->elements[n]->elements)
       
 64826 +	    elems += element_count (ty->elements[n]);
       
 64827 +	  else
       
 64828 +	    elems++;
       
 64829 +	}
       
 64830 +      return elems;
       
 64831 +    }
       
 64832 +  return 0;
       
 64833 +}
       
 64834 +
       
 64835 +/* Test for a homogeneous floating point aggregate.
       
 64836 +
       
 64837 +   A homogeneous floating point aggregate is a homogeneous aggregate of
       
 64838 +   a half- single- or double- precision floating point type with one
       
 64839 +   to four elements.  Note that this includes nested structs of the
       
 64840 +   basic type.  */
       
 64841 +
       
 64842 +static int
       
 64843 +is_hfa (ffi_type *ty)
       
 64844 +{
       
 64845 +  if (ty->type == FFI_TYPE_STRUCT
       
 64846 +      && ty->elements[0]
       
 64847 +      && is_floating_type (get_homogeneous_type (ty)))
       
 64848 +    {
       
 64849 +      unsigned n = element_count (ty);
       
 64850 +      return n >= 1 && n <= 4;
       
 64851 +    }
       
 64852 +  return 0;
       
 64853 +}
       
 64854 +
       
 64855 +/* Test if an ffi_type is a candidate for passing in a register.
       
 64856 +
       
 64857 +   This test does not check that sufficient registers of the
       
 64858 +   appropriate class are actually available, merely that IFF
       
 64859 +   sufficient registers are available then the argument will be passed
       
 64860 +   in register(s).
       
 64861 +
       
 64862 +   Note that an ffi_type that is deemed to be a register candidate
       
 64863 +   will always be returned in registers.
       
 64864 +
       
 64865 +   Returns 1 if a register candidate else 0.  */
       
 64866 +
       
 64867 +static int
       
 64868 +is_register_candidate (ffi_type *ty)
       
 64869 +{
       
 64870 +  switch (ty->type)
       
 64871 +    {
       
 64872 +    case FFI_TYPE_VOID:
       
 64873 +    case FFI_TYPE_FLOAT:
       
 64874 +    case FFI_TYPE_DOUBLE:
       
 64875 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 64876 +    case FFI_TYPE_LONGDOUBLE:
       
 64877 +#endif
       
 64878 +    case FFI_TYPE_UINT8:
       
 64879 +    case FFI_TYPE_UINT16:
       
 64880 +    case FFI_TYPE_UINT32:
       
 64881 +    case FFI_TYPE_UINT64:
       
 64882 +    case FFI_TYPE_POINTER:
       
 64883 +    case FFI_TYPE_SINT8:
       
 64884 +    case FFI_TYPE_SINT16:
       
 64885 +    case FFI_TYPE_SINT32:
       
 64886 +    case FFI_TYPE_INT:
       
 64887 +    case FFI_TYPE_SINT64:
       
 64888 +      return 1;
       
 64889 +
       
 64890 +    case FFI_TYPE_STRUCT:
       
 64891 +      if (is_hfa (ty))
       
 64892 +        {
       
 64893 +          return 1;
       
 64894 +        }
       
 64895 +      else if (ty->size > 16)
       
 64896 +        {
       
 64897 +          /* Too large. Will be replaced with a pointer to memory. The
       
 64898 +             pointer MAY be passed in a register, but the value will
       
 64899 +             not. This test specifically fails since the argument will
       
 64900 +             never be passed by value in registers. */
       
 64901 +          return 0;
       
 64902 +        }
       
 64903 +      else
       
 64904 +        {
       
 64905 +          /* Might be passed in registers depending on the number of
       
 64906 +             registers required. */
       
 64907 +          return (ty->size + 7) / 8 < N_X_ARG_REG;
       
 64908 +        }
       
 64909 +      break;
       
 64910 +
       
 64911 +    default:
       
 64912 +      FFI_ASSERT (0);
       
 64913 +      break;
       
 64914 +    }
       
 64915 +
       
 64916 +  return 0;
       
 64917 +}
       
 64918 +
       
 64919 +/* Test if an ffi_type argument or result is a candidate for a vector
       
 64920 +   register.  */
       
 64921 +
       
 64922 +static int
       
 64923 +is_v_register_candidate (ffi_type *ty)
       
 64924 +{
       
 64925 +  return is_floating_type (ty->type)
       
 64926 +	   || (ty->type == FFI_TYPE_STRUCT && is_hfa (ty));
       
 64927 +}
       
 64928 +
       
 64929 +/* Representation of the procedure call argument marshalling
       
 64930 +   state.
       
 64931 +
       
 64932 +   The terse state variable names match the names used in the AARCH64
       
 64933 +   PCS. */
       
 64934 +
       
 64935 +struct arg_state
       
 64936 +{
       
 64937 +  unsigned ngrn;                /* Next general-purpose register number. */
       
 64938 +  unsigned nsrn;                /* Next vector register number. */
       
 64939 +  size_t nsaa;                  /* Next stack offset. */
       
 64940 +};
       
 64941 +
       
 64942 +/* Initialize a procedure call argument marshalling state.  */
       
 64943 +static void
       
 64944 +arg_init (struct arg_state *state, size_t call_frame_size)
       
 64945 +{
       
 64946 +  state->ngrn = 0;
       
 64947 +  state->nsrn = 0;
       
 64948 +  state->nsaa = 0;
       
 64949 +}
       
 64950 +
       
 64951 +/* Return the number of available consecutive core argument
       
 64952 +   registers.  */
       
 64953 +
       
 64954 +static unsigned
       
 64955 +available_x (struct arg_state *state)
       
 64956 +{
       
 64957 +  return N_X_ARG_REG - state->ngrn;
       
 64958 +}
       
 64959 +
       
 64960 +/* Return the number of available consecutive vector argument
       
 64961 +   registers.  */
       
 64962 +
       
 64963 +static unsigned
       
 64964 +available_v (struct arg_state *state)
       
 64965 +{
       
 64966 +  return N_V_ARG_REG - state->nsrn;
       
 64967 +}
       
 64968 +
       
 64969 +static void *
       
 64970 +allocate_to_x (struct call_context *context, struct arg_state *state)
       
 64971 +{
       
 64972 +  FFI_ASSERT (state->ngrn < N_X_ARG_REG);
       
 64973 +  return get_x_addr (context, (state->ngrn)++);
       
 64974 +}
       
 64975 +
       
 64976 +static void *
       
 64977 +allocate_to_s (struct call_context *context, struct arg_state *state)
       
 64978 +{
       
 64979 +  FFI_ASSERT (state->nsrn < N_V_ARG_REG);
       
 64980 +  return get_s_addr (context, (state->nsrn)++);
       
 64981 +}
       
 64982 +
       
 64983 +static void *
       
 64984 +allocate_to_d (struct call_context *context, struct arg_state *state)
       
 64985 +{
       
 64986 +  FFI_ASSERT (state->nsrn < N_V_ARG_REG);
       
 64987 +  return get_d_addr (context, (state->nsrn)++);
       
 64988 +}
       
 64989 +
       
 64990 +static void *
       
 64991 +allocate_to_v (struct call_context *context, struct arg_state *state)
       
 64992 +{
       
 64993 +  FFI_ASSERT (state->nsrn < N_V_ARG_REG);
       
 64994 +  return get_v_addr (context, (state->nsrn)++);
       
 64995 +}
       
 64996 +
       
 64997 +/* Allocate an aligned slot on the stack and return a pointer to it.  */
       
 64998 +static void *
       
 64999 +allocate_to_stack (struct arg_state *state, void *stack, size_t alignment,
       
 65000 +		   size_t size)
       
 65001 +{
       
 65002 +  void *allocation;
       
 65003 +
       
 65004 +  /* Round up the NSAA to the larger of 8 or the natural
       
 65005 +     alignment of the argument's type.  */
       
 65006 +  state->nsaa = ALIGN (state->nsaa, alignment);
       
 65007 +  state->nsaa = ALIGN (state->nsaa, alignment);
       
 65008 +#if !defined (__APPLE__)
       
 65009 +  state->nsaa = ALIGN (state->nsaa, 8);
       
 65010 +#endif
       
 65011 +
       
 65012 +  allocation = stack + state->nsaa;
       
 65013 +
       
 65014 +  state->nsaa += size;
       
 65015 +  return allocation;
       
 65016 +}
       
 65017 +
       
 65018 +static void
       
 65019 +copy_basic_type (void *dest, void *source, unsigned short type)
       
 65020 +{
       
 65021 +  /* This is necessary to ensure that basic types are copied
       
 65022 +     sign extended to 64-bits as libffi expects.  */
       
 65023 +  switch (type)
       
 65024 +    {
       
 65025 +    case FFI_TYPE_FLOAT:
       
 65026 +      *(float *) dest = *(float *) source;
       
 65027 +      break;
       
 65028 +    case FFI_TYPE_DOUBLE:
       
 65029 +      *(double *) dest = *(double *) source;
       
 65030 +      break;
       
 65031 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 65032 +    case FFI_TYPE_LONGDOUBLE:
       
 65033 +      *(long double *) dest = *(long double *) source;
       
 65034 +      break;
       
 65035 +#endif
       
 65036 +    case FFI_TYPE_UINT8:
       
 65037 +      *(ffi_arg *) dest = *(UINT8 *) source;
       
 65038 +      break;
       
 65039 +    case FFI_TYPE_SINT8:
       
 65040 +      *(ffi_sarg *) dest = *(SINT8 *) source;
       
 65041 +      break;
       
 65042 +    case FFI_TYPE_UINT16:
       
 65043 +      *(ffi_arg *) dest = *(UINT16 *) source;
       
 65044 +      break;
       
 65045 +    case FFI_TYPE_SINT16:
       
 65046 +      *(ffi_sarg *) dest = *(SINT16 *) source;
       
 65047 +      break;
       
 65048 +    case FFI_TYPE_UINT32:
       
 65049 +      *(ffi_arg *) dest = *(UINT32 *) source;
       
 65050 +      break;
       
 65051 +    case FFI_TYPE_INT:
       
 65052 +    case FFI_TYPE_SINT32:
       
 65053 +      *(ffi_sarg *) dest = *(SINT32 *) source;
       
 65054 +      break;
       
 65055 +    case FFI_TYPE_POINTER:
       
 65056 +    case FFI_TYPE_UINT64:
       
 65057 +      *(ffi_arg *) dest = *(UINT64 *) source;
       
 65058 +      break;
       
 65059 +    case FFI_TYPE_SINT64:
       
 65060 +      *(ffi_sarg *) dest = *(SINT64 *) source;
       
 65061 +      break;
       
 65062 +    case FFI_TYPE_VOID:
       
 65063 +      break;
       
 65064 +
       
 65065 +    default:
       
 65066 +      FFI_ASSERT (0);
       
 65067 +    }
       
 65068 +}
       
 65069 +
       
 65070 +static void
       
 65071 +copy_hfa_to_reg_or_stack (void *memory,
       
 65072 +			  ffi_type *ty,
       
 65073 +			  struct call_context *context,
       
 65074 +			  unsigned char *stack,
       
 65075 +			  struct arg_state *state)
       
 65076 +{
       
 65077 +  unsigned elems = element_count (ty);
       
 65078 +  if (available_v (state) < elems)
       
 65079 +    {
       
 65080 +      /* There are insufficient V registers. Further V register allocations
       
 65081 +	 are prevented, the NSAA is adjusted (by allocate_to_stack ())
       
 65082 +	 and the argument is copied to memory at the adjusted NSAA.  */
       
 65083 +      state->nsrn = N_V_ARG_REG;
       
 65084 +      memcpy (allocate_to_stack (state, stack, ty->alignment, ty->size),
       
 65085 +	      memory,
       
 65086 +	      ty->size);
       
 65087 +    }
       
 65088 +  else
       
 65089 +    {
       
 65090 +      int i;
       
 65091 +      unsigned short type = get_homogeneous_type (ty);
       
 65092 +      for (i = 0; i < elems; i++)
       
 65093 +	{
       
 65094 +	  void *reg = allocate_to_v (context, state);
       
 65095 +	  copy_basic_type (reg, memory, type);
       
 65096 +	  memory += get_basic_type_size (type);
       
 65097 +	}
       
 65098 +    }
       
 65099 +}
       
 65100 +
       
 65101 +/* Either allocate an appropriate register for the argument type, or if
       
 65102 +   none are available, allocate a stack slot and return a pointer
       
 65103 +   to the allocated space.  */
       
 65104 +
       
 65105 +static void *
       
 65106 +allocate_to_register_or_stack (struct call_context *context,
       
 65107 +			       unsigned char *stack,
       
 65108 +			       struct arg_state *state,
       
 65109 +			       unsigned short type)
       
 65110 +{
       
 65111 +  size_t alignment = get_basic_type_alignment (type);
       
 65112 +  size_t size = alignment;
       
 65113 +  switch (type)
       
 65114 +    {
       
 65115 +    case FFI_TYPE_FLOAT:
       
 65116 +      /* This is the only case for which the allocated stack size
       
 65117 +	 should not match the alignment of the type.  */
       
 65118 +      size = sizeof (UINT32);
       
 65119 +      /* Fall through.  */
       
 65120 +    case FFI_TYPE_DOUBLE:
       
 65121 +      if (state->nsrn < N_V_ARG_REG)
       
 65122 +	return allocate_to_d (context, state);
       
 65123 +      state->nsrn = N_V_ARG_REG;
       
 65124 +      break;
       
 65125 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 65126 +    case FFI_TYPE_LONGDOUBLE:
       
 65127 +      if (state->nsrn < N_V_ARG_REG)
       
 65128 +	return allocate_to_v (context, state);
       
 65129 +      state->nsrn = N_V_ARG_REG;
       
 65130 +      break;
       
 65131 +#endif
       
 65132 +    case FFI_TYPE_UINT8:
       
 65133 +    case FFI_TYPE_SINT8:
       
 65134 +    case FFI_TYPE_UINT16:
       
 65135 +    case FFI_TYPE_SINT16:
       
 65136 +    case FFI_TYPE_UINT32:
       
 65137 +    case FFI_TYPE_SINT32:
       
 65138 +    case FFI_TYPE_INT:
       
 65139 +    case FFI_TYPE_POINTER:
       
 65140 +    case FFI_TYPE_UINT64:
       
 65141 +    case FFI_TYPE_SINT64:
       
 65142 +      if (state->ngrn < N_X_ARG_REG)
       
 65143 +	return allocate_to_x (context, state);
       
 65144 +      state->ngrn = N_X_ARG_REG;
       
 65145 +      break;
       
 65146 +    default:
       
 65147 +      FFI_ASSERT (0);
       
 65148 +    }
       
 65149 +
       
 65150 +    return allocate_to_stack (state, stack, alignment, size);
       
 65151 +}
       
 65152 +
       
 65153 +/* Copy a value to an appropriate register, or if none are
       
 65154 +   available, to the stack.  */
       
 65155 +
       
 65156 +static void
       
 65157 +copy_to_register_or_stack (struct call_context *context,
       
 65158 +			   unsigned char *stack,
       
 65159 +			   struct arg_state *state,
       
 65160 +			   void *value,
       
 65161 +			   unsigned short type)
       
 65162 +{
       
 65163 +  copy_basic_type (
       
 65164 +	  allocate_to_register_or_stack (context, stack, state, type),
       
 65165 +	  value,
       
 65166 +	  type);
       
 65167 +}
       
 65168 +
       
 65169 +/* Marshall the arguments from FFI representation to procedure call
       
 65170 +   context and stack.  */
       
 65171 +
       
 65172 +static unsigned
       
 65173 +aarch64_prep_args (struct call_context *context, unsigned char *stack,
       
 65174 +		   extended_cif *ecif)
       
 65175 +{
       
 65176 +  int i;
       
 65177 +  struct arg_state state;
       
 65178 +
       
 65179 +  arg_init (&state, ALIGN(ecif->cif->bytes, 16));
       
 65180 +
       
 65181 +  for (i = 0; i < ecif->cif->nargs; i++)
       
 65182 +    {
       
 65183 +      ffi_type *ty = ecif->cif->arg_types[i];
       
 65184 +      switch (ty->type)
       
 65185 +	{
       
 65186 +	case FFI_TYPE_VOID:
       
 65187 +	  FFI_ASSERT (0);
       
 65188 +	  break;
       
 65189 +
       
 65190 +	/* If the argument is a basic type the argument is allocated to an
       
 65191 +	   appropriate register, or if none are available, to the stack.  */
       
 65192 +	case FFI_TYPE_FLOAT:
       
 65193 +	case FFI_TYPE_DOUBLE:
       
 65194 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 65195 +	case FFI_TYPE_LONGDOUBLE:
       
 65196 +#endif
       
 65197 +	case FFI_TYPE_UINT8:
       
 65198 +	case FFI_TYPE_SINT8:
       
 65199 +	case FFI_TYPE_UINT16:
       
 65200 +	case FFI_TYPE_SINT16:
       
 65201 +	case FFI_TYPE_UINT32:
       
 65202 +	case FFI_TYPE_INT:
       
 65203 +	case FFI_TYPE_SINT32:
       
 65204 +	case FFI_TYPE_POINTER:
       
 65205 +	case FFI_TYPE_UINT64:
       
 65206 +	case FFI_TYPE_SINT64:
       
 65207 +	  copy_to_register_or_stack (context, stack, &state,
       
 65208 +				     ecif->avalue[i], ty->type);
       
 65209 +	  break;
       
 65210 +
       
 65211 +	case FFI_TYPE_STRUCT:
       
 65212 +	  if (is_hfa (ty))
       
 65213 +	    {
       
 65214 +	      copy_hfa_to_reg_or_stack (ecif->avalue[i], ty, context,
       
 65215 +					stack, &state);
       
 65216 +	    }
       
 65217 +	  else if (ty->size > 16)
       
 65218 +	    {
       
 65219 +	      /* If the argument is a composite type that is larger than 16
       
 65220 +		 bytes, then the argument has been copied to memory, and
       
 65221 +		 the argument is replaced by a pointer to the copy.  */
       
 65222 +
       
 65223 +	      copy_to_register_or_stack (context, stack, &state,
       
 65224 +					 &(ecif->avalue[i]), FFI_TYPE_POINTER);
       
 65225 +	    }
       
 65226 +	  else if (available_x (&state) >= (ty->size + 7) / 8)
       
 65227 +	    {
       
 65228 +	      /* If the argument is a composite type and the size in
       
 65229 +		 double-words is not more than the number of available
       
 65230 +		 X registers, then the argument is copied into consecutive
       
 65231 +		 X registers.  */
       
 65232 +	      int j;
       
 65233 +	      for (j = 0; j < (ty->size + 7) / 8; j++)
       
 65234 +		{
       
 65235 +		  memcpy (allocate_to_x (context, &state),
       
 65236 +			  &(((UINT64 *) ecif->avalue[i])[j]),
       
 65237 +			  sizeof (UINT64));
       
 65238 +		}
       
 65239 +	    }
       
 65240 +	  else
       
 65241 +	    {
       
 65242 +	      /* Otherwise, there are insufficient X registers. Further X
       
 65243 +		 register allocations are prevented, the NSAA is adjusted
       
 65244 +		 (by allocate_to_stack ()) and the argument is copied to
       
 65245 +		 memory at the adjusted NSAA.  */
       
 65246 +	      state.ngrn = N_X_ARG_REG;
       
 65247 +
       
 65248 +	      memcpy (allocate_to_stack (&state, stack, ty->alignment,
       
 65249 +					 ty->size), ecif->avalue + i, ty->size);
       
 65250 +	    }
       
 65251 +	  break;
       
 65252 +
       
 65253 +	default:
       
 65254 +	  FFI_ASSERT (0);
       
 65255 +	  break;
       
 65256 +	}
       
 65257 +    }
       
 65258 +
       
 65259 +  return ecif->cif->aarch64_flags;
       
 65260 +}
       
 65261 +
       
 65262 +ffi_status
       
 65263 +ffi_prep_cif_machdep (ffi_cif *cif)
       
 65264 +{
       
 65265 +  /* Round the stack up to a multiple of the stack alignment requirement. */
       
 65266 +  cif->bytes =
       
 65267 +    (cif->bytes + (AARCH64_STACK_ALIGN - 1)) & ~ (AARCH64_STACK_ALIGN - 1);
       
 65268 +
       
 65269 +  /* Initialize our flags. We are interested if this CIF will touch a
       
 65270 +     vector register, if so we will enable context save and load to
       
 65271 +     those registers, otherwise not. This is intended to be friendly
       
 65272 +     to lazy float context switching in the kernel.  */
       
 65273 +  cif->aarch64_flags = 0;
       
 65274 +
       
 65275 +  if (is_v_register_candidate (cif->rtype))
       
 65276 +    {
       
 65277 +      cif->aarch64_flags |= AARCH64_FFI_WITH_V;
       
 65278 +    }
       
 65279 +  else
       
 65280 +    {
       
 65281 +      int i;
       
 65282 +      for (i = 0; i < cif->nargs; i++)
       
 65283 +        if (is_v_register_candidate (cif->arg_types[i]))
       
 65284 +          {
       
 65285 +            cif->aarch64_flags |= AARCH64_FFI_WITH_V;
       
 65286 +            break;
       
 65287 +          }
       
 65288 +    }
       
 65289 +
       
 65290 +  return FFI_OK;
       
 65291 +}
       
 65292 +
       
 65293 +/* Call a function with the provided arguments and capture the return
       
 65294 +   value.  */
       
 65295 +void
       
 65296 +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 65297 +{
       
 65298 +  extended_cif ecif;
       
 65299 +
       
 65300 +  ecif.cif = cif;
       
 65301 +  ecif.avalue = avalue;
       
 65302 +  ecif.rvalue = rvalue;
       
 65303 +
       
 65304 +  switch (cif->abi)
       
 65305 +    {
       
 65306 +    case FFI_SYSV:
       
 65307 +      {
       
 65308 +        struct call_context context;
       
 65309 +	size_t stack_bytes;
       
 65310 +
       
 65311 +	/* Figure out the total amount of stack space we need, the
       
 65312 +	   above call frame space needs to be 16 bytes aligned to
       
 65313 +	   ensure correct alignment of the first object inserted in
       
 65314 +	   that space hence the ALIGN applied to cif->bytes.*/
       
 65315 +	stack_bytes = ALIGN(cif->bytes, 16);
       
 65316 +
       
 65317 +	memset (&context, 0, sizeof (context));
       
 65318 +        if (is_register_candidate (cif->rtype))
       
 65319 +          {
       
 65320 +            ffi_call_SYSV (aarch64_prep_args, &context, &ecif, stack_bytes, fn);
       
 65321 +            switch (cif->rtype->type)
       
 65322 +              {
       
 65323 +              case FFI_TYPE_VOID:
       
 65324 +              case FFI_TYPE_FLOAT:
       
 65325 +              case FFI_TYPE_DOUBLE:
       
 65326 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 65327 +              case FFI_TYPE_LONGDOUBLE:
       
 65328 +#endif
       
 65329 +              case FFI_TYPE_UINT8:
       
 65330 +              case FFI_TYPE_SINT8:
       
 65331 +              case FFI_TYPE_UINT16:
       
 65332 +              case FFI_TYPE_SINT16:
       
 65333 +              case FFI_TYPE_UINT32:
       
 65334 +              case FFI_TYPE_SINT32:
       
 65335 +              case FFI_TYPE_POINTER:
       
 65336 +              case FFI_TYPE_UINT64:
       
 65337 +              case FFI_TYPE_INT:
       
 65338 +              case FFI_TYPE_SINT64:
       
 65339 +		{
       
 65340 +		  void *addr = get_basic_type_addr (cif->rtype->type,
       
 65341 +						    &context, 0);
       
 65342 +		  copy_basic_type (rvalue, addr, cif->rtype->type);
       
 65343 +		  break;
       
 65344 +		}
       
 65345 +
       
 65346 +              case FFI_TYPE_STRUCT:
       
 65347 +                if (is_hfa (cif->rtype))
       
 65348 +		  {
       
 65349 +		    int j;
       
 65350 +		    unsigned short type = get_homogeneous_type (cif->rtype);
       
 65351 +		    unsigned elems = element_count (cif->rtype);
       
 65352 +		    for (j = 0; j < elems; j++)
       
 65353 +		      {
       
 65354 +			void *reg = get_basic_type_addr (type, &context, j);
       
 65355 +			copy_basic_type (rvalue, reg, type);
       
 65356 +			rvalue += get_basic_type_size (type);
       
 65357 +		      }
       
 65358 +		  }
       
 65359 +                else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG)
       
 65360 +                  {
       
 65361 +                    size_t size = ALIGN (cif->rtype->size, sizeof (UINT64));
       
 65362 +                    memcpy (rvalue, get_x_addr (&context, 0), size);
       
 65363 +                  }
       
 65364 +                else
       
 65365 +                  {
       
 65366 +                    FFI_ASSERT (0);
       
 65367 +                  }
       
 65368 +                break;
       
 65369 +
       
 65370 +              default:
       
 65371 +                FFI_ASSERT (0);
       
 65372 +                break;
       
 65373 +              }
       
 65374 +          }
       
 65375 +        else
       
 65376 +          {
       
 65377 +            memcpy (get_x_addr (&context, 8), &rvalue, sizeof (UINT64));
       
 65378 +            ffi_call_SYSV (aarch64_prep_args, &context, &ecif,
       
 65379 +			   stack_bytes, fn);
       
 65380 +          }
       
 65381 +        break;
       
 65382 +      }
       
 65383 +
       
 65384 +    default:
       
 65385 +      FFI_ASSERT (0);
       
 65386 +      break;
       
 65387 +    }
       
 65388 +}
       
 65389 +
       
 65390 +static unsigned char trampoline [] =
       
 65391 +{ 0x70, 0x00, 0x00, 0x58,	/* ldr	x16, 1f	*/
       
 65392 +  0x91, 0x00, 0x00, 0x10,	/* adr	x17, 2f	*/
       
 65393 +  0x00, 0x02, 0x1f, 0xd6	/* br	x16	*/
       
 65394 +};
       
 65395 +
       
 65396 +/* Build a trampoline.  */
       
 65397 +
       
 65398 +#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX,FLAGS)			\
       
 65399 +  ({unsigned char *__tramp = (unsigned char*)(TRAMP);			\
       
 65400 +    UINT64  __fun = (UINT64)(FUN);					\
       
 65401 +    UINT64  __ctx = (UINT64)(CTX);					\
       
 65402 +    UINT64  __flags = (UINT64)(FLAGS);					\
       
 65403 +    memcpy (__tramp, trampoline, sizeof (trampoline));			\
       
 65404 +    memcpy (__tramp + 12, &__fun, sizeof (__fun));			\
       
 65405 +    memcpy (__tramp + 20, &__ctx, sizeof (__ctx));			\
       
 65406 +    memcpy (__tramp + 28, &__flags, sizeof (__flags));			\
       
 65407 +    ffi_clear_cache(__tramp, __tramp + FFI_TRAMPOLINE_SIZE);		\
       
 65408 +  })
       
 65409 +
       
 65410 +ffi_status
       
 65411 +ffi_prep_closure_loc (ffi_closure* closure,
       
 65412 +                      ffi_cif* cif,
       
 65413 +                      void (*fun)(ffi_cif*,void*,void**,void*),
       
 65414 +                      void *user_data,
       
 65415 +                      void *codeloc)
       
 65416 +{
       
 65417 +  if (cif->abi != FFI_SYSV)
       
 65418 +    return FFI_BAD_ABI;
       
 65419 +
       
 65420 +  FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_SYSV, codeloc,
       
 65421 +		       cif->aarch64_flags);
       
 65422 +
       
 65423 +  closure->cif  = cif;
       
 65424 +  closure->user_data = user_data;
       
 65425 +  closure->fun  = fun;
       
 65426 +
       
 65427 +  return FFI_OK;
       
 65428 +}
       
 65429 +
       
 65430 +/* Primary handler to setup and invoke a function within a closure.
       
 65431 +
       
 65432 +   A closure when invoked enters via the assembler wrapper
       
 65433 +   ffi_closure_SYSV(). The wrapper allocates a call context on the
       
 65434 +   stack, saves the interesting registers (from the perspective of
       
 65435 +   the calling convention) into the context then passes control to
       
 65436 +   ffi_closure_SYSV_inner() passing the saved context and a pointer to
       
 65437 +   the stack at the point ffi_closure_SYSV() was invoked.
       
 65438 +
       
 65439 +   On the return path the assembler wrapper will reload call context
       
 65440 +   registers.
       
 65441 +
       
 65442 +   ffi_closure_SYSV_inner() marshalls the call context into ffi value
       
 65443 +   descriptors, invokes the wrapped function, then marshalls the return
       
 65444 +   value back into the call context.  */
       
 65445 +
       
 65446 +void FFI_HIDDEN
       
 65447 +ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
       
 65448 +			void *stack)
       
 65449 +{
       
 65450 +  ffi_cif *cif = closure->cif;
       
 65451 +  void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
       
 65452 +  void *rvalue = NULL;
       
 65453 +  int i;
       
 65454 +  struct arg_state state;
       
 65455 +
       
 65456 +  arg_init (&state, ALIGN(cif->bytes, 16));
       
 65457 +
       
 65458 +  for (i = 0; i < cif->nargs; i++)
       
 65459 +    {
       
 65460 +      ffi_type *ty = cif->arg_types[i];
       
 65461 +
       
 65462 +      switch (ty->type)
       
 65463 +	{
       
 65464 +	case FFI_TYPE_VOID:
       
 65465 +	  FFI_ASSERT (0);
       
 65466 +	  break;
       
 65467 +
       
 65468 +	case FFI_TYPE_UINT8:
       
 65469 +	case FFI_TYPE_SINT8:
       
 65470 +	case FFI_TYPE_UINT16:
       
 65471 +	case FFI_TYPE_SINT16:
       
 65472 +	case FFI_TYPE_UINT32:
       
 65473 +	case FFI_TYPE_SINT32:
       
 65474 +	case FFI_TYPE_INT:
       
 65475 +	case FFI_TYPE_POINTER:
       
 65476 +	case FFI_TYPE_UINT64:
       
 65477 +	case FFI_TYPE_SINT64:
       
 65478 +	case  FFI_TYPE_FLOAT:
       
 65479 +	case  FFI_TYPE_DOUBLE:
       
 65480 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 65481 +	case  FFI_TYPE_LONGDOUBLE:
       
 65482 +	  avalue[i] = allocate_to_register_or_stack (context, stack,
       
 65483 +						     &state, ty->type);
       
 65484 +	  break;
       
 65485 +#endif
       
 65486 +
       
 65487 +	case FFI_TYPE_STRUCT:
       
 65488 +	  if (is_hfa (ty))
       
 65489 +	    {
       
 65490 +	      unsigned n = element_count (ty);
       
 65491 +	      if (available_v (&state) < n)
       
 65492 +		{
       
 65493 +		  state.nsrn = N_V_ARG_REG;
       
 65494 +		  avalue[i] = allocate_to_stack (&state, stack, ty->alignment,
       
 65495 +						 ty->size);
       
 65496 +		}
       
 65497 +	      else
       
 65498 +		{
       
 65499 +		  switch (get_homogeneous_type (ty))
       
 65500 +		    {
       
 65501 +		    case FFI_TYPE_FLOAT:
       
 65502 +		      {
       
 65503 +			/* Eeek! We need a pointer to the structure,
       
 65504 +			   however the homogeneous float elements are
       
 65505 +			   being passed in individual S registers,
       
 65506 +			   therefore the structure is not represented as
       
 65507 +			   a contiguous sequence of bytes in our saved
       
 65508 +			   register context. We need to fake up a copy
       
 65509 +			   of the structure laid out in memory
       
 65510 +			   correctly. The fake can be tossed once the
       
 65511 +			   closure function has returned hence alloca()
       
 65512 +			   is sufficient. */
       
 65513 +			int j;
       
 65514 +			UINT32 *p = avalue[i] = alloca (ty->size);
       
 65515 +			for (j = 0; j < element_count (ty); j++)
       
 65516 +			  memcpy (&p[j],
       
 65517 +				  allocate_to_s (context, &state),
       
 65518 +				  sizeof (*p));
       
 65519 +			break;
       
 65520 +		      }
       
 65521 +
       
 65522 +		    case FFI_TYPE_DOUBLE:
       
 65523 +		      {
       
 65524 +			/* Eeek! We need a pointer to the structure,
       
 65525 +			   however the homogeneous float elements are
       
 65526 +			   being passed in individual S registers,
       
 65527 +			   therefore the structure is not represented as
       
 65528 +			   a contiguous sequence of bytes in our saved
       
 65529 +			   register context. We need to fake up a copy
       
 65530 +			   of the structure laid out in memory
       
 65531 +			   correctly. The fake can be tossed once the
       
 65532 +			   closure function has returned hence alloca()
       
 65533 +			   is sufficient. */
       
 65534 +			int j;
       
 65535 +			UINT64 *p = avalue[i] = alloca (ty->size);
       
 65536 +			for (j = 0; j < element_count (ty); j++)
       
 65537 +			  memcpy (&p[j],
       
 65538 +				  allocate_to_d (context, &state),
       
 65539 +				  sizeof (*p));
       
 65540 +			break;
       
 65541 +		      }
       
 65542 +
       
 65543 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 65544 +		    case FFI_TYPE_LONGDOUBLE:
       
 65545 +			  memcpy (&avalue[i],
       
 65546 +				  allocate_to_v (context, &state),
       
 65547 +				  sizeof (*avalue));
       
 65548 +		      break;
       
 65549 +#endif
       
 65550 +
       
 65551 +		    default:
       
 65552 +		      FFI_ASSERT (0);
       
 65553 +		      break;
       
 65554 +		    }
       
 65555 +		}
       
 65556 +	    }
       
 65557 +	  else if (ty->size > 16)
       
 65558 +	    {
       
 65559 +	      /* Replace Composite type of size greater than 16 with a
       
 65560 +		 pointer.  */
       
 65561 +	      memcpy (&avalue[i],
       
 65562 +		      allocate_to_register_or_stack (context, stack,
       
 65563 +						     &state, FFI_TYPE_POINTER),
       
 65564 +		      sizeof (avalue[i]));
       
 65565 +	    }
       
 65566 +	  else if (available_x (&state) >= (ty->size + 7) / 8)
       
 65567 +	    {
       
 65568 +	      avalue[i] = get_x_addr (context, state.ngrn);
       
 65569 +	      state.ngrn += (ty->size + 7) / 8;
       
 65570 +	    }
       
 65571 +	  else
       
 65572 +	    {
       
 65573 +	      state.ngrn = N_X_ARG_REG;
       
 65574 +
       
 65575 +	      avalue[i] = allocate_to_stack (&state, stack, ty->alignment,
       
 65576 +					     ty->size);
       
 65577 +	    }
       
 65578 +	  break;
       
 65579 +
       
 65580 +	default:
       
 65581 +	  FFI_ASSERT (0);
       
 65582 +	  break;
       
 65583 +	}
       
 65584 +    }
       
 65585 +
       
 65586 +  /* Figure out where the return value will be passed, either in
       
 65587 +     registers or in a memory block allocated by the caller and passed
       
 65588 +     in x8.  */
       
 65589 +
       
 65590 +  if (is_register_candidate (cif->rtype))
       
 65591 +    {
       
 65592 +      /* Register candidates are *always* returned in registers. */
       
 65593 +
       
 65594 +      /* Allocate a scratchpad for the return value, we will let the
       
 65595 +         callee scrible the result into the scratch pad then move the
       
 65596 +         contents into the appropriate return value location for the
       
 65597 +         call convention.  */
       
 65598 +      rvalue = alloca (cif->rtype->size);
       
 65599 +      (closure->fun) (cif, rvalue, avalue, closure->user_data);
       
 65600 +
       
 65601 +      /* Copy the return value into the call context so that it is returned
       
 65602 +         as expected to our caller.  */
       
 65603 +      switch (cif->rtype->type)
       
 65604 +        {
       
 65605 +        case FFI_TYPE_VOID:
       
 65606 +          break;
       
 65607 +
       
 65608 +        case FFI_TYPE_UINT8:
       
 65609 +        case FFI_TYPE_UINT16:
       
 65610 +        case FFI_TYPE_UINT32:
       
 65611 +        case FFI_TYPE_POINTER:
       
 65612 +        case FFI_TYPE_UINT64:
       
 65613 +        case FFI_TYPE_SINT8:
       
 65614 +        case FFI_TYPE_SINT16:
       
 65615 +        case FFI_TYPE_INT:
       
 65616 +        case FFI_TYPE_SINT32:
       
 65617 +        case FFI_TYPE_SINT64:
       
 65618 +        case FFI_TYPE_FLOAT:
       
 65619 +        case FFI_TYPE_DOUBLE:
       
 65620 +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
       
 65621 +        case FFI_TYPE_LONGDOUBLE:
       
 65622 +#endif
       
 65623 +	  {
       
 65624 +	    void *addr = get_basic_type_addr (cif->rtype->type, context, 0);
       
 65625 +	    copy_basic_type (addr, rvalue, cif->rtype->type);
       
 65626 +            break;
       
 65627 +	  }
       
 65628 +        case FFI_TYPE_STRUCT:
       
 65629 +          if (is_hfa (cif->rtype))
       
 65630 +	    {
       
 65631 +	      int j;
       
 65632 +	      unsigned short type = get_homogeneous_type (cif->rtype);
       
 65633 +	      unsigned elems = element_count (cif->rtype);
       
 65634 +	      for (j = 0; j < elems; j++)
       
 65635 +		{
       
 65636 +		  void *reg = get_basic_type_addr (type, context, j);
       
 65637 +		  copy_basic_type (reg, rvalue, type);
       
 65638 +		  rvalue += get_basic_type_size (type);
       
 65639 +		}
       
 65640 +	    }
       
 65641 +          else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG)
       
 65642 +            {
       
 65643 +              size_t size = ALIGN (cif->rtype->size, sizeof (UINT64)) ;
       
 65644 +              memcpy (get_x_addr (context, 0), rvalue, size);
       
 65645 +            }
       
 65646 +          else
       
 65647 +            {
       
 65648 +              FFI_ASSERT (0);
       
 65649 +            }
       
 65650 +          break;
       
 65651 +        default:
       
 65652 +          FFI_ASSERT (0);
       
 65653 +          break;
       
 65654 +        }
       
 65655 +    }
       
 65656 +  else
       
 65657 +    {
       
 65658 +      memcpy (&rvalue, get_x_addr (context, 8), sizeof (UINT64));
       
 65659 +      (closure->fun) (cif, rvalue, avalue, closure->user_data);
       
 65660 +    }
       
 65661 +}
       
 65662 +
       
 65663 diff --git a/js/src/ctypes/libffi/src/aarch64/ffitarget.h b/js/src/ctypes/libffi/src/aarch64/ffitarget.h
       
 65664 new file mode 100644
       
 65665 --- /dev/null
       
 65666 +++ b/js/src/ctypes/libffi/src/aarch64/ffitarget.h
       
 65667 @@ -0,0 +1,59 @@
       
 65668 +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
       
 65669 +
       
 65670 +Permission is hereby granted, free of charge, to any person obtaining
       
 65671 +a copy of this software and associated documentation files (the
       
 65672 +``Software''), to deal in the Software without restriction, including
       
 65673 +without limitation the rights to use, copy, modify, merge, publish,
       
 65674 +distribute, sublicense, and/or sell copies of the Software, and to
       
 65675 +permit persons to whom the Software is furnished to do so, subject to
       
 65676 +the following conditions:
       
 65677 +
       
 65678 +The above copyright notice and this permission notice shall be
       
 65679 +included in all copies or substantial portions of the Software.
       
 65680 +
       
 65681 +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 65682 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 65683 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 65684 +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 65685 +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 65686 +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 65687 +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
       
 65688 +
       
 65689 +#ifndef LIBFFI_TARGET_H
       
 65690 +#define LIBFFI_TARGET_H
       
 65691 +
       
 65692 +#ifndef LIBFFI_H
       
 65693 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 65694 +#endif
       
 65695 +
       
 65696 +#ifndef LIBFFI_ASM
       
 65697 +typedef unsigned long ffi_arg;
       
 65698 +typedef signed long ffi_sarg;
       
 65699 +
       
 65700 +typedef enum ffi_abi
       
 65701 +  {
       
 65702 +    FFI_FIRST_ABI = 0,
       
 65703 +    FFI_SYSV,
       
 65704 +    FFI_LAST_ABI,
       
 65705 +    FFI_DEFAULT_ABI = FFI_SYSV
       
 65706 +  } ffi_abi;
       
 65707 +#endif
       
 65708 +
       
 65709 +/* ---- Definitions for closures ----------------------------------------- */
       
 65710 +
       
 65711 +#define FFI_CLOSURES 1
       
 65712 +#define FFI_TRAMPOLINE_SIZE 36
       
 65713 +#define FFI_NATIVE_RAW_API 0
       
 65714 +
       
 65715 +/* ---- Internal ---- */
       
 65716 +
       
 65717 +
       
 65718 +#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_flags
       
 65719 +
       
 65720 +#define AARCH64_FFI_WITH_V_BIT 0
       
 65721 +
       
 65722 +#define AARCH64_N_XREG 32
       
 65723 +#define AARCH64_N_VREG 32
       
 65724 +#define AARCH64_CALL_CONTEXT_SIZE (AARCH64_N_XREG * 8 + AARCH64_N_VREG * 16)
       
 65725 +
       
 65726 +#endif
       
 65727 diff --git a/js/src/ctypes/libffi/src/aarch64/sysv.S b/js/src/ctypes/libffi/src/aarch64/sysv.S
       
 65728 new file mode 100644
       
 65729 --- /dev/null
       
 65730 +++ b/js/src/ctypes/libffi/src/aarch64/sysv.S
       
 65731 @@ -0,0 +1,327 @@
       
 65732 +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
       
 65733 +
       
 65734 +Permission is hereby granted, free of charge, to any person obtaining
       
 65735 +a copy of this software and associated documentation files (the
       
 65736 +``Software''), to deal in the Software without restriction, including
       
 65737 +without limitation the rights to use, copy, modify, merge, publish,
       
 65738 +distribute, sublicense, and/or sell copies of the Software, and to
       
 65739 +permit persons to whom the Software is furnished to do so, subject to
       
 65740 +the following conditions:
       
 65741 +
       
 65742 +The above copyright notice and this permission notice shall be
       
 65743 +included in all copies or substantial portions of the Software.
       
 65744 +
       
 65745 +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 65746 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 65747 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 65748 +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 65749 +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 65750 +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 65751 +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
       
 65752 +
       
 65753 +#define LIBFFI_ASM
       
 65754 +#include <fficonfig.h>
       
 65755 +#include <ffi.h>
       
 65756 +
       
 65757 +#ifdef HAVE_MACHINE_ASM_H
       
 65758 +#include <machine/asm.h>
       
 65759 +#else
       
 65760 +#ifdef __USER_LABEL_PREFIX__
       
 65761 +#define CONCAT1(a, b) CONCAT2(a, b)
       
 65762 +#define CONCAT2(a, b) a ## b
       
 65763 +
       
 65764 +/* Use the right prefix for global labels.  */
       
 65765 +#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
       
 65766 +#else
       
 65767 +#define CNAME(x) x
       
 65768 +#endif
       
 65769 +#endif
       
 65770 +
       
 65771 +#define cfi_adjust_cfa_offset(off)	.cfi_adjust_cfa_offset off
       
 65772 +#define cfi_rel_offset(reg, off)	.cfi_rel_offset reg, off
       
 65773 +#define cfi_restore(reg)		.cfi_restore reg
       
 65774 +#define cfi_def_cfa_register(reg)	.cfi_def_cfa_register reg
       
 65775 +
       
 65776 +        .text
       
 65777 +        .globl CNAME(ffi_call_SYSV)
       
 65778 +#ifdef __ELF__
       
 65779 +        .type CNAME(ffi_call_SYSV), #function
       
 65780 +#endif
       
 65781 +
       
 65782 +/* ffi_call_SYSV()
       
 65783 +
       
 65784 +   Create a stack frame, setup an argument context, call the callee
       
 65785 +   and extract the result.
       
 65786 +
       
 65787 +   The maximum required argument stack size is provided,
       
 65788 +   ffi_call_SYSV() allocates that stack space then calls the
       
 65789 +   prepare_fn to populate register context and stack.  The
       
 65790 +   argument passing registers are loaded from the register
       
 65791 +   context and the callee called, on return the register passing
       
 65792 +   register are saved back to the context.  Our caller will
       
 65793 +   extract the return value from the final state of the saved
       
 65794 +   register context.
       
 65795 +
       
 65796 +   Prototype:
       
 65797 +
       
 65798 +   extern unsigned
       
 65799 +   ffi_call_SYSV (void (*)(struct call_context *context, unsigned char *,
       
 65800 +			   extended_cif *),
       
 65801 +                  struct call_context *context,
       
 65802 +                  extended_cif *,
       
 65803 +                  size_t required_stack_size,
       
 65804 +                  void (*fn)(void));
       
 65805 +
       
 65806 +   Therefore on entry we have:
       
 65807 +
       
 65808 +   x0 prepare_fn
       
 65809 +   x1 &context
       
 65810 +   x2 &ecif
       
 65811 +   x3 bytes
       
 65812 +   x4 fn
       
 65813 +
       
 65814 +   This function uses the following stack frame layout:
       
 65815 +
       
 65816 +   ==
       
 65817 +                saved x30(lr)
       
 65818 +   x29(fp)->    saved x29(fp)
       
 65819 +                saved x24
       
 65820 +                saved x23
       
 65821 +                saved x22
       
 65822 +   sp'    ->    saved x21
       
 65823 +                ...
       
 65824 +   sp     ->    (constructed callee stack arguments)
       
 65825 +   ==
       
 65826 +
       
 65827 +   Voila! */
       
 65828 +
       
 65829 +#define ffi_call_SYSV_FS (8 * 4)
       
 65830 +
       
 65831 +        .cfi_startproc
       
 65832 +CNAME(ffi_call_SYSV):
       
 65833 +        stp     x29, x30, [sp, #-16]!
       
 65834 +	cfi_adjust_cfa_offset (16)
       
 65835 +        cfi_rel_offset (x29, 0)
       
 65836 +        cfi_rel_offset (x30, 8)
       
 65837 +
       
 65838 +        mov     x29, sp
       
 65839 +	cfi_def_cfa_register (x29)
       
 65840 +        sub     sp, sp, #ffi_call_SYSV_FS
       
 65841 +
       
 65842 +        stp     x21, x22, [sp, #0]
       
 65843 +        cfi_rel_offset (x21, 0 - ffi_call_SYSV_FS)
       
 65844 +        cfi_rel_offset (x22, 8 - ffi_call_SYSV_FS)
       
 65845 +
       
 65846 +        stp     x23, x24, [sp, #16]
       
 65847 +        cfi_rel_offset (x23, 16 - ffi_call_SYSV_FS)
       
 65848 +        cfi_rel_offset (x24, 24 - ffi_call_SYSV_FS)
       
 65849 +
       
 65850 +        mov     x21, x1
       
 65851 +        mov     x22, x2
       
 65852 +        mov     x24, x4
       
 65853 +
       
 65854 +        /* Allocate the stack space for the actual arguments, many
       
 65855 +           arguments will be passed in registers, but we assume
       
 65856 +           worst case and allocate sufficient stack for ALL of
       
 65857 +           the arguments.  */
       
 65858 +        sub     sp, sp, x3
       
 65859 +
       
 65860 +        /* unsigned (*prepare_fn) (struct call_context *context,
       
 65861 +				   unsigned char *stack, extended_cif *ecif);
       
 65862 +	 */
       
 65863 +        mov     x23, x0
       
 65864 +        mov     x0, x1
       
 65865 +        mov     x1, sp
       
 65866 +        /* x2 already in place */
       
 65867 +        blr     x23
       
 65868 +
       
 65869 +        /* Preserve the flags returned.  */
       
 65870 +        mov     x23, x0
       
 65871 +
       
 65872 +        /* Figure out if we should touch the vector registers.  */
       
 65873 +        tbz     x23, #AARCH64_FFI_WITH_V_BIT, 1f
       
 65874 +
       
 65875 +        /* Load the vector argument passing registers.  */
       
 65876 +        ldp     q0, q1, [x21, #8*32 +  0]
       
 65877 +        ldp     q2, q3, [x21, #8*32 + 32]
       
 65878 +        ldp     q4, q5, [x21, #8*32 + 64]
       
 65879 +        ldp     q6, q7, [x21, #8*32 + 96]
       
 65880 +1:
       
 65881 +        /* Load the core argument passing registers.  */
       
 65882 +        ldp     x0, x1, [x21,  #0]
       
 65883 +        ldp     x2, x3, [x21, #16]
       
 65884 +        ldp     x4, x5, [x21, #32]
       
 65885 +        ldp     x6, x7, [x21, #48]
       
 65886 +
       
 65887 +        /* Don't forget x8 which may be holding the address of a return buffer.
       
 65888 +	 */
       
 65889 +        ldr     x8,     [x21, #8*8]
       
 65890 +
       
 65891 +        blr     x24
       
 65892 +
       
 65893 +        /* Save the core argument passing registers.  */
       
 65894 +        stp     x0, x1, [x21,  #0]
       
 65895 +        stp     x2, x3, [x21, #16]
       
 65896 +        stp     x4, x5, [x21, #32]
       
 65897 +        stp     x6, x7, [x21, #48]
       
 65898 +
       
 65899 +        /* Note nothing useful ever comes back in x8!  */
       
 65900 +
       
 65901 +        /* Figure out if we should touch the vector registers.  */
       
 65902 +        tbz     x23, #AARCH64_FFI_WITH_V_BIT, 1f
       
 65903 +
       
 65904 +        /* Save the vector argument passing registers.  */
       
 65905 +        stp     q0, q1, [x21, #8*32 + 0]
       
 65906 +        stp     q2, q3, [x21, #8*32 + 32]
       
 65907 +        stp     q4, q5, [x21, #8*32 + 64]
       
 65908 +        stp     q6, q7, [x21, #8*32 + 96]
       
 65909 +1:
       
 65910 +        /* All done, unwind our stack frame.  */
       
 65911 +        ldp     x21, x22, [x29,  # - ffi_call_SYSV_FS]
       
 65912 +        cfi_restore (x21)
       
 65913 +        cfi_restore (x22)
       
 65914 +
       
 65915 +        ldp     x23, x24, [x29,  # - ffi_call_SYSV_FS + 16]
       
 65916 +        cfi_restore (x23)
       
 65917 +        cfi_restore (x24)
       
 65918 +
       
 65919 +        mov     sp, x29
       
 65920 +	cfi_def_cfa_register (sp)
       
 65921 +
       
 65922 +        ldp     x29, x30, [sp], #16
       
 65923 +	cfi_adjust_cfa_offset (-16)
       
 65924 +        cfi_restore (x29)
       
 65925 +        cfi_restore (x30)
       
 65926 +
       
 65927 +        ret
       
 65928 +
       
 65929 +        .cfi_endproc
       
 65930 +#ifdef __ELF__
       
 65931 +        .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV)
       
 65932 +#endif
       
 65933 +
       
 65934 +#define ffi_closure_SYSV_FS (8 * 2 + AARCH64_CALL_CONTEXT_SIZE)
       
 65935 +
       
 65936 +/* ffi_closure_SYSV
       
 65937 +
       
 65938 +   Closure invocation glue. This is the low level code invoked directly by
       
 65939 +   the closure trampoline to setup and call a closure.
       
 65940 +
       
 65941 +   On entry x17 points to a struct trampoline_data, x16 has been clobbered
       
 65942 +   all other registers are preserved.
       
 65943 +
       
 65944 +   We allocate a call context and save the argument passing registers,
       
 65945 +   then invoked the generic C ffi_closure_SYSV_inner() function to do all
       
 65946 +   the real work, on return we load the result passing registers back from
       
 65947 +   the call context.
       
 65948 +
       
 65949 +   On entry
       
 65950 +
       
 65951 +   extern void
       
 65952 +   ffi_closure_SYSV (struct trampoline_data *);
       
 65953 +
       
 65954 +   struct trampoline_data
       
 65955 +   {
       
 65956 +        UINT64 *ffi_closure;
       
 65957 +        UINT64 flags;
       
 65958 +   };
       
 65959 +
       
 65960 +   This function uses the following stack frame layout:
       
 65961 +
       
 65962 +   ==
       
 65963 +                saved x30(lr)
       
 65964 +   x29(fp)->    saved x29(fp)
       
 65965 +                saved x22
       
 65966 +                saved x21
       
 65967 +                ...
       
 65968 +   sp     ->    call_context
       
 65969 +   ==
       
 65970 +
       
 65971 +   Voila!  */
       
 65972 +
       
 65973 +        .text
       
 65974 +        .globl CNAME(ffi_closure_SYSV)
       
 65975 +        .cfi_startproc
       
 65976 +CNAME(ffi_closure_SYSV):
       
 65977 +        stp     x29, x30, [sp, #-16]!
       
 65978 +	cfi_adjust_cfa_offset (16)
       
 65979 +        cfi_rel_offset (x29, 0)
       
 65980 +        cfi_rel_offset (x30, 8)
       
 65981 +
       
 65982 +        mov     x29, sp
       
 65983 +        cfi_def_cfa_register (x29)
       
 65984 +
       
 65985 +        sub     sp, sp, #ffi_closure_SYSV_FS
       
 65986 +
       
 65987 +        stp     x21, x22, [x29, #-16]
       
 65988 +        cfi_rel_offset (x21, -16)
       
 65989 +        cfi_rel_offset (x22, -8)
       
 65990 +
       
 65991 +        /* Load x21 with &call_context.  */
       
 65992 +        mov     x21, sp
       
 65993 +        /* Preserve our struct trampoline_data *  */
       
 65994 +        mov     x22, x17
       
 65995 +
       
 65996 +        /* Save the rest of the argument passing registers.  */
       
 65997 +        stp     x0, x1, [x21, #0]
       
 65998 +        stp     x2, x3, [x21, #16]
       
 65999 +        stp     x4, x5, [x21, #32]
       
 66000 +        stp     x6, x7, [x21, #48]
       
 66001 +        /* Don't forget we may have been given a result scratch pad address.
       
 66002 +	 */
       
 66003 +        str     x8,     [x21, #64]
       
 66004 +
       
 66005 +        /* Figure out if we should touch the vector registers.  */
       
 66006 +        ldr     x0, [x22, #8]
       
 66007 +        tbz     x0, #AARCH64_FFI_WITH_V_BIT, 1f
       
 66008 +
       
 66009 +        /* Save the argument passing vector registers.  */
       
 66010 +        stp     q0, q1, [x21, #8*32 + 0]
       
 66011 +        stp     q2, q3, [x21, #8*32 + 32]
       
 66012 +        stp     q4, q5, [x21, #8*32 + 64]
       
 66013 +        stp     q6, q7, [x21, #8*32 + 96]
       
 66014 +1:
       
 66015 +        /* Load &ffi_closure..  */
       
 66016 +        ldr     x0, [x22, #0]
       
 66017 +        mov     x1, x21
       
 66018 +        /* Compute the location of the stack at the point that the
       
 66019 +           trampoline was called.  */
       
 66020 +        add     x2, x29, #16
       
 66021 +
       
 66022 +        bl      CNAME(ffi_closure_SYSV_inner)
       
 66023 +
       
 66024 +        /* Figure out if we should touch the vector registers.  */
       
 66025 +        ldr     x0, [x22, #8]
       
 66026 +        tbz     x0, #AARCH64_FFI_WITH_V_BIT, 1f
       
 66027 +
       
 66028 +        /* Load the result passing vector registers.  */
       
 66029 +        ldp     q0, q1, [x21, #8*32 + 0]
       
 66030 +        ldp     q2, q3, [x21, #8*32 + 32]
       
 66031 +        ldp     q4, q5, [x21, #8*32 + 64]
       
 66032 +        ldp     q6, q7, [x21, #8*32 + 96]
       
 66033 +1:
       
 66034 +        /* Load the result passing core registers.  */
       
 66035 +        ldp     x0, x1, [x21,  #0]
       
 66036 +        ldp     x2, x3, [x21, #16]
       
 66037 +        ldp     x4, x5, [x21, #32]
       
 66038 +        ldp     x6, x7, [x21, #48]
       
 66039 +        /* Note nothing useful is returned in x8.  */
       
 66040 +
       
 66041 +        /* We are done, unwind our frame.  */
       
 66042 +        ldp     x21, x22, [x29,  #-16]
       
 66043 +        cfi_restore (x21)
       
 66044 +        cfi_restore (x22)
       
 66045 +
       
 66046 +        mov     sp, x29
       
 66047 +        cfi_def_cfa_register (sp)
       
 66048 +
       
 66049 +        ldp     x29, x30, [sp], #16
       
 66050 +	cfi_adjust_cfa_offset (-16)
       
 66051 +        cfi_restore (x29)
       
 66052 +        cfi_restore (x30)
       
 66053 +
       
 66054 +        ret
       
 66055 +        .cfi_endproc
       
 66056 +#ifdef __ELF__
       
 66057 +        .size CNAME(ffi_closure_SYSV), .-CNAME(ffi_closure_SYSV)
       
 66058 +#endif
       
 66059 diff --git a/js/src/ctypes/libffi/src/alpha/ffi.c b/js/src/ctypes/libffi/src/alpha/ffi.c
       
 66060 --- a/js/src/ctypes/libffi/src/alpha/ffi.c
       
 66061 +++ b/js/src/ctypes/libffi/src/alpha/ffi.c
       
 66062 @@ -1,10 +1,11 @@
       
 66063  /* -----------------------------------------------------------------------
       
 66064 -   ffi.c - Copyright (c) 1998, 2001, 2007, 2008  Red Hat, Inc.
       
 66065 +   ffi.c - Copyright (c) 2012  Anthony Green
       
 66066 +           Copyright (c) 1998, 2001, 2007, 2008  Red Hat, Inc.
       
 66067     
       
 66068     Alpha Foreign Function Interface 
       
 66069  
       
 66070     Permission is hereby granted, free of charge, to any person obtaining
       
 66071     a copy of this software and associated documentation files (the
       
 66072     ``Software''), to deal in the Software without restriction, including
       
 66073     without limitation the rights to use, copy, modify, merge, publish,
       
 66074     distribute, sublicense, and/or sell copies of the Software, and to
       
 66075 @@ -173,16 +174,19 @@ ffi_status
       
 66076  ffi_prep_closure_loc (ffi_closure* closure,
       
 66077  		      ffi_cif* cif,
       
 66078  		      void (*fun)(ffi_cif*, void*, void**, void*),
       
 66079  		      void *user_data,
       
 66080  		      void *codeloc)
       
 66081  {
       
 66082    unsigned int *tramp;
       
 66083  
       
 66084 +  if (cif->abi != FFI_OSF)
       
 66085 +    return FFI_BAD_ABI;
       
 66086 +
       
 66087    tramp = (unsigned int *) &closure->tramp[0];
       
 66088    tramp[0] = 0x47fb0401;	/* mov $27,$1		*/
       
 66089    tramp[1] = 0xa77b0010;	/* ldq $27,16($27)	*/
       
 66090    tramp[2] = 0x6bfb0000;	/* jmp $31,($27),0	*/
       
 66091    tramp[3] = 0x47ff041f;	/* nop			*/
       
 66092    *(void **) &tramp[4] = ffi_closure_osf;
       
 66093  
       
 66094    closure->cif = cif;
       
 66095 diff --git a/js/src/ctypes/libffi/src/alpha/ffitarget.h b/js/src/ctypes/libffi/src/alpha/ffitarget.h
       
 66096 --- a/js/src/ctypes/libffi/src/alpha/ffitarget.h
       
 66097 +++ b/js/src/ctypes/libffi/src/alpha/ffitarget.h
       
 66098 @@ -1,10 +1,11 @@
       
 66099  /* -----------------------------------------------------------------*-C-*-
       
 66100 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 66101 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 66102 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 66103     Target configuration macros for Alpha.
       
 66104  
       
 66105     Permission is hereby granted, free of charge, to any person obtaining
       
 66106     a copy of this software and associated documentation files (the
       
 66107     ``Software''), to deal in the Software without restriction, including
       
 66108     without limitation the rights to use, copy, modify, merge, publish,
       
 66109     distribute, sublicense, and/or sell copies of the Software, and to
       
 66110     permit persons to whom the Software is furnished to do so, subject to
       
 66111 @@ -22,16 +23,20 @@
       
 66112     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 66113     DEALINGS IN THE SOFTWARE.
       
 66114  
       
 66115     ----------------------------------------------------------------------- */
       
 66116  
       
 66117  #ifndef LIBFFI_TARGET_H
       
 66118  #define LIBFFI_TARGET_H
       
 66119  
       
 66120 +#ifndef LIBFFI_H
       
 66121 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 66122 +#endif
       
 66123 +
       
 66124  #ifndef LIBFFI_ASM
       
 66125  typedef unsigned long          ffi_arg;
       
 66126  typedef signed long            ffi_sarg;
       
 66127  
       
 66128  typedef enum ffi_abi {
       
 66129    FFI_FIRST_ABI = 0,
       
 66130    FFI_OSF,
       
 66131    FFI_LAST_ABI,
       
 66132 diff --git a/js/src/ctypes/libffi/src/alpha/osf.S b/js/src/ctypes/libffi/src/alpha/osf.S
       
 66133 --- a/js/src/ctypes/libffi/src/alpha/osf.S
       
 66134 +++ b/js/src/ctypes/libffi/src/alpha/osf.S
       
 66135 @@ -1,10 +1,10 @@
       
 66136  /* -----------------------------------------------------------------------
       
 66137 -   osf.S - Copyright (c) 1998, 2001, 2007, 2008 Red Hat
       
 66138 +   osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011 Red Hat
       
 66139     
       
 66140     Alpha/OSF Foreign Function Interface 
       
 66141  
       
 66142     Permission is hereby granted, free of charge, to any person obtaining
       
 66143     a copy of this software and associated documentation files (the
       
 66144     ``Software''), to deal in the Software without restriction, including
       
 66145     without limitation the rights to use, copy, modify, merge, publish,
       
 66146     distribute, sublicense, and/or sell copies of the Software, and to
       
 66147 @@ -294,73 +294,94 @@ ffi_closure_osf:
       
 66148  	|| FFI_TYPE_SINT64 != 12	\
       
 66149  	|| FFI_TYPE_STRUCT != 13	\
       
 66150  	|| FFI_TYPE_POINTER != 14	\
       
 66151  	|| FFI_TYPE_LAST != 14
       
 66152  #error "osf.S out of sync with ffi.h"
       
 66153  #endif
       
 66154  
       
 66155  #ifdef __ELF__
       
 66156 +# define UA_SI		.4byte
       
 66157 +# define FDE_ENCODING	0x1b	/* pcrel sdata4 */
       
 66158 +# define FDE_ENCODE(X)	.4byte X-.
       
 66159 +# define FDE_ARANGE(X)	.4byte X
       
 66160 +#elif defined __osf__
       
 66161 +# define UA_SI		.align 0; .long
       
 66162 +# define FDE_ENCODING	0x50	/* aligned absolute */
       
 66163 +# define FDE_ENCODE(X)	.align 3; .quad X
       
 66164 +# define FDE_ARANGE(X)	.align 0; .quad X
       
 66165 +#endif
       
 66166 +
       
 66167 +#ifdef __ELF__
       
 66168  	.section	.eh_frame,EH_FRAME_FLAGS,@progbits
       
 66169 +#elif defined __osf__
       
 66170 +	.data
       
 66171 +	.align 3
       
 66172 +	.globl _GLOBAL__F_ffi_call_osf
       
 66173 +_GLOBAL__F_ffi_call_osf:
       
 66174 +#endif
       
 66175  __FRAME_BEGIN__:
       
 66176 -	.4byte	$LECIE1-$LSCIE1	# Length of Common Information Entry
       
 66177 +	UA_SI	$LECIE1-$LSCIE1	# Length of Common Information Entry
       
 66178  $LSCIE1:
       
 66179 -	.4byte	0x0		# CIE Identifier Tag
       
 66180 +	UA_SI	0x0		# CIE Identifier Tag
       
 66181  	.byte	0x1		# CIE Version
       
 66182  	.ascii "zR\0"		# CIE Augmentation
       
 66183  	.byte	0x1		# uleb128 0x1; CIE Code Alignment Factor
       
 66184  	.byte	0x78		# sleb128 -8; CIE Data Alignment Factor
       
 66185  	.byte	26		# CIE RA Column
       
 66186  	.byte	0x1		# uleb128 0x1; Augmentation size
       
 66187 -	.byte	0x1b		# FDE Encoding (pcrel sdata4)
       
 66188 +	.byte	FDE_ENCODING	# FDE Encoding
       
 66189  	.byte	0xc		# DW_CFA_def_cfa
       
 66190  	.byte	30		# uleb128 column 30
       
 66191  	.byte	0		# uleb128 offset 0
       
 66192  	.align 3
       
 66193  $LECIE1:
       
 66194  $LSFDE1:
       
 66195 -	.4byte	$LEFDE1-$LASFDE1		# FDE Length
       
 66196 +	UA_SI	$LEFDE1-$LASFDE1		# FDE Length
       
 66197  $LASFDE1:
       
 66198 -	.4byte	$LASFDE1-__FRAME_BEGIN__	# FDE CIE offset
       
 66199 -	.4byte	$LFB1-.		# FDE initial location
       
 66200 -	.4byte	$LFE1-$LFB1	# FDE address range
       
 66201 +	UA_SI	$LASFDE1-__FRAME_BEGIN__	# FDE CIE offset
       
 66202 +	FDE_ENCODE($LFB1)			# FDE initial location
       
 66203 +	FDE_ARANGE($LFE1-$LFB1)			# FDE address range
       
 66204  	.byte	0x0		# uleb128 0x0; Augmentation size
       
 66205  
       
 66206  	.byte	0x4		# DW_CFA_advance_loc4
       
 66207 -	.4byte	$LCFI1-$LFB1
       
 66208 +	UA_SI	$LCFI1-$LFB1
       
 66209  	.byte	0x9a		# DW_CFA_offset, column 26
       
 66210  	.byte	4		# uleb128 4*-8
       
 66211  	.byte	0x8f		# DW_CFA_offset, column 15
       
 66212  	.byte	0x3		# uleb128 3*-8
       
 66213  	.byte	0xc		# DW_CFA_def_cfa
       
 66214  	.byte	15		# uleb128 column 15
       
 66215  	.byte	32		# uleb128 offset 32
       
 66216  
       
 66217  	.byte	0x4		# DW_CFA_advance_loc4
       
 66218 -	.4byte	$LCFI2-$LCFI1
       
 66219 +	UA_SI	$LCFI2-$LCFI1
       
 66220  	.byte	0xda		# DW_CFA_restore, column 26
       
 66221  	.align 3
       
 66222  $LEFDE1:
       
 66223  
       
 66224  $LSFDE3:
       
 66225 -	.4byte	$LEFDE3-$LASFDE3		# FDE Length
       
 66226 +	UA_SI	$LEFDE3-$LASFDE3		# FDE Length
       
 66227  $LASFDE3:
       
 66228 -	.4byte	$LASFDE3-__FRAME_BEGIN__	# FDE CIE offset
       
 66229 -	.4byte	$LFB2-.		# FDE initial location
       
 66230 -	.4byte	$LFE2-$LFB2	# FDE address range
       
 66231 +	UA_SI	$LASFDE3-__FRAME_BEGIN__	# FDE CIE offset
       
 66232 +	FDE_ENCODE($LFB2)			# FDE initial location
       
 66233 +	FDE_ARANGE($LFE2-$LFB2)			# FDE address range
       
 66234  	.byte	0x0		# uleb128 0x0; Augmentation size
       
 66235  
       
 66236  	.byte	0x4		# DW_CFA_advance_loc4
       
 66237 -	.4byte	$LCFI5-$LFB2
       
 66238 +	UA_SI	$LCFI5-$LFB2
       
 66239  	.byte	0xe		# DW_CFA_def_cfa_offset
       
 66240  	.byte	0x80,0x1	# uleb128 128
       
 66241  
       
 66242  	.byte	0x4		# DW_CFA_advance_loc4
       
 66243 -	.4byte	$LCFI6-$LCFI5
       
 66244 +	UA_SI	$LCFI6-$LCFI5
       
 66245  	.byte	0x9a		# DW_CFA_offset, column 26
       
 66246  	.byte	16		# uleb128 offset 16*-8
       
 66247  	.align 3
       
 66248  $LEFDE3:
       
 66249 +#if defined __osf__
       
 66250 +	.align 0
       
 66251 +	.long	0		# End of Table
       
 66252 +#endif
       
 66253  
       
 66254 -#ifdef __linux__
       
 66255 +#if defined __ELF__ && defined __linux__
       
 66256  	.section	.note.GNU-stack,"",@progbits
       
 66257  #endif
       
 66258 -#endif
       
 66259 diff --git a/js/src/ctypes/libffi/src/arc/arcompact.S b/js/src/ctypes/libffi/src/arc/arcompact.S
       
 66260 new file mode 100644
       
 66261 --- /dev/null
       
 66262 +++ b/js/src/ctypes/libffi/src/arc/arcompact.S
       
 66263 @@ -0,0 +1,135 @@
       
 66264 +/* -----------------------------------------------------------------------
       
 66265 +   arcompact.S - Copyright (c) 2013 Synposys, Inc. (www.synopsys.com)
       
 66266 +   
       
 66267 +   ARCompact Foreign Function Interface 
       
 66268 +
       
 66269 +   Permission is hereby granted, free of charge, to any person obtaining
       
 66270 +   a copy of this software and associated documentation files (the
       
 66271 +   ``Software''), to deal in the Software without restriction, including
       
 66272 +   without limitation the rights to use, copy, modify, merge, publish,
       
 66273 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 66274 +   permit persons to whom the Software is furnished to do so, subject to
       
 66275 +   the following conditions:
       
 66276 +
       
 66277 +   The above copyright notice and this permission notice shall be included
       
 66278 +   in all copies or substantial portions of the Software.
       
 66279 +
       
 66280 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
       
 66281 +   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 66282 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 66283 +   IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
 66284 +   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
 66285 +   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 66286 +   OTHER DEALINGS IN THE SOFTWARE.
       
 66287 +   ----------------------------------------------------------------------- */
       
 66288 +
       
 66289 +#define LIBFFI_ASM
       
 66290 +#include <fficonfig.h>
       
 66291 +#include <ffi.h>
       
 66292 +#ifdef HAVE_MACHINE_ASM_H
       
 66293 +#include <machine/asm.h>
       
 66294 +#else
       
 66295 +#define CNAME(x) x
       
 66296 +#define ENTRY(x) .globl CNAME(x)` .type CNAME(x),%function` CNAME(x):
       
 66297 +#endif
       
 66298 +
       
 66299 +.text
       
 66300 +
       
 66301 +        /* R0:   ffi_prep_args */
       
 66302 +        /* R1:   &ecif */
       
 66303 +        /* R2:   cif->bytes */
       
 66304 +        /* R3:   fig->flags */
       
 66305 +        /* R4:   ecif.rvalue */
       
 66306 +        /* R5:   fn */
       
 66307 +ENTRY(ffi_call_ARCompact)
       
 66308 +        /* Save registers.  */
       
 66309 +        st.a       fp, [sp, -4]        /* fp + 20, fp */
       
 66310 +        push_s     blink               /* fp + 16, blink */
       
 66311 +        st.a       r4, [sp, -4]        /* fp + 12, ecif.rvalue */
       
 66312 +        push_s     r3                  /* fp +  8, fig->flags */
       
 66313 +        st.a       r5, [sp, -4]        /* fp +  4, fn */
       
 66314 +        push_s     r2                  /* fp +  0, cif->bytes */
       
 66315 +        mov        fp, sp
       
 66316 +
       
 66317 +        /* Make room for all of the new args.  */
       
 66318 +        sub        sp, sp, r2
       
 66319 +
       
 66320 +        /* Place all of the ffi_prep_args in position.  */
       
 66321 +        /* ffi_prep_args(char *stack, extended_cif *ecif) */
       
 66322 +        /* R1 already set.  */
       
 66323 +
       
 66324 +        /* And call.  */
       
 66325 +        jl_s.d     [r0]
       
 66326 +        mov_s      r0, sp
       
 66327 +
       
 66328 +        ld.ab      r12, [fp, 4]        /* cif->bytes */
       
 66329 +        ld.ab      r11, [fp, 4]        /* fn */
       
 66330 +
       
 66331 +        /* Move first 8 parameters in registers...  */
       
 66332 +        ld_s       r0, [sp]
       
 66333 +        ld_s       r1, [sp, 4]
       
 66334 +        ld_s       r2, [sp, 8]
       
 66335 +        ld_s       r3, [sp, 12]
       
 66336 +        ld         r4, [sp, 16]
       
 66337 +        ld         r5, [sp, 20]
       
 66338 +        ld         r6, [sp, 24]
       
 66339 +        ld         r7, [sp, 28]
       
 66340 +
       
 66341 +        /* ...and adjust the stack.  */
       
 66342 +        min        r12, r12, 32
       
 66343 +
       
 66344 +        /* Call the function.  */
       
 66345 +        jl.d       [r11]
       
 66346 +        add        sp, sp, r12 
       
 66347 +
       
 66348 +        mov        sp, fp        
       
 66349 +        pop_s      r3        /* fig->flags, return type */
       
 66350 +        pop_s      r2        /* ecif.rvalue, pointer for return value */
       
 66351 +
       
 66352 +        /* If the return value pointer is NULL, assume no return value.  */
       
 66353 +        breq.d     r2, 0, epilogue
       
 66354 +        pop_s      blink
       
 66355 +
       
 66356 +        /* Return INT.  */
       
 66357 +        brne       r3, FFI_TYPE_INT, return_double
       
 66358 +        b.d        epilogue
       
 66359 +        st_s       r0, [r2]        
       
 66360 +
       
 66361 +return_double:
       
 66362 +        brne       r3, FFI_TYPE_DOUBLE, epilogue
       
 66363 +        st_s       r0, [r2]        
       
 66364 +        st_s       r1, [r2,4]
       
 66365 +
       
 66366 +epilogue:
       
 66367 +        j_s.d      [blink]
       
 66368 +        ld.ab      fp, [sp, 4]
       
 66369 +
       
 66370 +ENTRY(ffi_closure_ARCompact)
       
 66371 +        st.a       r0, [sp, -32]
       
 66372 +        st_s       r1, [sp, 4]
       
 66373 +        st_s       r2, [sp, 8]
       
 66374 +        st_s       r3, [sp, 12]
       
 66375 +        st         r4, [sp, 16]
       
 66376 +        st         r5, [sp, 20]
       
 66377 +        st         r6, [sp, 24]
       
 66378 +        st         r7, [sp, 28]
       
 66379 +
       
 66380 +        /* pointer to arguments */
       
 66381 +        mov_s      r2, sp
       
 66382 +
       
 66383 +        /* return value goes here */
       
 66384 +        sub        sp, sp, 8
       
 66385 +        mov_s      r1, sp
       
 66386 +
       
 66387 +        push_s     blink
       
 66388 +        
       
 66389 +        bl.d       ffi_closure_inner_ARCompact
       
 66390 +        mov_s      r0, r8                /* codeloc, set by trampoline */
       
 66391 +
       
 66392 +        pop_s      blink
       
 66393 +
       
 66394 +        /* set return value to r1:r0 */
       
 66395 +        pop_s      r0
       
 66396 +        pop_s      r1
       
 66397 +        j_s.d      [blink]
       
 66398 +        add_s      sp, sp, 32
       
 66399 diff --git a/js/src/ctypes/libffi/src/arc/ffi.c b/js/src/ctypes/libffi/src/arc/ffi.c
       
 66400 new file mode 100644
       
 66401 --- /dev/null
       
 66402 +++ b/js/src/ctypes/libffi/src/arc/ffi.c
       
 66403 @@ -0,0 +1,268 @@
       
 66404 +/* -----------------------------------------------------------------------
       
 66405 +   ffi.c - Copyright (c) 2013  Synopsys, Inc. (www.synopsys.com)
       
 66406 +   
       
 66407 +   ARC Foreign Function Interface 
       
 66408 +
       
 66409 +   Permission is hereby granted, free of charge, to any person obtaining
       
 66410 +   a copy of this software and associated documentation files (the
       
 66411 +   ``Software''), to deal in the Software without restriction, including
       
 66412 +   without limitation the rights to use, copy, modify, merge, publish,
       
 66413 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 66414 +   permit persons to whom the Software is furnished to do so, subject to
       
 66415 +   the following conditions:
       
 66416 +
       
 66417 +   The above copyright notice and this permission notice shall be included
       
 66418 +   in all copies or substantial portions of the Software.
       
 66419 +
       
 66420 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
       
 66421 +   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 66422 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 66423 +   IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
 66424 +   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
 66425 +   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 66426 +   OTHER DEALINGS IN THE SOFTWARE.
       
 66427 +   ----------------------------------------------------------------------- */
       
 66428 +
       
 66429 +#include <ffi.h>
       
 66430 +#include <ffi_common.h>
       
 66431 +
       
 66432 +#include <stdlib.h>
       
 66433 +#include <stdint.h>
       
 66434 +
       
 66435 +#include <sys/cachectl.h>
       
 66436 +
       
 66437 +/* for little endian ARC, the code is in fact stored as mixed endian for
       
 66438 +   performance reasons */
       
 66439 +#if __BIG_ENDIAN__
       
 66440 +#define CODE_ENDIAN(x) (x)
       
 66441 +#else
       
 66442 +#define CODE_ENDIAN(x) ( (((uint32_t) (x)) << 16) | (((uint32_t) (x)) >> 16))
       
 66443 +#endif
       
 66444 +
       
 66445 +/* ffi_prep_args is called by the assembly routine once stack
       
 66446 +   space has been allocated for the function's arguments.  */
       
 66447 +
       
 66448 +void
       
 66449 +ffi_prep_args (char *stack, extended_cif * ecif)
       
 66450 +{
       
 66451 +  unsigned int i;
       
 66452 +  int tmp;
       
 66453 +  void **p_argv;
       
 66454 +  char *argp;
       
 66455 +  ffi_type **p_arg;
       
 66456 +
       
 66457 +  tmp = 0;
       
 66458 +  argp = stack;
       
 66459 +
       
 66460 +  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT)
       
 66461 +    {
       
 66462 +      *(void **) argp = ecif->rvalue;
       
 66463 +      argp += 4;
       
 66464 +    }
       
 66465 +
       
 66466 +  p_argv = ecif->avalue;
       
 66467 +
       
 66468 +  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
       
 66469 +       (i != 0); i--, p_arg++)
       
 66470 +    {
       
 66471 +      size_t z;
       
 66472 +      int alignment;
       
 66473 +
       
 66474 +      /* align alignment to 4 */
       
 66475 +      alignment = (((*p_arg)->alignment - 1) | 3) + 1;
       
 66476 +
       
 66477 +      /* Align if necessary.  */
       
 66478 +      if ((alignment - 1) & (unsigned) argp)
       
 66479 +	argp = (char *) ALIGN (argp, alignment);
       
 66480 +
       
 66481 +      z = (*p_arg)->size;
       
 66482 +      if (z < sizeof (int))
       
 66483 +	{
       
 66484 +	  z = sizeof (int);
       
 66485 +
       
 66486 +	  switch ((*p_arg)->type)
       
 66487 +	    {
       
 66488 +	    case FFI_TYPE_SINT8:
       
 66489 +	      *(signed int *) argp = (signed int) *(SINT8 *) (*p_argv);
       
 66490 +	      break;
       
 66491 +
       
 66492 +	    case FFI_TYPE_UINT8:
       
 66493 +	      *(unsigned int *) argp = (unsigned int) *(UINT8 *) (*p_argv);
       
 66494 +	      break;
       
 66495 +
       
 66496 +	    case FFI_TYPE_SINT16:
       
 66497 +	      *(signed int *) argp = (signed int) *(SINT16 *) (*p_argv);
       
 66498 +	      break;
       
 66499 +
       
 66500 +	    case FFI_TYPE_UINT16:
       
 66501 +	      *(unsigned int *) argp = (unsigned int) *(UINT16 *) (*p_argv);
       
 66502 +	      break;
       
 66503 +
       
 66504 +	    case FFI_TYPE_STRUCT:
       
 66505 +	      memcpy (argp, *p_argv, (*p_arg)->size);
       
 66506 +	      break;
       
 66507 +
       
 66508 +	    default:
       
 66509 +	      FFI_ASSERT (0);
       
 66510 +	    }
       
 66511 +	}
       
 66512 +      else if (z == sizeof (int))
       
 66513 +	{
       
 66514 +	  *(unsigned int *) argp = (unsigned int) *(UINT32 *) (*p_argv);
       
 66515 +	}
       
 66516 +      else
       
 66517 +	{
       
 66518 +	  if ((*p_arg)->type == FFI_TYPE_STRUCT)
       
 66519 +	    {
       
 66520 +	      memcpy (argp, *p_argv, z);
       
 66521 +	    }
       
 66522 +	  else
       
 66523 +	    {
       
 66524 +	      /* Double or long long 64bit.  */
       
 66525 +	      memcpy (argp, *p_argv, z);
       
 66526 +	    }
       
 66527 +	}
       
 66528 +      p_argv++;
       
 66529 +      argp += z;
       
 66530 +    }
       
 66531 +
       
 66532 +  return;
       
 66533 +}
       
 66534 +
       
 66535 +/* Perform machine dependent cif processing.  */
       
 66536 +ffi_status
       
 66537 +ffi_prep_cif_machdep (ffi_cif * cif)
       
 66538 +{
       
 66539 +  /* Set the return type flag.  */
       
 66540 +  switch (cif->rtype->type)
       
 66541 +    {
       
 66542 +    case FFI_TYPE_VOID:
       
 66543 +      cif->flags = (unsigned) cif->rtype->type;
       
 66544 +      break;
       
 66545 +
       
 66546 +    case FFI_TYPE_STRUCT:
       
 66547 +      cif->flags = (unsigned) cif->rtype->type;
       
 66548 +      break;
       
 66549 +
       
 66550 +    case FFI_TYPE_SINT64:
       
 66551 +    case FFI_TYPE_UINT64:
       
 66552 +    case FFI_TYPE_DOUBLE:
       
 66553 +      cif->flags = FFI_TYPE_DOUBLE;
       
 66554 +      break;
       
 66555 +
       
 66556 +    case FFI_TYPE_FLOAT:
       
 66557 +    default:
       
 66558 +      cif->flags = FFI_TYPE_INT;
       
 66559 +      break;
       
 66560 +    }
       
 66561 +
       
 66562 +  return FFI_OK;
       
 66563 +}
       
 66564 +
       
 66565 +extern void ffi_call_ARCompact (void (*)(char *, extended_cif *),
       
 66566 +				extended_cif *, unsigned, unsigned,
       
 66567 +				unsigned *, void (*fn) (void));
       
 66568 +
       
 66569 +void
       
 66570 +ffi_call (ffi_cif * cif, void (*fn) (void), void *rvalue, void **avalue)
       
 66571 +{
       
 66572 +  extended_cif ecif;
       
 66573 +
       
 66574 +  ecif.cif = cif;
       
 66575 +  ecif.avalue = avalue;
       
 66576 +
       
 66577 +  /* If the return value is a struct and we don't have
       
 66578 +     a return value address then we need to make one.  */
       
 66579 +  if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT))
       
 66580 +    {
       
 66581 +      ecif.rvalue = alloca (cif->rtype->size);
       
 66582 +    }
       
 66583 +  else
       
 66584 +    ecif.rvalue = rvalue;
       
 66585 +
       
 66586 +  switch (cif->abi)
       
 66587 +    {
       
 66588 +    case FFI_ARCOMPACT:
       
 66589 +      ffi_call_ARCompact (ffi_prep_args, &ecif, cif->bytes,
       
 66590 +			  cif->flags, ecif.rvalue, fn);
       
 66591 +      break;
       
 66592 +
       
 66593 +    default:
       
 66594 +      FFI_ASSERT (0);
       
 66595 +      break;
       
 66596 +    }
       
 66597 +}
       
 66598 +
       
 66599 +int
       
 66600 +ffi_closure_inner_ARCompact (ffi_closure * closure, void *rvalue,
       
 66601 +			     ffi_arg * args)
       
 66602 +{
       
 66603 +  void **arg_area, **p_argv;
       
 66604 +  ffi_cif *cif = closure->cif;
       
 66605 +  char *argp = (char *) args;
       
 66606 +  ffi_type **p_argt;
       
 66607 +  int i;
       
 66608 +
       
 66609 +  arg_area = (void **) alloca (cif->nargs * sizeof (void *));
       
 66610 +
       
 66611 +  /* handle hidden argument */
       
 66612 +  if (cif->flags == FFI_TYPE_STRUCT)
       
 66613 +    {
       
 66614 +      rvalue = *(void **) argp;
       
 66615 +      argp += 4;
       
 66616 +    }
       
 66617 +
       
 66618 +  p_argv = arg_area;
       
 66619 +
       
 66620 +  for (i = 0, p_argt = cif->arg_types; i < cif->nargs;
       
 66621 +       i++, p_argt++, p_argv++)
       
 66622 +    {
       
 66623 +      size_t z;
       
 66624 +      int alignment;
       
 66625 +
       
 66626 +      /* align alignment to 4 */
       
 66627 +      alignment = (((*p_argt)->alignment - 1) | 3) + 1;
       
 66628 +
       
 66629 +      /* Align if necessary.  */
       
 66630 +      if ((alignment - 1) & (unsigned) argp)
       
 66631 +	argp = (char *) ALIGN (argp, alignment);
       
 66632 +
       
 66633 +      z = (*p_argt)->size;
       
 66634 +      *p_argv = (void *) argp;
       
 66635 +      argp += z;
       
 66636 +    }
       
 66637 +
       
 66638 +  (closure->fun) (cif, rvalue, arg_area, closure->user_data);
       
 66639 +
       
 66640 +  return cif->flags;
       
 66641 +}
       
 66642 +
       
 66643 +extern void ffi_closure_ARCompact (void);
       
 66644 +
       
 66645 +ffi_status
       
 66646 +ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif,
       
 66647 +		      void (*fun) (ffi_cif *, void *, void **, void *),
       
 66648 +		      void *user_data, void *codeloc)
       
 66649 +{
       
 66650 +  uint32_t *tramp = (uint32_t *) & (closure->tramp[0]);
       
 66651 +
       
 66652 +  switch (cif->abi)
       
 66653 +    {
       
 66654 +    case FFI_ARCOMPACT:
       
 66655 +      FFI_ASSERT (tramp == codeloc);
       
 66656 +      tramp[0] = CODE_ENDIAN (0x200a1fc0);	/* mov r8, pcl  */
       
 66657 +      tramp[1] = CODE_ENDIAN (0x20200f80);	/* j [long imm] */
       
 66658 +      tramp[2] = CODE_ENDIAN (ffi_closure_ARCompact);
       
 66659 +      break;
       
 66660 +
       
 66661 +    default:
       
 66662 +      return FFI_BAD_ABI;
       
 66663 +    }
       
 66664 +
       
 66665 +  closure->cif = cif;
       
 66666 +  closure->fun = fun;
       
 66667 +  closure->user_data = user_data;
       
 66668 +  cacheflush (codeloc, FFI_TRAMPOLINE_SIZE, BCACHE);
       
 66669 +
       
 66670 +  return FFI_OK;
       
 66671 +}
       
 66672 diff --git a/js/src/ctypes/libffi/src/arc/ffitarget.h b/js/src/ctypes/libffi/src/arc/ffitarget.h
       
 66673 new file mode 100644
       
 66674 --- /dev/null
       
 66675 +++ b/js/src/ctypes/libffi/src/arc/ffitarget.h
       
 66676 @@ -0,0 +1,53 @@
       
 66677 +/* -----------------------------------------------------------------------
       
 66678 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 66679 +                 Copyright (c) 2013  Synopsys, Inc. (www.synopsys.com)
       
 66680 +   Target configuration macros for ARC.
       
 66681 +
       
 66682 +   Permission is hereby granted, free of charge, to any person obtaining
       
 66683 +   a copy of this software and associated documentation files (the
       
 66684 +   ``Software''), to deal in the Software without restriction, including
       
 66685 +   without limitation the rights to use, copy, modify, merge, publish,
       
 66686 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 66687 +   permit persons to whom the Software is furnished to do so, subject to
       
 66688 +   the following conditions:
       
 66689 +
       
 66690 +   The above copyright notice and this permission notice shall be included
       
 66691 +   in all copies or substantial portions of the Software.
       
 66692 +
       
 66693 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
       
 66694 +   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 66695 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 66696 +   IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
 66697 +   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
 66698 +   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 66699 +   OTHER DEALINGS IN THE SOFTWARE.
       
 66700 +
       
 66701 +   ----------------------------------------------------------------------- */
       
 66702 +
       
 66703 +#ifndef LIBFFI_TARGET_H
       
 66704 +#define LIBFFI_TARGET_H
       
 66705 +
       
 66706 +#ifndef LIBFFI_H
       
 66707 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 66708 +#endif
       
 66709 +
       
 66710 +/* ---- Generic type definitions ----------------------------------------- */
       
 66711 +
       
 66712 +#ifndef LIBFFI_ASM
       
 66713 +typedef unsigned long ffi_arg;
       
 66714 +typedef signed long ffi_sarg;
       
 66715 +
       
 66716 +typedef enum ffi_abi
       
 66717 +{
       
 66718 +  FFI_FIRST_ABI = 0,
       
 66719 +  FFI_ARCOMPACT,
       
 66720 +  FFI_LAST_ABI,
       
 66721 +  FFI_DEFAULT_ABI = FFI_ARCOMPACT
       
 66722 +} ffi_abi;
       
 66723 +#endif
       
 66724 +
       
 66725 +#define FFI_CLOSURES 		1
       
 66726 +#define FFI_TRAMPOLINE_SIZE	12
       
 66727 +#define FFI_NATIVE_RAW_API 	0
       
 66728 +
       
 66729 +#endif
       
 66730 diff --git a/js/src/ctypes/libffi/src/arm/ffi.c b/js/src/ctypes/libffi/src/arm/ffi.c
       
 66731 --- a/js/src/ctypes/libffi/src/arm/ffi.c
       
 66732 +++ b/js/src/ctypes/libffi/src/arm/ffi.c
       
 66733 @@ -1,12 +1,16 @@
       
 66734  /* -----------------------------------------------------------------------
       
 66735 -   ffi.c - Copyright (c) 1998, 2008  Red Hat, Inc.
       
 66736 -   
       
 66737 -   ARM Foreign Function Interface 
       
 66738 +   ffi.c - Copyright (c) 2011 Timothy Wall
       
 66739 +           Copyright (c) 2011 Plausible Labs Cooperative, Inc.
       
 66740 +           Copyright (c) 2011 Anthony Green
       
 66741 +	   Copyright (c) 2011 Free Software Foundation
       
 66742 +           Copyright (c) 1998, 2008, 2011  Red Hat, Inc.
       
 66743 +
       
 66744 +   ARM Foreign Function Interface
       
 66745  
       
 66746     Permission is hereby granted, free of charge, to any person obtaining
       
 66747     a copy of this software and associated documentation files (the
       
 66748     ``Software''), to deal in the Software without restriction, including
       
 66749     without limitation the rights to use, copy, modify, merge, publish,
       
 66750     distribute, sublicense, and/or sell copies of the Software, and to
       
 66751     permit persons to whom the Software is furnished to do so, subject to
       
 66752     the following conditions:
       
 66753 @@ -28,110 +32,205 @@
       
 66754  #include <ffi_common.h>
       
 66755  
       
 66756  #include <stdlib.h>
       
 66757  
       
 66758  /* Forward declares. */
       
 66759  static int vfp_type_p (ffi_type *);
       
 66760  static void layout_vfp_args (ffi_cif *);
       
 66761  
       
 66762 +int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space);
       
 66763 +int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space);
       
 66764 +
       
 66765 +static char* ffi_align(ffi_type **p_arg, char *argp)
       
 66766 +{
       
 66767 +  /* Align if necessary */
       
 66768 +  register size_t alignment = (*p_arg)->alignment;
       
 66769 +  if (alignment < 4)
       
 66770 +  {
       
 66771 +    alignment = 4;
       
 66772 +  }
       
 66773 +#ifdef _WIN32_WCE
       
 66774 +  if (alignment > 4)
       
 66775 +  {
       
 66776 +    alignment = 4;
       
 66777 +  }
       
 66778 +#endif
       
 66779 +  if ((alignment - 1) & (unsigned) argp)
       
 66780 +  {
       
 66781 +    argp = (char *) ALIGN(argp, alignment);
       
 66782 +  }
       
 66783 +
       
 66784 +  if ((*p_arg)->type == FFI_TYPE_STRUCT)
       
 66785 +  {
       
 66786 +    argp = (char *) ALIGN(argp, 4);
       
 66787 +  }
       
 66788 +  return argp;
       
 66789 +}
       
 66790 +
       
 66791 +static size_t ffi_put_arg(ffi_type **arg_type, void **arg, char *stack)
       
 66792 +{
       
 66793 +	register char* argp = stack;
       
 66794 +	register ffi_type **p_arg = arg_type;
       
 66795 +	register void **p_argv = arg;
       
 66796 +	register size_t z = (*p_arg)->size;
       
 66797 +  if (z < sizeof(int))
       
 66798 +    {
       
 66799 +		z = sizeof(int);
       
 66800 +		switch ((*p_arg)->type)
       
 66801 +      {
       
 66802 +      case FFI_TYPE_SINT8:
       
 66803 +        *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv);
       
 66804 +        break;
       
 66805 +        
       
 66806 +      case FFI_TYPE_UINT8:
       
 66807 +        *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv);
       
 66808 +        break;
       
 66809 +        
       
 66810 +      case FFI_TYPE_SINT16:
       
 66811 +        *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv);
       
 66812 +        break;
       
 66813 +        
       
 66814 +      case FFI_TYPE_UINT16:
       
 66815 +        *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv);
       
 66816 +        break;
       
 66817 +        
       
 66818 +      case FFI_TYPE_STRUCT:
       
 66819 +        memcpy(argp, *p_argv, (*p_arg)->size);
       
 66820 +        break;
       
 66821 +
       
 66822 +      default:
       
 66823 +        FFI_ASSERT(0);
       
 66824 +      }
       
 66825 +    }
       
 66826 +  else if (z == sizeof(int))
       
 66827 +    {
       
 66828 +		if ((*p_arg)->type == FFI_TYPE_FLOAT)
       
 66829 +			*(float *) argp = *(float *)(* p_argv);
       
 66830 +		else
       
 66831 +			*(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv);
       
 66832 +    }
       
 66833 +	else if (z == sizeof(double) && (*p_arg)->type == FFI_TYPE_DOUBLE)
       
 66834 +		{
       
 66835 +			*(double *) argp = *(double *)(* p_argv);
       
 66836 +		}
       
 66837 +  else
       
 66838 +    {
       
 66839 +      memcpy(argp, *p_argv, z);
       
 66840 +    }
       
 66841 +  return z;
       
 66842 +}
       
 66843  /* ffi_prep_args is called by the assembly routine once stack space
       
 66844     has been allocated for the function's arguments
       
 66845     
       
 66846     The vfp_space parameter is the load area for VFP regs, the return
       
 66847     value is cif->vfp_used (word bitset of VFP regs used for passing
       
 66848     arguments). These are only used for the VFP hard-float ABI.
       
 66849  */
       
 66850 -int ffi_prep_args(char *stack, extended_cif *ecif, float *vfp_space)
       
 66851 +int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space)
       
 66852  {
       
 66853 -  register unsigned int i, vi = 0;
       
 66854 +  register unsigned int i;
       
 66855    register void **p_argv;
       
 66856    register char *argp;
       
 66857    register ffi_type **p_arg;
       
 66858 -
       
 66859    argp = stack;
       
 66860 +  
       
 66861  
       
 66862    if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
       
 66863      *(void **) argp = ecif->rvalue;
       
 66864      argp += 4;
       
 66865    }
       
 66866  
       
 66867    p_argv = ecif->avalue;
       
 66868  
       
 66869    for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
       
 66870         (i != 0);
       
 66871 -       i--, p_arg++)
       
 66872 +       i--, p_arg++, p_argv++)
       
 66873      {
       
 66874 -      size_t z;
       
 66875 +    argp = ffi_align(p_arg, argp);
       
 66876 +    argp += ffi_put_arg(p_arg, p_argv, argp);
       
 66877 +    }
       
 66878 +
       
 66879 +  return 0;
       
 66880 +}
       
 66881 +
       
 66882 +int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space)
       
 66883 +{
       
 66884 +  // make sure we are using FFI_VFP
       
 66885 +  FFI_ASSERT(ecif->cif->abi == FFI_VFP);
       
 66886 +
       
 66887 +  register unsigned int i, vi = 0;
       
 66888 +  register void **p_argv;
       
 66889 +  register char *argp, *regp, *eo_regp;
       
 66890 +  register ffi_type **p_arg;
       
 66891 +  char stack_used = 0;
       
 66892 +  char done_with_regs = 0;
       
 66893 +  char is_vfp_type;
       
 66894 +
       
 66895 +  /* the first 4 words on the stack are used for values passed in core
       
 66896 +   * registers. */
       
 66897 +  regp = stack;
       
 66898 +  eo_regp = argp = regp + 16;
       
 66899 +  
       
 66900 +
       
 66901 +  /* if the function returns an FFI_TYPE_STRUCT in memory, that address is
       
 66902 +   * passed in r0 to the function */
       
 66903 +  if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
       
 66904 +    *(void **) regp = ecif->rvalue;
       
 66905 +    regp += 4;
       
 66906 +  }
       
 66907 +
       
 66908 +  p_argv = ecif->avalue;
       
 66909 +
       
 66910 +  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
       
 66911 +       (i != 0);
       
 66912 +       i--, p_arg++, p_argv++)
       
 66913 +    {
       
 66914 +      is_vfp_type = vfp_type_p (*p_arg);
       
 66915  
       
 66916        /* Allocated in VFP registers. */
       
 66917 -      if (ecif->cif->abi == FFI_VFP
       
 66918 -	  && vi < ecif->cif->vfp_nargs && vfp_type_p (*p_arg))
       
 66919 -	{
       
 66920 -	  float* vfp_slot = vfp_space + ecif->cif->vfp_args[vi++];
       
 66921 -	  if ((*p_arg)->type == FFI_TYPE_FLOAT)
       
 66922 -	    *((float*)vfp_slot) = *((float*)*p_argv);
       
 66923 -	  else if ((*p_arg)->type == FFI_TYPE_DOUBLE)
       
 66924 -	    *((double*)vfp_slot) = *((double*)*p_argv);
       
 66925 -	  else
       
 66926 -	    memcpy(vfp_slot, *p_argv, (*p_arg)->size);
       
 66927 -	  p_argv++;
       
 66928 -	  continue;
       
 66929 -	}
       
 66930 -
       
 66931 -      /* Align if necessary */
       
 66932 -      if (((*p_arg)->alignment - 1) & (unsigned) argp) {
       
 66933 -	argp = (char *) ALIGN(argp, (*p_arg)->alignment);
       
 66934 -      }
       
 66935 -
       
 66936 -      if ((*p_arg)->type == FFI_TYPE_STRUCT)
       
 66937 -	argp = (char *) ALIGN(argp, 4);
       
 66938 -
       
 66939 -	  z = (*p_arg)->size;
       
 66940 -	  if (z < sizeof(int))
       
 66941 -	    {
       
 66942 -	      z = sizeof(int);
       
 66943 -	      switch ((*p_arg)->type)
       
 66944 -		{
       
 66945 -		case FFI_TYPE_SINT8:
       
 66946 -		  *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv);
       
 66947 -		  break;
       
 66948 -		  
       
 66949 -		case FFI_TYPE_UINT8:
       
 66950 -		  *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv);
       
 66951 -		  break;
       
 66952 -		  
       
 66953 -		case FFI_TYPE_SINT16:
       
 66954 -		  *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv);
       
 66955 -		  break;
       
 66956 -		  
       
 66957 -		case FFI_TYPE_UINT16:
       
 66958 -		  *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv);
       
 66959 -		  break;
       
 66960 -		  
       
 66961 -		case FFI_TYPE_STRUCT:
       
 66962 -		  memcpy(argp, *p_argv, (*p_arg)->size);
       
 66963 -		  break;
       
 66964 -
       
 66965 -		default:
       
 66966 -		  FFI_ASSERT(0);
       
 66967 -		}
       
 66968 -	    }
       
 66969 -	  else if (z == sizeof(int))
       
 66970 -	    {
       
 66971 -	      *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv);
       
 66972 -	    }
       
 66973 -	  else
       
 66974 -	    {
       
 66975 -	      memcpy(argp, *p_argv, z);
       
 66976 -	    }
       
 66977 -	  p_argv++;
       
 66978 -	  argp += z;
       
 66979 +      if(vi < ecif->cif->vfp_nargs && is_vfp_type)
       
 66980 +        {
       
 66981 +          char *vfp_slot = (char *)(vfp_space + ecif->cif->vfp_args[vi++]);
       
 66982 +          ffi_put_arg(p_arg, p_argv, vfp_slot);
       
 66983 +          continue;
       
 66984 +        }
       
 66985 +      /* Try allocating in core registers. */
       
 66986 +      else if (!done_with_regs && !is_vfp_type)
       
 66987 +        {
       
 66988 +          char *tregp = ffi_align(p_arg, regp);
       
 66989 +          size_t size = (*p_arg)->size; 
       
 66990 +          size = (size < 4)? 4 : size; // pad
       
 66991 +          /* Check if there is space left in the aligned register area to place
       
 66992 +           * the argument */
       
 66993 +          if(tregp + size <= eo_regp)
       
 66994 +            {
       
 66995 +              regp = tregp + ffi_put_arg(p_arg, p_argv, tregp);
       
 66996 +              done_with_regs = (regp == argp);
       
 66997 +              // ensure we did not write into the stack area
       
 66998 +              FFI_ASSERT(regp <= argp);
       
 66999 +              continue;
       
 67000 +            }
       
 67001 +          /* In case there are no arguments in the stack area yet, 
       
 67002 +          the argument is passed in the remaining core registers and on the
       
 67003 +          stack. */
       
 67004 +          else if (!stack_used) 
       
 67005 +            {
       
 67006 +              stack_used = 1;
       
 67007 +              done_with_regs = 1;
       
 67008 +              argp = tregp + ffi_put_arg(p_arg, p_argv, tregp);
       
 67009 +              FFI_ASSERT(eo_regp < argp);
       
 67010 +              continue;
       
 67011 +            }
       
 67012 +        }
       
 67013 +      /* Base case, arguments are passed on the stack */
       
 67014 +      stack_used = 1;
       
 67015 +      argp = ffi_align(p_arg, argp);
       
 67016 +      argp += ffi_put_arg(p_arg, p_argv, argp);
       
 67017      }
       
 67018 -
       
 67019    /* Indicate the VFP registers used. */
       
 67020    return ecif->cif->vfp_used;
       
 67021  }
       
 67022  
       
 67023  /* Perform machine dependent cif processing */
       
 67024  ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
       
 67025  {
       
 67026    int type_code;
       
 67027 @@ -181,36 +280,48 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
       
 67028       The VFP hard-float calling conventions are slightly more sophisticated than
       
 67029       the base calling conventions, so we do it here instead of in ffi_prep_args(). */
       
 67030    if (cif->abi == FFI_VFP)
       
 67031      layout_vfp_args (cif);
       
 67032  
       
 67033    return FFI_OK;
       
 67034  }
       
 67035  
       
 67036 +/* Perform machine dependent cif processing for variadic calls */
       
 67037 +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif,
       
 67038 +				    unsigned int nfixedargs,
       
 67039 +				    unsigned int ntotalargs)
       
 67040 +{
       
 67041 +  /* VFP variadic calls actually use the SYSV ABI */
       
 67042 +  if (cif->abi == FFI_VFP)
       
 67043 +	cif->abi = FFI_SYSV;
       
 67044 +
       
 67045 +  return ffi_prep_cif_machdep(cif);
       
 67046 +}
       
 67047 +
       
 67048  /* Prototypes for assembly functions, in sysv.S */
       
 67049  extern void ffi_call_SYSV (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *);
       
 67050  extern void ffi_call_VFP (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *);
       
 67051  
       
 67052  void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 67053  {
       
 67054    extended_cif ecif;
       
 67055  
       
 67056    int small_struct = (cif->flags == FFI_TYPE_INT 
       
 67057  		      && cif->rtype->type == FFI_TYPE_STRUCT);
       
 67058    int vfp_struct = (cif->flags == FFI_TYPE_STRUCT_VFP_FLOAT
       
 67059  		    || cif->flags == FFI_TYPE_STRUCT_VFP_DOUBLE);
       
 67060  
       
 67061 +  unsigned int temp;
       
 67062 +  
       
 67063    ecif.cif = cif;
       
 67064    ecif.avalue = avalue;
       
 67065  
       
 67066 -  unsigned int temp;
       
 67067 -  
       
 67068    /* If the return value is a struct and we don't have a return	*/
       
 67069 -  /* value address then we need to make one		        */
       
 67070 +  /* value address then we need to make one			*/
       
 67071  
       
 67072    if ((rvalue == NULL) && 
       
 67073        (cif->flags == FFI_TYPE_STRUCT))
       
 67074      {
       
 67075        ecif.rvalue = alloca(cif->rtype->size);
       
 67076      }
       
 67077    else if (small_struct)
       
 67078      ecif.rvalue = &temp;
       
 67079 @@ -224,159 +335,473 @@ void ffi_call(ffi_cif *cif, void (*fn)(v
       
 67080  
       
 67081    switch (cif->abi) 
       
 67082      {
       
 67083      case FFI_SYSV:
       
 67084        ffi_call_SYSV (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
       
 67085        break;
       
 67086  
       
 67087      case FFI_VFP:
       
 67088 +#ifdef __ARM_EABI__
       
 67089        ffi_call_VFP (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
       
 67090        break;
       
 67091 +#endif
       
 67092  
       
 67093      default:
       
 67094        FFI_ASSERT(0);
       
 67095        break;
       
 67096      }
       
 67097    if (small_struct)
       
 67098 -    memcpy (rvalue, &temp, cif->rtype->size);
       
 67099 +    {
       
 67100 +      FFI_ASSERT(rvalue != NULL);
       
 67101 +      memcpy (rvalue, &temp, cif->rtype->size);
       
 67102 +    }
       
 67103 +    
       
 67104    else if (vfp_struct)
       
 67105 -    memcpy (rvalue, ecif.rvalue, cif->rtype->size);
       
 67106 +    {
       
 67107 +      FFI_ASSERT(rvalue != NULL);
       
 67108 +      memcpy (rvalue, ecif.rvalue, cif->rtype->size);
       
 67109 +    }
       
 67110 +    
       
 67111  }
       
 67112  
       
 67113  /** private members **/
       
 67114  
       
 67115  static void ffi_prep_incoming_args_SYSV (char *stack, void **ret,
       
 67116  					 void** args, ffi_cif* cif, float *vfp_stack);
       
 67117  
       
 67118 +static void ffi_prep_incoming_args_VFP (char *stack, void **ret,
       
 67119 +					 void** args, ffi_cif* cif, float *vfp_stack);
       
 67120 +
       
 67121  void ffi_closure_SYSV (ffi_closure *);
       
 67122  
       
 67123  void ffi_closure_VFP (ffi_closure *);
       
 67124  
       
 67125  /* This function is jumped to by the trampoline */
       
 67126  
       
 67127 -unsigned int
       
 67128 -ffi_closure_SYSV_inner (closure, respp, args, vfp_args)
       
 67129 -     ffi_closure *closure;
       
 67130 -     void **respp;
       
 67131 -     void *args;
       
 67132 -     void *vfp_args;
       
 67133 +unsigned int FFI_HIDDEN
       
 67134 +ffi_closure_inner (ffi_closure *closure, 
       
 67135 +		   void **respp, void *args, void *vfp_args)
       
 67136  {
       
 67137    // our various things...
       
 67138    ffi_cif       *cif;
       
 67139    void         **arg_area;
       
 67140  
       
 67141    cif         = closure->cif;
       
 67142    arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
       
 67143  
       
 67144    /* this call will initialize ARG_AREA, such that each
       
 67145     * element in that array points to the corresponding 
       
 67146     * value on the stack; and if the function returns
       
 67147     * a structure, it will re-set RESP to point to the
       
 67148     * structure return address.  */
       
 67149 -
       
 67150 -  ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args);
       
 67151 +  if (cif->abi == FFI_VFP)
       
 67152 +    ffi_prep_incoming_args_VFP(args, respp, arg_area, cif, vfp_args);
       
 67153 +  else
       
 67154 +    ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args);
       
 67155  
       
 67156    (closure->fun) (cif, *respp, arg_area, closure->user_data);
       
 67157  
       
 67158    return cif->flags;
       
 67159  }
       
 67160  
       
 67161  /*@-exportheader@*/
       
 67162  static void 
       
 67163  ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
       
 67164  			    void **avalue, ffi_cif *cif,
       
 67165  			    /* Used only under VFP hard-float ABI. */
       
 67166  			    float *vfp_stack)
       
 67167  /*@=exportheader@*/
       
 67168  {
       
 67169 -  register unsigned int i, vi = 0;
       
 67170 +  register unsigned int i;
       
 67171    register void **p_argv;
       
 67172    register char *argp;
       
 67173    register ffi_type **p_arg;
       
 67174  
       
 67175    argp = stack;
       
 67176  
       
 67177    if ( cif->flags == FFI_TYPE_STRUCT ) {
       
 67178      *rvalue = *(void **) argp;
       
 67179      argp += 4;
       
 67180    }
       
 67181  
       
 67182    p_argv = avalue;
       
 67183  
       
 67184    for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
       
 67185      {
       
 67186        size_t z;
       
 67187 -      size_t alignment;
       
 67188 -  
       
 67189 -      if (cif->abi == FFI_VFP
       
 67190 -	  && vi < cif->vfp_nargs && vfp_type_p (*p_arg))
       
 67191 -	{
       
 67192 -	  *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]);
       
 67193 -	  continue;
       
 67194 -	}
       
 67195  
       
 67196 -      alignment = (*p_arg)->alignment;
       
 67197 -      if (alignment < 4)
       
 67198 -	alignment = 4;
       
 67199 -      /* Align if necessary */
       
 67200 -      if ((alignment - 1) & (unsigned) argp) {
       
 67201 -	argp = (char *) ALIGN(argp, alignment);
       
 67202 -      }
       
 67203 +      argp = ffi_align(p_arg, argp);
       
 67204  
       
 67205        z = (*p_arg)->size;
       
 67206  
       
 67207        /* because we're little endian, this is what it turns into.   */
       
 67208  
       
 67209        *p_argv = (void*) argp;
       
 67210  
       
 67211        p_argv++;
       
 67212        argp += z;
       
 67213      }
       
 67214    
       
 67215    return;
       
 67216  }
       
 67217  
       
 67218 +/*@-exportheader@*/
       
 67219 +static void 
       
 67220 +ffi_prep_incoming_args_VFP(char *stack, void **rvalue,
       
 67221 +			    void **avalue, ffi_cif *cif,
       
 67222 +			    /* Used only under VFP hard-float ABI. */
       
 67223 +			    float *vfp_stack)
       
 67224 +/*@=exportheader@*/
       
 67225 +{
       
 67226 +  register unsigned int i, vi = 0;
       
 67227 +  register void **p_argv;
       
 67228 +  register char *argp, *regp, *eo_regp;
       
 67229 +  register ffi_type **p_arg;
       
 67230 +  char done_with_regs = 0;
       
 67231 +  char stack_used = 0;
       
 67232 +  char is_vfp_type;
       
 67233 +
       
 67234 +  FFI_ASSERT(cif->abi == FFI_VFP);
       
 67235 +  regp = stack;
       
 67236 +  eo_regp = argp = regp + 16;
       
 67237 +
       
 67238 +  if ( cif->flags == FFI_TYPE_STRUCT ) {
       
 67239 +    *rvalue = *(void **) regp;
       
 67240 +    regp += 4;
       
 67241 +  }
       
 67242 +
       
 67243 +  p_argv = avalue;
       
 67244 +
       
 67245 +  for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
       
 67246 +    {
       
 67247 +    size_t z;
       
 67248 +    is_vfp_type = vfp_type_p (*p_arg); 
       
 67249 +
       
 67250 +    if(vi < cif->vfp_nargs && is_vfp_type)
       
 67251 +      {
       
 67252 +        *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]);
       
 67253 +        continue;
       
 67254 +      }
       
 67255 +    else if (!done_with_regs && !is_vfp_type)
       
 67256 +      {
       
 67257 +        char* tregp = ffi_align(p_arg, regp);
       
 67258 +
       
 67259 +        z = (*p_arg)->size; 
       
 67260 +        z = (z < 4)? 4 : z; // pad
       
 67261 +        
       
 67262 +        /* if the arguments either fits into the registers or uses registers
       
 67263 +         * and stack, while we haven't read other things from the stack */
       
 67264 +        if(tregp + z <= eo_regp || !stack_used) 
       
 67265 +          {
       
 67266 +          /* because we're little endian, this is what it turns into. */
       
 67267 +          *p_argv = (void*) tregp;
       
 67268 +
       
 67269 +          p_argv++;
       
 67270 +          regp = tregp + z;
       
 67271 +          // if we read past the last core register, make sure we have not read
       
 67272 +          // from the stack before and continue reading after regp
       
 67273 +          if(regp > eo_regp)
       
 67274 +            {
       
 67275 +            if(stack_used)
       
 67276 +              {
       
 67277 +                abort(); // we should never read past the end of the register
       
 67278 +                         // are if the stack is already in use
       
 67279 +              }
       
 67280 +            argp = regp;
       
 67281 +            }
       
 67282 +          if(regp >= eo_regp)
       
 67283 +            {
       
 67284 +            done_with_regs = 1;
       
 67285 +            stack_used = 1;
       
 67286 +            }
       
 67287 +          continue;
       
 67288 +          }
       
 67289 +      }
       
 67290 +    stack_used = 1;
       
 67291 +
       
 67292 +    argp = ffi_align(p_arg, argp);
       
 67293 +
       
 67294 +    z = (*p_arg)->size;
       
 67295 +
       
 67296 +    /* because we're little endian, this is what it turns into.   */
       
 67297 +
       
 67298 +    *p_argv = (void*) argp;
       
 67299 +
       
 67300 +    p_argv++;
       
 67301 +    argp += z;
       
 67302 +    }
       
 67303 +  
       
 67304 +  return;
       
 67305 +}
       
 67306 +
       
 67307  /* How to make a trampoline.  */
       
 67308  
       
 67309 +extern unsigned int ffi_arm_trampoline[3];
       
 67310 +
       
 67311 +#if FFI_EXEC_TRAMPOLINE_TABLE
       
 67312 +
       
 67313 +#include <mach/mach.h>
       
 67314 +#include <pthread.h>
       
 67315 +#include <stdio.h>
       
 67316 +#include <stdlib.h>
       
 67317 +
       
 67318 +extern void *ffi_closure_trampoline_table_page;
       
 67319 +
       
 67320 +typedef struct ffi_trampoline_table ffi_trampoline_table;
       
 67321 +typedef struct ffi_trampoline_table_entry ffi_trampoline_table_entry;
       
 67322 +
       
 67323 +struct ffi_trampoline_table {
       
 67324 +  /* contiguous writable and executable pages */
       
 67325 +  vm_address_t config_page;
       
 67326 +  vm_address_t trampoline_page;
       
 67327 +
       
 67328 +  /* free list tracking */
       
 67329 +  uint16_t free_count;
       
 67330 +  ffi_trampoline_table_entry *free_list;
       
 67331 +  ffi_trampoline_table_entry *free_list_pool;
       
 67332 +
       
 67333 +  ffi_trampoline_table *prev;
       
 67334 +  ffi_trampoline_table *next;
       
 67335 +};
       
 67336 +
       
 67337 +struct ffi_trampoline_table_entry {
       
 67338 +  void *(*trampoline)();
       
 67339 +  ffi_trampoline_table_entry *next;
       
 67340 +};
       
 67341 +
       
 67342 +/* Override the standard architecture trampoline size */
       
 67343 +// XXX TODO - Fix
       
 67344 +#undef FFI_TRAMPOLINE_SIZE
       
 67345 +#define FFI_TRAMPOLINE_SIZE 12
       
 67346 +
       
 67347 +/* The trampoline configuration is placed at 4080 bytes prior to the trampoline's entry point */
       
 67348 +#define FFI_TRAMPOLINE_CODELOC_CONFIG(codeloc) ((void **) (((uint8_t *) codeloc) - 4080));
       
 67349 +
       
 67350 +/* The first 16 bytes of the config page are unused, as they are unaddressable from the trampoline page. */
       
 67351 +#define FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET 16
       
 67352 +
       
 67353 +/* Total number of trampolines that fit in one trampoline table */
       
 67354 +#define FFI_TRAMPOLINE_COUNT ((PAGE_SIZE - FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET) / FFI_TRAMPOLINE_SIZE)
       
 67355 +
       
 67356 +static pthread_mutex_t ffi_trampoline_lock = PTHREAD_MUTEX_INITIALIZER;
       
 67357 +static ffi_trampoline_table *ffi_trampoline_tables = NULL;
       
 67358 +
       
 67359 +static ffi_trampoline_table *
       
 67360 +ffi_trampoline_table_alloc ()
       
 67361 +{
       
 67362 +  ffi_trampoline_table *table = NULL;
       
 67363 +
       
 67364 +  /* Loop until we can allocate two contiguous pages */
       
 67365 +  while (table == NULL) {
       
 67366 +    vm_address_t config_page = 0x0;
       
 67367 +    kern_return_t kt;
       
 67368 +
       
 67369 +    /* Try to allocate two pages */
       
 67370 +    kt = vm_allocate (mach_task_self (), &config_page, PAGE_SIZE*2, VM_FLAGS_ANYWHERE);
       
 67371 +    if (kt != KERN_SUCCESS) {
       
 67372 +      fprintf(stderr, "vm_allocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
       
 67373 +      break;
       
 67374 +    }
       
 67375 +
       
 67376 +    /* Now drop the second half of the allocation to make room for the trampoline table */
       
 67377 +    vm_address_t trampoline_page = config_page+PAGE_SIZE;
       
 67378 +    kt = vm_deallocate (mach_task_self (), trampoline_page, PAGE_SIZE);
       
 67379 +    if (kt != KERN_SUCCESS) {
       
 67380 +      fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
       
 67381 +      break;
       
 67382 +    }
       
 67383 +
       
 67384 +    /* Remap the trampoline table to directly follow the config page */
       
 67385 +    vm_prot_t cur_prot;
       
 67386 +    vm_prot_t max_prot;
       
 67387 +
       
 67388 +    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);
       
 67389 +
       
 67390 +    /* If we lost access to the destination trampoline page, drop our config allocation mapping and retry */
       
 67391 +    if (kt != KERN_SUCCESS) {
       
 67392 +      /* Log unexpected failures */
       
 67393 +      if (kt != KERN_NO_SPACE) {
       
 67394 +        fprintf(stderr, "vm_remap() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
       
 67395 +      }
       
 67396 +
       
 67397 +      vm_deallocate (mach_task_self (), config_page, PAGE_SIZE);
       
 67398 +      continue;
       
 67399 +    }
       
 67400 +
       
 67401 +    /* We have valid trampoline and config pages */
       
 67402 +    table = calloc (1, sizeof(ffi_trampoline_table));
       
 67403 +    table->free_count = FFI_TRAMPOLINE_COUNT;
       
 67404 +    table->config_page = config_page;
       
 67405 +    table->trampoline_page = trampoline_page;
       
 67406 +
       
 67407 +    /* Create and initialize the free list */
       
 67408 +    table->free_list_pool = calloc(FFI_TRAMPOLINE_COUNT, sizeof(ffi_trampoline_table_entry));
       
 67409 +
       
 67410 +    uint16_t i;
       
 67411 +    for (i = 0; i < table->free_count; i++) {
       
 67412 +      ffi_trampoline_table_entry *entry = &table->free_list_pool[i];
       
 67413 +      entry->trampoline = (void *) (table->trampoline_page + (i * FFI_TRAMPOLINE_SIZE));
       
 67414 +
       
 67415 +      if (i < table->free_count - 1)
       
 67416 +        entry->next = &table->free_list_pool[i+1];
       
 67417 +    }
       
 67418 +
       
 67419 +    table->free_list = table->free_list_pool;
       
 67420 +  }
       
 67421 +
       
 67422 +  return table;
       
 67423 +}
       
 67424 +
       
 67425 +void *
       
 67426 +ffi_closure_alloc (size_t size, void **code)
       
 67427 +{
       
 67428 +  /* Create the closure */
       
 67429 +  ffi_closure *closure = malloc(size);
       
 67430 +  if (closure == NULL)
       
 67431 +    return NULL;
       
 67432 +
       
 67433 +  pthread_mutex_lock(&ffi_trampoline_lock);
       
 67434 +
       
 67435 +  /* Check for an active trampoline table with available entries. */
       
 67436 +  ffi_trampoline_table *table = ffi_trampoline_tables;
       
 67437 +  if (table == NULL || table->free_list == NULL) {
       
 67438 +    table = ffi_trampoline_table_alloc ();
       
 67439 +    if (table == NULL) {
       
 67440 +      free(closure);
       
 67441 +      return NULL;
       
 67442 +    }
       
 67443 +
       
 67444 +    /* Insert the new table at the top of the list */
       
 67445 +    table->next = ffi_trampoline_tables;
       
 67446 +    if (table->next != NULL)
       
 67447 +        table->next->prev = table;
       
 67448 +
       
 67449 +    ffi_trampoline_tables = table;
       
 67450 +  }
       
 67451 +
       
 67452 +  /* Claim the free entry */
       
 67453 +  ffi_trampoline_table_entry *entry = ffi_trampoline_tables->free_list;
       
 67454 +  ffi_trampoline_tables->free_list = entry->next;
       
 67455 +  ffi_trampoline_tables->free_count--;
       
 67456 +  entry->next = NULL;
       
 67457 +
       
 67458 +  pthread_mutex_unlock(&ffi_trampoline_lock);
       
 67459 +
       
 67460 +  /* Initialize the return values */
       
 67461 +  *code = entry->trampoline;
       
 67462 +  closure->trampoline_table = table;
       
 67463 +  closure->trampoline_table_entry = entry;
       
 67464 +
       
 67465 +  return closure;
       
 67466 +}
       
 67467 +
       
 67468 +void
       
 67469 +ffi_closure_free (void *ptr)
       
 67470 +{
       
 67471 +  ffi_closure *closure = ptr;
       
 67472 +
       
 67473 +  pthread_mutex_lock(&ffi_trampoline_lock);
       
 67474 +
       
 67475 +  /* Fetch the table and entry references */
       
 67476 +  ffi_trampoline_table *table = closure->trampoline_table;
       
 67477 +  ffi_trampoline_table_entry *entry = closure->trampoline_table_entry;
       
 67478 +
       
 67479 +  /* Return the entry to the free list */
       
 67480 +  entry->next = table->free_list;
       
 67481 +  table->free_list = entry;
       
 67482 +  table->free_count++;
       
 67483 +
       
 67484 +  /* If all trampolines within this table are free, and at least one other table exists, deallocate
       
 67485 +   * the table */
       
 67486 +  if (table->free_count == FFI_TRAMPOLINE_COUNT && ffi_trampoline_tables != table) {
       
 67487 +    /* Remove from the list */
       
 67488 +    if (table->prev != NULL)
       
 67489 +      table->prev->next = table->next;
       
 67490 +
       
 67491 +    if (table->next != NULL)
       
 67492 +      table->next->prev = table->prev;
       
 67493 +
       
 67494 +    /* Deallocate pages */
       
 67495 +    kern_return_t kt;
       
 67496 +    kt = vm_deallocate (mach_task_self (), table->config_page, PAGE_SIZE);
       
 67497 +    if (kt != KERN_SUCCESS)
       
 67498 +      fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
       
 67499 +
       
 67500 +    kt = vm_deallocate (mach_task_self (), table->trampoline_page, PAGE_SIZE);
       
 67501 +    if (kt != KERN_SUCCESS)
       
 67502 +      fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
       
 67503 +
       
 67504 +    /* Deallocate free list */
       
 67505 +    free (table->free_list_pool);
       
 67506 +    free (table);
       
 67507 +  } else if (ffi_trampoline_tables != table) {
       
 67508 +    /* Otherwise, bump this table to the top of the list */
       
 67509 +    table->prev = NULL;
       
 67510 +    table->next = ffi_trampoline_tables;
       
 67511 +    if (ffi_trampoline_tables != NULL)
       
 67512 +      ffi_trampoline_tables->prev = table;
       
 67513 +
       
 67514 +    ffi_trampoline_tables = table;
       
 67515 +  }
       
 67516 +
       
 67517 +  pthread_mutex_unlock (&ffi_trampoline_lock);
       
 67518 +
       
 67519 +  /* Free the closure */
       
 67520 +  free (closure);
       
 67521 +}
       
 67522 +
       
 67523 +#else
       
 67524 +
       
 67525  #define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX)				\
       
 67526  ({ unsigned char *__tramp = (unsigned char*)(TRAMP);			\
       
 67527     unsigned int  __fun = (unsigned int)(FUN);				\
       
 67528     unsigned int  __ctx = (unsigned int)(CTX);				\
       
 67529 -   *(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */	\
       
 67530 -   *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */	\
       
 67531 -   *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */	\
       
 67532 +   unsigned char *insns = (unsigned char *)(CTX);                       \
       
 67533 +   memcpy (__tramp, ffi_arm_trampoline, sizeof ffi_arm_trampoline);     \
       
 67534     *(unsigned int*) &__tramp[12] = __ctx;				\
       
 67535     *(unsigned int*) &__tramp[16] = __fun;				\
       
 67536 -   __clear_cache((&__tramp[0]), (&__tramp[19]));			\
       
 67537 +   __clear_cache((&__tramp[0]), (&__tramp[19])); /* Clear data mapping.  */ \
       
 67538 +   __clear_cache(insns, insns + 3 * sizeof (unsigned int));             \
       
 67539 +                                                 /* Clear instruction   \
       
 67540 +                                                    mapping.  */        \
       
 67541   })
       
 67542  
       
 67543 +#endif
       
 67544  
       
 67545  /* the cif must already be prep'ed */
       
 67546  
       
 67547  ffi_status
       
 67548  ffi_prep_closure_loc (ffi_closure* closure,
       
 67549  		      ffi_cif* cif,
       
 67550  		      void (*fun)(ffi_cif*,void*,void**,void*),
       
 67551  		      void *user_data,
       
 67552  		      void *codeloc)
       
 67553  {
       
 67554    void (*closure_func)(ffi_closure*) = NULL;
       
 67555  
       
 67556    if (cif->abi == FFI_SYSV)
       
 67557      closure_func = &ffi_closure_SYSV;
       
 67558 +#ifdef __ARM_EABI__
       
 67559    else if (cif->abi == FFI_VFP)
       
 67560      closure_func = &ffi_closure_VFP;
       
 67561 +#endif
       
 67562    else
       
 67563 -    FFI_ASSERT (0);
       
 67564 -    
       
 67565 +    return FFI_BAD_ABI;
       
 67566 +
       
 67567 +#if FFI_EXEC_TRAMPOLINE_TABLE
       
 67568 +  void **config = FFI_TRAMPOLINE_CODELOC_CONFIG(codeloc);
       
 67569 +  config[0] = closure;
       
 67570 +  config[1] = closure_func;
       
 67571 +#else
       
 67572    FFI_INIT_TRAMPOLINE (&closure->tramp[0], \
       
 67573  		       closure_func,  \
       
 67574  		       codeloc);
       
 67575 -    
       
 67576 +#endif
       
 67577 +
       
 67578    closure->cif  = cif;
       
 67579    closure->user_data = user_data;
       
 67580    closure->fun  = fun;
       
 67581  
       
 67582    return FFI_OK;
       
 67583  }
       
 67584  
       
 67585  /* Below are routines for VFP hard-float support. */
       
 67586 @@ -439,19 +864,19 @@ static int vfp_type_p (ffi_type *t)
       
 67587  		       ? FFI_TYPE_STRUCT_VFP_FLOAT
       
 67588  		       : FFI_TYPE_STRUCT_VFP_DOUBLE);
       
 67589  	}
       
 67590        return (int) t->type;
       
 67591      }
       
 67592    return 0;
       
 67593  }
       
 67594  
       
 67595 -static void place_vfp_arg (ffi_cif *cif, ffi_type *t)
       
 67596 +static int place_vfp_arg (ffi_cif *cif, ffi_type *t)
       
 67597  {
       
 67598 -  int reg = cif->vfp_reg_free;
       
 67599 +  short reg = cif->vfp_reg_free;
       
 67600    int nregs = t->size / sizeof (float);
       
 67601    int align = ((t->type == FFI_TYPE_STRUCT_VFP_FLOAT
       
 67602  		|| t->type == FFI_TYPE_FLOAT) ? 1 : 2);
       
 67603    /* Align register number. */
       
 67604    if ((reg & 1) && align == 2)
       
 67605      reg++;
       
 67606    while (reg + nregs <= 16)
       
 67607      {
       
 67608 @@ -472,29 +897,35 @@ static void place_vfp_arg (ffi_cif *cif,
       
 67609        /* Update vfp_reg_free. */
       
 67610        if (cif->vfp_used & (1 << cif->vfp_reg_free))
       
 67611  	{
       
 67612  	  reg += nregs;
       
 67613  	  while (cif->vfp_used & (1 << reg))
       
 67614  	    reg += 1;
       
 67615  	  cif->vfp_reg_free = reg;
       
 67616  	}
       
 67617 -      return;
       
 67618 +      return 0;
       
 67619      next_reg: ;
       
 67620      }
       
 67621 +  // done, mark all regs as used
       
 67622 +  cif->vfp_reg_free = 16;
       
 67623 +  cif->vfp_used = 0xFFFF;
       
 67624 +  return 1;
       
 67625  }
       
 67626  
       
 67627  static void layout_vfp_args (ffi_cif *cif)
       
 67628  {
       
 67629    int i;
       
 67630    /* Init VFP fields */
       
 67631    cif->vfp_used = 0;
       
 67632    cif->vfp_nargs = 0;
       
 67633    cif->vfp_reg_free = 0;
       
 67634    memset (cif->vfp_args, -1, 16); /* Init to -1. */
       
 67635  
       
 67636    for (i = 0; i < cif->nargs; i++)
       
 67637      {
       
 67638        ffi_type *t = cif->arg_types[i];
       
 67639 -      if (vfp_type_p (t))
       
 67640 -	place_vfp_arg (cif, t);
       
 67641 +      if (vfp_type_p (t) && place_vfp_arg (cif, t) == 1)
       
 67642 +        {
       
 67643 +          break;
       
 67644 +        }
       
 67645      }
       
 67646  }
       
 67647 diff --git a/js/src/ctypes/libffi/src/arm/ffitarget.h b/js/src/ctypes/libffi/src/arm/ffitarget.h
       
 67648 --- a/js/src/ctypes/libffi/src/arm/ffitarget.h
       
 67649 +++ b/js/src/ctypes/libffi/src/arm/ffitarget.h
       
 67650 @@ -1,10 +1,13 @@
       
 67651  /* -----------------------------------------------------------------*-C-*-
       
 67652 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 67653 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 67654 +                 Copyright (c) 2010  CodeSourcery
       
 67655 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 67656 +
       
 67657     Target configuration macros for ARM.
       
 67658  
       
 67659     Permission is hereby granted, free of charge, to any person obtaining
       
 67660     a copy of this software and associated documentation files (the
       
 67661     ``Software''), to deal in the Software without restriction, including
       
 67662     without limitation the rights to use, copy, modify, merge, publish,
       
 67663     distribute, sublicense, and/or sell copies of the Software, and to
       
 67664     permit persons to whom the Software is furnished to do so, subject to
       
 67665 @@ -22,42 +25,47 @@
       
 67666     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 67667     DEALINGS IN THE SOFTWARE.
       
 67668  
       
 67669     ----------------------------------------------------------------------- */
       
 67670  
       
 67671  #ifndef LIBFFI_TARGET_H
       
 67672  #define LIBFFI_TARGET_H
       
 67673  
       
 67674 +#ifndef LIBFFI_H
       
 67675 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 67676 +#endif
       
 67677 +
       
 67678  #ifndef LIBFFI_ASM
       
 67679  typedef unsigned long          ffi_arg;
       
 67680  typedef signed long            ffi_sarg;
       
 67681  
       
 67682  typedef enum ffi_abi {
       
 67683    FFI_FIRST_ABI = 0,
       
 67684    FFI_SYSV,
       
 67685    FFI_VFP,
       
 67686    FFI_LAST_ABI,
       
 67687  #ifdef __ARM_PCS_VFP
       
 67688 -  FFI_DEFAULT_ABI = FFI_VFP
       
 67689 +  FFI_DEFAULT_ABI = FFI_VFP,
       
 67690  #else
       
 67691 -  FFI_DEFAULT_ABI = FFI_SYSV
       
 67692 +  FFI_DEFAULT_ABI = FFI_SYSV,
       
 67693  #endif
       
 67694  } ffi_abi;
       
 67695  #endif
       
 67696  
       
 67697  #define FFI_EXTRA_CIF_FIELDS			\
       
 67698    int vfp_used;					\
       
 67699    short vfp_reg_free, vfp_nargs;		\
       
 67700    signed char vfp_args[16]			\
       
 67701  
       
 67702  /* Internally used. */
       
 67703  #define FFI_TYPE_STRUCT_VFP_FLOAT  (FFI_TYPE_LAST + 1)
       
 67704  #define FFI_TYPE_STRUCT_VFP_DOUBLE (FFI_TYPE_LAST + 2)
       
 67705  
       
 67706 +#define FFI_TARGET_SPECIFIC_VARIADIC
       
 67707 +
       
 67708  /* ---- Definitions for closures ----------------------------------------- */
       
 67709  
       
 67710  #define FFI_CLOSURES 1
       
 67711  #define FFI_TRAMPOLINE_SIZE 20
       
 67712  #define FFI_NATIVE_RAW_API 0
       
 67713  
       
 67714  #endif
       
 67715 -
       
 67716 diff --git a/js/src/ctypes/libffi/src/arm/gentramp.sh b/js/src/ctypes/libffi/src/arm/gentramp.sh
       
 67717 new file mode 100644
       
 67718 --- /dev/null
       
 67719 +++ b/js/src/ctypes/libffi/src/arm/gentramp.sh
       
 67720 @@ -0,0 +1,118 @@
       
 67721 +#!/bin/sh
       
 67722 +
       
 67723 +# -----------------------------------------------------------------------
       
 67724 +#  gentramp.sh - Copyright (c) 2010, Plausible Labs Cooperative, Inc.
       
 67725 +#  
       
 67726 +#  ARM Trampoline Page Generator
       
 67727 +#
       
 67728 +#  Permission is hereby granted, free of charge, to any person obtaining
       
 67729 +#  a copy of this software and associated documentation files (the
       
 67730 +#  ``Software''), to deal in the Software without restriction, including
       
 67731 +#  without limitation the rights to use, copy, modify, merge, publish,
       
 67732 +#  distribute, sublicense, and/or sell copies of the Software, and to
       
 67733 +#  permit persons to whom the Software is furnished to do so, subject to
       
 67734 +#  the following conditions:
       
 67735 +#
       
 67736 +#  The above copyright notice and this permission notice shall be included
       
 67737 +#  in all copies or substantial portions of the Software.
       
 67738 +#
       
 67739 +#  THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 67740 +#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 67741 +#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 67742 +#  NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 67743 +#  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 67744 +#  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 67745 +#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 67746 +#  DEALINGS IN THE SOFTWARE.
       
 67747 +#  -----------------------------------------------------------------------
       
 67748 +
       
 67749 +PROGNAME=$0
       
 67750 +
       
 67751 +# Each trampoline is exactly 3 instructions, or 12 bytes. If any of these values change,
       
 67752 +# the entire arm trampoline implementation must be updated to match, too.
       
 67753 +
       
 67754 +# Size of an individual trampoline, in bytes
       
 67755 +TRAMPOLINE_SIZE=12
       
 67756 +
       
 67757 +# Page size, in bytes
       
 67758 +PAGE_SIZE=4096
       
 67759 +
       
 67760 +# Compute the size of the reachable config page; The first 16 bytes of the config page
       
 67761 +# are unreachable due to our maximum pc-relative ldr offset.
       
 67762 +PAGE_AVAIL=`expr $PAGE_SIZE - 16`
       
 67763 +
       
 67764 +# Compute the number of of available trampolines. 
       
 67765 +TRAMPOLINE_COUNT=`expr $PAGE_AVAIL / $TRAMPOLINE_SIZE`
       
 67766 +
       
 67767 +header () {
       
 67768 +    echo "# GENERATED CODE - DO NOT EDIT"
       
 67769 +    echo "# This file was generated by $PROGNAME"
       
 67770 +    echo ""
       
 67771 +
       
 67772 +    # Write out the license header
       
 67773 +cat << EOF
       
 67774 +#  Copyright (c) 2010, Plausible Labs Cooperative, Inc.
       
 67775 +#  
       
 67776 +#  Permission is hereby granted, free of charge, to any person obtaining
       
 67777 +#  a copy of this software and associated documentation files (the
       
 67778 +#  ``Software''), to deal in the Software without restriction, including
       
 67779 +#  without limitation the rights to use, copy, modify, merge, publish,
       
 67780 +#  distribute, sublicense, and/or sell copies of the Software, and to
       
 67781 +#  permit persons to whom the Software is furnished to do so, subject to
       
 67782 +#  the following conditions:
       
 67783 +#
       
 67784 +#  The above copyright notice and this permission notice shall be included
       
 67785 +#  in all copies or substantial portions of the Software.
       
 67786 +#
       
 67787 +#  THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 67788 +#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 67789 +#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 67790 +#  NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 67791 +#  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 67792 +#  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 67793 +#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 67794 +#  DEALINGS IN THE SOFTWARE.
       
 67795 +#  -----------------------------------------------------------------------
       
 67796 +
       
 67797 +EOF
       
 67798 +
       
 67799 +    # Write out the trampoline table, aligned to the page boundary
       
 67800 +    echo ".text"
       
 67801 +    echo ".align 12"
       
 67802 +    echo ".globl _ffi_closure_trampoline_table_page"
       
 67803 +    echo "_ffi_closure_trampoline_table_page:"
       
 67804 +}
       
 67805 +
       
 67806 +
       
 67807 +# WARNING - Don't modify the trampoline code size without also updating the relevant libffi code
       
 67808 +trampoline () {
       
 67809 +    cat << END
       
 67810 +
       
 67811 +    // trampoline
       
 67812 +    // Save to stack
       
 67813 +    stmfd sp!, {r0-r3}
       
 67814 +
       
 67815 +    // Load the context argument from the config page.
       
 67816 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 67817 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 67818 +    ldr r0, [pc, #-4092]
       
 67819 +
       
 67820 +    // Load the jump address from the config page.
       
 67821 +    ldr pc, [pc, #-4092]
       
 67822 +
       
 67823 +END
       
 67824 +}
       
 67825 +
       
 67826 +main () {
       
 67827 +    # Write out the header
       
 67828 +    header
       
 67829 +
       
 67830 +    # Write out the trampolines
       
 67831 +    local i=0
       
 67832 +    while [ $i -lt ${TRAMPOLINE_COUNT} ]; do
       
 67833 +        trampoline
       
 67834 +        local i=`expr $i + 1`
       
 67835 +    done
       
 67836 +}
       
 67837 +
       
 67838 +main
       
 67839 diff --git a/js/src/ctypes/libffi/src/arm/sysv.S b/js/src/ctypes/libffi/src/arm/sysv.S
       
 67840 --- a/js/src/ctypes/libffi/src/arm/sysv.S
       
 67841 +++ b/js/src/ctypes/libffi/src/arm/sysv.S
       
 67842 @@ -1,10 +1,11 @@
       
 67843  /* -----------------------------------------------------------------------
       
 67844 -   sysv.S - Copyright (c) 1998, 2008 Red Hat, Inc.
       
 67845 +   sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
       
 67846 +	    Copyright (c) 2011 Plausible Labs Cooperative, Inc.
       
 67847     
       
 67848     ARM Foreign Function Interface 
       
 67849  
       
 67850     Permission is hereby granted, free of charge, to any person obtaining
       
 67851     a copy of this software and associated documentation files (the
       
 67852     ``Software''), to deal in the Software without restriction, including
       
 67853     without limitation the rights to use, copy, modify, merge, publish,
       
 67854     distribute, sublicense, and/or sell copies of the Software, and to
       
 67855 @@ -34,25 +35,35 @@
       
 67856  #define CONCAT1(a, b) CONCAT2(a, b)
       
 67857  #define CONCAT2(a, b) a ## b
       
 67858  
       
 67859  /* Use the right prefix for global labels.  */
       
 67860  #define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
       
 67861  #else
       
 67862  #define CNAME(x) x
       
 67863  #endif
       
 67864 +#ifdef __APPLE__
       
 67865 +#define ENTRY(x) .globl _##x; _##x:
       
 67866 +#else
       
 67867  #define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x):
       
 67868 +#endif /* __APPLE__ */
       
 67869  #endif
       
 67870  
       
 67871  #ifdef __ELF__
       
 67872  #define LSYM(x) .x
       
 67873  #else
       
 67874  #define LSYM(x) x
       
 67875  #endif
       
 67876  
       
 67877 +/* Use the SOFTFP return value ABI on Mac OS X, as per the iOS ABI
       
 67878 +  Function Call Guide */
       
 67879 +#ifdef __APPLE__
       
 67880 +#define __SOFTFP__
       
 67881 +#endif
       
 67882 +
       
 67883  /* We need a better way of testing for this, but for now, this is all 
       
 67884     we can do.  */
       
 67885  @ This selects the minimum architecture level required.
       
 67886  #define __ARM_ARCH__ 3
       
 67887  
       
 67888  #if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__)
       
 67889  # undef __ARM_ARCH__
       
 67890  # define __ARM_ARCH__ 4
       
 67891 @@ -93,40 +104,37 @@
       
 67892  
       
 67893  /* Conditionally compile unwinder directives.  */
       
 67894  #ifdef __ARM_EABI__
       
 67895  #define UNWIND
       
 67896  #else
       
 67897  #define UNWIND @
       
 67898  #endif	
       
 67899  
       
 67900 -	
       
 67901 +.syntax unified
       
 67902 +
       
 67903  #if defined(__thumb__) && !defined(__THUMB_INTERWORK__)
       
 67904 -.macro	ARM_FUNC_START name
       
 67905 -	.text
       
 67906 -	.align 0
       
 67907 -	.thumb
       
 67908 -	.thumb_func
       
 67909 -	ENTRY(\name)
       
 67910 -	bx	pc
       
 67911 -	nop
       
 67912 -	.arm
       
 67913 +#define ARM_FUNC_START(name) \
       
 67914 +	.text; \
       
 67915 +	.align 2; \
       
 67916 +	.thumb; \
       
 67917 +	.thumb_func; \
       
 67918 +	ENTRY(name); \
       
 67919 +	bx pc; \
       
 67920 +	nop; \
       
 67921 +	.arm; \
       
 67922 +	UNWIND .fnstart; \
       
 67923 +_L__##name:
       
 67924 +#else
       
 67925 +#define ARM_FUNC_START(name) \
       
 67926 +	.text; \
       
 67927 +	.align 2; \
       
 67928 +	.arm; \
       
 67929 +	ENTRY(name); \
       
 67930  	UNWIND .fnstart
       
 67931 -/* A hook to tell gdb that we've switched to ARM mode.  Also used to call
       
 67932 -   directly from other local arm routines.  */
       
 67933 -_L__\name:		
       
 67934 -.endm
       
 67935 -#else
       
 67936 -.macro	ARM_FUNC_START name
       
 67937 -	.text
       
 67938 -	.align 0
       
 67939 -	.arm
       
 67940 -	ENTRY(\name)
       
 67941 -	UNWIND .fnstart
       
 67942 -.endm
       
 67943  #endif
       
 67944  
       
 67945  .macro	RETLDM	regs=, cond=, dirn=ia
       
 67946  #if defined (__INTERWORKING__)
       
 67947  	.ifc "\regs",""
       
 67948  	ldr\cond	lr, [sp], #4
       
 67949  	.else
       
 67950  	ldm\cond\dirn	sp!, {\regs, lr}
       
 67951 @@ -136,41 +144,40 @@
       
 67952  	.ifc "\regs",""
       
 67953  	ldr\cond	pc, [sp], #4
       
 67954  	.else
       
 67955  	ldm\cond\dirn	sp!, {\regs, pc}
       
 67956  	.endif
       
 67957  #endif
       
 67958  .endm
       
 67959  
       
 67960 -
       
 67961 -	@ r0:   fn
       
 67962 +	@ r0:   ffi_prep_args
       
 67963  	@ r1:   &ecif
       
 67964  	@ r2:   cif->bytes
       
 67965  	@ r3:   fig->flags
       
 67966  	@ sp+0: ecif.rvalue
       
 67967  
       
 67968  	@ This assumes we are using gas.
       
 67969 -ARM_FUNC_START ffi_call_SYSV
       
 67970 +ARM_FUNC_START(ffi_call_SYSV)
       
 67971  	@ Save registers
       
 67972          stmfd	sp!, {r0-r3, fp, lr}
       
 67973  	UNWIND .save	{r0-r3, fp, lr}
       
 67974  	mov	fp, sp
       
 67975  
       
 67976  	UNWIND .setfp	fp, sp
       
 67977  
       
 67978  	@ Make room for all of the new args.
       
 67979  	sub	sp, fp, r2
       
 67980  
       
 67981  	@ Place all of the ffi_prep_args in position
       
 67982  	mov	r0, sp
       
 67983  	@     r1 already set
       
 67984  
       
 67985  	@ Call ffi_prep_args(stack, &ecif)
       
 67986 -	bl	ffi_prep_args
       
 67987 +	bl	CNAME(ffi_prep_args_SYSV)
       
 67988  
       
 67989  	@ move first 4 parameters in registers
       
 67990  	ldmia	sp, {r0-r3}
       
 67991  
       
 67992  	@ and adjust stack
       
 67993  	sub	lr, fp, sp	@ cif->bytes == fp - sp
       
 67994  	ldr	ip, [fp]	@ load fn() in advance
       
 67995  	cmp	lr, #16
       
 67996 @@ -201,156 +208,65 @@ ARM_FUNC_START ffi_call_SYSV
       
 67997  	streq	r0, [r2]
       
 67998  	beq	LSYM(Lepilogue)
       
 67999  
       
 68000  	@ return INT64
       
 68001  	cmp	r3, #FFI_TYPE_SINT64
       
 68002  #if defined(__SOFTFP__) || defined(__ARM_EABI__)
       
 68003  	cmpne	r3, #FFI_TYPE_DOUBLE
       
 68004  #endif
       
 68005 -	stmeqia	r2, {r0, r1}
       
 68006 +	stmiaeq	r2, {r0, r1}
       
 68007  
       
 68008  #if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
       
 68009  	beq	LSYM(Lepilogue)
       
 68010  
       
 68011  @ return FLOAT
       
 68012  	cmp	r3, #FFI_TYPE_FLOAT
       
 68013  	stfeqs	f0, [r2]
       
 68014  	beq	LSYM(Lepilogue)
       
 68015  
       
 68016  @ return DOUBLE or LONGDOUBLE
       
 68017  	cmp	r3, #FFI_TYPE_DOUBLE
       
 68018  	stfeqd	f0, [r2]
       
 68019  #endif
       
 68020  
       
 68021  LSYM(Lepilogue):
       
 68022 -	RETLDM	"r0-r3,fp"
       
 68023 +#if defined (__INTERWORKING__)
       
 68024 +	ldmia   sp!, {r0-r3,fp, lr}
       
 68025 +	bx	lr
       
 68026 +#else
       
 68027 +	ldmia   sp!, {r0-r3,fp, pc}
       
 68028 +#endif
       
 68029  
       
 68030  .ffi_call_SYSV_end:
       
 68031  	UNWIND .fnend
       
 68032 +#ifdef __ELF__
       
 68033          .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
       
 68034 +#endif
       
 68035  
       
 68036  
       
 68037 -/* Below are VFP hard-float ABI call and closure implementations.
       
 68038 -   Add VFP FPU directive here. */
       
 68039 -	.fpu	vfp
       
 68040 -
       
 68041 -	@ r0:   fn
       
 68042 -	@ r1:   &ecif
       
 68043 -	@ r2:   cif->bytes
       
 68044 -	@ r3:   fig->flags
       
 68045 -	@ sp+0: ecif.rvalue
       
 68046 -
       
 68047 -ARM_FUNC_START ffi_call_VFP
       
 68048 -	@ Save registers
       
 68049 -        stmfd	sp!, {r0-r3, fp, lr}
       
 68050 -	UNWIND .save	{r0-r3, fp, lr}
       
 68051 -	mov	fp, sp
       
 68052 -	UNWIND .setfp	fp, sp
       
 68053 -
       
 68054 -	@ Make room for all of the new args.
       
 68055 -	sub	sp, sp, r2
       
 68056 -
       
 68057 -	@ Make room for loading VFP args
       
 68058 -	sub	sp, sp, #64
       
 68059 -
       
 68060 -	@ Place all of the ffi_prep_args in position
       
 68061 -	mov	r0, sp
       
 68062 -	@     r1 already set
       
 68063 -	sub	r2, fp, #64   @ VFP scratch space
       
 68064 -
       
 68065 -	@ Call ffi_prep_args(stack, &ecif, vfp_space)
       
 68066 -	bl	ffi_prep_args
       
 68067 -
       
 68068 -	@ Load VFP register args if needed
       
 68069 -	cmp	r0, #0
       
 68070 -	beq	LSYM(Lbase_args)
       
 68071 -
       
 68072 -	@ Load only d0 if possible
       
 68073 -	cmp	r0, #3
       
 68074 -	sub	ip, fp, #64
       
 68075 -	flddle	d0, [ip]
       
 68076 -	fldmiadgt	ip, {d0-d7}
       
 68077 -
       
 68078 -LSYM(Lbase_args):
       
 68079 -	@ move first 4 parameters in registers
       
 68080 -	ldmia	sp, {r0-r3}
       
 68081 -
       
 68082 -	@ and adjust stack
       
 68083 -	sub	lr, ip, sp	@ cif->bytes == (fp - 64) - sp
       
 68084 -	ldr	ip, [fp]	@ load fn() in advance
       
 68085 -        cmp	lr, #16
       
 68086 -	movhs	lr, #16
       
 68087 -        add	sp, sp, lr
       
 68088 -
       
 68089 -	@ call (fn) (...)
       
 68090 -	call_reg(ip)
       
 68091 -
       
 68092 -	@ Remove the space we pushed for the args
       
 68093 -	mov	sp, fp
       
 68094 -
       
 68095 -	@ Load r2 with the pointer to storage for
       
 68096 -	@ the return value
       
 68097 -	ldr	r2, [sp, #24]
       
 68098 -
       
 68099 -	@ Load r3 with the return type code 
       
 68100 -	ldr	r3, [sp, #12]
       
 68101 -
       
 68102 -	@ If the return value pointer is NULL,
       
 68103 -	@ assume no return value.
       
 68104 -	cmp	r2, #0
       
 68105 -	beq	LSYM(Lepilogue_vfp)
       
 68106 -	
       
 68107 -	cmp	r3, #FFI_TYPE_INT
       
 68108 -	streq	r0, [r2]
       
 68109 -	beq	LSYM(Lepilogue_vfp)
       
 68110 -
       
 68111 -	cmp	r3, #FFI_TYPE_SINT64
       
 68112 -	stmeqia	r2, {r0, r1}
       
 68113 -	beq	LSYM(Lepilogue_vfp)
       
 68114 -
       
 68115 -	cmp	r3, #FFI_TYPE_FLOAT
       
 68116 -	fstseq	s0, [r2]
       
 68117 -	beq	LSYM(Lepilogue_vfp)
       
 68118 -	
       
 68119 -	cmp	r3, #FFI_TYPE_DOUBLE
       
 68120 -	fstdeq	d0, [r2]
       
 68121 -	beq	LSYM(Lepilogue_vfp)
       
 68122 -
       
 68123 -	cmp	r3, #FFI_TYPE_STRUCT_VFP_FLOAT
       
 68124 -	cmpne	r3, #FFI_TYPE_STRUCT_VFP_DOUBLE
       
 68125 -	fstmiadeq	r2, {d0-d3}
       
 68126 -
       
 68127 -LSYM(Lepilogue_vfp):
       
 68128 -	RETLDM	"r0-r3,fp"
       
 68129 -
       
 68130 -.ffi_call_VFP_end:
       
 68131 -	UNWIND .fnend
       
 68132 -        .size    CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
       
 68133 -	
       
 68134 -	
       
 68135  /*
       
 68136  	unsigned int FFI_HIDDEN
       
 68137 -	ffi_closure_SYSV_inner (closure, respp, args)
       
 68138 +	ffi_closure_inner (closure, respp, args)
       
 68139  	     ffi_closure *closure;
       
 68140  	     void **respp;
       
 68141    	     void *args;
       
 68142  */
       
 68143  
       
 68144 -ARM_FUNC_START ffi_closure_SYSV
       
 68145 +ARM_FUNC_START(ffi_closure_SYSV)
       
 68146  	UNWIND .pad #16
       
 68147  	add	ip, sp, #16
       
 68148  	stmfd	sp!, {ip, lr}
       
 68149  	UNWIND .save	{r0, lr}
       
 68150  	add	r2, sp, #8
       
 68151 -	.pad #16
       
 68152 +	UNWIND .pad #16
       
 68153  	sub	sp, sp, #16
       
 68154  	str	sp, [sp, #8]
       
 68155  	add	r1, sp, #8
       
 68156 -	bl	ffi_closure_SYSV_inner
       
 68157 +	bl	CNAME(ffi_closure_inner)
       
 68158  	cmp	r0, #FFI_TYPE_INT
       
 68159  	beq	.Lretint
       
 68160  
       
 68161  	cmp	r0, #FFI_TYPE_FLOAT
       
 68162  #if defined(__SOFTFP__) || defined(__ARM_EABI__)
       
 68163  	beq	.Lretint
       
 68164  #else
       
 68165  	beq	.Lretfloat
       
 68166 @@ -392,33 +308,136 @@ ARM_FUNC_START ffi_closure_SYSV
       
 68167  	b	.Lclosure_epilogue
       
 68168  .Lretlongdouble:
       
 68169  	ldfd	f0, [sp]
       
 68170  	b	.Lclosure_epilogue
       
 68171  #endif
       
 68172  
       
 68173  .ffi_closure_SYSV_end:
       
 68174  	UNWIND .fnend
       
 68175 +#ifdef __ELF__
       
 68176          .size    CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
       
 68177 +#endif
       
 68178  
       
 68179  
       
 68180 -ARM_FUNC_START ffi_closure_VFP
       
 68181 +/* Below are VFP hard-float ABI call and closure implementations.
       
 68182 +   Add VFP FPU directive here. This is only compiled into the library
       
 68183 +   under EABI.  */
       
 68184 +#ifdef __ARM_EABI__
       
 68185 +	.fpu	vfp
       
 68186 +
       
 68187 +	@ r0:   fn
       
 68188 +	@ r1:   &ecif
       
 68189 +	@ r2:   cif->bytes
       
 68190 +	@ r3:   fig->flags
       
 68191 +	@ sp+0: ecif.rvalue
       
 68192 +
       
 68193 +ARM_FUNC_START(ffi_call_VFP)
       
 68194 +	@ Save registers
       
 68195 +        stmfd	sp!, {r0-r3, fp, lr}
       
 68196 +	UNWIND .save	{r0-r3, fp, lr}
       
 68197 +	mov	fp, sp
       
 68198 +	UNWIND .setfp	fp, sp
       
 68199 +
       
 68200 +	@ Make room for all of the new args.
       
 68201 +	sub	sp, sp, r2
       
 68202 +
       
 68203 +	@ Make room for loading VFP args
       
 68204 +	sub	sp, sp, #64
       
 68205 +
       
 68206 +	@ Place all of the ffi_prep_args in position
       
 68207 +	mov	r0, sp
       
 68208 +	@     r1 already set
       
 68209 +	sub	r2, fp, #64   @ VFP scratch space
       
 68210 +
       
 68211 +	@ Call ffi_prep_args(stack, &ecif, vfp_space)
       
 68212 +	bl	CNAME(ffi_prep_args_VFP)
       
 68213 +
       
 68214 +	@ Load VFP register args if needed
       
 68215 +	cmp	r0, #0
       
 68216 +	mov	ip, fp
       
 68217 +	beq	LSYM(Lbase_args)
       
 68218 +
       
 68219 +	@ Load only d0 if possible
       
 68220 +	cmp	r0, #3
       
 68221 +	sub	ip, fp, #64
       
 68222 +	flddle	d0, [ip]
       
 68223 +	fldmiadgt	ip, {d0-d7}
       
 68224 +
       
 68225 +LSYM(Lbase_args):
       
 68226 +	@ move first 4 parameters in registers
       
 68227 +	ldmia	sp, {r0-r3}
       
 68228 +
       
 68229 +	@ and adjust stack
       
 68230 +	sub	lr, ip, sp	@ cif->bytes == (fp - 64) - sp
       
 68231 +	ldr	ip, [fp]	@ load fn() in advance
       
 68232 +        cmp	lr, #16
       
 68233 +	movhs	lr, #16
       
 68234 +        add	sp, sp, lr
       
 68235 +
       
 68236 +	@ call (fn) (...)
       
 68237 +	call_reg(ip)
       
 68238 +
       
 68239 +	@ Remove the space we pushed for the args
       
 68240 +	mov	sp, fp
       
 68241 +
       
 68242 +	@ Load r2 with the pointer to storage for
       
 68243 +	@ the return value
       
 68244 +	ldr	r2, [sp, #24]
       
 68245 +
       
 68246 +	@ Load r3 with the return type code 
       
 68247 +	ldr	r3, [sp, #12]
       
 68248 +
       
 68249 +	@ If the return value pointer is NULL,
       
 68250 +	@ assume no return value.
       
 68251 +	cmp	r2, #0
       
 68252 +	beq	LSYM(Lepilogue_vfp)
       
 68253 +
       
 68254 +	cmp	r3, #FFI_TYPE_INT
       
 68255 +	streq	r0, [r2]
       
 68256 +	beq	LSYM(Lepilogue_vfp)
       
 68257 +
       
 68258 +	cmp	r3, #FFI_TYPE_SINT64
       
 68259 +	stmeqia	r2, {r0, r1}
       
 68260 +	beq	LSYM(Lepilogue_vfp)
       
 68261 +
       
 68262 +	cmp	r3, #FFI_TYPE_FLOAT
       
 68263 +	fstseq	s0, [r2]
       
 68264 +	beq	LSYM(Lepilogue_vfp)
       
 68265 +	
       
 68266 +	cmp	r3, #FFI_TYPE_DOUBLE
       
 68267 +	fstdeq	d0, [r2]
       
 68268 +	beq	LSYM(Lepilogue_vfp)
       
 68269 +
       
 68270 +	cmp	r3, #FFI_TYPE_STRUCT_VFP_FLOAT
       
 68271 +	cmpne	r3, #FFI_TYPE_STRUCT_VFP_DOUBLE
       
 68272 +	fstmiadeq	r2, {d0-d3}
       
 68273 +
       
 68274 +LSYM(Lepilogue_vfp):
       
 68275 +	RETLDM	"r0-r3,fp"
       
 68276 +
       
 68277 +.ffi_call_VFP_end:
       
 68278 +	UNWIND .fnend
       
 68279 +        .size    CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
       
 68280 +
       
 68281 +
       
 68282 +ARM_FUNC_START(ffi_closure_VFP)
       
 68283  	fstmfdd	sp!, {d0-d7}
       
 68284  	@ r0-r3, then d0-d7
       
 68285  	UNWIND .pad #80
       
 68286  	add	ip, sp, #80
       
 68287  	stmfd	sp!, {ip, lr}
       
 68288  	UNWIND .save	{r0, lr}
       
 68289  	add	r2, sp, #72
       
 68290  	add	r3, sp, #8
       
 68291 -	.pad #72
       
 68292 +	UNWIND .pad #72
       
 68293  	sub	sp, sp, #72
       
 68294  	str	sp, [sp, #64]
       
 68295  	add	r1, sp, #64
       
 68296 -	bl	ffi_closure_SYSV_inner
       
 68297 +	bl	CNAME(ffi_closure_inner)
       
 68298  
       
 68299  	cmp	r0, #FFI_TYPE_INT
       
 68300  	beq	.Lretint_vfp
       
 68301  
       
 68302  	cmp	r0, #FFI_TYPE_FLOAT
       
 68303  	beq	.Lretfloat_vfp
       
 68304  
       
 68305  	cmp	r0, #FFI_TYPE_DOUBLE
       
 68306 @@ -455,12 +474,18 @@ ARM_FUNC_START ffi_closure_VFP
       
 68307  	b	.Lclosure_epilogue_vfp
       
 68308  .Lretdouble_struct_vfp:
       
 68309  	fldmiad	sp, {d0-d3}
       
 68310  	b	.Lclosure_epilogue_vfp
       
 68311  
       
 68312  .ffi_closure_VFP_end:
       
 68313  	UNWIND .fnend
       
 68314          .size    CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP)
       
 68315 +#endif
       
 68316 +
       
 68317 +ENTRY(ffi_arm_trampoline)
       
 68318 +	stmfd sp!, {r0-r3}
       
 68319 +	ldr r0, [pc]
       
 68320 +	ldr pc, [pc]
       
 68321  
       
 68322  #if defined __ELF__ && defined __linux__
       
 68323  	.section	.note.GNU-stack,"",%progbits
       
 68324  #endif
       
 68325 diff --git a/js/src/ctypes/libffi/src/arm/trampoline.S b/js/src/ctypes/libffi/src/arm/trampoline.S
       
 68326 new file mode 100644
       
 68327 --- /dev/null
       
 68328 +++ b/js/src/ctypes/libffi/src/arm/trampoline.S
       
 68329 @@ -0,0 +1,4450 @@
       
 68330 +# GENERATED CODE - DO NOT EDIT
       
 68331 +# This file was generated by src/arm/gentramp.sh
       
 68332 +
       
 68333 +#  Copyright (c) 2010, Plausible Labs Cooperative, Inc.
       
 68334 +#  
       
 68335 +#  Permission is hereby granted, free of charge, to any person obtaining
       
 68336 +#  a copy of this software and associated documentation files (the
       
 68337 +#  Software''), to deal in the Software without restriction, including
       
 68338 +#  without limitation the rights to use, copy, modify, merge, publish,
       
 68339 +#  distribute, sublicense, and/or sell copies of the Software, and to
       
 68340 +#  permit persons to whom the Software is furnished to do so, subject to
       
 68341 +#  the following conditions:
       
 68342 +#
       
 68343 +#  The above copyright notice and this permission notice shall be included
       
 68344 +#  in all copies or substantial portions of the Software.
       
 68345 +#
       
 68346 +#  THE SOFTWARE IS PROVIDED AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 68347 +#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 68348 +#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 68349 +#  NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 68350 +#  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 68351 +#  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 68352 +#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 68353 +#  DEALINGS IN THE SOFTWARE.
       
 68354 +#  -----------------------------------------------------------------------
       
 68355 +
       
 68356 +.text
       
 68357 +.align 12
       
 68358 +.globl _ffi_closure_trampoline_table_page
       
 68359 +_ffi_closure_trampoline_table_page:
       
 68360 +
       
 68361 +    // trampoline
       
 68362 +    // Save to stack
       
 68363 +    stmfd sp!, {r0-r3}
       
 68364 +
       
 68365 +    // Load the context argument from the config page.
       
 68366 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68367 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68368 +    ldr r0, [pc, #-4092]
       
 68369 +
       
 68370 +    // Load the jump address from the config page.
       
 68371 +    ldr pc, [pc, #-4092]
       
 68372 +
       
 68373 +
       
 68374 +    // trampoline
       
 68375 +    // Save to stack
       
 68376 +    stmfd sp!, {r0-r3}
       
 68377 +
       
 68378 +    // Load the context argument from the config page.
       
 68379 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68380 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68381 +    ldr r0, [pc, #-4092]
       
 68382 +
       
 68383 +    // Load the jump address from the config page.
       
 68384 +    ldr pc, [pc, #-4092]
       
 68385 +
       
 68386 +
       
 68387 +    // trampoline
       
 68388 +    // Save to stack
       
 68389 +    stmfd sp!, {r0-r3}
       
 68390 +
       
 68391 +    // Load the context argument from the config page.
       
 68392 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68393 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68394 +    ldr r0, [pc, #-4092]
       
 68395 +
       
 68396 +    // Load the jump address from the config page.
       
 68397 +    ldr pc, [pc, #-4092]
       
 68398 +
       
 68399 +
       
 68400 +    // trampoline
       
 68401 +    // Save to stack
       
 68402 +    stmfd sp!, {r0-r3}
       
 68403 +
       
 68404 +    // Load the context argument from the config page.
       
 68405 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68406 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68407 +    ldr r0, [pc, #-4092]
       
 68408 +
       
 68409 +    // Load the jump address from the config page.
       
 68410 +    ldr pc, [pc, #-4092]
       
 68411 +
       
 68412 +
       
 68413 +    // trampoline
       
 68414 +    // Save to stack
       
 68415 +    stmfd sp!, {r0-r3}
       
 68416 +
       
 68417 +    // Load the context argument from the config page.
       
 68418 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68419 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68420 +    ldr r0, [pc, #-4092]
       
 68421 +
       
 68422 +    // Load the jump address from the config page.
       
 68423 +    ldr pc, [pc, #-4092]
       
 68424 +
       
 68425 +
       
 68426 +    // trampoline
       
 68427 +    // Save to stack
       
 68428 +    stmfd sp!, {r0-r3}
       
 68429 +
       
 68430 +    // Load the context argument from the config page.
       
 68431 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68432 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68433 +    ldr r0, [pc, #-4092]
       
 68434 +
       
 68435 +    // Load the jump address from the config page.
       
 68436 +    ldr pc, [pc, #-4092]
       
 68437 +
       
 68438 +
       
 68439 +    // trampoline
       
 68440 +    // Save to stack
       
 68441 +    stmfd sp!, {r0-r3}
       
 68442 +
       
 68443 +    // Load the context argument from the config page.
       
 68444 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68445 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68446 +    ldr r0, [pc, #-4092]
       
 68447 +
       
 68448 +    // Load the jump address from the config page.
       
 68449 +    ldr pc, [pc, #-4092]
       
 68450 +
       
 68451 +
       
 68452 +    // trampoline
       
 68453 +    // Save to stack
       
 68454 +    stmfd sp!, {r0-r3}
       
 68455 +
       
 68456 +    // Load the context argument from the config page.
       
 68457 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68458 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68459 +    ldr r0, [pc, #-4092]
       
 68460 +
       
 68461 +    // Load the jump address from the config page.
       
 68462 +    ldr pc, [pc, #-4092]
       
 68463 +
       
 68464 +
       
 68465 +    // trampoline
       
 68466 +    // Save to stack
       
 68467 +    stmfd sp!, {r0-r3}
       
 68468 +
       
 68469 +    // Load the context argument from the config page.
       
 68470 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68471 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68472 +    ldr r0, [pc, #-4092]
       
 68473 +
       
 68474 +    // Load the jump address from the config page.
       
 68475 +    ldr pc, [pc, #-4092]
       
 68476 +
       
 68477 +
       
 68478 +    // trampoline
       
 68479 +    // Save to stack
       
 68480 +    stmfd sp!, {r0-r3}
       
 68481 +
       
 68482 +    // Load the context argument from the config page.
       
 68483 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68484 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68485 +    ldr r0, [pc, #-4092]
       
 68486 +
       
 68487 +    // Load the jump address from the config page.
       
 68488 +    ldr pc, [pc, #-4092]
       
 68489 +
       
 68490 +
       
 68491 +    // trampoline
       
 68492 +    // Save to stack
       
 68493 +    stmfd sp!, {r0-r3}
       
 68494 +
       
 68495 +    // Load the context argument from the config page.
       
 68496 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68497 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68498 +    ldr r0, [pc, #-4092]
       
 68499 +
       
 68500 +    // Load the jump address from the config page.
       
 68501 +    ldr pc, [pc, #-4092]
       
 68502 +
       
 68503 +
       
 68504 +    // trampoline
       
 68505 +    // Save to stack
       
 68506 +    stmfd sp!, {r0-r3}
       
 68507 +
       
 68508 +    // Load the context argument from the config page.
       
 68509 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68510 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68511 +    ldr r0, [pc, #-4092]
       
 68512 +
       
 68513 +    // Load the jump address from the config page.
       
 68514 +    ldr pc, [pc, #-4092]
       
 68515 +
       
 68516 +
       
 68517 +    // trampoline
       
 68518 +    // Save to stack
       
 68519 +    stmfd sp!, {r0-r3}
       
 68520 +
       
 68521 +    // Load the context argument from the config page.
       
 68522 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68523 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68524 +    ldr r0, [pc, #-4092]
       
 68525 +
       
 68526 +    // Load the jump address from the config page.
       
 68527 +    ldr pc, [pc, #-4092]
       
 68528 +
       
 68529 +
       
 68530 +    // trampoline
       
 68531 +    // Save to stack
       
 68532 +    stmfd sp!, {r0-r3}
       
 68533 +
       
 68534 +    // Load the context argument from the config page.
       
 68535 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68536 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68537 +    ldr r0, [pc, #-4092]
       
 68538 +
       
 68539 +    // Load the jump address from the config page.
       
 68540 +    ldr pc, [pc, #-4092]
       
 68541 +
       
 68542 +
       
 68543 +    // trampoline
       
 68544 +    // Save to stack
       
 68545 +    stmfd sp!, {r0-r3}
       
 68546 +
       
 68547 +    // Load the context argument from the config page.
       
 68548 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68549 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68550 +    ldr r0, [pc, #-4092]
       
 68551 +
       
 68552 +    // Load the jump address from the config page.
       
 68553 +    ldr pc, [pc, #-4092]
       
 68554 +
       
 68555 +
       
 68556 +    // trampoline
       
 68557 +    // Save to stack
       
 68558 +    stmfd sp!, {r0-r3}
       
 68559 +
       
 68560 +    // Load the context argument from the config page.
       
 68561 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68562 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68563 +    ldr r0, [pc, #-4092]
       
 68564 +
       
 68565 +    // Load the jump address from the config page.
       
 68566 +    ldr pc, [pc, #-4092]
       
 68567 +
       
 68568 +
       
 68569 +    // trampoline
       
 68570 +    // Save to stack
       
 68571 +    stmfd sp!, {r0-r3}
       
 68572 +
       
 68573 +    // Load the context argument from the config page.
       
 68574 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68575 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68576 +    ldr r0, [pc, #-4092]
       
 68577 +
       
 68578 +    // Load the jump address from the config page.
       
 68579 +    ldr pc, [pc, #-4092]
       
 68580 +
       
 68581 +
       
 68582 +    // trampoline
       
 68583 +    // Save to stack
       
 68584 +    stmfd sp!, {r0-r3}
       
 68585 +
       
 68586 +    // Load the context argument from the config page.
       
 68587 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68588 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68589 +    ldr r0, [pc, #-4092]
       
 68590 +
       
 68591 +    // Load the jump address from the config page.
       
 68592 +    ldr pc, [pc, #-4092]
       
 68593 +
       
 68594 +
       
 68595 +    // trampoline
       
 68596 +    // Save to stack
       
 68597 +    stmfd sp!, {r0-r3}
       
 68598 +
       
 68599 +    // Load the context argument from the config page.
       
 68600 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68601 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68602 +    ldr r0, [pc, #-4092]
       
 68603 +
       
 68604 +    // Load the jump address from the config page.
       
 68605 +    ldr pc, [pc, #-4092]
       
 68606 +
       
 68607 +
       
 68608 +    // trampoline
       
 68609 +    // Save to stack
       
 68610 +    stmfd sp!, {r0-r3}
       
 68611 +
       
 68612 +    // Load the context argument from the config page.
       
 68613 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68614 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68615 +    ldr r0, [pc, #-4092]
       
 68616 +
       
 68617 +    // Load the jump address from the config page.
       
 68618 +    ldr pc, [pc, #-4092]
       
 68619 +
       
 68620 +
       
 68621 +    // trampoline
       
 68622 +    // Save to stack
       
 68623 +    stmfd sp!, {r0-r3}
       
 68624 +
       
 68625 +    // Load the context argument from the config page.
       
 68626 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68627 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68628 +    ldr r0, [pc, #-4092]
       
 68629 +
       
 68630 +    // Load the jump address from the config page.
       
 68631 +    ldr pc, [pc, #-4092]
       
 68632 +
       
 68633 +
       
 68634 +    // trampoline
       
 68635 +    // Save to stack
       
 68636 +    stmfd sp!, {r0-r3}
       
 68637 +
       
 68638 +    // Load the context argument from the config page.
       
 68639 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68640 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68641 +    ldr r0, [pc, #-4092]
       
 68642 +
       
 68643 +    // Load the jump address from the config page.
       
 68644 +    ldr pc, [pc, #-4092]
       
 68645 +
       
 68646 +
       
 68647 +    // trampoline
       
 68648 +    // Save to stack
       
 68649 +    stmfd sp!, {r0-r3}
       
 68650 +
       
 68651 +    // Load the context argument from the config page.
       
 68652 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68653 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68654 +    ldr r0, [pc, #-4092]
       
 68655 +
       
 68656 +    // Load the jump address from the config page.
       
 68657 +    ldr pc, [pc, #-4092]
       
 68658 +
       
 68659 +
       
 68660 +    // trampoline
       
 68661 +    // Save to stack
       
 68662 +    stmfd sp!, {r0-r3}
       
 68663 +
       
 68664 +    // Load the context argument from the config page.
       
 68665 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68666 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68667 +    ldr r0, [pc, #-4092]
       
 68668 +
       
 68669 +    // Load the jump address from the config page.
       
 68670 +    ldr pc, [pc, #-4092]
       
 68671 +
       
 68672 +
       
 68673 +    // trampoline
       
 68674 +    // Save to stack
       
 68675 +    stmfd sp!, {r0-r3}
       
 68676 +
       
 68677 +    // Load the context argument from the config page.
       
 68678 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68679 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68680 +    ldr r0, [pc, #-4092]
       
 68681 +
       
 68682 +    // Load the jump address from the config page.
       
 68683 +    ldr pc, [pc, #-4092]
       
 68684 +
       
 68685 +
       
 68686 +    // trampoline
       
 68687 +    // Save to stack
       
 68688 +    stmfd sp!, {r0-r3}
       
 68689 +
       
 68690 +    // Load the context argument from the config page.
       
 68691 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68692 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68693 +    ldr r0, [pc, #-4092]
       
 68694 +
       
 68695 +    // Load the jump address from the config page.
       
 68696 +    ldr pc, [pc, #-4092]
       
 68697 +
       
 68698 +
       
 68699 +    // trampoline
       
 68700 +    // Save to stack
       
 68701 +    stmfd sp!, {r0-r3}
       
 68702 +
       
 68703 +    // Load the context argument from the config page.
       
 68704 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68705 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68706 +    ldr r0, [pc, #-4092]
       
 68707 +
       
 68708 +    // Load the jump address from the config page.
       
 68709 +    ldr pc, [pc, #-4092]
       
 68710 +
       
 68711 +
       
 68712 +    // trampoline
       
 68713 +    // Save to stack
       
 68714 +    stmfd sp!, {r0-r3}
       
 68715 +
       
 68716 +    // Load the context argument from the config page.
       
 68717 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68718 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68719 +    ldr r0, [pc, #-4092]
       
 68720 +
       
 68721 +    // Load the jump address from the config page.
       
 68722 +    ldr pc, [pc, #-4092]
       
 68723 +
       
 68724 +
       
 68725 +    // trampoline
       
 68726 +    // Save to stack
       
 68727 +    stmfd sp!, {r0-r3}
       
 68728 +
       
 68729 +    // Load the context argument from the config page.
       
 68730 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68731 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68732 +    ldr r0, [pc, #-4092]
       
 68733 +
       
 68734 +    // Load the jump address from the config page.
       
 68735 +    ldr pc, [pc, #-4092]
       
 68736 +
       
 68737 +
       
 68738 +    // trampoline
       
 68739 +    // Save to stack
       
 68740 +    stmfd sp!, {r0-r3}
       
 68741 +
       
 68742 +    // Load the context argument from the config page.
       
 68743 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68744 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68745 +    ldr r0, [pc, #-4092]
       
 68746 +
       
 68747 +    // Load the jump address from the config page.
       
 68748 +    ldr pc, [pc, #-4092]
       
 68749 +
       
 68750 +
       
 68751 +    // trampoline
       
 68752 +    // Save to stack
       
 68753 +    stmfd sp!, {r0-r3}
       
 68754 +
       
 68755 +    // Load the context argument from the config page.
       
 68756 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68757 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68758 +    ldr r0, [pc, #-4092]
       
 68759 +
       
 68760 +    // Load the jump address from the config page.
       
 68761 +    ldr pc, [pc, #-4092]
       
 68762 +
       
 68763 +
       
 68764 +    // trampoline
       
 68765 +    // Save to stack
       
 68766 +    stmfd sp!, {r0-r3}
       
 68767 +
       
 68768 +    // Load the context argument from the config page.
       
 68769 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68770 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68771 +    ldr r0, [pc, #-4092]
       
 68772 +
       
 68773 +    // Load the jump address from the config page.
       
 68774 +    ldr pc, [pc, #-4092]
       
 68775 +
       
 68776 +
       
 68777 +    // trampoline
       
 68778 +    // Save to stack
       
 68779 +    stmfd sp!, {r0-r3}
       
 68780 +
       
 68781 +    // Load the context argument from the config page.
       
 68782 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68783 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68784 +    ldr r0, [pc, #-4092]
       
 68785 +
       
 68786 +    // Load the jump address from the config page.
       
 68787 +    ldr pc, [pc, #-4092]
       
 68788 +
       
 68789 +
       
 68790 +    // trampoline
       
 68791 +    // Save to stack
       
 68792 +    stmfd sp!, {r0-r3}
       
 68793 +
       
 68794 +    // Load the context argument from the config page.
       
 68795 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68796 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68797 +    ldr r0, [pc, #-4092]
       
 68798 +
       
 68799 +    // Load the jump address from the config page.
       
 68800 +    ldr pc, [pc, #-4092]
       
 68801 +
       
 68802 +
       
 68803 +    // trampoline
       
 68804 +    // Save to stack
       
 68805 +    stmfd sp!, {r0-r3}
       
 68806 +
       
 68807 +    // Load the context argument from the config page.
       
 68808 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68809 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68810 +    ldr r0, [pc, #-4092]
       
 68811 +
       
 68812 +    // Load the jump address from the config page.
       
 68813 +    ldr pc, [pc, #-4092]
       
 68814 +
       
 68815 +
       
 68816 +    // trampoline
       
 68817 +    // Save to stack
       
 68818 +    stmfd sp!, {r0-r3}
       
 68819 +
       
 68820 +    // Load the context argument from the config page.
       
 68821 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68822 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68823 +    ldr r0, [pc, #-4092]
       
 68824 +
       
 68825 +    // Load the jump address from the config page.
       
 68826 +    ldr pc, [pc, #-4092]
       
 68827 +
       
 68828 +
       
 68829 +    // trampoline
       
 68830 +    // Save to stack
       
 68831 +    stmfd sp!, {r0-r3}
       
 68832 +
       
 68833 +    // Load the context argument from the config page.
       
 68834 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68835 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68836 +    ldr r0, [pc, #-4092]
       
 68837 +
       
 68838 +    // Load the jump address from the config page.
       
 68839 +    ldr pc, [pc, #-4092]
       
 68840 +
       
 68841 +
       
 68842 +    // trampoline
       
 68843 +    // Save to stack
       
 68844 +    stmfd sp!, {r0-r3}
       
 68845 +
       
 68846 +    // Load the context argument from the config page.
       
 68847 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68848 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68849 +    ldr r0, [pc, #-4092]
       
 68850 +
       
 68851 +    // Load the jump address from the config page.
       
 68852 +    ldr pc, [pc, #-4092]
       
 68853 +
       
 68854 +
       
 68855 +    // trampoline
       
 68856 +    // Save to stack
       
 68857 +    stmfd sp!, {r0-r3}
       
 68858 +
       
 68859 +    // Load the context argument from the config page.
       
 68860 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68861 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68862 +    ldr r0, [pc, #-4092]
       
 68863 +
       
 68864 +    // Load the jump address from the config page.
       
 68865 +    ldr pc, [pc, #-4092]
       
 68866 +
       
 68867 +
       
 68868 +    // trampoline
       
 68869 +    // Save to stack
       
 68870 +    stmfd sp!, {r0-r3}
       
 68871 +
       
 68872 +    // Load the context argument from the config page.
       
 68873 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68874 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68875 +    ldr r0, [pc, #-4092]
       
 68876 +
       
 68877 +    // Load the jump address from the config page.
       
 68878 +    ldr pc, [pc, #-4092]
       
 68879 +
       
 68880 +
       
 68881 +    // trampoline
       
 68882 +    // Save to stack
       
 68883 +    stmfd sp!, {r0-r3}
       
 68884 +
       
 68885 +    // Load the context argument from the config page.
       
 68886 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68887 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68888 +    ldr r0, [pc, #-4092]
       
 68889 +
       
 68890 +    // Load the jump address from the config page.
       
 68891 +    ldr pc, [pc, #-4092]
       
 68892 +
       
 68893 +
       
 68894 +    // trampoline
       
 68895 +    // Save to stack
       
 68896 +    stmfd sp!, {r0-r3}
       
 68897 +
       
 68898 +    // Load the context argument from the config page.
       
 68899 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68900 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68901 +    ldr r0, [pc, #-4092]
       
 68902 +
       
 68903 +    // Load the jump address from the config page.
       
 68904 +    ldr pc, [pc, #-4092]
       
 68905 +
       
 68906 +
       
 68907 +    // trampoline
       
 68908 +    // Save to stack
       
 68909 +    stmfd sp!, {r0-r3}
       
 68910 +
       
 68911 +    // Load the context argument from the config page.
       
 68912 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68913 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68914 +    ldr r0, [pc, #-4092]
       
 68915 +
       
 68916 +    // Load the jump address from the config page.
       
 68917 +    ldr pc, [pc, #-4092]
       
 68918 +
       
 68919 +
       
 68920 +    // trampoline
       
 68921 +    // Save to stack
       
 68922 +    stmfd sp!, {r0-r3}
       
 68923 +
       
 68924 +    // Load the context argument from the config page.
       
 68925 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68926 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68927 +    ldr r0, [pc, #-4092]
       
 68928 +
       
 68929 +    // Load the jump address from the config page.
       
 68930 +    ldr pc, [pc, #-4092]
       
 68931 +
       
 68932 +
       
 68933 +    // trampoline
       
 68934 +    // Save to stack
       
 68935 +    stmfd sp!, {r0-r3}
       
 68936 +
       
 68937 +    // Load the context argument from the config page.
       
 68938 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68939 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68940 +    ldr r0, [pc, #-4092]
       
 68941 +
       
 68942 +    // Load the jump address from the config page.
       
 68943 +    ldr pc, [pc, #-4092]
       
 68944 +
       
 68945 +
       
 68946 +    // trampoline
       
 68947 +    // Save to stack
       
 68948 +    stmfd sp!, {r0-r3}
       
 68949 +
       
 68950 +    // Load the context argument from the config page.
       
 68951 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68952 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68953 +    ldr r0, [pc, #-4092]
       
 68954 +
       
 68955 +    // Load the jump address from the config page.
       
 68956 +    ldr pc, [pc, #-4092]
       
 68957 +
       
 68958 +
       
 68959 +    // trampoline
       
 68960 +    // Save to stack
       
 68961 +    stmfd sp!, {r0-r3}
       
 68962 +
       
 68963 +    // Load the context argument from the config page.
       
 68964 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68965 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68966 +    ldr r0, [pc, #-4092]
       
 68967 +
       
 68968 +    // Load the jump address from the config page.
       
 68969 +    ldr pc, [pc, #-4092]
       
 68970 +
       
 68971 +
       
 68972 +    // trampoline
       
 68973 +    // Save to stack
       
 68974 +    stmfd sp!, {r0-r3}
       
 68975 +
       
 68976 +    // Load the context argument from the config page.
       
 68977 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68978 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68979 +    ldr r0, [pc, #-4092]
       
 68980 +
       
 68981 +    // Load the jump address from the config page.
       
 68982 +    ldr pc, [pc, #-4092]
       
 68983 +
       
 68984 +
       
 68985 +    // trampoline
       
 68986 +    // Save to stack
       
 68987 +    stmfd sp!, {r0-r3}
       
 68988 +
       
 68989 +    // Load the context argument from the config page.
       
 68990 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 68991 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 68992 +    ldr r0, [pc, #-4092]
       
 68993 +
       
 68994 +    // Load the jump address from the config page.
       
 68995 +    ldr pc, [pc, #-4092]
       
 68996 +
       
 68997 +
       
 68998 +    // trampoline
       
 68999 +    // Save to stack
       
 69000 +    stmfd sp!, {r0-r3}
       
 69001 +
       
 69002 +    // Load the context argument from the config page.
       
 69003 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69004 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69005 +    ldr r0, [pc, #-4092]
       
 69006 +
       
 69007 +    // Load the jump address from the config page.
       
 69008 +    ldr pc, [pc, #-4092]
       
 69009 +
       
 69010 +
       
 69011 +    // trampoline
       
 69012 +    // Save to stack
       
 69013 +    stmfd sp!, {r0-r3}
       
 69014 +
       
 69015 +    // Load the context argument from the config page.
       
 69016 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69017 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69018 +    ldr r0, [pc, #-4092]
       
 69019 +
       
 69020 +    // Load the jump address from the config page.
       
 69021 +    ldr pc, [pc, #-4092]
       
 69022 +
       
 69023 +
       
 69024 +    // trampoline
       
 69025 +    // Save to stack
       
 69026 +    stmfd sp!, {r0-r3}
       
 69027 +
       
 69028 +    // Load the context argument from the config page.
       
 69029 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69030 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69031 +    ldr r0, [pc, #-4092]
       
 69032 +
       
 69033 +    // Load the jump address from the config page.
       
 69034 +    ldr pc, [pc, #-4092]
       
 69035 +
       
 69036 +
       
 69037 +    // trampoline
       
 69038 +    // Save to stack
       
 69039 +    stmfd sp!, {r0-r3}
       
 69040 +
       
 69041 +    // Load the context argument from the config page.
       
 69042 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69043 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69044 +    ldr r0, [pc, #-4092]
       
 69045 +
       
 69046 +    // Load the jump address from the config page.
       
 69047 +    ldr pc, [pc, #-4092]
       
 69048 +
       
 69049 +
       
 69050 +    // trampoline
       
 69051 +    // Save to stack
       
 69052 +    stmfd sp!, {r0-r3}
       
 69053 +
       
 69054 +    // Load the context argument from the config page.
       
 69055 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69056 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69057 +    ldr r0, [pc, #-4092]
       
 69058 +
       
 69059 +    // Load the jump address from the config page.
       
 69060 +    ldr pc, [pc, #-4092]
       
 69061 +
       
 69062 +
       
 69063 +    // trampoline
       
 69064 +    // Save to stack
       
 69065 +    stmfd sp!, {r0-r3}
       
 69066 +
       
 69067 +    // Load the context argument from the config page.
       
 69068 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69069 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69070 +    ldr r0, [pc, #-4092]
       
 69071 +
       
 69072 +    // Load the jump address from the config page.
       
 69073 +    ldr pc, [pc, #-4092]
       
 69074 +
       
 69075 +
       
 69076 +    // trampoline
       
 69077 +    // Save to stack
       
 69078 +    stmfd sp!, {r0-r3}
       
 69079 +
       
 69080 +    // Load the context argument from the config page.
       
 69081 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69082 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69083 +    ldr r0, [pc, #-4092]
       
 69084 +
       
 69085 +    // Load the jump address from the config page.
       
 69086 +    ldr pc, [pc, #-4092]
       
 69087 +
       
 69088 +
       
 69089 +    // trampoline
       
 69090 +    // Save to stack
       
 69091 +    stmfd sp!, {r0-r3}
       
 69092 +
       
 69093 +    // Load the context argument from the config page.
       
 69094 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69095 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69096 +    ldr r0, [pc, #-4092]
       
 69097 +
       
 69098 +    // Load the jump address from the config page.
       
 69099 +    ldr pc, [pc, #-4092]
       
 69100 +
       
 69101 +
       
 69102 +    // trampoline
       
 69103 +    // Save to stack
       
 69104 +    stmfd sp!, {r0-r3}
       
 69105 +
       
 69106 +    // Load the context argument from the config page.
       
 69107 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69108 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69109 +    ldr r0, [pc, #-4092]
       
 69110 +
       
 69111 +    // Load the jump address from the config page.
       
 69112 +    ldr pc, [pc, #-4092]
       
 69113 +
       
 69114 +
       
 69115 +    // trampoline
       
 69116 +    // Save to stack
       
 69117 +    stmfd sp!, {r0-r3}
       
 69118 +
       
 69119 +    // Load the context argument from the config page.
       
 69120 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69121 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69122 +    ldr r0, [pc, #-4092]
       
 69123 +
       
 69124 +    // Load the jump address from the config page.
       
 69125 +    ldr pc, [pc, #-4092]
       
 69126 +
       
 69127 +
       
 69128 +    // trampoline
       
 69129 +    // Save to stack
       
 69130 +    stmfd sp!, {r0-r3}
       
 69131 +
       
 69132 +    // Load the context argument from the config page.
       
 69133 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69134 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69135 +    ldr r0, [pc, #-4092]
       
 69136 +
       
 69137 +    // Load the jump address from the config page.
       
 69138 +    ldr pc, [pc, #-4092]
       
 69139 +
       
 69140 +
       
 69141 +    // trampoline
       
 69142 +    // Save to stack
       
 69143 +    stmfd sp!, {r0-r3}
       
 69144 +
       
 69145 +    // Load the context argument from the config page.
       
 69146 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69147 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69148 +    ldr r0, [pc, #-4092]
       
 69149 +
       
 69150 +    // Load the jump address from the config page.
       
 69151 +    ldr pc, [pc, #-4092]
       
 69152 +
       
 69153 +
       
 69154 +    // trampoline
       
 69155 +    // Save to stack
       
 69156 +    stmfd sp!, {r0-r3}
       
 69157 +
       
 69158 +    // Load the context argument from the config page.
       
 69159 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69160 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69161 +    ldr r0, [pc, #-4092]
       
 69162 +
       
 69163 +    // Load the jump address from the config page.
       
 69164 +    ldr pc, [pc, #-4092]
       
 69165 +
       
 69166 +
       
 69167 +    // trampoline
       
 69168 +    // Save to stack
       
 69169 +    stmfd sp!, {r0-r3}
       
 69170 +
       
 69171 +    // Load the context argument from the config page.
       
 69172 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69173 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69174 +    ldr r0, [pc, #-4092]
       
 69175 +
       
 69176 +    // Load the jump address from the config page.
       
 69177 +    ldr pc, [pc, #-4092]
       
 69178 +
       
 69179 +
       
 69180 +    // trampoline
       
 69181 +    // Save to stack
       
 69182 +    stmfd sp!, {r0-r3}
       
 69183 +
       
 69184 +    // Load the context argument from the config page.
       
 69185 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69186 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69187 +    ldr r0, [pc, #-4092]
       
 69188 +
       
 69189 +    // Load the jump address from the config page.
       
 69190 +    ldr pc, [pc, #-4092]
       
 69191 +
       
 69192 +
       
 69193 +    // trampoline
       
 69194 +    // Save to stack
       
 69195 +    stmfd sp!, {r0-r3}
       
 69196 +
       
 69197 +    // Load the context argument from the config page.
       
 69198 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69199 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69200 +    ldr r0, [pc, #-4092]
       
 69201 +
       
 69202 +    // Load the jump address from the config page.
       
 69203 +    ldr pc, [pc, #-4092]
       
 69204 +
       
 69205 +
       
 69206 +    // trampoline
       
 69207 +    // Save to stack
       
 69208 +    stmfd sp!, {r0-r3}
       
 69209 +
       
 69210 +    // Load the context argument from the config page.
       
 69211 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69212 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69213 +    ldr r0, [pc, #-4092]
       
 69214 +
       
 69215 +    // Load the jump address from the config page.
       
 69216 +    ldr pc, [pc, #-4092]
       
 69217 +
       
 69218 +
       
 69219 +    // trampoline
       
 69220 +    // Save to stack
       
 69221 +    stmfd sp!, {r0-r3}
       
 69222 +
       
 69223 +    // Load the context argument from the config page.
       
 69224 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69225 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69226 +    ldr r0, [pc, #-4092]
       
 69227 +
       
 69228 +    // Load the jump address from the config page.
       
 69229 +    ldr pc, [pc, #-4092]
       
 69230 +
       
 69231 +
       
 69232 +    // trampoline
       
 69233 +    // Save to stack
       
 69234 +    stmfd sp!, {r0-r3}
       
 69235 +
       
 69236 +    // Load the context argument from the config page.
       
 69237 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69238 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69239 +    ldr r0, [pc, #-4092]
       
 69240 +
       
 69241 +    // Load the jump address from the config page.
       
 69242 +    ldr pc, [pc, #-4092]
       
 69243 +
       
 69244 +
       
 69245 +    // trampoline
       
 69246 +    // Save to stack
       
 69247 +    stmfd sp!, {r0-r3}
       
 69248 +
       
 69249 +    // Load the context argument from the config page.
       
 69250 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69251 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69252 +    ldr r0, [pc, #-4092]
       
 69253 +
       
 69254 +    // Load the jump address from the config page.
       
 69255 +    ldr pc, [pc, #-4092]
       
 69256 +
       
 69257 +
       
 69258 +    // trampoline
       
 69259 +    // Save to stack
       
 69260 +    stmfd sp!, {r0-r3}
       
 69261 +
       
 69262 +    // Load the context argument from the config page.
       
 69263 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69264 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69265 +    ldr r0, [pc, #-4092]
       
 69266 +
       
 69267 +    // Load the jump address from the config page.
       
 69268 +    ldr pc, [pc, #-4092]
       
 69269 +
       
 69270 +
       
 69271 +    // trampoline
       
 69272 +    // Save to stack
       
 69273 +    stmfd sp!, {r0-r3}
       
 69274 +
       
 69275 +    // Load the context argument from the config page.
       
 69276 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69277 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69278 +    ldr r0, [pc, #-4092]
       
 69279 +
       
 69280 +    // Load the jump address from the config page.
       
 69281 +    ldr pc, [pc, #-4092]
       
 69282 +
       
 69283 +
       
 69284 +    // trampoline
       
 69285 +    // Save to stack
       
 69286 +    stmfd sp!, {r0-r3}
       
 69287 +
       
 69288 +    // Load the context argument from the config page.
       
 69289 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69290 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69291 +    ldr r0, [pc, #-4092]
       
 69292 +
       
 69293 +    // Load the jump address from the config page.
       
 69294 +    ldr pc, [pc, #-4092]
       
 69295 +
       
 69296 +
       
 69297 +    // trampoline
       
 69298 +    // Save to stack
       
 69299 +    stmfd sp!, {r0-r3}
       
 69300 +
       
 69301 +    // Load the context argument from the config page.
       
 69302 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69303 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69304 +    ldr r0, [pc, #-4092]
       
 69305 +
       
 69306 +    // Load the jump address from the config page.
       
 69307 +    ldr pc, [pc, #-4092]
       
 69308 +
       
 69309 +
       
 69310 +    // trampoline
       
 69311 +    // Save to stack
       
 69312 +    stmfd sp!, {r0-r3}
       
 69313 +
       
 69314 +    // Load the context argument from the config page.
       
 69315 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69316 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69317 +    ldr r0, [pc, #-4092]
       
 69318 +
       
 69319 +    // Load the jump address from the config page.
       
 69320 +    ldr pc, [pc, #-4092]
       
 69321 +
       
 69322 +
       
 69323 +    // trampoline
       
 69324 +    // Save to stack
       
 69325 +    stmfd sp!, {r0-r3}
       
 69326 +
       
 69327 +    // Load the context argument from the config page.
       
 69328 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69329 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69330 +    ldr r0, [pc, #-4092]
       
 69331 +
       
 69332 +    // Load the jump address from the config page.
       
 69333 +    ldr pc, [pc, #-4092]
       
 69334 +
       
 69335 +
       
 69336 +    // trampoline
       
 69337 +    // Save to stack
       
 69338 +    stmfd sp!, {r0-r3}
       
 69339 +
       
 69340 +    // Load the context argument from the config page.
       
 69341 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69342 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69343 +    ldr r0, [pc, #-4092]
       
 69344 +
       
 69345 +    // Load the jump address from the config page.
       
 69346 +    ldr pc, [pc, #-4092]
       
 69347 +
       
 69348 +
       
 69349 +    // trampoline
       
 69350 +    // Save to stack
       
 69351 +    stmfd sp!, {r0-r3}
       
 69352 +
       
 69353 +    // Load the context argument from the config page.
       
 69354 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69355 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69356 +    ldr r0, [pc, #-4092]
       
 69357 +
       
 69358 +    // Load the jump address from the config page.
       
 69359 +    ldr pc, [pc, #-4092]
       
 69360 +
       
 69361 +
       
 69362 +    // trampoline
       
 69363 +    // Save to stack
       
 69364 +    stmfd sp!, {r0-r3}
       
 69365 +
       
 69366 +    // Load the context argument from the config page.
       
 69367 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69368 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69369 +    ldr r0, [pc, #-4092]
       
 69370 +
       
 69371 +    // Load the jump address from the config page.
       
 69372 +    ldr pc, [pc, #-4092]
       
 69373 +
       
 69374 +
       
 69375 +    // trampoline
       
 69376 +    // Save to stack
       
 69377 +    stmfd sp!, {r0-r3}
       
 69378 +
       
 69379 +    // Load the context argument from the config page.
       
 69380 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69381 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69382 +    ldr r0, [pc, #-4092]
       
 69383 +
       
 69384 +    // Load the jump address from the config page.
       
 69385 +    ldr pc, [pc, #-4092]
       
 69386 +
       
 69387 +
       
 69388 +    // trampoline
       
 69389 +    // Save to stack
       
 69390 +    stmfd sp!, {r0-r3}
       
 69391 +
       
 69392 +    // Load the context argument from the config page.
       
 69393 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69394 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69395 +    ldr r0, [pc, #-4092]
       
 69396 +
       
 69397 +    // Load the jump address from the config page.
       
 69398 +    ldr pc, [pc, #-4092]
       
 69399 +
       
 69400 +
       
 69401 +    // trampoline
       
 69402 +    // Save to stack
       
 69403 +    stmfd sp!, {r0-r3}
       
 69404 +
       
 69405 +    // Load the context argument from the config page.
       
 69406 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69407 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69408 +    ldr r0, [pc, #-4092]
       
 69409 +
       
 69410 +    // Load the jump address from the config page.
       
 69411 +    ldr pc, [pc, #-4092]
       
 69412 +
       
 69413 +
       
 69414 +    // trampoline
       
 69415 +    // Save to stack
       
 69416 +    stmfd sp!, {r0-r3}
       
 69417 +
       
 69418 +    // Load the context argument from the config page.
       
 69419 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69420 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69421 +    ldr r0, [pc, #-4092]
       
 69422 +
       
 69423 +    // Load the jump address from the config page.
       
 69424 +    ldr pc, [pc, #-4092]
       
 69425 +
       
 69426 +
       
 69427 +    // trampoline
       
 69428 +    // Save to stack
       
 69429 +    stmfd sp!, {r0-r3}
       
 69430 +
       
 69431 +    // Load the context argument from the config page.
       
 69432 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69433 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69434 +    ldr r0, [pc, #-4092]
       
 69435 +
       
 69436 +    // Load the jump address from the config page.
       
 69437 +    ldr pc, [pc, #-4092]
       
 69438 +
       
 69439 +
       
 69440 +    // trampoline
       
 69441 +    // Save to stack
       
 69442 +    stmfd sp!, {r0-r3}
       
 69443 +
       
 69444 +    // Load the context argument from the config page.
       
 69445 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69446 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69447 +    ldr r0, [pc, #-4092]
       
 69448 +
       
 69449 +    // Load the jump address from the config page.
       
 69450 +    ldr pc, [pc, #-4092]
       
 69451 +
       
 69452 +
       
 69453 +    // trampoline
       
 69454 +    // Save to stack
       
 69455 +    stmfd sp!, {r0-r3}
       
 69456 +
       
 69457 +    // Load the context argument from the config page.
       
 69458 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69459 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69460 +    ldr r0, [pc, #-4092]
       
 69461 +
       
 69462 +    // Load the jump address from the config page.
       
 69463 +    ldr pc, [pc, #-4092]
       
 69464 +
       
 69465 +
       
 69466 +    // trampoline
       
 69467 +    // Save to stack
       
 69468 +    stmfd sp!, {r0-r3}
       
 69469 +
       
 69470 +    // Load the context argument from the config page.
       
 69471 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69472 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69473 +    ldr r0, [pc, #-4092]
       
 69474 +
       
 69475 +    // Load the jump address from the config page.
       
 69476 +    ldr pc, [pc, #-4092]
       
 69477 +
       
 69478 +
       
 69479 +    // trampoline
       
 69480 +    // Save to stack
       
 69481 +    stmfd sp!, {r0-r3}
       
 69482 +
       
 69483 +    // Load the context argument from the config page.
       
 69484 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69485 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69486 +    ldr r0, [pc, #-4092]
       
 69487 +
       
 69488 +    // Load the jump address from the config page.
       
 69489 +    ldr pc, [pc, #-4092]
       
 69490 +
       
 69491 +
       
 69492 +    // trampoline
       
 69493 +    // Save to stack
       
 69494 +    stmfd sp!, {r0-r3}
       
 69495 +
       
 69496 +    // Load the context argument from the config page.
       
 69497 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69498 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69499 +    ldr r0, [pc, #-4092]
       
 69500 +
       
 69501 +    // Load the jump address from the config page.
       
 69502 +    ldr pc, [pc, #-4092]
       
 69503 +
       
 69504 +
       
 69505 +    // trampoline
       
 69506 +    // Save to stack
       
 69507 +    stmfd sp!, {r0-r3}
       
 69508 +
       
 69509 +    // Load the context argument from the config page.
       
 69510 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69511 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69512 +    ldr r0, [pc, #-4092]
       
 69513 +
       
 69514 +    // Load the jump address from the config page.
       
 69515 +    ldr pc, [pc, #-4092]
       
 69516 +
       
 69517 +
       
 69518 +    // trampoline
       
 69519 +    // Save to stack
       
 69520 +    stmfd sp!, {r0-r3}
       
 69521 +
       
 69522 +    // Load the context argument from the config page.
       
 69523 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69524 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69525 +    ldr r0, [pc, #-4092]
       
 69526 +
       
 69527 +    // Load the jump address from the config page.
       
 69528 +    ldr pc, [pc, #-4092]
       
 69529 +
       
 69530 +
       
 69531 +    // trampoline
       
 69532 +    // Save to stack
       
 69533 +    stmfd sp!, {r0-r3}
       
 69534 +
       
 69535 +    // Load the context argument from the config page.
       
 69536 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69537 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69538 +    ldr r0, [pc, #-4092]
       
 69539 +
       
 69540 +    // Load the jump address from the config page.
       
 69541 +    ldr pc, [pc, #-4092]
       
 69542 +
       
 69543 +
       
 69544 +    // trampoline
       
 69545 +    // Save to stack
       
 69546 +    stmfd sp!, {r0-r3}
       
 69547 +
       
 69548 +    // Load the context argument from the config page.
       
 69549 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69550 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69551 +    ldr r0, [pc, #-4092]
       
 69552 +
       
 69553 +    // Load the jump address from the config page.
       
 69554 +    ldr pc, [pc, #-4092]
       
 69555 +
       
 69556 +
       
 69557 +    // trampoline
       
 69558 +    // Save to stack
       
 69559 +    stmfd sp!, {r0-r3}
       
 69560 +
       
 69561 +    // Load the context argument from the config page.
       
 69562 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69563 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69564 +    ldr r0, [pc, #-4092]
       
 69565 +
       
 69566 +    // Load the jump address from the config page.
       
 69567 +    ldr pc, [pc, #-4092]
       
 69568 +
       
 69569 +
       
 69570 +    // trampoline
       
 69571 +    // Save to stack
       
 69572 +    stmfd sp!, {r0-r3}
       
 69573 +
       
 69574 +    // Load the context argument from the config page.
       
 69575 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69576 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69577 +    ldr r0, [pc, #-4092]
       
 69578 +
       
 69579 +    // Load the jump address from the config page.
       
 69580 +    ldr pc, [pc, #-4092]
       
 69581 +
       
 69582 +
       
 69583 +    // trampoline
       
 69584 +    // Save to stack
       
 69585 +    stmfd sp!, {r0-r3}
       
 69586 +
       
 69587 +    // Load the context argument from the config page.
       
 69588 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69589 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69590 +    ldr r0, [pc, #-4092]
       
 69591 +
       
 69592 +    // Load the jump address from the config page.
       
 69593 +    ldr pc, [pc, #-4092]
       
 69594 +
       
 69595 +
       
 69596 +    // trampoline
       
 69597 +    // Save to stack
       
 69598 +    stmfd sp!, {r0-r3}
       
 69599 +
       
 69600 +    // Load the context argument from the config page.
       
 69601 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69602 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69603 +    ldr r0, [pc, #-4092]
       
 69604 +
       
 69605 +    // Load the jump address from the config page.
       
 69606 +    ldr pc, [pc, #-4092]
       
 69607 +
       
 69608 +
       
 69609 +    // trampoline
       
 69610 +    // Save to stack
       
 69611 +    stmfd sp!, {r0-r3}
       
 69612 +
       
 69613 +    // Load the context argument from the config page.
       
 69614 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69615 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69616 +    ldr r0, [pc, #-4092]
       
 69617 +
       
 69618 +    // Load the jump address from the config page.
       
 69619 +    ldr pc, [pc, #-4092]
       
 69620 +
       
 69621 +
       
 69622 +    // trampoline
       
 69623 +    // Save to stack
       
 69624 +    stmfd sp!, {r0-r3}
       
 69625 +
       
 69626 +    // Load the context argument from the config page.
       
 69627 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69628 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69629 +    ldr r0, [pc, #-4092]
       
 69630 +
       
 69631 +    // Load the jump address from the config page.
       
 69632 +    ldr pc, [pc, #-4092]
       
 69633 +
       
 69634 +
       
 69635 +    // trampoline
       
 69636 +    // Save to stack
       
 69637 +    stmfd sp!, {r0-r3}
       
 69638 +
       
 69639 +    // Load the context argument from the config page.
       
 69640 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69641 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69642 +    ldr r0, [pc, #-4092]
       
 69643 +
       
 69644 +    // Load the jump address from the config page.
       
 69645 +    ldr pc, [pc, #-4092]
       
 69646 +
       
 69647 +
       
 69648 +    // trampoline
       
 69649 +    // Save to stack
       
 69650 +    stmfd sp!, {r0-r3}
       
 69651 +
       
 69652 +    // Load the context argument from the config page.
       
 69653 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69654 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69655 +    ldr r0, [pc, #-4092]
       
 69656 +
       
 69657 +    // Load the jump address from the config page.
       
 69658 +    ldr pc, [pc, #-4092]
       
 69659 +
       
 69660 +
       
 69661 +    // trampoline
       
 69662 +    // Save to stack
       
 69663 +    stmfd sp!, {r0-r3}
       
 69664 +
       
 69665 +    // Load the context argument from the config page.
       
 69666 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69667 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69668 +    ldr r0, [pc, #-4092]
       
 69669 +
       
 69670 +    // Load the jump address from the config page.
       
 69671 +    ldr pc, [pc, #-4092]
       
 69672 +
       
 69673 +
       
 69674 +    // trampoline
       
 69675 +    // Save to stack
       
 69676 +    stmfd sp!, {r0-r3}
       
 69677 +
       
 69678 +    // Load the context argument from the config page.
       
 69679 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69680 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69681 +    ldr r0, [pc, #-4092]
       
 69682 +
       
 69683 +    // Load the jump address from the config page.
       
 69684 +    ldr pc, [pc, #-4092]
       
 69685 +
       
 69686 +
       
 69687 +    // trampoline
       
 69688 +    // Save to stack
       
 69689 +    stmfd sp!, {r0-r3}
       
 69690 +
       
 69691 +    // Load the context argument from the config page.
       
 69692 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69693 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69694 +    ldr r0, [pc, #-4092]
       
 69695 +
       
 69696 +    // Load the jump address from the config page.
       
 69697 +    ldr pc, [pc, #-4092]
       
 69698 +
       
 69699 +
       
 69700 +    // trampoline
       
 69701 +    // Save to stack
       
 69702 +    stmfd sp!, {r0-r3}
       
 69703 +
       
 69704 +    // Load the context argument from the config page.
       
 69705 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69706 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69707 +    ldr r0, [pc, #-4092]
       
 69708 +
       
 69709 +    // Load the jump address from the config page.
       
 69710 +    ldr pc, [pc, #-4092]
       
 69711 +
       
 69712 +
       
 69713 +    // trampoline
       
 69714 +    // Save to stack
       
 69715 +    stmfd sp!, {r0-r3}
       
 69716 +
       
 69717 +    // Load the context argument from the config page.
       
 69718 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69719 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69720 +    ldr r0, [pc, #-4092]
       
 69721 +
       
 69722 +    // Load the jump address from the config page.
       
 69723 +    ldr pc, [pc, #-4092]
       
 69724 +
       
 69725 +
       
 69726 +    // trampoline
       
 69727 +    // Save to stack
       
 69728 +    stmfd sp!, {r0-r3}
       
 69729 +
       
 69730 +    // Load the context argument from the config page.
       
 69731 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69732 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69733 +    ldr r0, [pc, #-4092]
       
 69734 +
       
 69735 +    // Load the jump address from the config page.
       
 69736 +    ldr pc, [pc, #-4092]
       
 69737 +
       
 69738 +
       
 69739 +    // trampoline
       
 69740 +    // Save to stack
       
 69741 +    stmfd sp!, {r0-r3}
       
 69742 +
       
 69743 +    // Load the context argument from the config page.
       
 69744 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69745 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69746 +    ldr r0, [pc, #-4092]
       
 69747 +
       
 69748 +    // Load the jump address from the config page.
       
 69749 +    ldr pc, [pc, #-4092]
       
 69750 +
       
 69751 +
       
 69752 +    // trampoline
       
 69753 +    // Save to stack
       
 69754 +    stmfd sp!, {r0-r3}
       
 69755 +
       
 69756 +    // Load the context argument from the config page.
       
 69757 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69758 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69759 +    ldr r0, [pc, #-4092]
       
 69760 +
       
 69761 +    // Load the jump address from the config page.
       
 69762 +    ldr pc, [pc, #-4092]
       
 69763 +
       
 69764 +
       
 69765 +    // trampoline
       
 69766 +    // Save to stack
       
 69767 +    stmfd sp!, {r0-r3}
       
 69768 +
       
 69769 +    // Load the context argument from the config page.
       
 69770 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69771 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69772 +    ldr r0, [pc, #-4092]
       
 69773 +
       
 69774 +    // Load the jump address from the config page.
       
 69775 +    ldr pc, [pc, #-4092]
       
 69776 +
       
 69777 +
       
 69778 +    // trampoline
       
 69779 +    // Save to stack
       
 69780 +    stmfd sp!, {r0-r3}
       
 69781 +
       
 69782 +    // Load the context argument from the config page.
       
 69783 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69784 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69785 +    ldr r0, [pc, #-4092]
       
 69786 +
       
 69787 +    // Load the jump address from the config page.
       
 69788 +    ldr pc, [pc, #-4092]
       
 69789 +
       
 69790 +
       
 69791 +    // trampoline
       
 69792 +    // Save to stack
       
 69793 +    stmfd sp!, {r0-r3}
       
 69794 +
       
 69795 +    // Load the context argument from the config page.
       
 69796 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69797 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69798 +    ldr r0, [pc, #-4092]
       
 69799 +
       
 69800 +    // Load the jump address from the config page.
       
 69801 +    ldr pc, [pc, #-4092]
       
 69802 +
       
 69803 +
       
 69804 +    // trampoline
       
 69805 +    // Save to stack
       
 69806 +    stmfd sp!, {r0-r3}
       
 69807 +
       
 69808 +    // Load the context argument from the config page.
       
 69809 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69810 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69811 +    ldr r0, [pc, #-4092]
       
 69812 +
       
 69813 +    // Load the jump address from the config page.
       
 69814 +    ldr pc, [pc, #-4092]
       
 69815 +
       
 69816 +
       
 69817 +    // trampoline
       
 69818 +    // Save to stack
       
 69819 +    stmfd sp!, {r0-r3}
       
 69820 +
       
 69821 +    // Load the context argument from the config page.
       
 69822 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69823 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69824 +    ldr r0, [pc, #-4092]
       
 69825 +
       
 69826 +    // Load the jump address from the config page.
       
 69827 +    ldr pc, [pc, #-4092]
       
 69828 +
       
 69829 +
       
 69830 +    // trampoline
       
 69831 +    // Save to stack
       
 69832 +    stmfd sp!, {r0-r3}
       
 69833 +
       
 69834 +    // Load the context argument from the config page.
       
 69835 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69836 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69837 +    ldr r0, [pc, #-4092]
       
 69838 +
       
 69839 +    // Load the jump address from the config page.
       
 69840 +    ldr pc, [pc, #-4092]
       
 69841 +
       
 69842 +
       
 69843 +    // trampoline
       
 69844 +    // Save to stack
       
 69845 +    stmfd sp!, {r0-r3}
       
 69846 +
       
 69847 +    // Load the context argument from the config page.
       
 69848 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69849 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69850 +    ldr r0, [pc, #-4092]
       
 69851 +
       
 69852 +    // Load the jump address from the config page.
       
 69853 +    ldr pc, [pc, #-4092]
       
 69854 +
       
 69855 +
       
 69856 +    // trampoline
       
 69857 +    // Save to stack
       
 69858 +    stmfd sp!, {r0-r3}
       
 69859 +
       
 69860 +    // Load the context argument from the config page.
       
 69861 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69862 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69863 +    ldr r0, [pc, #-4092]
       
 69864 +
       
 69865 +    // Load the jump address from the config page.
       
 69866 +    ldr pc, [pc, #-4092]
       
 69867 +
       
 69868 +
       
 69869 +    // trampoline
       
 69870 +    // Save to stack
       
 69871 +    stmfd sp!, {r0-r3}
       
 69872 +
       
 69873 +    // Load the context argument from the config page.
       
 69874 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69875 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69876 +    ldr r0, [pc, #-4092]
       
 69877 +
       
 69878 +    // Load the jump address from the config page.
       
 69879 +    ldr pc, [pc, #-4092]
       
 69880 +
       
 69881 +
       
 69882 +    // trampoline
       
 69883 +    // Save to stack
       
 69884 +    stmfd sp!, {r0-r3}
       
 69885 +
       
 69886 +    // Load the context argument from the config page.
       
 69887 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69888 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69889 +    ldr r0, [pc, #-4092]
       
 69890 +
       
 69891 +    // Load the jump address from the config page.
       
 69892 +    ldr pc, [pc, #-4092]
       
 69893 +
       
 69894 +
       
 69895 +    // trampoline
       
 69896 +    // Save to stack
       
 69897 +    stmfd sp!, {r0-r3}
       
 69898 +
       
 69899 +    // Load the context argument from the config page.
       
 69900 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69901 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69902 +    ldr r0, [pc, #-4092]
       
 69903 +
       
 69904 +    // Load the jump address from the config page.
       
 69905 +    ldr pc, [pc, #-4092]
       
 69906 +
       
 69907 +
       
 69908 +    // trampoline
       
 69909 +    // Save to stack
       
 69910 +    stmfd sp!, {r0-r3}
       
 69911 +
       
 69912 +    // Load the context argument from the config page.
       
 69913 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69914 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69915 +    ldr r0, [pc, #-4092]
       
 69916 +
       
 69917 +    // Load the jump address from the config page.
       
 69918 +    ldr pc, [pc, #-4092]
       
 69919 +
       
 69920 +
       
 69921 +    // trampoline
       
 69922 +    // Save to stack
       
 69923 +    stmfd sp!, {r0-r3}
       
 69924 +
       
 69925 +    // Load the context argument from the config page.
       
 69926 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69927 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69928 +    ldr r0, [pc, #-4092]
       
 69929 +
       
 69930 +    // Load the jump address from the config page.
       
 69931 +    ldr pc, [pc, #-4092]
       
 69932 +
       
 69933 +
       
 69934 +    // trampoline
       
 69935 +    // Save to stack
       
 69936 +    stmfd sp!, {r0-r3}
       
 69937 +
       
 69938 +    // Load the context argument from the config page.
       
 69939 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69940 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69941 +    ldr r0, [pc, #-4092]
       
 69942 +
       
 69943 +    // Load the jump address from the config page.
       
 69944 +    ldr pc, [pc, #-4092]
       
 69945 +
       
 69946 +
       
 69947 +    // trampoline
       
 69948 +    // Save to stack
       
 69949 +    stmfd sp!, {r0-r3}
       
 69950 +
       
 69951 +    // Load the context argument from the config page.
       
 69952 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69953 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69954 +    ldr r0, [pc, #-4092]
       
 69955 +
       
 69956 +    // Load the jump address from the config page.
       
 69957 +    ldr pc, [pc, #-4092]
       
 69958 +
       
 69959 +
       
 69960 +    // trampoline
       
 69961 +    // Save to stack
       
 69962 +    stmfd sp!, {r0-r3}
       
 69963 +
       
 69964 +    // Load the context argument from the config page.
       
 69965 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69966 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69967 +    ldr r0, [pc, #-4092]
       
 69968 +
       
 69969 +    // Load the jump address from the config page.
       
 69970 +    ldr pc, [pc, #-4092]
       
 69971 +
       
 69972 +
       
 69973 +    // trampoline
       
 69974 +    // Save to stack
       
 69975 +    stmfd sp!, {r0-r3}
       
 69976 +
       
 69977 +    // Load the context argument from the config page.
       
 69978 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69979 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69980 +    ldr r0, [pc, #-4092]
       
 69981 +
       
 69982 +    // Load the jump address from the config page.
       
 69983 +    ldr pc, [pc, #-4092]
       
 69984 +
       
 69985 +
       
 69986 +    // trampoline
       
 69987 +    // Save to stack
       
 69988 +    stmfd sp!, {r0-r3}
       
 69989 +
       
 69990 +    // Load the context argument from the config page.
       
 69991 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 69992 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 69993 +    ldr r0, [pc, #-4092]
       
 69994 +
       
 69995 +    // Load the jump address from the config page.
       
 69996 +    ldr pc, [pc, #-4092]
       
 69997 +
       
 69998 +
       
 69999 +    // trampoline
       
 70000 +    // Save to stack
       
 70001 +    stmfd sp!, {r0-r3}
       
 70002 +
       
 70003 +    // Load the context argument from the config page.
       
 70004 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70005 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70006 +    ldr r0, [pc, #-4092]
       
 70007 +
       
 70008 +    // Load the jump address from the config page.
       
 70009 +    ldr pc, [pc, #-4092]
       
 70010 +
       
 70011 +
       
 70012 +    // trampoline
       
 70013 +    // Save to stack
       
 70014 +    stmfd sp!, {r0-r3}
       
 70015 +
       
 70016 +    // Load the context argument from the config page.
       
 70017 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70018 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70019 +    ldr r0, [pc, #-4092]
       
 70020 +
       
 70021 +    // Load the jump address from the config page.
       
 70022 +    ldr pc, [pc, #-4092]
       
 70023 +
       
 70024 +
       
 70025 +    // trampoline
       
 70026 +    // Save to stack
       
 70027 +    stmfd sp!, {r0-r3}
       
 70028 +
       
 70029 +    // Load the context argument from the config page.
       
 70030 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70031 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70032 +    ldr r0, [pc, #-4092]
       
 70033 +
       
 70034 +    // Load the jump address from the config page.
       
 70035 +    ldr pc, [pc, #-4092]
       
 70036 +
       
 70037 +
       
 70038 +    // trampoline
       
 70039 +    // Save to stack
       
 70040 +    stmfd sp!, {r0-r3}
       
 70041 +
       
 70042 +    // Load the context argument from the config page.
       
 70043 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70044 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70045 +    ldr r0, [pc, #-4092]
       
 70046 +
       
 70047 +    // Load the jump address from the config page.
       
 70048 +    ldr pc, [pc, #-4092]
       
 70049 +
       
 70050 +
       
 70051 +    // trampoline
       
 70052 +    // Save to stack
       
 70053 +    stmfd sp!, {r0-r3}
       
 70054 +
       
 70055 +    // Load the context argument from the config page.
       
 70056 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70057 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70058 +    ldr r0, [pc, #-4092]
       
 70059 +
       
 70060 +    // Load the jump address from the config page.
       
 70061 +    ldr pc, [pc, #-4092]
       
 70062 +
       
 70063 +
       
 70064 +    // trampoline
       
 70065 +    // Save to stack
       
 70066 +    stmfd sp!, {r0-r3}
       
 70067 +
       
 70068 +    // Load the context argument from the config page.
       
 70069 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70070 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70071 +    ldr r0, [pc, #-4092]
       
 70072 +
       
 70073 +    // Load the jump address from the config page.
       
 70074 +    ldr pc, [pc, #-4092]
       
 70075 +
       
 70076 +
       
 70077 +    // trampoline
       
 70078 +    // Save to stack
       
 70079 +    stmfd sp!, {r0-r3}
       
 70080 +
       
 70081 +    // Load the context argument from the config page.
       
 70082 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70083 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70084 +    ldr r0, [pc, #-4092]
       
 70085 +
       
 70086 +    // Load the jump address from the config page.
       
 70087 +    ldr pc, [pc, #-4092]
       
 70088 +
       
 70089 +
       
 70090 +    // trampoline
       
 70091 +    // Save to stack
       
 70092 +    stmfd sp!, {r0-r3}
       
 70093 +
       
 70094 +    // Load the context argument from the config page.
       
 70095 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70096 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70097 +    ldr r0, [pc, #-4092]
       
 70098 +
       
 70099 +    // Load the jump address from the config page.
       
 70100 +    ldr pc, [pc, #-4092]
       
 70101 +
       
 70102 +
       
 70103 +    // trampoline
       
 70104 +    // Save to stack
       
 70105 +    stmfd sp!, {r0-r3}
       
 70106 +
       
 70107 +    // Load the context argument from the config page.
       
 70108 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70109 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70110 +    ldr r0, [pc, #-4092]
       
 70111 +
       
 70112 +    // Load the jump address from the config page.
       
 70113 +    ldr pc, [pc, #-4092]
       
 70114 +
       
 70115 +
       
 70116 +    // trampoline
       
 70117 +    // Save to stack
       
 70118 +    stmfd sp!, {r0-r3}
       
 70119 +
       
 70120 +    // Load the context argument from the config page.
       
 70121 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70122 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70123 +    ldr r0, [pc, #-4092]
       
 70124 +
       
 70125 +    // Load the jump address from the config page.
       
 70126 +    ldr pc, [pc, #-4092]
       
 70127 +
       
 70128 +
       
 70129 +    // trampoline
       
 70130 +    // Save to stack
       
 70131 +    stmfd sp!, {r0-r3}
       
 70132 +
       
 70133 +    // Load the context argument from the config page.
       
 70134 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70135 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70136 +    ldr r0, [pc, #-4092]
       
 70137 +
       
 70138 +    // Load the jump address from the config page.
       
 70139 +    ldr pc, [pc, #-4092]
       
 70140 +
       
 70141 +
       
 70142 +    // trampoline
       
 70143 +    // Save to stack
       
 70144 +    stmfd sp!, {r0-r3}
       
 70145 +
       
 70146 +    // Load the context argument from the config page.
       
 70147 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70148 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70149 +    ldr r0, [pc, #-4092]
       
 70150 +
       
 70151 +    // Load the jump address from the config page.
       
 70152 +    ldr pc, [pc, #-4092]
       
 70153 +
       
 70154 +
       
 70155 +    // trampoline
       
 70156 +    // Save to stack
       
 70157 +    stmfd sp!, {r0-r3}
       
 70158 +
       
 70159 +    // Load the context argument from the config page.
       
 70160 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70161 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70162 +    ldr r0, [pc, #-4092]
       
 70163 +
       
 70164 +    // Load the jump address from the config page.
       
 70165 +    ldr pc, [pc, #-4092]
       
 70166 +
       
 70167 +
       
 70168 +    // trampoline
       
 70169 +    // Save to stack
       
 70170 +    stmfd sp!, {r0-r3}
       
 70171 +
       
 70172 +    // Load the context argument from the config page.
       
 70173 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70174 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70175 +    ldr r0, [pc, #-4092]
       
 70176 +
       
 70177 +    // Load the jump address from the config page.
       
 70178 +    ldr pc, [pc, #-4092]
       
 70179 +
       
 70180 +
       
 70181 +    // trampoline
       
 70182 +    // Save to stack
       
 70183 +    stmfd sp!, {r0-r3}
       
 70184 +
       
 70185 +    // Load the context argument from the config page.
       
 70186 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70187 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70188 +    ldr r0, [pc, #-4092]
       
 70189 +
       
 70190 +    // Load the jump address from the config page.
       
 70191 +    ldr pc, [pc, #-4092]
       
 70192 +
       
 70193 +
       
 70194 +    // trampoline
       
 70195 +    // Save to stack
       
 70196 +    stmfd sp!, {r0-r3}
       
 70197 +
       
 70198 +    // Load the context argument from the config page.
       
 70199 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70200 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70201 +    ldr r0, [pc, #-4092]
       
 70202 +
       
 70203 +    // Load the jump address from the config page.
       
 70204 +    ldr pc, [pc, #-4092]
       
 70205 +
       
 70206 +
       
 70207 +    // trampoline
       
 70208 +    // Save to stack
       
 70209 +    stmfd sp!, {r0-r3}
       
 70210 +
       
 70211 +    // Load the context argument from the config page.
       
 70212 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70213 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70214 +    ldr r0, [pc, #-4092]
       
 70215 +
       
 70216 +    // Load the jump address from the config page.
       
 70217 +    ldr pc, [pc, #-4092]
       
 70218 +
       
 70219 +
       
 70220 +    // trampoline
       
 70221 +    // Save to stack
       
 70222 +    stmfd sp!, {r0-r3}
       
 70223 +
       
 70224 +    // Load the context argument from the config page.
       
 70225 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70226 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70227 +    ldr r0, [pc, #-4092]
       
 70228 +
       
 70229 +    // Load the jump address from the config page.
       
 70230 +    ldr pc, [pc, #-4092]
       
 70231 +
       
 70232 +
       
 70233 +    // trampoline
       
 70234 +    // Save to stack
       
 70235 +    stmfd sp!, {r0-r3}
       
 70236 +
       
 70237 +    // Load the context argument from the config page.
       
 70238 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70239 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70240 +    ldr r0, [pc, #-4092]
       
 70241 +
       
 70242 +    // Load the jump address from the config page.
       
 70243 +    ldr pc, [pc, #-4092]
       
 70244 +
       
 70245 +
       
 70246 +    // trampoline
       
 70247 +    // Save to stack
       
 70248 +    stmfd sp!, {r0-r3}
       
 70249 +
       
 70250 +    // Load the context argument from the config page.
       
 70251 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70252 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70253 +    ldr r0, [pc, #-4092]
       
 70254 +
       
 70255 +    // Load the jump address from the config page.
       
 70256 +    ldr pc, [pc, #-4092]
       
 70257 +
       
 70258 +
       
 70259 +    // trampoline
       
 70260 +    // Save to stack
       
 70261 +    stmfd sp!, {r0-r3}
       
 70262 +
       
 70263 +    // Load the context argument from the config page.
       
 70264 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70265 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70266 +    ldr r0, [pc, #-4092]
       
 70267 +
       
 70268 +    // Load the jump address from the config page.
       
 70269 +    ldr pc, [pc, #-4092]
       
 70270 +
       
 70271 +
       
 70272 +    // trampoline
       
 70273 +    // Save to stack
       
 70274 +    stmfd sp!, {r0-r3}
       
 70275 +
       
 70276 +    // Load the context argument from the config page.
       
 70277 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70278 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70279 +    ldr r0, [pc, #-4092]
       
 70280 +
       
 70281 +    // Load the jump address from the config page.
       
 70282 +    ldr pc, [pc, #-4092]
       
 70283 +
       
 70284 +
       
 70285 +    // trampoline
       
 70286 +    // Save to stack
       
 70287 +    stmfd sp!, {r0-r3}
       
 70288 +
       
 70289 +    // Load the context argument from the config page.
       
 70290 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70291 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70292 +    ldr r0, [pc, #-4092]
       
 70293 +
       
 70294 +    // Load the jump address from the config page.
       
 70295 +    ldr pc, [pc, #-4092]
       
 70296 +
       
 70297 +
       
 70298 +    // trampoline
       
 70299 +    // Save to stack
       
 70300 +    stmfd sp!, {r0-r3}
       
 70301 +
       
 70302 +    // Load the context argument from the config page.
       
 70303 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70304 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70305 +    ldr r0, [pc, #-4092]
       
 70306 +
       
 70307 +    // Load the jump address from the config page.
       
 70308 +    ldr pc, [pc, #-4092]
       
 70309 +
       
 70310 +
       
 70311 +    // trampoline
       
 70312 +    // Save to stack
       
 70313 +    stmfd sp!, {r0-r3}
       
 70314 +
       
 70315 +    // Load the context argument from the config page.
       
 70316 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70317 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70318 +    ldr r0, [pc, #-4092]
       
 70319 +
       
 70320 +    // Load the jump address from the config page.
       
 70321 +    ldr pc, [pc, #-4092]
       
 70322 +
       
 70323 +
       
 70324 +    // trampoline
       
 70325 +    // Save to stack
       
 70326 +    stmfd sp!, {r0-r3}
       
 70327 +
       
 70328 +    // Load the context argument from the config page.
       
 70329 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70330 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70331 +    ldr r0, [pc, #-4092]
       
 70332 +
       
 70333 +    // Load the jump address from the config page.
       
 70334 +    ldr pc, [pc, #-4092]
       
 70335 +
       
 70336 +
       
 70337 +    // trampoline
       
 70338 +    // Save to stack
       
 70339 +    stmfd sp!, {r0-r3}
       
 70340 +
       
 70341 +    // Load the context argument from the config page.
       
 70342 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70343 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70344 +    ldr r0, [pc, #-4092]
       
 70345 +
       
 70346 +    // Load the jump address from the config page.
       
 70347 +    ldr pc, [pc, #-4092]
       
 70348 +
       
 70349 +
       
 70350 +    // trampoline
       
 70351 +    // Save to stack
       
 70352 +    stmfd sp!, {r0-r3}
       
 70353 +
       
 70354 +    // Load the context argument from the config page.
       
 70355 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70356 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70357 +    ldr r0, [pc, #-4092]
       
 70358 +
       
 70359 +    // Load the jump address from the config page.
       
 70360 +    ldr pc, [pc, #-4092]
       
 70361 +
       
 70362 +
       
 70363 +    // trampoline
       
 70364 +    // Save to stack
       
 70365 +    stmfd sp!, {r0-r3}
       
 70366 +
       
 70367 +    // Load the context argument from the config page.
       
 70368 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70369 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70370 +    ldr r0, [pc, #-4092]
       
 70371 +
       
 70372 +    // Load the jump address from the config page.
       
 70373 +    ldr pc, [pc, #-4092]
       
 70374 +
       
 70375 +
       
 70376 +    // trampoline
       
 70377 +    // Save to stack
       
 70378 +    stmfd sp!, {r0-r3}
       
 70379 +
       
 70380 +    // Load the context argument from the config page.
       
 70381 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70382 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70383 +    ldr r0, [pc, #-4092]
       
 70384 +
       
 70385 +    // Load the jump address from the config page.
       
 70386 +    ldr pc, [pc, #-4092]
       
 70387 +
       
 70388 +
       
 70389 +    // trampoline
       
 70390 +    // Save to stack
       
 70391 +    stmfd sp!, {r0-r3}
       
 70392 +
       
 70393 +    // Load the context argument from the config page.
       
 70394 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70395 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70396 +    ldr r0, [pc, #-4092]
       
 70397 +
       
 70398 +    // Load the jump address from the config page.
       
 70399 +    ldr pc, [pc, #-4092]
       
 70400 +
       
 70401 +
       
 70402 +    // trampoline
       
 70403 +    // Save to stack
       
 70404 +    stmfd sp!, {r0-r3}
       
 70405 +
       
 70406 +    // Load the context argument from the config page.
       
 70407 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70408 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70409 +    ldr r0, [pc, #-4092]
       
 70410 +
       
 70411 +    // Load the jump address from the config page.
       
 70412 +    ldr pc, [pc, #-4092]
       
 70413 +
       
 70414 +
       
 70415 +    // trampoline
       
 70416 +    // Save to stack
       
 70417 +    stmfd sp!, {r0-r3}
       
 70418 +
       
 70419 +    // Load the context argument from the config page.
       
 70420 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70421 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70422 +    ldr r0, [pc, #-4092]
       
 70423 +
       
 70424 +    // Load the jump address from the config page.
       
 70425 +    ldr pc, [pc, #-4092]
       
 70426 +
       
 70427 +
       
 70428 +    // trampoline
       
 70429 +    // Save to stack
       
 70430 +    stmfd sp!, {r0-r3}
       
 70431 +
       
 70432 +    // Load the context argument from the config page.
       
 70433 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70434 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70435 +    ldr r0, [pc, #-4092]
       
 70436 +
       
 70437 +    // Load the jump address from the config page.
       
 70438 +    ldr pc, [pc, #-4092]
       
 70439 +
       
 70440 +
       
 70441 +    // trampoline
       
 70442 +    // Save to stack
       
 70443 +    stmfd sp!, {r0-r3}
       
 70444 +
       
 70445 +    // Load the context argument from the config page.
       
 70446 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70447 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70448 +    ldr r0, [pc, #-4092]
       
 70449 +
       
 70450 +    // Load the jump address from the config page.
       
 70451 +    ldr pc, [pc, #-4092]
       
 70452 +
       
 70453 +
       
 70454 +    // trampoline
       
 70455 +    // Save to stack
       
 70456 +    stmfd sp!, {r0-r3}
       
 70457 +
       
 70458 +    // Load the context argument from the config page.
       
 70459 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70460 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70461 +    ldr r0, [pc, #-4092]
       
 70462 +
       
 70463 +    // Load the jump address from the config page.
       
 70464 +    ldr pc, [pc, #-4092]
       
 70465 +
       
 70466 +
       
 70467 +    // trampoline
       
 70468 +    // Save to stack
       
 70469 +    stmfd sp!, {r0-r3}
       
 70470 +
       
 70471 +    // Load the context argument from the config page.
       
 70472 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70473 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70474 +    ldr r0, [pc, #-4092]
       
 70475 +
       
 70476 +    // Load the jump address from the config page.
       
 70477 +    ldr pc, [pc, #-4092]
       
 70478 +
       
 70479 +
       
 70480 +    // trampoline
       
 70481 +    // Save to stack
       
 70482 +    stmfd sp!, {r0-r3}
       
 70483 +
       
 70484 +    // Load the context argument from the config page.
       
 70485 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70486 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70487 +    ldr r0, [pc, #-4092]
       
 70488 +
       
 70489 +    // Load the jump address from the config page.
       
 70490 +    ldr pc, [pc, #-4092]
       
 70491 +
       
 70492 +
       
 70493 +    // trampoline
       
 70494 +    // Save to stack
       
 70495 +    stmfd sp!, {r0-r3}
       
 70496 +
       
 70497 +    // Load the context argument from the config page.
       
 70498 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70499 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70500 +    ldr r0, [pc, #-4092]
       
 70501 +
       
 70502 +    // Load the jump address from the config page.
       
 70503 +    ldr pc, [pc, #-4092]
       
 70504 +
       
 70505 +
       
 70506 +    // trampoline
       
 70507 +    // Save to stack
       
 70508 +    stmfd sp!, {r0-r3}
       
 70509 +
       
 70510 +    // Load the context argument from the config page.
       
 70511 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70512 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70513 +    ldr r0, [pc, #-4092]
       
 70514 +
       
 70515 +    // Load the jump address from the config page.
       
 70516 +    ldr pc, [pc, #-4092]
       
 70517 +
       
 70518 +
       
 70519 +    // trampoline
       
 70520 +    // Save to stack
       
 70521 +    stmfd sp!, {r0-r3}
       
 70522 +
       
 70523 +    // Load the context argument from the config page.
       
 70524 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70525 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70526 +    ldr r0, [pc, #-4092]
       
 70527 +
       
 70528 +    // Load the jump address from the config page.
       
 70529 +    ldr pc, [pc, #-4092]
       
 70530 +
       
 70531 +
       
 70532 +    // trampoline
       
 70533 +    // Save to stack
       
 70534 +    stmfd sp!, {r0-r3}
       
 70535 +
       
 70536 +    // Load the context argument from the config page.
       
 70537 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70538 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70539 +    ldr r0, [pc, #-4092]
       
 70540 +
       
 70541 +    // Load the jump address from the config page.
       
 70542 +    ldr pc, [pc, #-4092]
       
 70543 +
       
 70544 +
       
 70545 +    // trampoline
       
 70546 +    // Save to stack
       
 70547 +    stmfd sp!, {r0-r3}
       
 70548 +
       
 70549 +    // Load the context argument from the config page.
       
 70550 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70551 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70552 +    ldr r0, [pc, #-4092]
       
 70553 +
       
 70554 +    // Load the jump address from the config page.
       
 70555 +    ldr pc, [pc, #-4092]
       
 70556 +
       
 70557 +
       
 70558 +    // trampoline
       
 70559 +    // Save to stack
       
 70560 +    stmfd sp!, {r0-r3}
       
 70561 +
       
 70562 +    // Load the context argument from the config page.
       
 70563 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70564 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70565 +    ldr r0, [pc, #-4092]
       
 70566 +
       
 70567 +    // Load the jump address from the config page.
       
 70568 +    ldr pc, [pc, #-4092]
       
 70569 +
       
 70570 +
       
 70571 +    // trampoline
       
 70572 +    // Save to stack
       
 70573 +    stmfd sp!, {r0-r3}
       
 70574 +
       
 70575 +    // Load the context argument from the config page.
       
 70576 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70577 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70578 +    ldr r0, [pc, #-4092]
       
 70579 +
       
 70580 +    // Load the jump address from the config page.
       
 70581 +    ldr pc, [pc, #-4092]
       
 70582 +
       
 70583 +
       
 70584 +    // trampoline
       
 70585 +    // Save to stack
       
 70586 +    stmfd sp!, {r0-r3}
       
 70587 +
       
 70588 +    // Load the context argument from the config page.
       
 70589 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70590 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70591 +    ldr r0, [pc, #-4092]
       
 70592 +
       
 70593 +    // Load the jump address from the config page.
       
 70594 +    ldr pc, [pc, #-4092]
       
 70595 +
       
 70596 +
       
 70597 +    // trampoline
       
 70598 +    // Save to stack
       
 70599 +    stmfd sp!, {r0-r3}
       
 70600 +
       
 70601 +    // Load the context argument from the config page.
       
 70602 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70603 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70604 +    ldr r0, [pc, #-4092]
       
 70605 +
       
 70606 +    // Load the jump address from the config page.
       
 70607 +    ldr pc, [pc, #-4092]
       
 70608 +
       
 70609 +
       
 70610 +    // trampoline
       
 70611 +    // Save to stack
       
 70612 +    stmfd sp!, {r0-r3}
       
 70613 +
       
 70614 +    // Load the context argument from the config page.
       
 70615 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70616 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70617 +    ldr r0, [pc, #-4092]
       
 70618 +
       
 70619 +    // Load the jump address from the config page.
       
 70620 +    ldr pc, [pc, #-4092]
       
 70621 +
       
 70622 +
       
 70623 +    // trampoline
       
 70624 +    // Save to stack
       
 70625 +    stmfd sp!, {r0-r3}
       
 70626 +
       
 70627 +    // Load the context argument from the config page.
       
 70628 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70629 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70630 +    ldr r0, [pc, #-4092]
       
 70631 +
       
 70632 +    // Load the jump address from the config page.
       
 70633 +    ldr pc, [pc, #-4092]
       
 70634 +
       
 70635 +
       
 70636 +    // trampoline
       
 70637 +    // Save to stack
       
 70638 +    stmfd sp!, {r0-r3}
       
 70639 +
       
 70640 +    // Load the context argument from the config page.
       
 70641 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70642 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70643 +    ldr r0, [pc, #-4092]
       
 70644 +
       
 70645 +    // Load the jump address from the config page.
       
 70646 +    ldr pc, [pc, #-4092]
       
 70647 +
       
 70648 +
       
 70649 +    // trampoline
       
 70650 +    // Save to stack
       
 70651 +    stmfd sp!, {r0-r3}
       
 70652 +
       
 70653 +    // Load the context argument from the config page.
       
 70654 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70655 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70656 +    ldr r0, [pc, #-4092]
       
 70657 +
       
 70658 +    // Load the jump address from the config page.
       
 70659 +    ldr pc, [pc, #-4092]
       
 70660 +
       
 70661 +
       
 70662 +    // trampoline
       
 70663 +    // Save to stack
       
 70664 +    stmfd sp!, {r0-r3}
       
 70665 +
       
 70666 +    // Load the context argument from the config page.
       
 70667 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70668 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70669 +    ldr r0, [pc, #-4092]
       
 70670 +
       
 70671 +    // Load the jump address from the config page.
       
 70672 +    ldr pc, [pc, #-4092]
       
 70673 +
       
 70674 +
       
 70675 +    // trampoline
       
 70676 +    // Save to stack
       
 70677 +    stmfd sp!, {r0-r3}
       
 70678 +
       
 70679 +    // Load the context argument from the config page.
       
 70680 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70681 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70682 +    ldr r0, [pc, #-4092]
       
 70683 +
       
 70684 +    // Load the jump address from the config page.
       
 70685 +    ldr pc, [pc, #-4092]
       
 70686 +
       
 70687 +
       
 70688 +    // trampoline
       
 70689 +    // Save to stack
       
 70690 +    stmfd sp!, {r0-r3}
       
 70691 +
       
 70692 +    // Load the context argument from the config page.
       
 70693 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70694 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70695 +    ldr r0, [pc, #-4092]
       
 70696 +
       
 70697 +    // Load the jump address from the config page.
       
 70698 +    ldr pc, [pc, #-4092]
       
 70699 +
       
 70700 +
       
 70701 +    // trampoline
       
 70702 +    // Save to stack
       
 70703 +    stmfd sp!, {r0-r3}
       
 70704 +
       
 70705 +    // Load the context argument from the config page.
       
 70706 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70707 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70708 +    ldr r0, [pc, #-4092]
       
 70709 +
       
 70710 +    // Load the jump address from the config page.
       
 70711 +    ldr pc, [pc, #-4092]
       
 70712 +
       
 70713 +
       
 70714 +    // trampoline
       
 70715 +    // Save to stack
       
 70716 +    stmfd sp!, {r0-r3}
       
 70717 +
       
 70718 +    // Load the context argument from the config page.
       
 70719 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70720 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70721 +    ldr r0, [pc, #-4092]
       
 70722 +
       
 70723 +    // Load the jump address from the config page.
       
 70724 +    ldr pc, [pc, #-4092]
       
 70725 +
       
 70726 +
       
 70727 +    // trampoline
       
 70728 +    // Save to stack
       
 70729 +    stmfd sp!, {r0-r3}
       
 70730 +
       
 70731 +    // Load the context argument from the config page.
       
 70732 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70733 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70734 +    ldr r0, [pc, #-4092]
       
 70735 +
       
 70736 +    // Load the jump address from the config page.
       
 70737 +    ldr pc, [pc, #-4092]
       
 70738 +
       
 70739 +
       
 70740 +    // trampoline
       
 70741 +    // Save to stack
       
 70742 +    stmfd sp!, {r0-r3}
       
 70743 +
       
 70744 +    // Load the context argument from the config page.
       
 70745 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70746 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70747 +    ldr r0, [pc, #-4092]
       
 70748 +
       
 70749 +    // Load the jump address from the config page.
       
 70750 +    ldr pc, [pc, #-4092]
       
 70751 +
       
 70752 +
       
 70753 +    // trampoline
       
 70754 +    // Save to stack
       
 70755 +    stmfd sp!, {r0-r3}
       
 70756 +
       
 70757 +    // Load the context argument from the config page.
       
 70758 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70759 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70760 +    ldr r0, [pc, #-4092]
       
 70761 +
       
 70762 +    // Load the jump address from the config page.
       
 70763 +    ldr pc, [pc, #-4092]
       
 70764 +
       
 70765 +
       
 70766 +    // trampoline
       
 70767 +    // Save to stack
       
 70768 +    stmfd sp!, {r0-r3}
       
 70769 +
       
 70770 +    // Load the context argument from the config page.
       
 70771 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70772 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70773 +    ldr r0, [pc, #-4092]
       
 70774 +
       
 70775 +    // Load the jump address from the config page.
       
 70776 +    ldr pc, [pc, #-4092]
       
 70777 +
       
 70778 +
       
 70779 +    // trampoline
       
 70780 +    // Save to stack
       
 70781 +    stmfd sp!, {r0-r3}
       
 70782 +
       
 70783 +    // Load the context argument from the config page.
       
 70784 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70785 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70786 +    ldr r0, [pc, #-4092]
       
 70787 +
       
 70788 +    // Load the jump address from the config page.
       
 70789 +    ldr pc, [pc, #-4092]
       
 70790 +
       
 70791 +
       
 70792 +    // trampoline
       
 70793 +    // Save to stack
       
 70794 +    stmfd sp!, {r0-r3}
       
 70795 +
       
 70796 +    // Load the context argument from the config page.
       
 70797 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70798 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70799 +    ldr r0, [pc, #-4092]
       
 70800 +
       
 70801 +    // Load the jump address from the config page.
       
 70802 +    ldr pc, [pc, #-4092]
       
 70803 +
       
 70804 +
       
 70805 +    // trampoline
       
 70806 +    // Save to stack
       
 70807 +    stmfd sp!, {r0-r3}
       
 70808 +
       
 70809 +    // Load the context argument from the config page.
       
 70810 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70811 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70812 +    ldr r0, [pc, #-4092]
       
 70813 +
       
 70814 +    // Load the jump address from the config page.
       
 70815 +    ldr pc, [pc, #-4092]
       
 70816 +
       
 70817 +
       
 70818 +    // trampoline
       
 70819 +    // Save to stack
       
 70820 +    stmfd sp!, {r0-r3}
       
 70821 +
       
 70822 +    // Load the context argument from the config page.
       
 70823 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70824 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70825 +    ldr r0, [pc, #-4092]
       
 70826 +
       
 70827 +    // Load the jump address from the config page.
       
 70828 +    ldr pc, [pc, #-4092]
       
 70829 +
       
 70830 +
       
 70831 +    // trampoline
       
 70832 +    // Save to stack
       
 70833 +    stmfd sp!, {r0-r3}
       
 70834 +
       
 70835 +    // Load the context argument from the config page.
       
 70836 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70837 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70838 +    ldr r0, [pc, #-4092]
       
 70839 +
       
 70840 +    // Load the jump address from the config page.
       
 70841 +    ldr pc, [pc, #-4092]
       
 70842 +
       
 70843 +
       
 70844 +    // trampoline
       
 70845 +    // Save to stack
       
 70846 +    stmfd sp!, {r0-r3}
       
 70847 +
       
 70848 +    // Load the context argument from the config page.
       
 70849 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70850 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70851 +    ldr r0, [pc, #-4092]
       
 70852 +
       
 70853 +    // Load the jump address from the config page.
       
 70854 +    ldr pc, [pc, #-4092]
       
 70855 +
       
 70856 +
       
 70857 +    // trampoline
       
 70858 +    // Save to stack
       
 70859 +    stmfd sp!, {r0-r3}
       
 70860 +
       
 70861 +    // Load the context argument from the config page.
       
 70862 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70863 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70864 +    ldr r0, [pc, #-4092]
       
 70865 +
       
 70866 +    // Load the jump address from the config page.
       
 70867 +    ldr pc, [pc, #-4092]
       
 70868 +
       
 70869 +
       
 70870 +    // trampoline
       
 70871 +    // Save to stack
       
 70872 +    stmfd sp!, {r0-r3}
       
 70873 +
       
 70874 +    // Load the context argument from the config page.
       
 70875 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70876 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70877 +    ldr r0, [pc, #-4092]
       
 70878 +
       
 70879 +    // Load the jump address from the config page.
       
 70880 +    ldr pc, [pc, #-4092]
       
 70881 +
       
 70882 +
       
 70883 +    // trampoline
       
 70884 +    // Save to stack
       
 70885 +    stmfd sp!, {r0-r3}
       
 70886 +
       
 70887 +    // Load the context argument from the config page.
       
 70888 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70889 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70890 +    ldr r0, [pc, #-4092]
       
 70891 +
       
 70892 +    // Load the jump address from the config page.
       
 70893 +    ldr pc, [pc, #-4092]
       
 70894 +
       
 70895 +
       
 70896 +    // trampoline
       
 70897 +    // Save to stack
       
 70898 +    stmfd sp!, {r0-r3}
       
 70899 +
       
 70900 +    // Load the context argument from the config page.
       
 70901 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70902 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70903 +    ldr r0, [pc, #-4092]
       
 70904 +
       
 70905 +    // Load the jump address from the config page.
       
 70906 +    ldr pc, [pc, #-4092]
       
 70907 +
       
 70908 +
       
 70909 +    // trampoline
       
 70910 +    // Save to stack
       
 70911 +    stmfd sp!, {r0-r3}
       
 70912 +
       
 70913 +    // Load the context argument from the config page.
       
 70914 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70915 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70916 +    ldr r0, [pc, #-4092]
       
 70917 +
       
 70918 +    // Load the jump address from the config page.
       
 70919 +    ldr pc, [pc, #-4092]
       
 70920 +
       
 70921 +
       
 70922 +    // trampoline
       
 70923 +    // Save to stack
       
 70924 +    stmfd sp!, {r0-r3}
       
 70925 +
       
 70926 +    // Load the context argument from the config page.
       
 70927 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70928 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70929 +    ldr r0, [pc, #-4092]
       
 70930 +
       
 70931 +    // Load the jump address from the config page.
       
 70932 +    ldr pc, [pc, #-4092]
       
 70933 +
       
 70934 +
       
 70935 +    // trampoline
       
 70936 +    // Save to stack
       
 70937 +    stmfd sp!, {r0-r3}
       
 70938 +
       
 70939 +    // Load the context argument from the config page.
       
 70940 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70941 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70942 +    ldr r0, [pc, #-4092]
       
 70943 +
       
 70944 +    // Load the jump address from the config page.
       
 70945 +    ldr pc, [pc, #-4092]
       
 70946 +
       
 70947 +
       
 70948 +    // trampoline
       
 70949 +    // Save to stack
       
 70950 +    stmfd sp!, {r0-r3}
       
 70951 +
       
 70952 +    // Load the context argument from the config page.
       
 70953 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70954 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70955 +    ldr r0, [pc, #-4092]
       
 70956 +
       
 70957 +    // Load the jump address from the config page.
       
 70958 +    ldr pc, [pc, #-4092]
       
 70959 +
       
 70960 +
       
 70961 +    // trampoline
       
 70962 +    // Save to stack
       
 70963 +    stmfd sp!, {r0-r3}
       
 70964 +
       
 70965 +    // Load the context argument from the config page.
       
 70966 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70967 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70968 +    ldr r0, [pc, #-4092]
       
 70969 +
       
 70970 +    // Load the jump address from the config page.
       
 70971 +    ldr pc, [pc, #-4092]
       
 70972 +
       
 70973 +
       
 70974 +    // trampoline
       
 70975 +    // Save to stack
       
 70976 +    stmfd sp!, {r0-r3}
       
 70977 +
       
 70978 +    // Load the context argument from the config page.
       
 70979 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70980 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70981 +    ldr r0, [pc, #-4092]
       
 70982 +
       
 70983 +    // Load the jump address from the config page.
       
 70984 +    ldr pc, [pc, #-4092]
       
 70985 +
       
 70986 +
       
 70987 +    // trampoline
       
 70988 +    // Save to stack
       
 70989 +    stmfd sp!, {r0-r3}
       
 70990 +
       
 70991 +    // Load the context argument from the config page.
       
 70992 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 70993 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 70994 +    ldr r0, [pc, #-4092]
       
 70995 +
       
 70996 +    // Load the jump address from the config page.
       
 70997 +    ldr pc, [pc, #-4092]
       
 70998 +
       
 70999 +
       
 71000 +    // trampoline
       
 71001 +    // Save to stack
       
 71002 +    stmfd sp!, {r0-r3}
       
 71003 +
       
 71004 +    // Load the context argument from the config page.
       
 71005 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71006 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71007 +    ldr r0, [pc, #-4092]
       
 71008 +
       
 71009 +    // Load the jump address from the config page.
       
 71010 +    ldr pc, [pc, #-4092]
       
 71011 +
       
 71012 +
       
 71013 +    // trampoline
       
 71014 +    // Save to stack
       
 71015 +    stmfd sp!, {r0-r3}
       
 71016 +
       
 71017 +    // Load the context argument from the config page.
       
 71018 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71019 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71020 +    ldr r0, [pc, #-4092]
       
 71021 +
       
 71022 +    // Load the jump address from the config page.
       
 71023 +    ldr pc, [pc, #-4092]
       
 71024 +
       
 71025 +
       
 71026 +    // trampoline
       
 71027 +    // Save to stack
       
 71028 +    stmfd sp!, {r0-r3}
       
 71029 +
       
 71030 +    // Load the context argument from the config page.
       
 71031 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71032 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71033 +    ldr r0, [pc, #-4092]
       
 71034 +
       
 71035 +    // Load the jump address from the config page.
       
 71036 +    ldr pc, [pc, #-4092]
       
 71037 +
       
 71038 +
       
 71039 +    // trampoline
       
 71040 +    // Save to stack
       
 71041 +    stmfd sp!, {r0-r3}
       
 71042 +
       
 71043 +    // Load the context argument from the config page.
       
 71044 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71045 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71046 +    ldr r0, [pc, #-4092]
       
 71047 +
       
 71048 +    // Load the jump address from the config page.
       
 71049 +    ldr pc, [pc, #-4092]
       
 71050 +
       
 71051 +
       
 71052 +    // trampoline
       
 71053 +    // Save to stack
       
 71054 +    stmfd sp!, {r0-r3}
       
 71055 +
       
 71056 +    // Load the context argument from the config page.
       
 71057 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71058 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71059 +    ldr r0, [pc, #-4092]
       
 71060 +
       
 71061 +    // Load the jump address from the config page.
       
 71062 +    ldr pc, [pc, #-4092]
       
 71063 +
       
 71064 +
       
 71065 +    // trampoline
       
 71066 +    // Save to stack
       
 71067 +    stmfd sp!, {r0-r3}
       
 71068 +
       
 71069 +    // Load the context argument from the config page.
       
 71070 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71071 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71072 +    ldr r0, [pc, #-4092]
       
 71073 +
       
 71074 +    // Load the jump address from the config page.
       
 71075 +    ldr pc, [pc, #-4092]
       
 71076 +
       
 71077 +
       
 71078 +    // trampoline
       
 71079 +    // Save to stack
       
 71080 +    stmfd sp!, {r0-r3}
       
 71081 +
       
 71082 +    // Load the context argument from the config page.
       
 71083 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71084 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71085 +    ldr r0, [pc, #-4092]
       
 71086 +
       
 71087 +    // Load the jump address from the config page.
       
 71088 +    ldr pc, [pc, #-4092]
       
 71089 +
       
 71090 +
       
 71091 +    // trampoline
       
 71092 +    // Save to stack
       
 71093 +    stmfd sp!, {r0-r3}
       
 71094 +
       
 71095 +    // Load the context argument from the config page.
       
 71096 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71097 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71098 +    ldr r0, [pc, #-4092]
       
 71099 +
       
 71100 +    // Load the jump address from the config page.
       
 71101 +    ldr pc, [pc, #-4092]
       
 71102 +
       
 71103 +
       
 71104 +    // trampoline
       
 71105 +    // Save to stack
       
 71106 +    stmfd sp!, {r0-r3}
       
 71107 +
       
 71108 +    // Load the context argument from the config page.
       
 71109 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71110 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71111 +    ldr r0, [pc, #-4092]
       
 71112 +
       
 71113 +    // Load the jump address from the config page.
       
 71114 +    ldr pc, [pc, #-4092]
       
 71115 +
       
 71116 +
       
 71117 +    // trampoline
       
 71118 +    // Save to stack
       
 71119 +    stmfd sp!, {r0-r3}
       
 71120 +
       
 71121 +    // Load the context argument from the config page.
       
 71122 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71123 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71124 +    ldr r0, [pc, #-4092]
       
 71125 +
       
 71126 +    // Load the jump address from the config page.
       
 71127 +    ldr pc, [pc, #-4092]
       
 71128 +
       
 71129 +
       
 71130 +    // trampoline
       
 71131 +    // Save to stack
       
 71132 +    stmfd sp!, {r0-r3}
       
 71133 +
       
 71134 +    // Load the context argument from the config page.
       
 71135 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71136 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71137 +    ldr r0, [pc, #-4092]
       
 71138 +
       
 71139 +    // Load the jump address from the config page.
       
 71140 +    ldr pc, [pc, #-4092]
       
 71141 +
       
 71142 +
       
 71143 +    // trampoline
       
 71144 +    // Save to stack
       
 71145 +    stmfd sp!, {r0-r3}
       
 71146 +
       
 71147 +    // Load the context argument from the config page.
       
 71148 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71149 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71150 +    ldr r0, [pc, #-4092]
       
 71151 +
       
 71152 +    // Load the jump address from the config page.
       
 71153 +    ldr pc, [pc, #-4092]
       
 71154 +
       
 71155 +
       
 71156 +    // trampoline
       
 71157 +    // Save to stack
       
 71158 +    stmfd sp!, {r0-r3}
       
 71159 +
       
 71160 +    // Load the context argument from the config page.
       
 71161 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71162 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71163 +    ldr r0, [pc, #-4092]
       
 71164 +
       
 71165 +    // Load the jump address from the config page.
       
 71166 +    ldr pc, [pc, #-4092]
       
 71167 +
       
 71168 +
       
 71169 +    // trampoline
       
 71170 +    // Save to stack
       
 71171 +    stmfd sp!, {r0-r3}
       
 71172 +
       
 71173 +    // Load the context argument from the config page.
       
 71174 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71175 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71176 +    ldr r0, [pc, #-4092]
       
 71177 +
       
 71178 +    // Load the jump address from the config page.
       
 71179 +    ldr pc, [pc, #-4092]
       
 71180 +
       
 71181 +
       
 71182 +    // trampoline
       
 71183 +    // Save to stack
       
 71184 +    stmfd sp!, {r0-r3}
       
 71185 +
       
 71186 +    // Load the context argument from the config page.
       
 71187 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71188 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71189 +    ldr r0, [pc, #-4092]
       
 71190 +
       
 71191 +    // Load the jump address from the config page.
       
 71192 +    ldr pc, [pc, #-4092]
       
 71193 +
       
 71194 +
       
 71195 +    // trampoline
       
 71196 +    // Save to stack
       
 71197 +    stmfd sp!, {r0-r3}
       
 71198 +
       
 71199 +    // Load the context argument from the config page.
       
 71200 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71201 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71202 +    ldr r0, [pc, #-4092]
       
 71203 +
       
 71204 +    // Load the jump address from the config page.
       
 71205 +    ldr pc, [pc, #-4092]
       
 71206 +
       
 71207 +
       
 71208 +    // trampoline
       
 71209 +    // Save to stack
       
 71210 +    stmfd sp!, {r0-r3}
       
 71211 +
       
 71212 +    // Load the context argument from the config page.
       
 71213 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71214 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71215 +    ldr r0, [pc, #-4092]
       
 71216 +
       
 71217 +    // Load the jump address from the config page.
       
 71218 +    ldr pc, [pc, #-4092]
       
 71219 +
       
 71220 +
       
 71221 +    // trampoline
       
 71222 +    // Save to stack
       
 71223 +    stmfd sp!, {r0-r3}
       
 71224 +
       
 71225 +    // Load the context argument from the config page.
       
 71226 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71227 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71228 +    ldr r0, [pc, #-4092]
       
 71229 +
       
 71230 +    // Load the jump address from the config page.
       
 71231 +    ldr pc, [pc, #-4092]
       
 71232 +
       
 71233 +
       
 71234 +    // trampoline
       
 71235 +    // Save to stack
       
 71236 +    stmfd sp!, {r0-r3}
       
 71237 +
       
 71238 +    // Load the context argument from the config page.
       
 71239 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71240 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71241 +    ldr r0, [pc, #-4092]
       
 71242 +
       
 71243 +    // Load the jump address from the config page.
       
 71244 +    ldr pc, [pc, #-4092]
       
 71245 +
       
 71246 +
       
 71247 +    // trampoline
       
 71248 +    // Save to stack
       
 71249 +    stmfd sp!, {r0-r3}
       
 71250 +
       
 71251 +    // Load the context argument from the config page.
       
 71252 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71253 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71254 +    ldr r0, [pc, #-4092]
       
 71255 +
       
 71256 +    // Load the jump address from the config page.
       
 71257 +    ldr pc, [pc, #-4092]
       
 71258 +
       
 71259 +
       
 71260 +    // trampoline
       
 71261 +    // Save to stack
       
 71262 +    stmfd sp!, {r0-r3}
       
 71263 +
       
 71264 +    // Load the context argument from the config page.
       
 71265 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71266 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71267 +    ldr r0, [pc, #-4092]
       
 71268 +
       
 71269 +    // Load the jump address from the config page.
       
 71270 +    ldr pc, [pc, #-4092]
       
 71271 +
       
 71272 +
       
 71273 +    // trampoline
       
 71274 +    // Save to stack
       
 71275 +    stmfd sp!, {r0-r3}
       
 71276 +
       
 71277 +    // Load the context argument from the config page.
       
 71278 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71279 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71280 +    ldr r0, [pc, #-4092]
       
 71281 +
       
 71282 +    // Load the jump address from the config page.
       
 71283 +    ldr pc, [pc, #-4092]
       
 71284 +
       
 71285 +
       
 71286 +    // trampoline
       
 71287 +    // Save to stack
       
 71288 +    stmfd sp!, {r0-r3}
       
 71289 +
       
 71290 +    // Load the context argument from the config page.
       
 71291 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71292 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71293 +    ldr r0, [pc, #-4092]
       
 71294 +
       
 71295 +    // Load the jump address from the config page.
       
 71296 +    ldr pc, [pc, #-4092]
       
 71297 +
       
 71298 +
       
 71299 +    // trampoline
       
 71300 +    // Save to stack
       
 71301 +    stmfd sp!, {r0-r3}
       
 71302 +
       
 71303 +    // Load the context argument from the config page.
       
 71304 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71305 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71306 +    ldr r0, [pc, #-4092]
       
 71307 +
       
 71308 +    // Load the jump address from the config page.
       
 71309 +    ldr pc, [pc, #-4092]
       
 71310 +
       
 71311 +
       
 71312 +    // trampoline
       
 71313 +    // Save to stack
       
 71314 +    stmfd sp!, {r0-r3}
       
 71315 +
       
 71316 +    // Load the context argument from the config page.
       
 71317 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71318 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71319 +    ldr r0, [pc, #-4092]
       
 71320 +
       
 71321 +    // Load the jump address from the config page.
       
 71322 +    ldr pc, [pc, #-4092]
       
 71323 +
       
 71324 +
       
 71325 +    // trampoline
       
 71326 +    // Save to stack
       
 71327 +    stmfd sp!, {r0-r3}
       
 71328 +
       
 71329 +    // Load the context argument from the config page.
       
 71330 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71331 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71332 +    ldr r0, [pc, #-4092]
       
 71333 +
       
 71334 +    // Load the jump address from the config page.
       
 71335 +    ldr pc, [pc, #-4092]
       
 71336 +
       
 71337 +
       
 71338 +    // trampoline
       
 71339 +    // Save to stack
       
 71340 +    stmfd sp!, {r0-r3}
       
 71341 +
       
 71342 +    // Load the context argument from the config page.
       
 71343 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71344 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71345 +    ldr r0, [pc, #-4092]
       
 71346 +
       
 71347 +    // Load the jump address from the config page.
       
 71348 +    ldr pc, [pc, #-4092]
       
 71349 +
       
 71350 +
       
 71351 +    // trampoline
       
 71352 +    // Save to stack
       
 71353 +    stmfd sp!, {r0-r3}
       
 71354 +
       
 71355 +    // Load the context argument from the config page.
       
 71356 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71357 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71358 +    ldr r0, [pc, #-4092]
       
 71359 +
       
 71360 +    // Load the jump address from the config page.
       
 71361 +    ldr pc, [pc, #-4092]
       
 71362 +
       
 71363 +
       
 71364 +    // trampoline
       
 71365 +    // Save to stack
       
 71366 +    stmfd sp!, {r0-r3}
       
 71367 +
       
 71368 +    // Load the context argument from the config page.
       
 71369 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71370 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71371 +    ldr r0, [pc, #-4092]
       
 71372 +
       
 71373 +    // Load the jump address from the config page.
       
 71374 +    ldr pc, [pc, #-4092]
       
 71375 +
       
 71376 +
       
 71377 +    // trampoline
       
 71378 +    // Save to stack
       
 71379 +    stmfd sp!, {r0-r3}
       
 71380 +
       
 71381 +    // Load the context argument from the config page.
       
 71382 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71383 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71384 +    ldr r0, [pc, #-4092]
       
 71385 +
       
 71386 +    // Load the jump address from the config page.
       
 71387 +    ldr pc, [pc, #-4092]
       
 71388 +
       
 71389 +
       
 71390 +    // trampoline
       
 71391 +    // Save to stack
       
 71392 +    stmfd sp!, {r0-r3}
       
 71393 +
       
 71394 +    // Load the context argument from the config page.
       
 71395 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71396 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71397 +    ldr r0, [pc, #-4092]
       
 71398 +
       
 71399 +    // Load the jump address from the config page.
       
 71400 +    ldr pc, [pc, #-4092]
       
 71401 +
       
 71402 +
       
 71403 +    // trampoline
       
 71404 +    // Save to stack
       
 71405 +    stmfd sp!, {r0-r3}
       
 71406 +
       
 71407 +    // Load the context argument from the config page.
       
 71408 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71409 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71410 +    ldr r0, [pc, #-4092]
       
 71411 +
       
 71412 +    // Load the jump address from the config page.
       
 71413 +    ldr pc, [pc, #-4092]
       
 71414 +
       
 71415 +
       
 71416 +    // trampoline
       
 71417 +    // Save to stack
       
 71418 +    stmfd sp!, {r0-r3}
       
 71419 +
       
 71420 +    // Load the context argument from the config page.
       
 71421 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71422 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71423 +    ldr r0, [pc, #-4092]
       
 71424 +
       
 71425 +    // Load the jump address from the config page.
       
 71426 +    ldr pc, [pc, #-4092]
       
 71427 +
       
 71428 +
       
 71429 +    // trampoline
       
 71430 +    // Save to stack
       
 71431 +    stmfd sp!, {r0-r3}
       
 71432 +
       
 71433 +    // Load the context argument from the config page.
       
 71434 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71435 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71436 +    ldr r0, [pc, #-4092]
       
 71437 +
       
 71438 +    // Load the jump address from the config page.
       
 71439 +    ldr pc, [pc, #-4092]
       
 71440 +
       
 71441 +
       
 71442 +    // trampoline
       
 71443 +    // Save to stack
       
 71444 +    stmfd sp!, {r0-r3}
       
 71445 +
       
 71446 +    // Load the context argument from the config page.
       
 71447 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71448 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71449 +    ldr r0, [pc, #-4092]
       
 71450 +
       
 71451 +    // Load the jump address from the config page.
       
 71452 +    ldr pc, [pc, #-4092]
       
 71453 +
       
 71454 +
       
 71455 +    // trampoline
       
 71456 +    // Save to stack
       
 71457 +    stmfd sp!, {r0-r3}
       
 71458 +
       
 71459 +    // Load the context argument from the config page.
       
 71460 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71461 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71462 +    ldr r0, [pc, #-4092]
       
 71463 +
       
 71464 +    // Load the jump address from the config page.
       
 71465 +    ldr pc, [pc, #-4092]
       
 71466 +
       
 71467 +
       
 71468 +    // trampoline
       
 71469 +    // Save to stack
       
 71470 +    stmfd sp!, {r0-r3}
       
 71471 +
       
 71472 +    // Load the context argument from the config page.
       
 71473 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71474 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71475 +    ldr r0, [pc, #-4092]
       
 71476 +
       
 71477 +    // Load the jump address from the config page.
       
 71478 +    ldr pc, [pc, #-4092]
       
 71479 +
       
 71480 +
       
 71481 +    // trampoline
       
 71482 +    // Save to stack
       
 71483 +    stmfd sp!, {r0-r3}
       
 71484 +
       
 71485 +    // Load the context argument from the config page.
       
 71486 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71487 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71488 +    ldr r0, [pc, #-4092]
       
 71489 +
       
 71490 +    // Load the jump address from the config page.
       
 71491 +    ldr pc, [pc, #-4092]
       
 71492 +
       
 71493 +
       
 71494 +    // trampoline
       
 71495 +    // Save to stack
       
 71496 +    stmfd sp!, {r0-r3}
       
 71497 +
       
 71498 +    // Load the context argument from the config page.
       
 71499 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71500 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71501 +    ldr r0, [pc, #-4092]
       
 71502 +
       
 71503 +    // Load the jump address from the config page.
       
 71504 +    ldr pc, [pc, #-4092]
       
 71505 +
       
 71506 +
       
 71507 +    // trampoline
       
 71508 +    // Save to stack
       
 71509 +    stmfd sp!, {r0-r3}
       
 71510 +
       
 71511 +    // Load the context argument from the config page.
       
 71512 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71513 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71514 +    ldr r0, [pc, #-4092]
       
 71515 +
       
 71516 +    // Load the jump address from the config page.
       
 71517 +    ldr pc, [pc, #-4092]
       
 71518 +
       
 71519 +
       
 71520 +    // trampoline
       
 71521 +    // Save to stack
       
 71522 +    stmfd sp!, {r0-r3}
       
 71523 +
       
 71524 +    // Load the context argument from the config page.
       
 71525 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71526 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71527 +    ldr r0, [pc, #-4092]
       
 71528 +
       
 71529 +    // Load the jump address from the config page.
       
 71530 +    ldr pc, [pc, #-4092]
       
 71531 +
       
 71532 +
       
 71533 +    // trampoline
       
 71534 +    // Save to stack
       
 71535 +    stmfd sp!, {r0-r3}
       
 71536 +
       
 71537 +    // Load the context argument from the config page.
       
 71538 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71539 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71540 +    ldr r0, [pc, #-4092]
       
 71541 +
       
 71542 +    // Load the jump address from the config page.
       
 71543 +    ldr pc, [pc, #-4092]
       
 71544 +
       
 71545 +
       
 71546 +    // trampoline
       
 71547 +    // Save to stack
       
 71548 +    stmfd sp!, {r0-r3}
       
 71549 +
       
 71550 +    // Load the context argument from the config page.
       
 71551 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71552 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71553 +    ldr r0, [pc, #-4092]
       
 71554 +
       
 71555 +    // Load the jump address from the config page.
       
 71556 +    ldr pc, [pc, #-4092]
       
 71557 +
       
 71558 +
       
 71559 +    // trampoline
       
 71560 +    // Save to stack
       
 71561 +    stmfd sp!, {r0-r3}
       
 71562 +
       
 71563 +    // Load the context argument from the config page.
       
 71564 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71565 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71566 +    ldr r0, [pc, #-4092]
       
 71567 +
       
 71568 +    // Load the jump address from the config page.
       
 71569 +    ldr pc, [pc, #-4092]
       
 71570 +
       
 71571 +
       
 71572 +    // trampoline
       
 71573 +    // Save to stack
       
 71574 +    stmfd sp!, {r0-r3}
       
 71575 +
       
 71576 +    // Load the context argument from the config page.
       
 71577 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71578 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71579 +    ldr r0, [pc, #-4092]
       
 71580 +
       
 71581 +    // Load the jump address from the config page.
       
 71582 +    ldr pc, [pc, #-4092]
       
 71583 +
       
 71584 +
       
 71585 +    // trampoline
       
 71586 +    // Save to stack
       
 71587 +    stmfd sp!, {r0-r3}
       
 71588 +
       
 71589 +    // Load the context argument from the config page.
       
 71590 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71591 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71592 +    ldr r0, [pc, #-4092]
       
 71593 +
       
 71594 +    // Load the jump address from the config page.
       
 71595 +    ldr pc, [pc, #-4092]
       
 71596 +
       
 71597 +
       
 71598 +    // trampoline
       
 71599 +    // Save to stack
       
 71600 +    stmfd sp!, {r0-r3}
       
 71601 +
       
 71602 +    // Load the context argument from the config page.
       
 71603 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71604 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71605 +    ldr r0, [pc, #-4092]
       
 71606 +
       
 71607 +    // Load the jump address from the config page.
       
 71608 +    ldr pc, [pc, #-4092]
       
 71609 +
       
 71610 +
       
 71611 +    // trampoline
       
 71612 +    // Save to stack
       
 71613 +    stmfd sp!, {r0-r3}
       
 71614 +
       
 71615 +    // Load the context argument from the config page.
       
 71616 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71617 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71618 +    ldr r0, [pc, #-4092]
       
 71619 +
       
 71620 +    // Load the jump address from the config page.
       
 71621 +    ldr pc, [pc, #-4092]
       
 71622 +
       
 71623 +
       
 71624 +    // trampoline
       
 71625 +    // Save to stack
       
 71626 +    stmfd sp!, {r0-r3}
       
 71627 +
       
 71628 +    // Load the context argument from the config page.
       
 71629 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71630 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71631 +    ldr r0, [pc, #-4092]
       
 71632 +
       
 71633 +    // Load the jump address from the config page.
       
 71634 +    ldr pc, [pc, #-4092]
       
 71635 +
       
 71636 +
       
 71637 +    // trampoline
       
 71638 +    // Save to stack
       
 71639 +    stmfd sp!, {r0-r3}
       
 71640 +
       
 71641 +    // Load the context argument from the config page.
       
 71642 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71643 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71644 +    ldr r0, [pc, #-4092]
       
 71645 +
       
 71646 +    // Load the jump address from the config page.
       
 71647 +    ldr pc, [pc, #-4092]
       
 71648 +
       
 71649 +
       
 71650 +    // trampoline
       
 71651 +    // Save to stack
       
 71652 +    stmfd sp!, {r0-r3}
       
 71653 +
       
 71654 +    // Load the context argument from the config page.
       
 71655 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71656 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71657 +    ldr r0, [pc, #-4092]
       
 71658 +
       
 71659 +    // Load the jump address from the config page.
       
 71660 +    ldr pc, [pc, #-4092]
       
 71661 +
       
 71662 +
       
 71663 +    // trampoline
       
 71664 +    // Save to stack
       
 71665 +    stmfd sp!, {r0-r3}
       
 71666 +
       
 71667 +    // Load the context argument from the config page.
       
 71668 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71669 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71670 +    ldr r0, [pc, #-4092]
       
 71671 +
       
 71672 +    // Load the jump address from the config page.
       
 71673 +    ldr pc, [pc, #-4092]
       
 71674 +
       
 71675 +
       
 71676 +    // trampoline
       
 71677 +    // Save to stack
       
 71678 +    stmfd sp!, {r0-r3}
       
 71679 +
       
 71680 +    // Load the context argument from the config page.
       
 71681 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71682 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71683 +    ldr r0, [pc, #-4092]
       
 71684 +
       
 71685 +    // Load the jump address from the config page.
       
 71686 +    ldr pc, [pc, #-4092]
       
 71687 +
       
 71688 +
       
 71689 +    // trampoline
       
 71690 +    // Save to stack
       
 71691 +    stmfd sp!, {r0-r3}
       
 71692 +
       
 71693 +    // Load the context argument from the config page.
       
 71694 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71695 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71696 +    ldr r0, [pc, #-4092]
       
 71697 +
       
 71698 +    // Load the jump address from the config page.
       
 71699 +    ldr pc, [pc, #-4092]
       
 71700 +
       
 71701 +
       
 71702 +    // trampoline
       
 71703 +    // Save to stack
       
 71704 +    stmfd sp!, {r0-r3}
       
 71705 +
       
 71706 +    // Load the context argument from the config page.
       
 71707 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71708 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71709 +    ldr r0, [pc, #-4092]
       
 71710 +
       
 71711 +    // Load the jump address from the config page.
       
 71712 +    ldr pc, [pc, #-4092]
       
 71713 +
       
 71714 +
       
 71715 +    // trampoline
       
 71716 +    // Save to stack
       
 71717 +    stmfd sp!, {r0-r3}
       
 71718 +
       
 71719 +    // Load the context argument from the config page.
       
 71720 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71721 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71722 +    ldr r0, [pc, #-4092]
       
 71723 +
       
 71724 +    // Load the jump address from the config page.
       
 71725 +    ldr pc, [pc, #-4092]
       
 71726 +
       
 71727 +
       
 71728 +    // trampoline
       
 71729 +    // Save to stack
       
 71730 +    stmfd sp!, {r0-r3}
       
 71731 +
       
 71732 +    // Load the context argument from the config page.
       
 71733 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71734 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71735 +    ldr r0, [pc, #-4092]
       
 71736 +
       
 71737 +    // Load the jump address from the config page.
       
 71738 +    ldr pc, [pc, #-4092]
       
 71739 +
       
 71740 +
       
 71741 +    // trampoline
       
 71742 +    // Save to stack
       
 71743 +    stmfd sp!, {r0-r3}
       
 71744 +
       
 71745 +    // Load the context argument from the config page.
       
 71746 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71747 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71748 +    ldr r0, [pc, #-4092]
       
 71749 +
       
 71750 +    // Load the jump address from the config page.
       
 71751 +    ldr pc, [pc, #-4092]
       
 71752 +
       
 71753 +
       
 71754 +    // trampoline
       
 71755 +    // Save to stack
       
 71756 +    stmfd sp!, {r0-r3}
       
 71757 +
       
 71758 +    // Load the context argument from the config page.
       
 71759 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71760 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71761 +    ldr r0, [pc, #-4092]
       
 71762 +
       
 71763 +    // Load the jump address from the config page.
       
 71764 +    ldr pc, [pc, #-4092]
       
 71765 +
       
 71766 +
       
 71767 +    // trampoline
       
 71768 +    // Save to stack
       
 71769 +    stmfd sp!, {r0-r3}
       
 71770 +
       
 71771 +    // Load the context argument from the config page.
       
 71772 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71773 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71774 +    ldr r0, [pc, #-4092]
       
 71775 +
       
 71776 +    // Load the jump address from the config page.
       
 71777 +    ldr pc, [pc, #-4092]
       
 71778 +
       
 71779 +
       
 71780 +    // trampoline
       
 71781 +    // Save to stack
       
 71782 +    stmfd sp!, {r0-r3}
       
 71783 +
       
 71784 +    // Load the context argument from the config page.
       
 71785 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71786 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71787 +    ldr r0, [pc, #-4092]
       
 71788 +
       
 71789 +    // Load the jump address from the config page.
       
 71790 +    ldr pc, [pc, #-4092]
       
 71791 +
       
 71792 +
       
 71793 +    // trampoline
       
 71794 +    // Save to stack
       
 71795 +    stmfd sp!, {r0-r3}
       
 71796 +
       
 71797 +    // Load the context argument from the config page.
       
 71798 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71799 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71800 +    ldr r0, [pc, #-4092]
       
 71801 +
       
 71802 +    // Load the jump address from the config page.
       
 71803 +    ldr pc, [pc, #-4092]
       
 71804 +
       
 71805 +
       
 71806 +    // trampoline
       
 71807 +    // Save to stack
       
 71808 +    stmfd sp!, {r0-r3}
       
 71809 +
       
 71810 +    // Load the context argument from the config page.
       
 71811 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71812 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71813 +    ldr r0, [pc, #-4092]
       
 71814 +
       
 71815 +    // Load the jump address from the config page.
       
 71816 +    ldr pc, [pc, #-4092]
       
 71817 +
       
 71818 +
       
 71819 +    // trampoline
       
 71820 +    // Save to stack
       
 71821 +    stmfd sp!, {r0-r3}
       
 71822 +
       
 71823 +    // Load the context argument from the config page.
       
 71824 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71825 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71826 +    ldr r0, [pc, #-4092]
       
 71827 +
       
 71828 +    // Load the jump address from the config page.
       
 71829 +    ldr pc, [pc, #-4092]
       
 71830 +
       
 71831 +
       
 71832 +    // trampoline
       
 71833 +    // Save to stack
       
 71834 +    stmfd sp!, {r0-r3}
       
 71835 +
       
 71836 +    // Load the context argument from the config page.
       
 71837 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71838 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71839 +    ldr r0, [pc, #-4092]
       
 71840 +
       
 71841 +    // Load the jump address from the config page.
       
 71842 +    ldr pc, [pc, #-4092]
       
 71843 +
       
 71844 +
       
 71845 +    // trampoline
       
 71846 +    // Save to stack
       
 71847 +    stmfd sp!, {r0-r3}
       
 71848 +
       
 71849 +    // Load the context argument from the config page.
       
 71850 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71851 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71852 +    ldr r0, [pc, #-4092]
       
 71853 +
       
 71854 +    // Load the jump address from the config page.
       
 71855 +    ldr pc, [pc, #-4092]
       
 71856 +
       
 71857 +
       
 71858 +    // trampoline
       
 71859 +    // Save to stack
       
 71860 +    stmfd sp!, {r0-r3}
       
 71861 +
       
 71862 +    // Load the context argument from the config page.
       
 71863 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71864 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71865 +    ldr r0, [pc, #-4092]
       
 71866 +
       
 71867 +    // Load the jump address from the config page.
       
 71868 +    ldr pc, [pc, #-4092]
       
 71869 +
       
 71870 +
       
 71871 +    // trampoline
       
 71872 +    // Save to stack
       
 71873 +    stmfd sp!, {r0-r3}
       
 71874 +
       
 71875 +    // Load the context argument from the config page.
       
 71876 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71877 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71878 +    ldr r0, [pc, #-4092]
       
 71879 +
       
 71880 +    // Load the jump address from the config page.
       
 71881 +    ldr pc, [pc, #-4092]
       
 71882 +
       
 71883 +
       
 71884 +    // trampoline
       
 71885 +    // Save to stack
       
 71886 +    stmfd sp!, {r0-r3}
       
 71887 +
       
 71888 +    // Load the context argument from the config page.
       
 71889 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71890 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71891 +    ldr r0, [pc, #-4092]
       
 71892 +
       
 71893 +    // Load the jump address from the config page.
       
 71894 +    ldr pc, [pc, #-4092]
       
 71895 +
       
 71896 +
       
 71897 +    // trampoline
       
 71898 +    // Save to stack
       
 71899 +    stmfd sp!, {r0-r3}
       
 71900 +
       
 71901 +    // Load the context argument from the config page.
       
 71902 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71903 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71904 +    ldr r0, [pc, #-4092]
       
 71905 +
       
 71906 +    // Load the jump address from the config page.
       
 71907 +    ldr pc, [pc, #-4092]
       
 71908 +
       
 71909 +
       
 71910 +    // trampoline
       
 71911 +    // Save to stack
       
 71912 +    stmfd sp!, {r0-r3}
       
 71913 +
       
 71914 +    // Load the context argument from the config page.
       
 71915 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71916 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71917 +    ldr r0, [pc, #-4092]
       
 71918 +
       
 71919 +    // Load the jump address from the config page.
       
 71920 +    ldr pc, [pc, #-4092]
       
 71921 +
       
 71922 +
       
 71923 +    // trampoline
       
 71924 +    // Save to stack
       
 71925 +    stmfd sp!, {r0-r3}
       
 71926 +
       
 71927 +    // Load the context argument from the config page.
       
 71928 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71929 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71930 +    ldr r0, [pc, #-4092]
       
 71931 +
       
 71932 +    // Load the jump address from the config page.
       
 71933 +    ldr pc, [pc, #-4092]
       
 71934 +
       
 71935 +
       
 71936 +    // trampoline
       
 71937 +    // Save to stack
       
 71938 +    stmfd sp!, {r0-r3}
       
 71939 +
       
 71940 +    // Load the context argument from the config page.
       
 71941 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71942 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71943 +    ldr r0, [pc, #-4092]
       
 71944 +
       
 71945 +    // Load the jump address from the config page.
       
 71946 +    ldr pc, [pc, #-4092]
       
 71947 +
       
 71948 +
       
 71949 +    // trampoline
       
 71950 +    // Save to stack
       
 71951 +    stmfd sp!, {r0-r3}
       
 71952 +
       
 71953 +    // Load the context argument from the config page.
       
 71954 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71955 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71956 +    ldr r0, [pc, #-4092]
       
 71957 +
       
 71958 +    // Load the jump address from the config page.
       
 71959 +    ldr pc, [pc, #-4092]
       
 71960 +
       
 71961 +
       
 71962 +    // trampoline
       
 71963 +    // Save to stack
       
 71964 +    stmfd sp!, {r0-r3}
       
 71965 +
       
 71966 +    // Load the context argument from the config page.
       
 71967 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71968 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71969 +    ldr r0, [pc, #-4092]
       
 71970 +
       
 71971 +    // Load the jump address from the config page.
       
 71972 +    ldr pc, [pc, #-4092]
       
 71973 +
       
 71974 +
       
 71975 +    // trampoline
       
 71976 +    // Save to stack
       
 71977 +    stmfd sp!, {r0-r3}
       
 71978 +
       
 71979 +    // Load the context argument from the config page.
       
 71980 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71981 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71982 +    ldr r0, [pc, #-4092]
       
 71983 +
       
 71984 +    // Load the jump address from the config page.
       
 71985 +    ldr pc, [pc, #-4092]
       
 71986 +
       
 71987 +
       
 71988 +    // trampoline
       
 71989 +    // Save to stack
       
 71990 +    stmfd sp!, {r0-r3}
       
 71991 +
       
 71992 +    // Load the context argument from the config page.
       
 71993 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 71994 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 71995 +    ldr r0, [pc, #-4092]
       
 71996 +
       
 71997 +    // Load the jump address from the config page.
       
 71998 +    ldr pc, [pc, #-4092]
       
 71999 +
       
 72000 +
       
 72001 +    // trampoline
       
 72002 +    // Save to stack
       
 72003 +    stmfd sp!, {r0-r3}
       
 72004 +
       
 72005 +    // Load the context argument from the config page.
       
 72006 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72007 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72008 +    ldr r0, [pc, #-4092]
       
 72009 +
       
 72010 +    // Load the jump address from the config page.
       
 72011 +    ldr pc, [pc, #-4092]
       
 72012 +
       
 72013 +
       
 72014 +    // trampoline
       
 72015 +    // Save to stack
       
 72016 +    stmfd sp!, {r0-r3}
       
 72017 +
       
 72018 +    // Load the context argument from the config page.
       
 72019 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72020 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72021 +    ldr r0, [pc, #-4092]
       
 72022 +
       
 72023 +    // Load the jump address from the config page.
       
 72024 +    ldr pc, [pc, #-4092]
       
 72025 +
       
 72026 +
       
 72027 +    // trampoline
       
 72028 +    // Save to stack
       
 72029 +    stmfd sp!, {r0-r3}
       
 72030 +
       
 72031 +    // Load the context argument from the config page.
       
 72032 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72033 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72034 +    ldr r0, [pc, #-4092]
       
 72035 +
       
 72036 +    // Load the jump address from the config page.
       
 72037 +    ldr pc, [pc, #-4092]
       
 72038 +
       
 72039 +
       
 72040 +    // trampoline
       
 72041 +    // Save to stack
       
 72042 +    stmfd sp!, {r0-r3}
       
 72043 +
       
 72044 +    // Load the context argument from the config page.
       
 72045 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72046 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72047 +    ldr r0, [pc, #-4092]
       
 72048 +
       
 72049 +    // Load the jump address from the config page.
       
 72050 +    ldr pc, [pc, #-4092]
       
 72051 +
       
 72052 +
       
 72053 +    // trampoline
       
 72054 +    // Save to stack
       
 72055 +    stmfd sp!, {r0-r3}
       
 72056 +
       
 72057 +    // Load the context argument from the config page.
       
 72058 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72059 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72060 +    ldr r0, [pc, #-4092]
       
 72061 +
       
 72062 +    // Load the jump address from the config page.
       
 72063 +    ldr pc, [pc, #-4092]
       
 72064 +
       
 72065 +
       
 72066 +    // trampoline
       
 72067 +    // Save to stack
       
 72068 +    stmfd sp!, {r0-r3}
       
 72069 +
       
 72070 +    // Load the context argument from the config page.
       
 72071 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72072 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72073 +    ldr r0, [pc, #-4092]
       
 72074 +
       
 72075 +    // Load the jump address from the config page.
       
 72076 +    ldr pc, [pc, #-4092]
       
 72077 +
       
 72078 +
       
 72079 +    // trampoline
       
 72080 +    // Save to stack
       
 72081 +    stmfd sp!, {r0-r3}
       
 72082 +
       
 72083 +    // Load the context argument from the config page.
       
 72084 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72085 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72086 +    ldr r0, [pc, #-4092]
       
 72087 +
       
 72088 +    // Load the jump address from the config page.
       
 72089 +    ldr pc, [pc, #-4092]
       
 72090 +
       
 72091 +
       
 72092 +    // trampoline
       
 72093 +    // Save to stack
       
 72094 +    stmfd sp!, {r0-r3}
       
 72095 +
       
 72096 +    // Load the context argument from the config page.
       
 72097 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72098 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72099 +    ldr r0, [pc, #-4092]
       
 72100 +
       
 72101 +    // Load the jump address from the config page.
       
 72102 +    ldr pc, [pc, #-4092]
       
 72103 +
       
 72104 +
       
 72105 +    // trampoline
       
 72106 +    // Save to stack
       
 72107 +    stmfd sp!, {r0-r3}
       
 72108 +
       
 72109 +    // Load the context argument from the config page.
       
 72110 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72111 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72112 +    ldr r0, [pc, #-4092]
       
 72113 +
       
 72114 +    // Load the jump address from the config page.
       
 72115 +    ldr pc, [pc, #-4092]
       
 72116 +
       
 72117 +
       
 72118 +    // trampoline
       
 72119 +    // Save to stack
       
 72120 +    stmfd sp!, {r0-r3}
       
 72121 +
       
 72122 +    // Load the context argument from the config page.
       
 72123 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72124 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72125 +    ldr r0, [pc, #-4092]
       
 72126 +
       
 72127 +    // Load the jump address from the config page.
       
 72128 +    ldr pc, [pc, #-4092]
       
 72129 +
       
 72130 +
       
 72131 +    // trampoline
       
 72132 +    // Save to stack
       
 72133 +    stmfd sp!, {r0-r3}
       
 72134 +
       
 72135 +    // Load the context argument from the config page.
       
 72136 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72137 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72138 +    ldr r0, [pc, #-4092]
       
 72139 +
       
 72140 +    // Load the jump address from the config page.
       
 72141 +    ldr pc, [pc, #-4092]
       
 72142 +
       
 72143 +
       
 72144 +    // trampoline
       
 72145 +    // Save to stack
       
 72146 +    stmfd sp!, {r0-r3}
       
 72147 +
       
 72148 +    // Load the context argument from the config page.
       
 72149 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72150 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72151 +    ldr r0, [pc, #-4092]
       
 72152 +
       
 72153 +    // Load the jump address from the config page.
       
 72154 +    ldr pc, [pc, #-4092]
       
 72155 +
       
 72156 +
       
 72157 +    // trampoline
       
 72158 +    // Save to stack
       
 72159 +    stmfd sp!, {r0-r3}
       
 72160 +
       
 72161 +    // Load the context argument from the config page.
       
 72162 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72163 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72164 +    ldr r0, [pc, #-4092]
       
 72165 +
       
 72166 +    // Load the jump address from the config page.
       
 72167 +    ldr pc, [pc, #-4092]
       
 72168 +
       
 72169 +
       
 72170 +    // trampoline
       
 72171 +    // Save to stack
       
 72172 +    stmfd sp!, {r0-r3}
       
 72173 +
       
 72174 +    // Load the context argument from the config page.
       
 72175 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72176 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72177 +    ldr r0, [pc, #-4092]
       
 72178 +
       
 72179 +    // Load the jump address from the config page.
       
 72180 +    ldr pc, [pc, #-4092]
       
 72181 +
       
 72182 +
       
 72183 +    // trampoline
       
 72184 +    // Save to stack
       
 72185 +    stmfd sp!, {r0-r3}
       
 72186 +
       
 72187 +    // Load the context argument from the config page.
       
 72188 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72189 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72190 +    ldr r0, [pc, #-4092]
       
 72191 +
       
 72192 +    // Load the jump address from the config page.
       
 72193 +    ldr pc, [pc, #-4092]
       
 72194 +
       
 72195 +
       
 72196 +    // trampoline
       
 72197 +    // Save to stack
       
 72198 +    stmfd sp!, {r0-r3}
       
 72199 +
       
 72200 +    // Load the context argument from the config page.
       
 72201 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72202 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72203 +    ldr r0, [pc, #-4092]
       
 72204 +
       
 72205 +    // Load the jump address from the config page.
       
 72206 +    ldr pc, [pc, #-4092]
       
 72207 +
       
 72208 +
       
 72209 +    // trampoline
       
 72210 +    // Save to stack
       
 72211 +    stmfd sp!, {r0-r3}
       
 72212 +
       
 72213 +    // Load the context argument from the config page.
       
 72214 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72215 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72216 +    ldr r0, [pc, #-4092]
       
 72217 +
       
 72218 +    // Load the jump address from the config page.
       
 72219 +    ldr pc, [pc, #-4092]
       
 72220 +
       
 72221 +
       
 72222 +    // trampoline
       
 72223 +    // Save to stack
       
 72224 +    stmfd sp!, {r0-r3}
       
 72225 +
       
 72226 +    // Load the context argument from the config page.
       
 72227 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72228 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72229 +    ldr r0, [pc, #-4092]
       
 72230 +
       
 72231 +    // Load the jump address from the config page.
       
 72232 +    ldr pc, [pc, #-4092]
       
 72233 +
       
 72234 +
       
 72235 +    // trampoline
       
 72236 +    // Save to stack
       
 72237 +    stmfd sp!, {r0-r3}
       
 72238 +
       
 72239 +    // Load the context argument from the config page.
       
 72240 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72241 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72242 +    ldr r0, [pc, #-4092]
       
 72243 +
       
 72244 +    // Load the jump address from the config page.
       
 72245 +    ldr pc, [pc, #-4092]
       
 72246 +
       
 72247 +
       
 72248 +    // trampoline
       
 72249 +    // Save to stack
       
 72250 +    stmfd sp!, {r0-r3}
       
 72251 +
       
 72252 +    // Load the context argument from the config page.
       
 72253 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72254 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72255 +    ldr r0, [pc, #-4092]
       
 72256 +
       
 72257 +    // Load the jump address from the config page.
       
 72258 +    ldr pc, [pc, #-4092]
       
 72259 +
       
 72260 +
       
 72261 +    // trampoline
       
 72262 +    // Save to stack
       
 72263 +    stmfd sp!, {r0-r3}
       
 72264 +
       
 72265 +    // Load the context argument from the config page.
       
 72266 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72267 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72268 +    ldr r0, [pc, #-4092]
       
 72269 +
       
 72270 +    // Load the jump address from the config page.
       
 72271 +    ldr pc, [pc, #-4092]
       
 72272 +
       
 72273 +
       
 72274 +    // trampoline
       
 72275 +    // Save to stack
       
 72276 +    stmfd sp!, {r0-r3}
       
 72277 +
       
 72278 +    // Load the context argument from the config page.
       
 72279 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72280 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72281 +    ldr r0, [pc, #-4092]
       
 72282 +
       
 72283 +    // Load the jump address from the config page.
       
 72284 +    ldr pc, [pc, #-4092]
       
 72285 +
       
 72286 +
       
 72287 +    // trampoline
       
 72288 +    // Save to stack
       
 72289 +    stmfd sp!, {r0-r3}
       
 72290 +
       
 72291 +    // Load the context argument from the config page.
       
 72292 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72293 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72294 +    ldr r0, [pc, #-4092]
       
 72295 +
       
 72296 +    // Load the jump address from the config page.
       
 72297 +    ldr pc, [pc, #-4092]
       
 72298 +
       
 72299 +
       
 72300 +    // trampoline
       
 72301 +    // Save to stack
       
 72302 +    stmfd sp!, {r0-r3}
       
 72303 +
       
 72304 +    // Load the context argument from the config page.
       
 72305 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72306 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72307 +    ldr r0, [pc, #-4092]
       
 72308 +
       
 72309 +    // Load the jump address from the config page.
       
 72310 +    ldr pc, [pc, #-4092]
       
 72311 +
       
 72312 +
       
 72313 +    // trampoline
       
 72314 +    // Save to stack
       
 72315 +    stmfd sp!, {r0-r3}
       
 72316 +
       
 72317 +    // Load the context argument from the config page.
       
 72318 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72319 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72320 +    ldr r0, [pc, #-4092]
       
 72321 +
       
 72322 +    // Load the jump address from the config page.
       
 72323 +    ldr pc, [pc, #-4092]
       
 72324 +
       
 72325 +
       
 72326 +    // trampoline
       
 72327 +    // Save to stack
       
 72328 +    stmfd sp!, {r0-r3}
       
 72329 +
       
 72330 +    // Load the context argument from the config page.
       
 72331 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72332 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72333 +    ldr r0, [pc, #-4092]
       
 72334 +
       
 72335 +    // Load the jump address from the config page.
       
 72336 +    ldr pc, [pc, #-4092]
       
 72337 +
       
 72338 +
       
 72339 +    // trampoline
       
 72340 +    // Save to stack
       
 72341 +    stmfd sp!, {r0-r3}
       
 72342 +
       
 72343 +    // Load the context argument from the config page.
       
 72344 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72345 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72346 +    ldr r0, [pc, #-4092]
       
 72347 +
       
 72348 +    // Load the jump address from the config page.
       
 72349 +    ldr pc, [pc, #-4092]
       
 72350 +
       
 72351 +
       
 72352 +    // trampoline
       
 72353 +    // Save to stack
       
 72354 +    stmfd sp!, {r0-r3}
       
 72355 +
       
 72356 +    // Load the context argument from the config page.
       
 72357 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72358 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72359 +    ldr r0, [pc, #-4092]
       
 72360 +
       
 72361 +    // Load the jump address from the config page.
       
 72362 +    ldr pc, [pc, #-4092]
       
 72363 +
       
 72364 +
       
 72365 +    // trampoline
       
 72366 +    // Save to stack
       
 72367 +    stmfd sp!, {r0-r3}
       
 72368 +
       
 72369 +    // Load the context argument from the config page.
       
 72370 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72371 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72372 +    ldr r0, [pc, #-4092]
       
 72373 +
       
 72374 +    // Load the jump address from the config page.
       
 72375 +    ldr pc, [pc, #-4092]
       
 72376 +
       
 72377 +
       
 72378 +    // trampoline
       
 72379 +    // Save to stack
       
 72380 +    stmfd sp!, {r0-r3}
       
 72381 +
       
 72382 +    // Load the context argument from the config page.
       
 72383 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72384 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72385 +    ldr r0, [pc, #-4092]
       
 72386 +
       
 72387 +    // Load the jump address from the config page.
       
 72388 +    ldr pc, [pc, #-4092]
       
 72389 +
       
 72390 +
       
 72391 +    // trampoline
       
 72392 +    // Save to stack
       
 72393 +    stmfd sp!, {r0-r3}
       
 72394 +
       
 72395 +    // Load the context argument from the config page.
       
 72396 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72397 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72398 +    ldr r0, [pc, #-4092]
       
 72399 +
       
 72400 +    // Load the jump address from the config page.
       
 72401 +    ldr pc, [pc, #-4092]
       
 72402 +
       
 72403 +
       
 72404 +    // trampoline
       
 72405 +    // Save to stack
       
 72406 +    stmfd sp!, {r0-r3}
       
 72407 +
       
 72408 +    // Load the context argument from the config page.
       
 72409 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72410 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72411 +    ldr r0, [pc, #-4092]
       
 72412 +
       
 72413 +    // Load the jump address from the config page.
       
 72414 +    ldr pc, [pc, #-4092]
       
 72415 +
       
 72416 +
       
 72417 +    // trampoline
       
 72418 +    // Save to stack
       
 72419 +    stmfd sp!, {r0-r3}
       
 72420 +
       
 72421 +    // Load the context argument from the config page.
       
 72422 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72423 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72424 +    ldr r0, [pc, #-4092]
       
 72425 +
       
 72426 +    // Load the jump address from the config page.
       
 72427 +    ldr pc, [pc, #-4092]
       
 72428 +
       
 72429 +
       
 72430 +    // trampoline
       
 72431 +    // Save to stack
       
 72432 +    stmfd sp!, {r0-r3}
       
 72433 +
       
 72434 +    // Load the context argument from the config page.
       
 72435 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72436 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72437 +    ldr r0, [pc, #-4092]
       
 72438 +
       
 72439 +    // Load the jump address from the config page.
       
 72440 +    ldr pc, [pc, #-4092]
       
 72441 +
       
 72442 +
       
 72443 +    // trampoline
       
 72444 +    // Save to stack
       
 72445 +    stmfd sp!, {r0-r3}
       
 72446 +
       
 72447 +    // Load the context argument from the config page.
       
 72448 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72449 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72450 +    ldr r0, [pc, #-4092]
       
 72451 +
       
 72452 +    // Load the jump address from the config page.
       
 72453 +    ldr pc, [pc, #-4092]
       
 72454 +
       
 72455 +
       
 72456 +    // trampoline
       
 72457 +    // Save to stack
       
 72458 +    stmfd sp!, {r0-r3}
       
 72459 +
       
 72460 +    // Load the context argument from the config page.
       
 72461 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72462 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72463 +    ldr r0, [pc, #-4092]
       
 72464 +
       
 72465 +    // Load the jump address from the config page.
       
 72466 +    ldr pc, [pc, #-4092]
       
 72467 +
       
 72468 +
       
 72469 +    // trampoline
       
 72470 +    // Save to stack
       
 72471 +    stmfd sp!, {r0-r3}
       
 72472 +
       
 72473 +    // Load the context argument from the config page.
       
 72474 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72475 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72476 +    ldr r0, [pc, #-4092]
       
 72477 +
       
 72478 +    // Load the jump address from the config page.
       
 72479 +    ldr pc, [pc, #-4092]
       
 72480 +
       
 72481 +
       
 72482 +    // trampoline
       
 72483 +    // Save to stack
       
 72484 +    stmfd sp!, {r0-r3}
       
 72485 +
       
 72486 +    // Load the context argument from the config page.
       
 72487 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72488 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72489 +    ldr r0, [pc, #-4092]
       
 72490 +
       
 72491 +    // Load the jump address from the config page.
       
 72492 +    ldr pc, [pc, #-4092]
       
 72493 +
       
 72494 +
       
 72495 +    // trampoline
       
 72496 +    // Save to stack
       
 72497 +    stmfd sp!, {r0-r3}
       
 72498 +
       
 72499 +    // Load the context argument from the config page.
       
 72500 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72501 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72502 +    ldr r0, [pc, #-4092]
       
 72503 +
       
 72504 +    // Load the jump address from the config page.
       
 72505 +    ldr pc, [pc, #-4092]
       
 72506 +
       
 72507 +
       
 72508 +    // trampoline
       
 72509 +    // Save to stack
       
 72510 +    stmfd sp!, {r0-r3}
       
 72511 +
       
 72512 +    // Load the context argument from the config page.
       
 72513 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72514 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72515 +    ldr r0, [pc, #-4092]
       
 72516 +
       
 72517 +    // Load the jump address from the config page.
       
 72518 +    ldr pc, [pc, #-4092]
       
 72519 +
       
 72520 +
       
 72521 +    // trampoline
       
 72522 +    // Save to stack
       
 72523 +    stmfd sp!, {r0-r3}
       
 72524 +
       
 72525 +    // Load the context argument from the config page.
       
 72526 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72527 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72528 +    ldr r0, [pc, #-4092]
       
 72529 +
       
 72530 +    // Load the jump address from the config page.
       
 72531 +    ldr pc, [pc, #-4092]
       
 72532 +
       
 72533 +
       
 72534 +    // trampoline
       
 72535 +    // Save to stack
       
 72536 +    stmfd sp!, {r0-r3}
       
 72537 +
       
 72538 +    // Load the context argument from the config page.
       
 72539 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72540 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72541 +    ldr r0, [pc, #-4092]
       
 72542 +
       
 72543 +    // Load the jump address from the config page.
       
 72544 +    ldr pc, [pc, #-4092]
       
 72545 +
       
 72546 +
       
 72547 +    // trampoline
       
 72548 +    // Save to stack
       
 72549 +    stmfd sp!, {r0-r3}
       
 72550 +
       
 72551 +    // Load the context argument from the config page.
       
 72552 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72553 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72554 +    ldr r0, [pc, #-4092]
       
 72555 +
       
 72556 +    // Load the jump address from the config page.
       
 72557 +    ldr pc, [pc, #-4092]
       
 72558 +
       
 72559 +
       
 72560 +    // trampoline
       
 72561 +    // Save to stack
       
 72562 +    stmfd sp!, {r0-r3}
       
 72563 +
       
 72564 +    // Load the context argument from the config page.
       
 72565 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72566 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72567 +    ldr r0, [pc, #-4092]
       
 72568 +
       
 72569 +    // Load the jump address from the config page.
       
 72570 +    ldr pc, [pc, #-4092]
       
 72571 +
       
 72572 +
       
 72573 +    // trampoline
       
 72574 +    // Save to stack
       
 72575 +    stmfd sp!, {r0-r3}
       
 72576 +
       
 72577 +    // Load the context argument from the config page.
       
 72578 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72579 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72580 +    ldr r0, [pc, #-4092]
       
 72581 +
       
 72582 +    // Load the jump address from the config page.
       
 72583 +    ldr pc, [pc, #-4092]
       
 72584 +
       
 72585 +
       
 72586 +    // trampoline
       
 72587 +    // Save to stack
       
 72588 +    stmfd sp!, {r0-r3}
       
 72589 +
       
 72590 +    // Load the context argument from the config page.
       
 72591 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72592 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72593 +    ldr r0, [pc, #-4092]
       
 72594 +
       
 72595 +    // Load the jump address from the config page.
       
 72596 +    ldr pc, [pc, #-4092]
       
 72597 +
       
 72598 +
       
 72599 +    // trampoline
       
 72600 +    // Save to stack
       
 72601 +    stmfd sp!, {r0-r3}
       
 72602 +
       
 72603 +    // Load the context argument from the config page.
       
 72604 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72605 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72606 +    ldr r0, [pc, #-4092]
       
 72607 +
       
 72608 +    // Load the jump address from the config page.
       
 72609 +    ldr pc, [pc, #-4092]
       
 72610 +
       
 72611 +
       
 72612 +    // trampoline
       
 72613 +    // Save to stack
       
 72614 +    stmfd sp!, {r0-r3}
       
 72615 +
       
 72616 +    // Load the context argument from the config page.
       
 72617 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72618 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72619 +    ldr r0, [pc, #-4092]
       
 72620 +
       
 72621 +    // Load the jump address from the config page.
       
 72622 +    ldr pc, [pc, #-4092]
       
 72623 +
       
 72624 +
       
 72625 +    // trampoline
       
 72626 +    // Save to stack
       
 72627 +    stmfd sp!, {r0-r3}
       
 72628 +
       
 72629 +    // Load the context argument from the config page.
       
 72630 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72631 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72632 +    ldr r0, [pc, #-4092]
       
 72633 +
       
 72634 +    // Load the jump address from the config page.
       
 72635 +    ldr pc, [pc, #-4092]
       
 72636 +
       
 72637 +
       
 72638 +    // trampoline
       
 72639 +    // Save to stack
       
 72640 +    stmfd sp!, {r0-r3}
       
 72641 +
       
 72642 +    // Load the context argument from the config page.
       
 72643 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72644 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72645 +    ldr r0, [pc, #-4092]
       
 72646 +
       
 72647 +    // Load the jump address from the config page.
       
 72648 +    ldr pc, [pc, #-4092]
       
 72649 +
       
 72650 +
       
 72651 +    // trampoline
       
 72652 +    // Save to stack
       
 72653 +    stmfd sp!, {r0-r3}
       
 72654 +
       
 72655 +    // Load the context argument from the config page.
       
 72656 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72657 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72658 +    ldr r0, [pc, #-4092]
       
 72659 +
       
 72660 +    // Load the jump address from the config page.
       
 72661 +    ldr pc, [pc, #-4092]
       
 72662 +
       
 72663 +
       
 72664 +    // trampoline
       
 72665 +    // Save to stack
       
 72666 +    stmfd sp!, {r0-r3}
       
 72667 +
       
 72668 +    // Load the context argument from the config page.
       
 72669 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72670 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72671 +    ldr r0, [pc, #-4092]
       
 72672 +
       
 72673 +    // Load the jump address from the config page.
       
 72674 +    ldr pc, [pc, #-4092]
       
 72675 +
       
 72676 +
       
 72677 +    // trampoline
       
 72678 +    // Save to stack
       
 72679 +    stmfd sp!, {r0-r3}
       
 72680 +
       
 72681 +    // Load the context argument from the config page.
       
 72682 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72683 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72684 +    ldr r0, [pc, #-4092]
       
 72685 +
       
 72686 +    // Load the jump address from the config page.
       
 72687 +    ldr pc, [pc, #-4092]
       
 72688 +
       
 72689 +
       
 72690 +    // trampoline
       
 72691 +    // Save to stack
       
 72692 +    stmfd sp!, {r0-r3}
       
 72693 +
       
 72694 +    // Load the context argument from the config page.
       
 72695 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72696 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72697 +    ldr r0, [pc, #-4092]
       
 72698 +
       
 72699 +    // Load the jump address from the config page.
       
 72700 +    ldr pc, [pc, #-4092]
       
 72701 +
       
 72702 +
       
 72703 +    // trampoline
       
 72704 +    // Save to stack
       
 72705 +    stmfd sp!, {r0-r3}
       
 72706 +
       
 72707 +    // Load the context argument from the config page.
       
 72708 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72709 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72710 +    ldr r0, [pc, #-4092]
       
 72711 +
       
 72712 +    // Load the jump address from the config page.
       
 72713 +    ldr pc, [pc, #-4092]
       
 72714 +
       
 72715 +
       
 72716 +    // trampoline
       
 72717 +    // Save to stack
       
 72718 +    stmfd sp!, {r0-r3}
       
 72719 +
       
 72720 +    // Load the context argument from the config page.
       
 72721 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72722 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72723 +    ldr r0, [pc, #-4092]
       
 72724 +
       
 72725 +    // Load the jump address from the config page.
       
 72726 +    ldr pc, [pc, #-4092]
       
 72727 +
       
 72728 +
       
 72729 +    // trampoline
       
 72730 +    // Save to stack
       
 72731 +    stmfd sp!, {r0-r3}
       
 72732 +
       
 72733 +    // Load the context argument from the config page.
       
 72734 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72735 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72736 +    ldr r0, [pc, #-4092]
       
 72737 +
       
 72738 +    // Load the jump address from the config page.
       
 72739 +    ldr pc, [pc, #-4092]
       
 72740 +
       
 72741 +
       
 72742 +    // trampoline
       
 72743 +    // Save to stack
       
 72744 +    stmfd sp!, {r0-r3}
       
 72745 +
       
 72746 +    // Load the context argument from the config page.
       
 72747 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72748 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72749 +    ldr r0, [pc, #-4092]
       
 72750 +
       
 72751 +    // Load the jump address from the config page.
       
 72752 +    ldr pc, [pc, #-4092]
       
 72753 +
       
 72754 +
       
 72755 +    // trampoline
       
 72756 +    // Save to stack
       
 72757 +    stmfd sp!, {r0-r3}
       
 72758 +
       
 72759 +    // Load the context argument from the config page.
       
 72760 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72761 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72762 +    ldr r0, [pc, #-4092]
       
 72763 +
       
 72764 +    // Load the jump address from the config page.
       
 72765 +    ldr pc, [pc, #-4092]
       
 72766 +
       
 72767 +
       
 72768 +    // trampoline
       
 72769 +    // Save to stack
       
 72770 +    stmfd sp!, {r0-r3}
       
 72771 +
       
 72772 +    // Load the context argument from the config page.
       
 72773 +    // This places the first usable config value at _ffi_closure_trampoline_table-4080
       
 72774 +    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
       
 72775 +    ldr r0, [pc, #-4092]
       
 72776 +
       
 72777 +    // Load the jump address from the config page.
       
 72778 +    ldr pc, [pc, #-4092]
       
 72779 +
       
 72780 diff --git a/js/src/ctypes/libffi/src/avr32/ffi.c b/js/src/ctypes/libffi/src/avr32/ffi.c
       
 72781 --- a/js/src/ctypes/libffi/src/avr32/ffi.c
       
 72782 +++ b/js/src/ctypes/libffi/src/avr32/ffi.c
       
 72783 @@ -1,10 +1,11 @@
       
 72784  /* -----------------------------------------------------------------------
       
 72785 -   ffi.c - Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
       
 72786 +   ffi.c - Copyright (c) 2011  Anthony Green
       
 72787 +           Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
       
 72788  
       
 72789     AVR32 Foreign Function Interface
       
 72790  
       
 72791     Permission is hereby granted, free of charge, to any person obtaining
       
 72792     a copy of this software and associated documentation files (the
       
 72793     ``Software''), to deal in the Software without restriction, including
       
 72794     without limitation the rights to use, copy, modify, merge, publish,
       
 72795     distribute, sublicense, and/or sell copies of the Software, and to
       
 72796 @@ -389,17 +390,18 @@ unsigned int ffi_closure_SYSV_inner(ffi_
       
 72797  
       
 72798      return cif->flags;
       
 72799  }
       
 72800  
       
 72801  ffi_status ffi_prep_closure_loc(ffi_closure* closure, ffi_cif* cif,
       
 72802      void (*fun)(ffi_cif*, void*, void**, void*), void *user_data,
       
 72803      void *codeloc)
       
 72804  {
       
 72805 -    FFI_ASSERT(cif->abi == FFI_SYSV);
       
 72806 +    if (cif->abi != FFI_SYSV)
       
 72807 +      return FFI_BAD_ABI;
       
 72808  
       
 72809      unsigned char *__tramp = (unsigned char*)(&closure->tramp[0]);
       
 72810      unsigned int  __fun = (unsigned int)(&ffi_closure_SYSV);
       
 72811      unsigned int  __ctx = (unsigned int)(codeloc);
       
 72812      unsigned int  __rstruct_flag = (unsigned int)(cif->rstruct_flag);
       
 72813      unsigned int  __inner = (unsigned int)(&ffi_closure_SYSV_inner);
       
 72814      *(unsigned int*) &__tramp[0] = 0xebcd1f00;    /* pushm  r8-r12 */
       
 72815      *(unsigned int*) &__tramp[4] = 0xfefc0010;    /* ld.w   r12, pc[16] */
       
 72816 diff --git a/js/src/ctypes/libffi/src/avr32/ffitarget.h b/js/src/ctypes/libffi/src/avr32/ffitarget.h
       
 72817 --- a/js/src/ctypes/libffi/src/avr32/ffitarget.h
       
 72818 +++ b/js/src/ctypes/libffi/src/avr32/ffitarget.h
       
 72819 @@ -1,10 +1,11 @@
       
 72820  /* -----------------------------------------------------------------*-C-*-
       
 72821 -   ffitarget.h - Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
       
 72822 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 72823 +                 Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
       
 72824     Target configuration macros for AVR32.
       
 72825  
       
 72826     Permission is hereby granted, free of charge, to any person obtaining
       
 72827     a copy of this software and associated documentation files (the
       
 72828     ``Software''), to deal in the Software without restriction, including
       
 72829     without limitation the rights to use, copy, modify, merge, publish,
       
 72830     distribute, sublicense, and/or sell copies of the Software, and to
       
 72831     permit persons to whom the Software is furnished to do so, subject to
       
 72832 @@ -22,16 +23,20 @@
       
 72833     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 72834     DEALINGS IN THE SOFTWARE.
       
 72835  
       
 72836     ----------------------------------------------------------------------- */
       
 72837  
       
 72838  #ifndef LIBFFI_TARGET_H
       
 72839  #define LIBFFI_TARGET_H
       
 72840  
       
 72841 +#ifndef LIBFFI_H
       
 72842 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 72843 +#endif
       
 72844 +
       
 72845  #ifndef LIBFFI_ASM
       
 72846  typedef unsigned long          ffi_arg;
       
 72847  typedef signed long            ffi_sarg;
       
 72848  
       
 72849  typedef enum ffi_abi {
       
 72850    FFI_FIRST_ABI = 0,
       
 72851    FFI_SYSV,
       
 72852    FFI_LAST_ABI,
       
 72853 diff --git a/js/src/ctypes/libffi/src/bfin/ffi.c b/js/src/ctypes/libffi/src/bfin/ffi.c
       
 72854 new file mode 100644
       
 72855 --- /dev/null
       
 72856 +++ b/js/src/ctypes/libffi/src/bfin/ffi.c
       
 72857 @@ -0,0 +1,196 @@
       
 72858 +/* -----------------------------------------------------------------------
       
 72859 +   ffi.c - Copyright (c) 2012  Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>,
       
 72860 +							   Paulo Pizarro <paulo.pizarro@gmail.com>
       
 72861 +
       
 72862 +   Blackfin Foreign Function Interface
       
 72863 +
       
 72864 +   Permission is hereby granted, free of charge, to any person obtaining
       
 72865 +   a copy of this software and associated documentation files (the
       
 72866 +   ``Software''), to deal in the Software without restriction, including
       
 72867 +   without limitation the rights to use, copy, modify, merge, publish,
       
 72868 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 72869 +   permit persons to whom the Software is furnished to do so, subject to
       
 72870 +   the following conditions:
       
 72871 +
       
 72872 +   The above copyright notice and this permission notice shall be included
       
 72873 +   in all copies or substantial portions of the Software.
       
 72874 +
       
 72875 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 72876 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 72877 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 72878 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 72879 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 72880 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 72881 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 72882 +   DEALINGS IN THE SOFTWARE.
       
 72883 +   ----------------------------------------------------------------------- */
       
 72884 +#include <ffi.h>
       
 72885 +#include <ffi_common.h>
       
 72886 +
       
 72887 +#include <stdlib.h>
       
 72888 +#include <stdio.h>
       
 72889 +
       
 72890 +/* Maximum number of GPRs available for argument passing.  */
       
 72891 +#define MAX_GPRARGS 3
       
 72892 +
       
 72893 +/*
       
 72894 + * Return types
       
 72895 + */
       
 72896 +#define FFIBFIN_RET_VOID 0
       
 72897 +#define FFIBFIN_RET_BYTE 1
       
 72898 +#define FFIBFIN_RET_HALFWORD 2
       
 72899 +#define FFIBFIN_RET_INT64 3
       
 72900 +#define FFIBFIN_RET_INT32 4
       
 72901 +
       
 72902 +/*====================================================================*/
       
 72903 +/*                          PROTOTYPE          *
       
 72904 + /*====================================================================*/
       
 72905 +void ffi_prep_args(unsigned char *, extended_cif *);
       
 72906 +
       
 72907 +/*====================================================================*/
       
 72908 +/*                          Externals                                 */
       
 72909 +/*                          (Assembly)                                */
       
 72910 +/*====================================================================*/
       
 72911 +
       
 72912 +extern void ffi_call_SYSV(unsigned, extended_cif *, void(*)(unsigned char *, extended_cif *), unsigned, void *, void(*fn)(void));
       
 72913 +
       
 72914 +/*====================================================================*/
       
 72915 +/*                          Implementation                            */
       
 72916 +/*                                                            */
       
 72917 +/*====================================================================*/
       
 72918 +
       
 72919 +
       
 72920 +/*
       
 72921 + * This function calculates the return type (size) based on type.
       
 72922 + */
       
 72923 +
       
 72924 +ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
       
 72925 +{
       
 72926 +   /* --------------------------------------*
       
 72927 +    *   Return handling                *
       
 72928 +    * --------------------------------------*/
       
 72929 +   switch (cif->rtype->type) {
       
 72930 +      case FFI_TYPE_VOID:
       
 72931 +         cif->flags = FFIBFIN_RET_VOID;
       
 72932 +         break;
       
 72933 +      case FFI_TYPE_UINT16:
       
 72934 +      case FFI_TYPE_SINT16:
       
 72935 +         cif->flags = FFIBFIN_RET_HALFWORD;
       
 72936 +         break;
       
 72937 +      case FFI_TYPE_UINT8:
       
 72938 +         cif->flags = FFIBFIN_RET_BYTE;
       
 72939 +         break;
       
 72940 +      case FFI_TYPE_INT:
       
 72941 +      case FFI_TYPE_UINT32:
       
 72942 +      case FFI_TYPE_SINT32:
       
 72943 +      case FFI_TYPE_FLOAT:
       
 72944 +      case FFI_TYPE_POINTER:
       
 72945 +      case FFI_TYPE_SINT8:
       
 72946 +         cif->flags = FFIBFIN_RET_INT32;
       
 72947 +         break;
       
 72948 +      case FFI_TYPE_SINT64:
       
 72949 +      case FFI_TYPE_UINT64:
       
 72950 +      case FFI_TYPE_DOUBLE:
       
 72951 +          cif->flags = FFIBFIN_RET_INT64;
       
 72952 +          break;
       
 72953 +      case FFI_TYPE_STRUCT:
       
 72954 +         if (cif->rtype->size <= 4){
       
 72955 +        	 cif->flags = FFIBFIN_RET_INT32;
       
 72956 +         }else if (cif->rtype->size == 8){
       
 72957 +        	 cif->flags = FFIBFIN_RET_INT64;
       
 72958 +         }else{
       
 72959 +        	 //it will return via a hidden pointer in P0
       
 72960 +        	 cif->flags = FFIBFIN_RET_VOID;
       
 72961 +         }
       
 72962 +         break;
       
 72963 +      default:
       
 72964 +         FFI_ASSERT(0);
       
 72965 +         break;
       
 72966 +   }
       
 72967 +   return FFI_OK;
       
 72968 +}
       
 72969 +
       
 72970 +/*
       
 72971 + * This will prepare the arguments and will call the assembly routine
       
 72972 + * cif = the call interface
       
 72973 + * fn = the function to be called
       
 72974 + * rvalue = the return value
       
 72975 + * avalue = the arguments
       
 72976 + */
       
 72977 +void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue)
       
 72978 +{
       
 72979 +   int ret_type = cif->flags;
       
 72980 +   extended_cif ecif;
       
 72981 +   ecif.cif = cif;
       
 72982 +   ecif.avalue = avalue;
       
 72983 +   ecif.rvalue = rvalue;
       
 72984 +
       
 72985 +   switch (cif->abi) {
       
 72986 +      case FFI_SYSV:
       
 72987 +         ffi_call_SYSV(cif->bytes, &ecif, ffi_prep_args, ret_type, ecif.rvalue, fn);
       
 72988 +         break;
       
 72989 +      default:
       
 72990 +         FFI_ASSERT(0);
       
 72991 +         break;
       
 72992 +   }
       
 72993 +}
       
 72994 +
       
 72995 +
       
 72996 +/*
       
 72997 +* This function prepares the parameters (copies them from the ecif to the stack)
       
 72998 +*  to call the function (ffi_prep_args is called by the assembly routine in file
       
 72999 +*  sysv.S, which also calls the actual function)
       
 73000 +*/
       
 73001 +void ffi_prep_args(unsigned char *stack, extended_cif *ecif)
       
 73002 +{
       
 73003 +   register unsigned int i = 0;
       
 73004 +   void **p_argv;
       
 73005 +   unsigned char *argp;
       
 73006 +   ffi_type **p_arg;
       
 73007 +   argp = stack;
       
 73008 +   p_argv = ecif->avalue;
       
 73009 +   for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
       
 73010 +        (i != 0);
       
 73011 +        i--, p_arg++) {
       
 73012 +      size_t z;
       
 73013 +      z = (*p_arg)->size;
       
 73014 +      if (z < sizeof(int)) {
       
 73015 +         z = sizeof(int);
       
 73016 +         switch ((*p_arg)->type) {
       
 73017 +            case FFI_TYPE_SINT8: {
       
 73018 +                  signed char v = *(SINT8 *)(* p_argv);
       
 73019 +                  signed int t = v;
       
 73020 +                  *(signed int *) argp = t;
       
 73021 +               }
       
 73022 +               break;
       
 73023 +            case FFI_TYPE_UINT8: {
       
 73024 +                  unsigned char v = *(UINT8 *)(* p_argv);
       
 73025 +                  unsigned int t = v;
       
 73026 +                  *(unsigned int *) argp = t;
       
 73027 +               }
       
 73028 +               break;
       
 73029 +            case FFI_TYPE_SINT16:
       
 73030 +               *(signed int *) argp = (signed int) * (SINT16 *)(* p_argv);
       
 73031 +               break;
       
 73032 +            case FFI_TYPE_UINT16:
       
 73033 +               *(unsigned int *) argp = (unsigned int) * (UINT16 *)(* p_argv);
       
 73034 +               break;
       
 73035 +            case FFI_TYPE_STRUCT:
       
 73036 +               memcpy(argp, *p_argv, (*p_arg)->size);
       
 73037 +               break;
       
 73038 +            default:
       
 73039 +               FFI_ASSERT(0);
       
 73040 +               break;
       
 73041 +         }
       
 73042 +      } else if (z == sizeof(int)) {
       
 73043 +         *(unsigned int *) argp = (unsigned int) * (UINT32 *)(* p_argv);
       
 73044 +      } else {
       
 73045 +         memcpy(argp, *p_argv, z);
       
 73046 +      }
       
 73047 +      p_argv++;
       
 73048 +      argp += z;
       
 73049 +   }
       
 73050 +}
       
 73051 +
       
 73052 +
       
 73053 +
       
 73054 diff --git a/js/src/ctypes/libffi/src/bfin/ffitarget.h b/js/src/ctypes/libffi/src/bfin/ffitarget.h
       
 73055 new file mode 100644
       
 73056 --- /dev/null
       
 73057 +++ b/js/src/ctypes/libffi/src/bfin/ffitarget.h
       
 73058 @@ -0,0 +1,43 @@
       
 73059 +/* -----------------------------------------------------------------------
       
 73060 +   ffitarget.h - Copyright (c) 2012  Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>
       
 73061 +
       
 73062 +   Blackfin Foreign Function Interface
       
 73063 +
       
 73064 +   Permission is hereby granted, free of charge, to any person obtaining
       
 73065 +   a copy of this software and associated documentation files (the
       
 73066 +   ``Software''), to deal in the Software without restriction, including
       
 73067 +   without limitation the rights to use, copy, modify, merge, publish,
       
 73068 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 73069 +   permit persons to whom the Software is furnished to do so, subject to
       
 73070 +   the following conditions:
       
 73071 +
       
 73072 +   The above copyright notice and this permission notice shall be included
       
 73073 +   in all copies or substantial portions of the Software.
       
 73074 +
       
 73075 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 73076 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 73077 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 73078 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 73079 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 73080 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 73081 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 73082 +   DEALINGS IN THE SOFTWARE.
       
 73083 +   ----------------------------------------------------------------------- */
       
 73084 +
       
 73085 +#ifndef LIBFFI_TARGET_H
       
 73086 +#define LIBFFI_TARGET_H
       
 73087 +
       
 73088 +#ifndef LIBFFI_ASM
       
 73089 +typedef unsigned long          ffi_arg;
       
 73090 +typedef signed 	 long          ffi_sarg;
       
 73091 +
       
 73092 +typedef enum ffi_abi {
       
 73093 +  FFI_FIRST_ABI = 0,
       
 73094 +  FFI_SYSV,
       
 73095 +  FFI_LAST_ABI,
       
 73096 +  FFI_DEFAULT_ABI = FFI_SYSV
       
 73097 +} ffi_abi;
       
 73098 +#endif
       
 73099 +
       
 73100 +#endif
       
 73101 +
       
 73102 diff --git a/js/src/ctypes/libffi/src/bfin/sysv.S b/js/src/ctypes/libffi/src/bfin/sysv.S
       
 73103 new file mode 100644
       
 73104 --- /dev/null
       
 73105 +++ b/js/src/ctypes/libffi/src/bfin/sysv.S
       
 73106 @@ -0,0 +1,179 @@
       
 73107 +/* -----------------------------------------------------------------------
       
 73108 +   sysv.S - Copyright (c) 2012  Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>,
       
 73109 +                                Paulo Pizarro <paulo.pizarro@gmail.com>
       
 73110 +
       
 73111 +   Blackfin Foreign Function Interface
       
 73112 +
       
 73113 +   Permission is hereby granted, free of charge, to any person obtaining
       
 73114 +   a copy of this software and associated documentation files (the
       
 73115 +   ``Software''), to deal in the Software without restriction, including
       
 73116 +   without limitation the rights to use, copy, modify, merge, publish,
       
 73117 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 73118 +   permit persons to whom the Software is furnished to do so, subject to
       
 73119 +   the following conditions:
       
 73120 +
       
 73121 +   The above copyright notice and this permission notice shall be included
       
 73122 +   in all copies or substantial portions of the Software.
       
 73123 +
       
 73124 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 73125 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 73126 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 73127 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 73128 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 73129 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 73130 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 73131 +   DEALINGS IN THE SOFTWARE.
       
 73132 +   ----------------------------------------------------------------------- */
       
 73133 +
       
 73134 +#define LIBFFI_ASM
       
 73135 +#include <fficonfig.h>
       
 73136 +#include <ffi.h>
       
 73137 +
       
 73138 +.text
       
 73139 +.align 4
       
 73140 +
       
 73141 +	/*
       
 73142 +	 There is a "feature" in the bfin toolchain that it puts a _ before function names
       
 73143 +	 that's why the function here it's called _ffi_call_SYSV and not ffi_call_SYSV
       
 73144 +	 */
       
 73145 +	.global _ffi_call_SYSV;
       
 73146 +	.type _ffi_call_SYSV, STT_FUNC;
       
 73147 +	.func ffi_call_SYSV
       
 73148 +
       
 73149 +	/*
       
 73150 +         cif->bytes    = R0    (fp+8)
       
 73151 +         &ecif         = R1    (fp+12)
       
 73152 +         ffi_prep_args = R2    (fp+16)
       
 73153 +         ret_type      = stack (fp+20)
       
 73154 +         ecif.rvalue   = stack (fp+24)
       
 73155 +         fn            = stack (fp+28)
       
 73156 +                           got (fp+32)
       
 73157 +
       
 73158 +        There is room for improvement here (we can use temporary registers
       
 73159 +        instead of saving the values in the memory)
       
 73160 +        REGS:
       
 73161 +        P5 => Stack pointer (function arguments)
       
 73162 +        R5 => cif->bytes
       
 73163 +        R4 => ret->type
       
 73164 +
       
 73165 +        FP-20 = P3
       
 73166 +        FP-16 = SP (parameters area)
       
 73167 +        FP-12 = SP (temp)
       
 73168 +        FP-08 = function return part 1 [R0]
       
 73169 +        FP-04 = function return part 2 [R1]
       
 73170 +	*/
       
 73171 +
       
 73172 +_ffi_call_SYSV:
       
 73173 +.prologue:
       
 73174 +	LINK 20;
       
 73175 +	[FP-20] = P3;
       
 73176 +	[FP+8] = R0;
       
 73177 +	[FP+12] = R1;
       
 73178 +	[FP+16] = R2;
       
 73179 +
       
 73180 +.allocate_stack:
       
 73181 +	//alocate cif->bytes into the stack
       
 73182 +	R1 = [FP+8];
       
 73183 +	R0 = SP;
       
 73184 +	R0 = R0 - R1;
       
 73185 +	R1 = 4;
       
 73186 +	R0 = R0 - R1;
       
 73187 +	[FP-12] = SP;
       
 73188 +	SP = R0;
       
 73189 +	[FP-16] = SP;
       
 73190 +
       
 73191 +.call_prep_args:
       
 73192 +	//get the addr of prep_args
       
 73193 +	P0 = [P3 + _ffi_prep_args@FUNCDESC_GOT17M4];
       
 73194 +	P1 = [P0];
       
 73195 +	P3 = [P0+4];
       
 73196 +	R0 = [FP-16];//SP (parameter area)
       
 73197 +	R1 = [FP+12];//ecif
       
 73198 +	call (P1);
       
 73199 +
       
 73200 +.call_user_function:
       
 73201 +	//ajust SP so as to allow the user function access the parameters on the stack
       
 73202 +	SP = [FP-16]; //point to function parameters
       
 73203 +	R0 = [SP];
       
 73204 +	R1 = [SP+4];
       
 73205 +	R2 = [SP+8];
       
 73206 +	//load user function address
       
 73207 +	P0 = FP;
       
 73208 +	P0 +=28;
       
 73209 +	P1 = [P0];
       
 73210 +	P1 = [P1];
       
 73211 +	P3 = [P0+4];
       
 73212 +	/*
       
 73213 +		For functions returning aggregate values (struct) occupying more than 8 bytes,
       
 73214 +		the caller allocates the return value object on the stack and the address
       
 73215 +		of this object is passed to the callee as a hidden argument in register P0.
       
 73216 +	*/
       
 73217 +	P0 = [FP+24];
       
 73218 +
       
 73219 +	call (P1);
       
 73220 +	SP = [FP-12];
       
 73221 +.compute_return:
       
 73222 +	P2 = [FP-20];
       
 73223 +	[FP-8] = R0;
       
 73224 +	[FP-4] = R1;
       
 73225 +
       
 73226 +	R0 = [FP+20];
       
 73227 +	R1 = R0 << 2;
       
 73228 +
       
 73229 +	R0 = [P2+.rettable@GOT17M4];
       
 73230 +	R0 = R1 + R0;
       
 73231 +	P2 = R0;
       
 73232 +	R1 = [P2];
       
 73233 +
       
 73234 +	P2 = [FP+-20];
       
 73235 +	R0 = [P2+.rettable@GOT17M4];
       
 73236 +	R0 = R1 + R0;
       
 73237 +	P2 = R0;
       
 73238 +	R0 = [FP-8];
       
 73239 +	R1 = [FP-4];
       
 73240 +	jump (P2);
       
 73241 +
       
 73242 +/*
       
 73243 +#define FFIBFIN_RET_VOID 0
       
 73244 +#define FFIBFIN_RET_BYTE 1
       
 73245 +#define FFIBFIN_RET_HALFWORD 2
       
 73246 +#define FFIBFIN_RET_INT64 3
       
 73247 +#define FFIBFIN_RET_INT32 4
       
 73248 +*/
       
 73249 +.align 4
       
 73250 +.align 4
       
 73251 +.rettable:
       
 73252 +	.dd .epilogue - .rettable
       
 73253 +	.dd	.rbyte - .rettable;
       
 73254 +	.dd	.rhalfword - .rettable;
       
 73255 +	.dd	.rint64 - .rettable;
       
 73256 +	.dd	.rint32 - .rettable;
       
 73257 +
       
 73258 +.rbyte:
       
 73259 +	P0 = [FP+24];
       
 73260 +	R0 = R0.B (Z);
       
 73261 +	[P0] = R0;
       
 73262 +	JUMP .epilogue
       
 73263 +.rhalfword:
       
 73264 +	P0 = [FP+24];
       
 73265 +	R0 = R0.L;
       
 73266 +	[P0] = R0;
       
 73267 +	JUMP .epilogue
       
 73268 +.rint64:
       
 73269 +	P0 = [FP+24];// &rvalue
       
 73270 +	[P0] = R0;
       
 73271 +	[P0+4] = R1;
       
 73272 +	JUMP .epilogue
       
 73273 +.rint32:
       
 73274 +	P0 = [FP+24];
       
 73275 +	[P0] = R0;
       
 73276 +.epilogue:
       
 73277 +	R0 = [FP+8];
       
 73278 +	R1 = [FP+12];
       
 73279 +	R2 = [FP+16];
       
 73280 +	P3 = [FP-20];
       
 73281 +	UNLINK;
       
 73282 +	RTS;
       
 73283 +
       
 73284 +.size _ffi_call_SYSV,.-_ffi_call_SYSV;
       
 73285 +.endfunc
       
 73286 diff --git a/js/src/ctypes/libffi/src/closures.c b/js/src/ctypes/libffi/src/closures.c
       
 73287 --- a/js/src/ctypes/libffi/src/closures.c
       
 73288 +++ b/js/src/ctypes/libffi/src/closures.c
       
 73289 @@ -1,11 +1,12 @@
       
 73290  /* -----------------------------------------------------------------------
       
 73291 -   closures.c - Copyright (c) 2007  Red Hat, Inc.
       
 73292 -   Copyright (C) 2007, 2009 Free Software Foundation, Inc
       
 73293 +   closures.c - Copyright (c) 2007, 2009, 2010  Red Hat, Inc.
       
 73294 +                Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc
       
 73295 +                Copyright (c) 2011 Plausible Labs Cooperative, Inc.
       
 73296  
       
 73297     Code to allocate and deallocate memory for closures.
       
 73298  
       
 73299     Permission is hereby granted, free of charge, to any person obtaining
       
 73300     a copy of this software and associated documentation files (the
       
 73301     ``Software''), to deal in the Software without restriction, including
       
 73302     without limitation the rights to use, copy, modify, merge, publish,
       
 73303     distribute, sublicense, and/or sell copies of the Software, and to
       
 73304 @@ -27,18 +28,18 @@
       
 73305  
       
 73306  #if defined __linux__ && !defined _GNU_SOURCE
       
 73307  #define _GNU_SOURCE 1
       
 73308  #endif
       
 73309  
       
 73310  #include <ffi.h>
       
 73311  #include <ffi_common.h>
       
 73312  
       
 73313 -#ifndef FFI_MMAP_EXEC_WRIT
       
 73314 -# if __gnu_linux__
       
 73315 +#if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE
       
 73316 +# if __gnu_linux__ && !defined(__ANDROID__)
       
 73317  /* This macro indicates it may be forbidden to map anonymous memory
       
 73318     with both write and execute permission.  Code compiled when this
       
 73319     option is defined will attempt to map such pages once, but if it
       
 73320     fails, it falls back to creating a temporary file in a writable and
       
 73321     executable filesystem and mapping pages from it into separate
       
 73322     locations in the virtual memory space, one location writable and
       
 73323     another executable.  */
       
 73324  #  define FFI_MMAP_EXEC_WRIT 1
       
 73325 @@ -58,17 +59,21 @@
       
 73326     don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that
       
 73327     might cause audit messages.  */
       
 73328  #  define FFI_MMAP_EXEC_SELINUX 1
       
 73329  # endif
       
 73330  #endif
       
 73331  
       
 73332  #if FFI_CLOSURES
       
 73333  
       
 73334 -# if FFI_MMAP_EXEC_WRIT
       
 73335 +# if FFI_EXEC_TRAMPOLINE_TABLE
       
 73336 +
       
 73337 +// Per-target implementation; It's unclear what can reasonable be shared between two OS/architecture implementations.
       
 73338 +
       
 73339 +# elif FFI_MMAP_EXEC_WRIT /* !FFI_EXEC_TRAMPOLINE_TABLE */
       
 73340  
       
 73341  #define USE_LOCKS 1
       
 73342  #define USE_DL_PREFIX 1
       
 73343  #ifdef __GNUC__
       
 73344  #ifndef USE_BUILTIN_FFS
       
 73345  #define USE_BUILTIN_FFS 1
       
 73346  #endif
       
 73347  #endif
       
 73348 @@ -162,25 +167,48 @@ selinux_enabled_check (void)
       
 73349  			      : (selinux_enabled = selinux_enabled_check ()))
       
 73350  
       
 73351  #else
       
 73352  
       
 73353  #define is_selinux_enabled() 0
       
 73354  
       
 73355  #endif /* !FFI_MMAP_EXEC_SELINUX */
       
 73356  
       
 73357 -#elif defined (__CYGWIN__)
       
 73358 +/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */
       
 73359 +#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX
       
 73360 +#include <stdlib.h>
       
 73361 +
       
 73362 +static int emutramp_enabled = -1;
       
 73363 +
       
 73364 +static int
       
 73365 +emutramp_enabled_check (void)
       
 73366 +{
       
 73367 +  if (getenv ("FFI_DISABLE_EMUTRAMP") == NULL)
       
 73368 +    return 1;
       
 73369 +  else
       
 73370 +    return 0;
       
 73371 +}
       
 73372 +
       
 73373 +#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \
       
 73374 +                               : (emutramp_enabled = emutramp_enabled_check ()))
       
 73375 +#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
       
 73376 +
       
 73377 +#elif defined (__CYGWIN__) || defined(__INTERIX)
       
 73378  
       
 73379  #include <sys/mman.h>
       
 73380  
       
 73381  /* Cygwin is Linux-like, but not quite that Linux-like.  */
       
 73382  #define is_selinux_enabled() 0
       
 73383  
       
 73384  #endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */
       
 73385  
       
 73386 +#ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX
       
 73387 +#define is_emutramp_enabled() 0
       
 73388 +#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
       
 73389 +
       
 73390  /* Declare all functions defined in dlmalloc.c as static.  */
       
 73391  static void *dlmalloc(size_t);
       
 73392  static void dlfree(void*);
       
 73393  static void *dlcalloc(size_t, size_t) MAYBE_UNUSED;
       
 73394  static void *dlrealloc(void *, size_t) MAYBE_UNUSED;
       
 73395  static void *dlmemalign(size_t, size_t) MAYBE_UNUSED;
       
 73396  static void *dlvalloc(size_t) MAYBE_UNUSED;
       
 73397  static int dlmallopt(int, int) MAYBE_UNUSED;
       
 73398 @@ -188,31 +216,31 @@ static size_t dlmalloc_footprint(void) M
       
 73399  static size_t dlmalloc_max_footprint(void) MAYBE_UNUSED;
       
 73400  static void** dlindependent_calloc(size_t, size_t, void**) MAYBE_UNUSED;
       
 73401  static void** dlindependent_comalloc(size_t, size_t*, void**) MAYBE_UNUSED;
       
 73402  static void *dlpvalloc(size_t) MAYBE_UNUSED;
       
 73403  static int dlmalloc_trim(size_t) MAYBE_UNUSED;
       
 73404  static size_t dlmalloc_usable_size(void*) MAYBE_UNUSED;
       
 73405  static void dlmalloc_stats(void) MAYBE_UNUSED;
       
 73406  
       
 73407 -#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__)
       
 73408 +#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX)
       
 73409  /* Use these for mmap and munmap within dlmalloc.c.  */
       
 73410  static void *dlmmap(void *, size_t, int, int, int, off_t);
       
 73411  static int dlmunmap(void *, size_t);
       
 73412 -#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) */
       
 73413 +#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */
       
 73414  
       
 73415  #define mmap dlmmap
       
 73416  #define munmap dlmunmap
       
 73417  
       
 73418  #include "dlmalloc.c"
       
 73419  
       
 73420  #undef mmap
       
 73421  #undef munmap
       
 73422  
       
 73423 -#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__)
       
 73424 +#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX)
       
 73425  
       
 73426  /* A mutex used to synchronize access to *exec* variables in this file.  */
       
 73427  static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER;
       
 73428  
       
 73429  /* A file descriptor of a temporary file from which we'll map
       
 73430     executable pages.  */
       
 73431  static int execfd = -1;
       
 73432  
       
 73433 @@ -231,17 +259,17 @@ open_temp_exec_file_name (char *name)
       
 73434    return fd;
       
 73435  }
       
 73436  
       
 73437  /* Open a temporary file in the named directory.  */
       
 73438  static int
       
 73439  open_temp_exec_file_dir (const char *dir)
       
 73440  {
       
 73441    static const char suffix[] = "/ffiXXXXXX";
       
 73442 -  int lendir = strlen (dir);
       
 73443 +  size_t lendir = strlen (dir);
       
 73444    char *tempname = __builtin_alloca (lendir + sizeof (suffix));
       
 73445  
       
 73446    if (!tempname)
       
 73447      return -1;
       
 73448  
       
 73449    memcpy (tempname, dir, lendir);
       
 73450    memcpy (tempname + lendir, suffix, sizeof (suffix));
       
 73451  
       
 73452 @@ -289,17 +317,17 @@ open_temp_exec_file_mnt (const char *mou
       
 73453      return -1;
       
 73454  
       
 73455    for (;;)
       
 73456      {
       
 73457        int fd;
       
 73458        struct mntent mnt;
       
 73459        char buf[MAXPATHLEN * 3];
       
 73460  
       
 73461 -      if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)))
       
 73462 +      if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)) == NULL)
       
 73463  	return -1;
       
 73464  
       
 73465        if (hasmntopt (&mnt, "ro")
       
 73466  	  || hasmntopt (&mnt, "noexec")
       
 73467  	  || access (mnt.mnt_dir, W_OK))
       
 73468  	continue;
       
 73469  
       
 73470        fd = open_temp_exec_file_dir (mnt.mnt_dir);
       
 73471 @@ -349,17 +377,17 @@ open_temp_exec_file_opts_next (void)
       
 73472        open_temp_exec_file_opts_idx = 0;
       
 73473        return 1;
       
 73474      }
       
 73475  
       
 73476    return 0;
       
 73477  }
       
 73478  
       
 73479  /* Return a file descriptor of a temporary zero-sized file in a
       
 73480 -   writable and exexutable filesystem.  */
       
 73481 +   writable and executable filesystem.  */
       
 73482  static int
       
 73483  open_temp_exec_file (void)
       
 73484  {
       
 73485    int fd;
       
 73486  
       
 73487    do
       
 73488      {
       
 73489        fd = open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func
       
 73490 @@ -448,16 +476,22 @@ dlmmap (void *start, size_t length, int 
       
 73491  	  && prot == (PROT_READ | PROT_WRITE)
       
 73492  	  && flags == (MAP_PRIVATE | MAP_ANONYMOUS)
       
 73493  	  && fd == -1 && offset == 0);
       
 73494  
       
 73495  #if FFI_CLOSURE_TEST
       
 73496    printf ("mapping in %zi\n", length);
       
 73497  #endif
       
 73498  
       
 73499 +  if (execfd == -1 && is_emutramp_enabled ())
       
 73500 +    {
       
 73501 +      ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset);
       
 73502 +      return ptr;
       
 73503 +    }
       
 73504 +
       
 73505    if (execfd == -1 && !is_selinux_enabled ())
       
 73506      {
       
 73507        ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset);
       
 73508  
       
 73509        if (ptr != MFAIL || (errno != EPERM && errno != EACCES))
       
 73510  	/* Cool, no need to mess with separate segments.  */
       
 73511  	return ptr;
       
 73512  
       
 73513 @@ -517,17 +551,17 @@ segment_holding_code (mstate m, char* ad
       
 73514  	&& addr < add_segment_exec_offset (sp->base, sp) + sp->size)
       
 73515        return sp;
       
 73516      if ((sp = sp->next) == 0)
       
 73517        return 0;
       
 73518    }
       
 73519  }
       
 73520  #endif
       
 73521  
       
 73522 -#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) */
       
 73523 +#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */
       
 73524  
       
 73525  /* Allocate a chunk of memory with the given size.  Returns a pointer
       
 73526     to the writable address, and sets *CODE to the executable
       
 73527     corresponding virtual address.  */
       
 73528  void *
       
 73529  ffi_closure_alloc (size_t size, void **code)
       
 73530  {
       
 73531    void *ptr;
       
 73532 diff --git a/js/src/ctypes/libffi/src/cris/ffi.c b/js/src/ctypes/libffi/src/cris/ffi.c
       
 73533 --- a/js/src/ctypes/libffi/src/cris/ffi.c
       
 73534 +++ b/js/src/ctypes/libffi/src/cris/ffi.c
       
 73535 @@ -148,31 +148,34 @@ ffi_prep_args (char *stack, extended_cif
       
 73536  	}
       
 73537        p_argv++;
       
 73538        argp += z;
       
 73539      }
       
 73540  
       
 73541    return (struct_count);
       
 73542  }
       
 73543  
       
 73544 -ffi_status
       
 73545 -ffi_prep_cif (ffi_cif * cif,
       
 73546 -	      ffi_abi abi, unsigned int nargs,
       
 73547 -	      ffi_type * rtype, ffi_type ** atypes)
       
 73548 +ffi_status FFI_HIDDEN
       
 73549 +ffi_prep_cif_core (ffi_cif * cif,
       
 73550 +	           ffi_abi abi, unsigned int isvariadic,
       
 73551 +		   unsigned int nfixedargs, unsigned int ntotalargs,
       
 73552 +	           ffi_type * rtype, ffi_type ** atypes)
       
 73553  {
       
 73554    unsigned bytes = 0;
       
 73555    unsigned int i;
       
 73556    ffi_type **ptr;
       
 73557  
       
 73558    FFI_ASSERT (cif != NULL);
       
 73559 +  FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
       
 73560 +  FFI_ASSERT(nfixedargs <= ntotalargs);
       
 73561    FFI_ASSERT (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
       
 73562  
       
 73563    cif->abi = abi;
       
 73564    cif->arg_types = atypes;
       
 73565 -  cif->nargs = nargs;
       
 73566 +  cif->nargs = ntotalargs;
       
 73567    cif->rtype = rtype;
       
 73568  
       
 73569    cif->flags = 0;
       
 73570  
       
 73571    if ((cif->rtype->size == 0)
       
 73572        && (initialize_aggregate_packed_struct (cif->rtype) != FFI_OK))
       
 73573      return FFI_BAD_TYPEDEF;
       
 73574  
       
 73575 diff --git a/js/src/ctypes/libffi/src/cris/ffitarget.h b/js/src/ctypes/libffi/src/cris/ffitarget.h
       
 73576 --- a/js/src/ctypes/libffi/src/cris/ffitarget.h
       
 73577 +++ b/js/src/ctypes/libffi/src/cris/ffitarget.h
       
 73578 @@ -1,10 +1,11 @@
       
 73579  /* -----------------------------------------------------------------*-C-*-
       
 73580 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 73581 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 73582 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 73583     Target configuration macros for CRIS.
       
 73584  
       
 73585     Permission is hereby granted, free of charge, to any person obtaining
       
 73586     a copy of this software and associated documentation files (the
       
 73587     ``Software''), to deal in the Software without restriction, including
       
 73588     without limitation the rights to use, copy, modify, merge, publish,
       
 73589     distribute, sublicense, and/or sell copies of the Software, and to
       
 73590     permit persons to whom the Software is furnished to do so, subject to
       
 73591 @@ -22,16 +23,20 @@
       
 73592     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 73593     DEALINGS IN THE SOFTWARE.
       
 73594  
       
 73595     ----------------------------------------------------------------------- */
       
 73596  
       
 73597  #ifndef LIBFFI_TARGET_H
       
 73598  #define LIBFFI_TARGET_H
       
 73599  
       
 73600 +#ifndef LIBFFI_H
       
 73601 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 73602 +#endif
       
 73603 +
       
 73604  #ifndef LIBFFI_ASM
       
 73605  typedef unsigned long          ffi_arg;
       
 73606  typedef signed long            ffi_sarg;
       
 73607  
       
 73608  typedef enum ffi_abi {
       
 73609    FFI_FIRST_ABI = 0,
       
 73610    FFI_SYSV,
       
 73611    FFI_LAST_ABI,
       
 73612 diff --git a/js/src/ctypes/libffi/src/dlmalloc.c b/js/src/ctypes/libffi/src/dlmalloc.c
       
 73613 --- a/js/src/ctypes/libffi/src/dlmalloc.c
       
 73614 +++ b/js/src/ctypes/libffi/src/dlmalloc.c
       
 73615 @@ -617,16 +617,19 @@ DEFAULT_MMAP_THRESHOLD       default: 25
       
 73616  */
       
 73617  
       
 73618  /* #define HAVE_USR_INCLUDE_MALLOC_H */
       
 73619  
       
 73620  #ifdef HAVE_USR_INCLUDE_MALLOC_H
       
 73621  #include "/usr/include/malloc.h"
       
 73622  #else /* HAVE_USR_INCLUDE_MALLOC_H */
       
 73623  
       
 73624 +/* HP-UX's stdlib.h redefines mallinfo unless _STRUCT_MALLINFO is defined */
       
 73625 +#define _STRUCT_MALLINFO
       
 73626 +
       
 73627  struct mallinfo {
       
 73628    MALLINFO_FIELD_TYPE arena;    /* non-mmapped space allocated from system */
       
 73629    MALLINFO_FIELD_TYPE ordblks;  /* number of free chunks */
       
 73630    MALLINFO_FIELD_TYPE smblks;   /* always 0 */
       
 73631    MALLINFO_FIELD_TYPE hblks;    /* always 0 */
       
 73632    MALLINFO_FIELD_TYPE hblkhd;   /* space in mmapped regions */
       
 73633    MALLINFO_FIELD_TYPE usmblks;  /* maximum total allocated space */
       
 73634    MALLINFO_FIELD_TYPE fsmblks;  /* always 0 */
       
 73635 @@ -1247,17 +1250,17 @@ extern void*     sbrk(ptrdiff_t);
       
 73636  
       
 73637  /* ------------------- size_t and alignment properties -------------------- */
       
 73638  
       
 73639  /* The byte and bit size of a size_t */
       
 73640  #define SIZE_T_SIZE         (sizeof(size_t))
       
 73641  #define SIZE_T_BITSIZE      (sizeof(size_t) << 3)
       
 73642  
       
 73643  /* Some constants coerced to size_t */
       
 73644 -/* Annoying but necessary to avoid errors on some plaftorms */
       
 73645 +/* Annoying but necessary to avoid errors on some platforms */
       
 73646  #define SIZE_T_ZERO         ((size_t)0)
       
 73647  #define SIZE_T_ONE          ((size_t)1)
       
 73648  #define SIZE_T_TWO          ((size_t)2)
       
 73649  #define TWO_SIZE_T_SIZES    (SIZE_T_SIZE<<1)
       
 73650  #define FOUR_SIZE_T_SIZES   (SIZE_T_SIZE<<2)
       
 73651  #define SIX_SIZE_T_SIZES    (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES)
       
 73652  #define HALF_MAX_SIZE_T     (MAX_SIZE_T / 2U)
       
 73653  
       
 73654 @@ -1401,17 +1404,17 @@ static int win32munmap(void* ptr, size_t
       
 73655  #endif /* HAVE_MMAP && HAVE_MREMAP */
       
 73656  
       
 73657  #if HAVE_MORECORE
       
 73658  #define CALL_MORECORE(S)     MORECORE(S)
       
 73659  #else  /* HAVE_MORECORE */
       
 73660  #define CALL_MORECORE(S)     MFAIL
       
 73661  #endif /* HAVE_MORECORE */
       
 73662  
       
 73663 -/* mstate bit set if continguous morecore disabled or failed */
       
 73664 +/* mstate bit set if contiguous morecore disabled or failed */
       
 73665  #define USE_NONCONTIGUOUS_BIT (4U)
       
 73666  
       
 73667  /* segment bit set in create_mspace_with_base */
       
 73668  #define EXTERN_BIT            (8U)
       
 73669  
       
 73670  
       
 73671  /* --------------------------- Lock preliminaries ------------------------ */
       
 73672  
       
 73673 @@ -1653,17 +1656,17 @@ struct malloc_chunk {
       
 73674    size_t               head;       /* Size and inuse bits. */
       
 73675    struct malloc_chunk* fd;         /* double links -- used only if free. */
       
 73676    struct malloc_chunk* bk;
       
 73677  };
       
 73678  
       
 73679  typedef struct malloc_chunk  mchunk;
       
 73680  typedef struct malloc_chunk* mchunkptr;
       
 73681  typedef struct malloc_chunk* sbinptr;  /* The type of bins of chunks */
       
 73682 -typedef unsigned int bindex_t;         /* Described below */
       
 73683 +typedef size_t bindex_t;               /* Described below */
       
 73684  typedef unsigned int binmap_t;         /* Described below */
       
 73685  typedef unsigned int flag_t;           /* The type of various bit flag sets */
       
 73686  
       
 73687  /* ------------------- Chunks sizes and alignments ----------------------- */
       
 73688  
       
 73689  #define MCHUNK_SIZE         (sizeof(mchunk))
       
 73690  
       
 73691  #if FOOTERS
       
 73692 @@ -3082,18 +3085,18 @@ static void internal_malloc_stats(mstate
       
 73693  
       
 73694  /*
       
 73695    Unlink steps:
       
 73696  
       
 73697    1. If x is a chained node, unlink it from its same-sized fd/bk links
       
 73698       and choose its bk node as its replacement.
       
 73699    2. If x was the last node of its size, but not a leaf node, it must
       
 73700       be replaced with a leaf node (not merely one with an open left or
       
 73701 -     right), to make sure that lefts and rights of descendents
       
 73702 -     correspond properly to bit masks.  We use the rightmost descendent
       
 73703 +     right), to make sure that lefts and rights of descendants
       
 73704 +     correspond properly to bit masks.  We use the rightmost descendant
       
 73705       of x.  We could use any other leaf, but this is easy to locate and
       
 73706       tends to counteract removal of leftmosts elsewhere, and so keeps
       
 73707       paths shorter than minimally guaranteed.  This doesn't loop much
       
 73708       because on average a node in a tree is near the bottom.
       
 73709    3. If x is the base of a chain (i.e., has parent links) relink
       
 73710       x's parent and children to x's replacement (or null if none).
       
 73711  */
       
 73712  
       
 73713 @@ -3380,17 +3383,17 @@ static void add_segment(mstate m, char* 
       
 73714    init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE);
       
 73715  
       
 73716    /* Set up segment record */
       
 73717    assert(is_aligned(ss));
       
 73718    set_size_and_pinuse_of_inuse_chunk(m, sp, ssize);
       
 73719    *ss = m->seg; /* Push current record */
       
 73720    m->seg.base = tbase;
       
 73721    m->seg.size = tsize;
       
 73722 -  set_segment_flags(&m->seg, mmapped);
       
 73723 +  (void)set_segment_flags(&m->seg, mmapped);
       
 73724    m->seg.next = ss;
       
 73725  
       
 73726    /* Insert trailing fenceposts */
       
 73727    for (;;) {
       
 73728      mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE);
       
 73729      p->head = FENCEPOST_HEAD;
       
 73730      ++nfences;
       
 73731      if ((char*)(&(nextp->head)) < old_end)
       
 73732 @@ -3540,17 +3543,17 @@ static void* sys_alloc(mstate m, size_t 
       
 73733    if (tbase != CMFAIL) {
       
 73734  
       
 73735      if ((m->footprint += tsize) > m->max_footprint)
       
 73736        m->max_footprint = m->footprint;
       
 73737  
       
 73738      if (!is_initialized(m)) { /* first-time initialization */
       
 73739        m->seg.base = m->least_addr = tbase;
       
 73740        m->seg.size = tsize;
       
 73741 -      set_segment_flags(&m->seg, mmap_flag);
       
 73742 +      (void)set_segment_flags(&m->seg, mmap_flag);
       
 73743        m->magic = mparams.magic;
       
 73744        init_bins(m);
       
 73745        if (is_global(m)) 
       
 73746          init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE);
       
 73747        else {
       
 73748          /* Offset top by embedded malloc_state */
       
 73749          mchunkptr mn = next_chunk(mem2chunk(m));
       
 73750          init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE);
       
 73751 @@ -5083,20 +5086,20 @@ History:
       
 73752        * Add linux mremap support code from HJ Liu
       
 73753  
       
 73754      V2.6.2 Tue Dec  5 06:52:55 1995  Doug Lea  (dl at gee)
       
 73755        * Integrated most documentation with the code.
       
 73756        * Add support for mmap, with help from
       
 73757          Wolfram Gloger (Gloger@lrz.uni-muenchen.de).
       
 73758        * Use last_remainder in more cases.
       
 73759        * Pack bins using idea from  colin@nyx10.cs.du.edu
       
 73760 -      * Use ordered bins instead of best-fit threshhold
       
 73761 +      * Use ordered bins instead of best-fit threshold
       
 73762        * Eliminate block-local decls to simplify tracing and debugging.
       
 73763        * Support another case of realloc via move into top
       
 73764 -      * Fix error occuring when initial sbrk_base not word-aligned.
       
 73765 +      * Fix error occurring when initial sbrk_base not word-aligned.
       
 73766        * Rely on page size for units instead of SBRK_UNIT to
       
 73767          avoid surprises about sbrk alignment conventions.
       
 73768        * Add mallinfo, mallopt. Thanks to Raymond Nijssen
       
 73769          (raymond@es.ele.tue.nl) for the suggestion.
       
 73770        * Add `pad' argument to malloc_trim and top_pad mallopt parameter.
       
 73771        * More precautions for cases where other routines call sbrk,
       
 73772          courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de).
       
 73773        * Added macros etc., allowing use in linux libc from
       
 73774 diff --git a/js/src/ctypes/libffi/src/frv/ffitarget.h b/js/src/ctypes/libffi/src/frv/ffitarget.h
       
 73775 --- a/js/src/ctypes/libffi/src/frv/ffitarget.h
       
 73776 +++ b/js/src/ctypes/libffi/src/frv/ffitarget.h
       
 73777 @@ -1,10 +1,11 @@
       
 73778  /* -----------------------------------------------------------------*-C-*-
       
 73779 -   ffitarget.h - Copyright (c) 1996-2004  Red Hat, Inc.
       
 73780 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 73781 +                 Copyright (c) 1996-2004  Red Hat, Inc.
       
 73782     Target configuration macros for FR-V
       
 73783  
       
 73784     Permission is hereby granted, free of charge, to any person obtaining
       
 73785     a copy of this software and associated documentation files (the
       
 73786     ``Software''), to deal in the Software without restriction, including
       
 73787     without limitation the rights to use, copy, modify, merge, publish,
       
 73788     distribute, sublicense, and/or sell copies of the Software, and to
       
 73789     permit persons to whom the Software is furnished to do so, subject to
       
 73790 @@ -22,16 +23,20 @@
       
 73791     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 73792     DEALINGS IN THE SOFTWARE.
       
 73793  
       
 73794     ----------------------------------------------------------------------- */
       
 73795  
       
 73796  #ifndef LIBFFI_TARGET_H
       
 73797  #define LIBFFI_TARGET_H
       
 73798  
       
 73799 +#ifndef LIBFFI_H
       
 73800 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 73801 +#endif
       
 73802 +
       
 73803  /* ---- System specific configurations ----------------------------------- */
       
 73804  
       
 73805  #ifndef LIBFFI_ASM
       
 73806  typedef unsigned long          ffi_arg;
       
 73807  typedef signed long            ffi_sarg;
       
 73808  
       
 73809  typedef enum ffi_abi {
       
 73810    FFI_FIRST_ABI = 0,
       
 73811 diff --git a/js/src/ctypes/libffi/src/ia64/ffi.c b/js/src/ctypes/libffi/src/ia64/ffi.c
       
 73812 --- a/js/src/ctypes/libffi/src/ia64/ffi.c
       
 73813 +++ b/js/src/ctypes/libffi/src/ia64/ffi.c
       
 73814 @@ -1,11 +1,12 @@
       
 73815  /* -----------------------------------------------------------------------
       
 73816 -   ffi.c - Copyright (c) 1998, 2007, 2008 Red Hat, Inc.
       
 73817 +   ffi.c - Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc.
       
 73818  	   Copyright (c) 2000 Hewlett Packard Company
       
 73819 +	   Copyright (c) 2011 Anthony Green
       
 73820     
       
 73821     IA64 Foreign Function Interface 
       
 73822  
       
 73823     Permission is hereby granted, free of charge, to any person obtaining
       
 73824     a copy of this software and associated documentation files (the
       
 73825     ``Software''), to deal in the Software without restriction, including
       
 73826     without limitation the rights to use, copy, modify, merge, publish,
       
 73827     distribute, sublicense, and/or sell copies of the Software, and to
       
 73828 @@ -319,23 +320,27 @@ ffi_call(ffi_cif *cif, void (*fn)(void),
       
 73829  
       
 73830  	case FFI_TYPE_POINTER:
       
 73831  	  stack->gp_regs[gpcount++] = (UINT64)(PTR64) *(void **)avalue[i];
       
 73832  	  break;
       
 73833  
       
 73834  	case FFI_TYPE_FLOAT:
       
 73835  	  if (gpcount < 8 && fpcount < 8)
       
 73836  	    stf_spill (&stack->fp_regs[fpcount++], *(float *)avalue[i]);
       
 73837 -	  stack->gp_regs[gpcount++] = *(UINT32 *)avalue[i];
       
 73838 +	  {
       
 73839 +	    UINT32 tmp;
       
 73840 +	    memcpy (&tmp, avalue[i], sizeof (UINT32));
       
 73841 +	    stack->gp_regs[gpcount++] = tmp;
       
 73842 +	  }
       
 73843  	  break;
       
 73844  
       
 73845  	case FFI_TYPE_DOUBLE:
       
 73846  	  if (gpcount < 8 && fpcount < 8)
       
 73847  	    stf_spill (&stack->fp_regs[fpcount++], *(double *)avalue[i]);
       
 73848 -	  stack->gp_regs[gpcount++] = *(UINT64 *)avalue[i];
       
 73849 +	  memcpy (&stack->gp_regs[gpcount++], avalue[i], sizeof (UINT64));
       
 73850  	  break;
       
 73851  
       
 73852  	case FFI_TYPE_LONGDOUBLE:
       
 73853  	  if (gpcount & 1)
       
 73854  	    gpcount++;
       
 73855  	  if (LDBL_MANT_DIG == 64 && gpcount < 8 && fpcount < 8)
       
 73856  	    stf_spill (&stack->fp_regs[fpcount++], *(__float80 *)avalue[i]);
       
 73857  	  memcpy (&stack->gp_regs[gpcount], avalue[i], 16);
       
 73858 @@ -391,17 +396,17 @@ ffi_call(ffi_cif *cif, void (*fn)(void),
       
 73859     interpreted procedure, into a closure.
       
 73860  
       
 73861     For IA64, function pointer are already pairs consisting of a code
       
 73862     pointer, and a gp pointer.  The latter is needed to access global
       
 73863     variables.  Here we set up such a pair as the first two words of
       
 73864     the closure (in the "trampoline" area), but we replace the gp
       
 73865     pointer with a pointer to the closure itself.  We also add the real
       
 73866     gp pointer to the closure.  This allows the function entry code to
       
 73867 -   both retrieve the user data, and to restire the correct gp pointer.  */
       
 73868 +   both retrieve the user data, and to restore the correct gp pointer.  */
       
 73869  
       
 73870  extern void ffi_closure_unix ();
       
 73871  
       
 73872  ffi_status
       
 73873  ffi_prep_closure_loc (ffi_closure* closure,
       
 73874  		      ffi_cif* cif,
       
 73875  		      void (*fun)(ffi_cif*,void*,void**,void*),
       
 73876  		      void *user_data,
       
 73877 @@ -420,17 +425,18 @@ ffi_prep_closure_loc (ffi_closure* closu
       
 73878      UINT64 code_pointer;	/* Pointer to ffi_closure_unix.  */
       
 73879      UINT64 fake_gp;		/* Pointer to closure, installed as gp.  */
       
 73880      UINT64 real_gp;		/* Real gp value.  */
       
 73881    };
       
 73882  
       
 73883    struct ffi_ia64_trampoline_struct *tramp;
       
 73884    struct ia64_fd *fd;
       
 73885  
       
 73886 -  FFI_ASSERT (cif->abi == FFI_UNIX);
       
 73887 +  if (cif->abi != FFI_UNIX)
       
 73888 +    return FFI_BAD_ABI;
       
 73889  
       
 73890    tramp = (struct ffi_ia64_trampoline_struct *)closure->tramp;
       
 73891    fd = (struct ia64_fd *)(void *)ffi_closure_unix;
       
 73892  
       
 73893    tramp->code_pointer = fd->code_pointer;
       
 73894    tramp->real_gp = fd->gp;
       
 73895    tramp->fake_gp = (UINT64)(PTR64)codeloc;
       
 73896    closure->cif = cif;
       
 73897 diff --git a/js/src/ctypes/libffi/src/ia64/ffitarget.h b/js/src/ctypes/libffi/src/ia64/ffitarget.h
       
 73898 --- a/js/src/ctypes/libffi/src/ia64/ffitarget.h
       
 73899 +++ b/js/src/ctypes/libffi/src/ia64/ffitarget.h
       
 73900 @@ -1,10 +1,11 @@
       
 73901  /* -----------------------------------------------------------------*-C-*-
       
 73902 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 73903 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 73904 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 73905     Target configuration macros for IA-64.
       
 73906  
       
 73907     Permission is hereby granted, free of charge, to any person obtaining
       
 73908     a copy of this software and associated documentation files (the
       
 73909     ``Software''), to deal in the Software without restriction, including
       
 73910     without limitation the rights to use, copy, modify, merge, publish,
       
 73911     distribute, sublicense, and/or sell copies of the Software, and to
       
 73912     permit persons to whom the Software is furnished to do so, subject to
       
 73913 @@ -22,16 +23,20 @@
       
 73914     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 73915     DEALINGS IN THE SOFTWARE.
       
 73916  
       
 73917     ----------------------------------------------------------------------- */
       
 73918  
       
 73919  #ifndef LIBFFI_TARGET_H
       
 73920  #define LIBFFI_TARGET_H
       
 73921  
       
 73922 +#ifndef LIBFFI_H
       
 73923 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 73924 +#endif
       
 73925 +
       
 73926  #ifndef LIBFFI_ASM
       
 73927  typedef unsigned long long          ffi_arg;
       
 73928  typedef signed long long            ffi_sarg;
       
 73929  
       
 73930  typedef enum ffi_abi {
       
 73931    FFI_FIRST_ABI = 0,
       
 73932    FFI_UNIX,   	/* Linux and all Unix variants use the same conventions	*/
       
 73933    FFI_LAST_ABI,
       
 73934 diff --git a/js/src/ctypes/libffi/src/java_raw_api.c b/js/src/ctypes/libffi/src/java_raw_api.c
       
 73935 --- a/js/src/ctypes/libffi/src/java_raw_api.c
       
 73936 +++ b/js/src/ctypes/libffi/src/java_raw_api.c
       
 73937 @@ -306,17 +306,17 @@ void ffi_java_raw_call (ffi_cif *cif, vo
       
 73938  static void
       
 73939  ffi_java_translate_args (ffi_cif *cif, void *rvalue,
       
 73940  		    void **avalue, void *user_data)
       
 73941  {
       
 73942    ffi_java_raw *raw = (ffi_java_raw*)alloca (ffi_java_raw_size (cif));
       
 73943    ffi_raw_closure *cl = (ffi_raw_closure*)user_data;
       
 73944  
       
 73945    ffi_java_ptrarray_to_raw (cif, avalue, raw);
       
 73946 -  (*cl->fun) (cif, rvalue, raw, cl->user_data);
       
 73947 +  (*cl->fun) (cif, rvalue, (ffi_raw*)raw, cl->user_data);
       
 73948    ffi_java_raw_to_rvalue (cif, rvalue);
       
 73949  }
       
 73950  
       
 73951  ffi_status
       
 73952  ffi_prep_java_raw_closure_loc (ffi_java_raw_closure* cl,
       
 73953  			       ffi_cif *cif,
       
 73954  			       void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
       
 73955  			       void *user_data,
       
 73956 diff --git a/js/src/ctypes/libffi/src/m32r/ffitarget.h b/js/src/ctypes/libffi/src/m32r/ffitarget.h
       
 73957 --- a/js/src/ctypes/libffi/src/m32r/ffitarget.h
       
 73958 +++ b/js/src/ctypes/libffi/src/m32r/ffitarget.h
       
 73959 @@ -1,10 +1,11 @@
       
 73960  /* -----------------------------------------------------------------*-C-*-
       
 73961 -   ffitarget.h - Copyright (c) 2004  Renesas Technology.
       
 73962 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 73963 +                 Copyright (c) 2004  Renesas Technology.
       
 73964     Target configuration macros for M32R.
       
 73965  
       
 73966     Permission is hereby granted, free of charge, to any person obtaining
       
 73967     a copy of this software and associated documentation files (the
       
 73968     ``Software''), to deal in the Software without restriction, including
       
 73969     without limitation the rights to use, copy, modify, merge, publish,
       
 73970     distribute, sublicense, and/or sell copies of the Software, and to
       
 73971     permit persons to whom the Software is furnished to do so, subject to
       
 73972 @@ -21,16 +22,20 @@
       
 73973     ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 73974     OTHER DEALINGS IN THE SOFTWARE.
       
 73975  
       
 73976     ----------------------------------------------------------------------- */
       
 73977  
       
 73978  #ifndef LIBFFI_TARGET_H
       
 73979  #define LIBFFI_TARGET_H
       
 73980  
       
 73981 +#ifndef LIBFFI_H
       
 73982 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 73983 +#endif
       
 73984 +
       
 73985  /* ---- Generic type definitions ----------------------------------------- */
       
 73986  
       
 73987  #ifndef LIBFFI_ASM
       
 73988  typedef unsigned long          ffi_arg;
       
 73989  typedef signed long            ffi_sarg;
       
 73990  
       
 73991  typedef enum ffi_abi
       
 73992    {
       
 73993 diff --git a/js/src/ctypes/libffi/src/m68k/ffi.c b/js/src/ctypes/libffi/src/m68k/ffi.c
       
 73994 --- a/js/src/ctypes/libffi/src/m68k/ffi.c
       
 73995 +++ b/js/src/ctypes/libffi/src/m68k/ffi.c
       
 73996 @@ -1,21 +1,30 @@
       
 73997  /* -----------------------------------------------------------------------
       
 73998     ffi.c
       
 73999 -   
       
 74000 -   m68k Foreign Function Interface 
       
 74001 +
       
 74002 +   m68k Foreign Function Interface
       
 74003     ----------------------------------------------------------------------- */
       
 74004  
       
 74005  #include <ffi.h>
       
 74006  #include <ffi_common.h>
       
 74007  
       
 74008  #include <stdlib.h>
       
 74009  #include <unistd.h>
       
 74010 +#ifdef __rtems__
       
 74011 +void rtems_cache_flush_multiple_data_lines( const void *, size_t );
       
 74012 +#else
       
 74013  #include <sys/syscall.h>
       
 74014 +#ifdef __MINT__
       
 74015 +#include <mint/mintbind.h>
       
 74016 +#include <mint/ssystem.h>
       
 74017 +#else
       
 74018  #include <asm/cachectl.h>
       
 74019 +#endif
       
 74020 +#endif
       
 74021  
       
 74022  void ffi_call_SYSV (extended_cif *,
       
 74023  		    unsigned, unsigned,
       
 74024  		    void *, void (*fn) ());
       
 74025  void *ffi_prep_args (void *stack, extended_cif *ecif);
       
 74026  void ffi_closure_SYSV (ffi_closure *);
       
 74027  void ffi_closure_struct_SYSV (ffi_closure *);
       
 74028  unsigned int ffi_closure_SYSV_inner (ffi_closure *closure,
       
 74029 @@ -30,34 +39,38 @@ ffi_prep_args (void *stack, extended_cif
       
 74030    unsigned int i;
       
 74031    void **p_argv;
       
 74032    char *argp;
       
 74033    ffi_type **p_arg;
       
 74034    void *struct_value_ptr;
       
 74035  
       
 74036    argp = stack;
       
 74037  
       
 74038 -  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
       
 74039 -      && !ecif->cif->flags)
       
 74040 +  if (
       
 74041 +#ifdef __MINT__
       
 74042 +      (ecif->cif->rtype->type == FFI_TYPE_LONGDOUBLE) ||
       
 74043 +#endif
       
 74044 +      (((ecif->cif->rtype->type == FFI_TYPE_STRUCT)
       
 74045 +        && !ecif->cif->flags)))
       
 74046      struct_value_ptr = ecif->rvalue;
       
 74047    else
       
 74048      struct_value_ptr = NULL;
       
 74049  
       
 74050    p_argv = ecif->avalue;
       
 74051  
       
 74052    for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
       
 74053         i != 0;
       
 74054         i--, p_arg++)
       
 74055      {
       
 74056 -      size_t z;
       
 74057 +      size_t z = (*p_arg)->size;
       
 74058 +      int type = (*p_arg)->type;
       
 74059  
       
 74060 -      z = (*p_arg)->size;
       
 74061        if (z < sizeof (int))
       
 74062  	{
       
 74063 -	  switch ((*p_arg)->type)
       
 74064 +	  switch (type)
       
 74065  	    {
       
 74066  	    case FFI_TYPE_SINT8:
       
 74067  	      *(signed int *) argp = (signed int) *(SINT8 *) *p_argv;
       
 74068  	      break;
       
 74069  
       
 74070  	    case FFI_TYPE_UINT8:
       
 74071  	      *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv;
       
 74072  	      break;
       
 74073 @@ -66,17 +79,24 @@ ffi_prep_args (void *stack, extended_cif
       
 74074  	      *(signed int *) argp = (signed int) *(SINT16 *) *p_argv;
       
 74075  	      break;
       
 74076  
       
 74077  	    case FFI_TYPE_UINT16:
       
 74078  	      *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv;
       
 74079  	      break;
       
 74080  
       
 74081  	    case FFI_TYPE_STRUCT:
       
 74082 +#ifdef __MINT__
       
 74083 +	      if (z == 1 || z == 2)
       
 74084 +		memcpy (argp + 2, *p_argv, z);
       
 74085 +              else
       
 74086 +		memcpy (argp, *p_argv, z);
       
 74087 +#else
       
 74088  	      memcpy (argp + sizeof (int) - z, *p_argv, z);
       
 74089 +#endif
       
 74090  	      break;
       
 74091  
       
 74092  	    default:
       
 74093  	      FFI_ASSERT (0);
       
 74094  	    }
       
 74095  	  z = sizeof (int);
       
 74096  	}
       
 74097        else
       
 74098 @@ -98,40 +118,59 @@ ffi_prep_args (void *stack, extended_cif
       
 74099  #define CIF_FLAGS_INT		1
       
 74100  #define CIF_FLAGS_DINT		2
       
 74101  #define CIF_FLAGS_FLOAT		4
       
 74102  #define CIF_FLAGS_DOUBLE	8
       
 74103  #define CIF_FLAGS_LDOUBLE	16
       
 74104  #define CIF_FLAGS_POINTER	32
       
 74105  #define CIF_FLAGS_STRUCT1	64
       
 74106  #define CIF_FLAGS_STRUCT2	128
       
 74107 +#define CIF_FLAGS_SINT8		256
       
 74108 +#define CIF_FLAGS_SINT16	512
       
 74109  
       
 74110  /* Perform machine dependent cif processing */
       
 74111  ffi_status
       
 74112  ffi_prep_cif_machdep (ffi_cif *cif)
       
 74113  {
       
 74114    /* Set the return type flag */
       
 74115    switch (cif->rtype->type)
       
 74116      {
       
 74117      case FFI_TYPE_VOID:
       
 74118        cif->flags = 0;
       
 74119        break;
       
 74120  
       
 74121      case FFI_TYPE_STRUCT:
       
 74122 +      if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT &&
       
 74123 +          cif->rtype->elements[1])
       
 74124 +        {
       
 74125 +          cif->flags = 0;
       
 74126 +          break;
       
 74127 +        }
       
 74128 +
       
 74129        switch (cif->rtype->size)
       
 74130  	{
       
 74131  	case 1:
       
 74132 +#ifdef __MINT__
       
 74133 +	  cif->flags = CIF_FLAGS_STRUCT2;
       
 74134 +#else
       
 74135  	  cif->flags = CIF_FLAGS_STRUCT1;
       
 74136 +#endif
       
 74137  	  break;
       
 74138  	case 2:
       
 74139  	  cif->flags = CIF_FLAGS_STRUCT2;
       
 74140  	  break;
       
 74141 +#ifdef __MINT__
       
 74142 +	case 3:
       
 74143 +#endif
       
 74144  	case 4:
       
 74145  	  cif->flags = CIF_FLAGS_INT;
       
 74146  	  break;
       
 74147 +#ifdef __MINT__
       
 74148 +	case 7:
       
 74149 +#endif
       
 74150  	case 8:
       
 74151  	  cif->flags = CIF_FLAGS_DINT;
       
 74152  	  break;
       
 74153  	default:
       
 74154  	  cif->flags = 0;
       
 74155  	  break;
       
 74156  	}
       
 74157        break;
       
 74158 @@ -139,29 +178,43 @@ ffi_prep_cif_machdep (ffi_cif *cif)
       
 74159      case FFI_TYPE_FLOAT:
       
 74160        cif->flags = CIF_FLAGS_FLOAT;
       
 74161        break;
       
 74162  
       
 74163      case FFI_TYPE_DOUBLE:
       
 74164        cif->flags = CIF_FLAGS_DOUBLE;
       
 74165        break;
       
 74166  
       
 74167 +#if (FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE)
       
 74168      case FFI_TYPE_LONGDOUBLE:
       
 74169 +#ifdef __MINT__
       
 74170 +      cif->flags = 0;
       
 74171 +#else
       
 74172        cif->flags = CIF_FLAGS_LDOUBLE;
       
 74173 +#endif
       
 74174        break;
       
 74175 +#endif
       
 74176  
       
 74177      case FFI_TYPE_POINTER:
       
 74178        cif->flags = CIF_FLAGS_POINTER;
       
 74179        break;
       
 74180  
       
 74181      case FFI_TYPE_SINT64:
       
 74182      case FFI_TYPE_UINT64:
       
 74183        cif->flags = CIF_FLAGS_DINT;
       
 74184        break;
       
 74185  
       
 74186 +    case FFI_TYPE_SINT16:
       
 74187 +      cif->flags = CIF_FLAGS_SINT16;
       
 74188 +      break;
       
 74189 +
       
 74190 +    case FFI_TYPE_SINT8:
       
 74191 +      cif->flags = CIF_FLAGS_SINT8;
       
 74192 +      break;
       
 74193 +
       
 74194      default:
       
 74195        cif->flags = CIF_FLAGS_INT;
       
 74196        break;
       
 74197      }
       
 74198  
       
 74199    return FFI_OK;
       
 74200  }
       
 74201  
       
 74202 @@ -207,16 +260,36 @@ ffi_prep_incoming_args_SYSV (char *stack
       
 74203    argp = stack;
       
 74204    p_argv = avalue;
       
 74205  
       
 74206    for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
       
 74207      {
       
 74208        size_t z;
       
 74209  
       
 74210        z = (*p_arg)->size;
       
 74211 +#ifdef __MINT__
       
 74212 +      if (cif->flags &&
       
 74213 +          cif->rtype->type == FFI_TYPE_STRUCT &&
       
 74214 +          (z == 1 || z == 2))
       
 74215 + 	{
       
 74216 +	  *p_argv = (void *) (argp + 2);
       
 74217 +
       
 74218 +	  z = 4;
       
 74219 +	}
       
 74220 +      else
       
 74221 +      if (cif->flags &&
       
 74222 +          cif->rtype->type == FFI_TYPE_STRUCT &&
       
 74223 +          (z == 3 || z == 4))
       
 74224 + 	{
       
 74225 +	  *p_argv = (void *) (argp);
       
 74226 +
       
 74227 +	  z = 4;
       
 74228 +	}
       
 74229 +      else
       
 74230 +#endif
       
 74231        if (z <= 4)
       
 74232  	{
       
 74233  	  *p_argv = (void *) (argp + 4 - z);
       
 74234  
       
 74235  	  z = 4;
       
 74236  	}
       
 74237        else
       
 74238  	{
       
 74239 @@ -250,29 +323,40 @@ ffi_closure_SYSV_inner (ffi_closure *clo
       
 74240  
       
 74241  ffi_status
       
 74242  ffi_prep_closure_loc (ffi_closure* closure,
       
 74243  		      ffi_cif* cif,
       
 74244  		      void (*fun)(ffi_cif*,void*,void**,void*),
       
 74245  		      void *user_data,
       
 74246  		      void *codeloc)
       
 74247  {
       
 74248 -  FFI_ASSERT (cif->abi == FFI_SYSV);
       
 74249 +  if (cif->abi != FFI_SYSV)
       
 74250 +    return FFI_BAD_ABI;
       
 74251  
       
 74252    *(unsigned short *)closure->tramp = 0x207c;
       
 74253    *(void **)(closure->tramp + 2) = codeloc;
       
 74254    *(unsigned short *)(closure->tramp + 6) = 0x4ef9;
       
 74255 -  if (cif->rtype->type == FFI_TYPE_STRUCT
       
 74256 -      && !cif->flags)
       
 74257 +
       
 74258 +  if (
       
 74259 +#ifdef __MINT__
       
 74260 +      (cif->rtype->type == FFI_TYPE_LONGDOUBLE) ||
       
 74261 +#endif
       
 74262 +      (((cif->rtype->type == FFI_TYPE_STRUCT)
       
 74263 +         && !cif->flags)))
       
 74264      *(void **)(closure->tramp + 8) = ffi_closure_struct_SYSV;
       
 74265    else
       
 74266      *(void **)(closure->tramp + 8) = ffi_closure_SYSV;
       
 74267  
       
 74268 +#ifdef __rtems__
       
 74269 +  rtems_cache_flush_multiple_data_lines( codeloc, FFI_TRAMPOLINE_SIZE );
       
 74270 +#elif defined(__MINT__)
       
 74271 +  Ssystem(S_FLUSHCACHE, codeloc, FFI_TRAMPOLINE_SIZE);
       
 74272 +#else
       
 74273    syscall(SYS_cacheflush, codeloc, FLUSH_SCOPE_LINE,
       
 74274  	  FLUSH_CACHE_BOTH, FFI_TRAMPOLINE_SIZE);
       
 74275 +#endif
       
 74276  
       
 74277    closure->cif  = cif;
       
 74278    closure->user_data = user_data;
       
 74279    closure->fun  = fun;
       
 74280  
       
 74281    return FFI_OK;
       
 74282  }
       
 74283 -
       
 74284 diff --git a/js/src/ctypes/libffi/src/m68k/ffitarget.h b/js/src/ctypes/libffi/src/m68k/ffitarget.h
       
 74285 --- a/js/src/ctypes/libffi/src/m68k/ffitarget.h
       
 74286 +++ b/js/src/ctypes/libffi/src/m68k/ffitarget.h
       
 74287 @@ -1,10 +1,11 @@
       
 74288  /* -----------------------------------------------------------------*-C-*-
       
 74289 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 74290 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 74291 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 74292     Target configuration macros for Motorola 68K.
       
 74293  
       
 74294     Permission is hereby granted, free of charge, to any person obtaining
       
 74295     a copy of this software and associated documentation files (the
       
 74296     ``Software''), to deal in the Software without restriction, including
       
 74297     without limitation the rights to use, copy, modify, merge, publish,
       
 74298     distribute, sublicense, and/or sell copies of the Software, and to
       
 74299     permit persons to whom the Software is furnished to do so, subject to
       
 74300 @@ -22,16 +23,20 @@
       
 74301     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 74302     DEALINGS IN THE SOFTWARE.
       
 74303  
       
 74304     ----------------------------------------------------------------------- */
       
 74305  
       
 74306  #ifndef LIBFFI_TARGET_H
       
 74307  #define LIBFFI_TARGET_H
       
 74308  
       
 74309 +#ifndef LIBFFI_H
       
 74310 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 74311 +#endif
       
 74312 +
       
 74313  #ifndef LIBFFI_ASM
       
 74314  typedef unsigned long          ffi_arg;
       
 74315  typedef signed long            ffi_sarg;
       
 74316  
       
 74317  typedef enum ffi_abi {
       
 74318    FFI_FIRST_ABI = 0,
       
 74319    FFI_SYSV,
       
 74320    FFI_LAST_ABI,
       
 74321 diff --git a/js/src/ctypes/libffi/src/m68k/sysv.S b/js/src/ctypes/libffi/src/m68k/sysv.S
       
 74322 --- a/js/src/ctypes/libffi/src/m68k/sysv.S
       
 74323 +++ b/js/src/ctypes/libffi/src/m68k/sysv.S
       
 74324 @@ -1,13 +1,16 @@
       
 74325  /* -----------------------------------------------------------------------
       
 74326 -   sysv.S - Copyright (c) 1998 Andreas Schwab
       
 74327 -	    Copyright (c) 2008 Red Hat, Inc. 
       
 74328 -   
       
 74329 -   m68k Foreign Function Interface 
       
 74330 +	
       
 74331 +   sysv.S - Copyright (c) 2012 Alan Hourihane
       
 74332 +	    Copyright (c) 1998, 2012 Andreas Schwab
       
 74333 +	    Copyright (c) 2008 Red Hat, Inc.
       
 74334 +	    Copyright (c) 2012 Thorsten Glaser
       
 74335 +
       
 74336 +   m68k Foreign Function Interface
       
 74337  
       
 74338     Permission is hereby granted, free of charge, to any person obtaining
       
 74339     a copy of this software and associated documentation files (the
       
 74340     ``Software''), to deal in the Software without restriction, including
       
 74341     without limitation the rights to use, copy, modify, merge, publish,
       
 74342     distribute, sublicense, and/or sell copies of the Software, and to
       
 74343     permit persons to whom the Software is furnished to do so, subject to
       
 74344     the following conditions:
       
 74345 @@ -36,61 +39,76 @@
       
 74346  #define CFI_ENDPROC()		.cfi_endproc
       
 74347  #else
       
 74348  #define CFI_STARTPROC()
       
 74349  #define CFI_OFFSET(reg,off)
       
 74350  #define CFI_DEF_CFA(reg,off)
       
 74351  #define CFI_ENDPROC()
       
 74352  #endif
       
 74353  
       
 74354 +#ifdef __MINT__
       
 74355 +#define CALLFUNC(funcname) _ ## funcname
       
 74356 +#else
       
 74357 +#define CALLFUNC(funcname) funcname
       
 74358 +#endif
       
 74359 +
       
 74360  	.text
       
 74361  
       
 74362 -	.globl	ffi_call_SYSV
       
 74363 -	.type	ffi_call_SYSV,@function
       
 74364 +	.globl	CALLFUNC(ffi_call_SYSV)
       
 74365 +	.type	CALLFUNC(ffi_call_SYSV),@function
       
 74366  	.align	4
       
 74367  
       
 74368 -ffi_call_SYSV:
       
 74369 +CALLFUNC(ffi_call_SYSV):
       
 74370  	CFI_STARTPROC()
       
 74371  	link	%fp,#0
       
 74372  	CFI_OFFSET(14,-8)
       
 74373  	CFI_DEF_CFA(14,8)
       
 74374  	move.l	%d2,-(%sp)
       
 74375  	CFI_OFFSET(2,-12)
       
 74376  
       
 74377  	| Make room for all of the new args.
       
 74378  	sub.l	12(%fp),%sp
       
 74379  
       
 74380  	| Call ffi_prep_args
       
 74381  	move.l	8(%fp),-(%sp)
       
 74382  	pea	4(%sp)
       
 74383  #if !defined __PIC__
       
 74384 -	jsr	ffi_prep_args
       
 74385 +	jsr	CALLFUNC(ffi_prep_args)
       
 74386  #else
       
 74387 -	bsr.l	ffi_prep_args@PLTPC
       
 74388 +	bsr.l	CALLFUNC(ffi_prep_args@PLTPC)
       
 74389  #endif
       
 74390  	addq.l	#8,%sp	
       
 74391  
       
 74392  	| Pass pointer to struct value, if any
       
 74393 +#ifdef __MINT__
       
 74394 +	move.l	%d0,%a1
       
 74395 +#else
       
 74396  	move.l	%a0,%a1
       
 74397 +#endif
       
 74398  
       
 74399  	| Call the function
       
 74400  	move.l	24(%fp),%a0
       
 74401  	jsr	(%a0)
       
 74402  
       
 74403  	| Remove the space we pushed for the args
       
 74404  	add.l	12(%fp),%sp
       
 74405  
       
 74406  	| Load the pointer to storage for the return value
       
 74407  	move.l	20(%fp),%a1
       
 74408  
       
 74409  	| Load the return type code 
       
 74410  	move.l	16(%fp),%d2
       
 74411  
       
 74412  	| If the return value pointer is NULL, assume no return value.
       
 74413 +	| NOTE: On the mc68000, tst on an address register is not supported.
       
 74414 +#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__)
       
 74415 +	cmp.w	#0, %a1
       
 74416 +#else
       
 74417  	tst.l	%a1
       
 74418 +#endif
       
 74419  	jbeq	noretval
       
 74420  
       
 74421  	btst	#0,%d2
       
 74422  	jbeq	retlongint
       
 74423  	move.l	%d0,(%a1)
       
 74424  	jbra	epilogue
       
 74425  
       
 74426  retlongint:
       
 74427 @@ -98,137 +116,215 @@ retlongint:
       
 74428  	jbeq	retfloat
       
 74429  	move.l	%d0,(%a1)
       
 74430  	move.l	%d1,4(%a1)
       
 74431  	jbra	epilogue
       
 74432  
       
 74433  retfloat:
       
 74434  	btst	#2,%d2
       
 74435  	jbeq	retdouble
       
 74436 +#if defined(__MC68881__) || defined(__HAVE_68881__)
       
 74437  	fmove.s	%fp0,(%a1)
       
 74438 +#else
       
 74439 +	move.l	%d0,(%a1)
       
 74440 +#endif
       
 74441  	jbra	epilogue
       
 74442  
       
 74443  retdouble:
       
 74444  	btst	#3,%d2
       
 74445  	jbeq	retlongdouble
       
 74446 +#if defined(__MC68881__) || defined(__HAVE_68881__)
       
 74447  	fmove.d	%fp0,(%a1)
       
 74448 +#else
       
 74449 +	move.l	%d0,(%a1)+
       
 74450 +	move.l	%d1,(%a1)
       
 74451 +#endif
       
 74452  	jbra	epilogue
       
 74453  
       
 74454  retlongdouble:
       
 74455  	btst	#4,%d2
       
 74456  	jbeq	retpointer
       
 74457 +#if defined(__MC68881__) || defined(__HAVE_68881__)
       
 74458  	fmove.x	%fp0,(%a1)
       
 74459 +#else
       
 74460 +	move.l	%d0,(%a1)+
       
 74461 +	move.l	%d1,(%a1)+
       
 74462 +	move.l	%d2,(%a1)
       
 74463 +#endif
       
 74464  	jbra	epilogue
       
 74465  
       
 74466  retpointer:
       
 74467  	btst	#5,%d2
       
 74468  	jbeq	retstruct1
       
 74469 +#ifdef __MINT__
       
 74470 +	move.l	%d0,(%a1)
       
 74471 +#else
       
 74472  	move.l	%a0,(%a1)
       
 74473 +#endif
       
 74474  	jbra	epilogue
       
 74475  
       
 74476  retstruct1:
       
 74477  	btst	#6,%d2
       
 74478  	jbeq	retstruct2
       
 74479  	move.b	%d0,(%a1)
       
 74480  	jbra	epilogue
       
 74481  
       
 74482  retstruct2:
       
 74483  	btst	#7,%d2
       
 74484 +	jbeq	retsint8
       
 74485 +	move.w	%d0,(%a1)
       
 74486 +	jbra	epilogue
       
 74487 +
       
 74488 +retsint8:
       
 74489 +	btst	#8,%d2
       
 74490 +	jbeq	retsint16
       
 74491 +	| NOTE: On the mc68000, extb is not supported. 8->16, then 16->32.
       
 74492 +#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__)
       
 74493 +	ext.w	%d0
       
 74494 +	ext.l	%d0
       
 74495 +#else
       
 74496 +	extb.l	%d0
       
 74497 +#endif
       
 74498 +	move.l	%d0,(%a1)
       
 74499 +	jbra	epilogue
       
 74500 +
       
 74501 +retsint16:
       
 74502 +	btst	#9,%d2
       
 74503  	jbeq	noretval
       
 74504 -	move.w	%d0,(%a1)
       
 74505 +	ext.l	%d0
       
 74506 +	move.l	%d0,(%a1)
       
 74507  
       
 74508  noretval:
       
 74509  epilogue:
       
 74510  	move.l	(%sp)+,%d2
       
 74511  	unlk	%fp
       
 74512  	rts
       
 74513  	CFI_ENDPROC()
       
 74514 -	.size	ffi_call_SYSV,.-ffi_call_SYSV
       
 74515 +	.size	CALLFUNC(ffi_call_SYSV),.-CALLFUNC(ffi_call_SYSV)
       
 74516  
       
 74517 -	.globl	ffi_closure_SYSV
       
 74518 -	.type	ffi_closure_SYSV, @function
       
 74519 +	.globl	CALLFUNC(ffi_closure_SYSV)
       
 74520 +	.type	CALLFUNC(ffi_closure_SYSV), @function
       
 74521  	.align	4
       
 74522  
       
 74523 -ffi_closure_SYSV:
       
 74524 +CALLFUNC(ffi_closure_SYSV):
       
 74525  	CFI_STARTPROC()
       
 74526  	link	%fp,#-12
       
 74527  	CFI_OFFSET(14,-8)
       
 74528  	CFI_DEF_CFA(14,8)
       
 74529  	move.l	%sp,-12(%fp)
       
 74530  	pea	8(%fp)
       
 74531  	pea	-12(%fp)
       
 74532  	move.l	%a0,-(%sp)
       
 74533  #if !defined __PIC__
       
 74534 -	jsr	ffi_closure_SYSV_inner
       
 74535 +	jsr	CALLFUNC(ffi_closure_SYSV_inner)
       
 74536  #else
       
 74537 -	bsr.l	ffi_closure_SYSV_inner@PLTPC
       
 74538 +	bsr.l	CALLFUNC(ffi_closure_SYSV_inner@PLTPC)
       
 74539  #endif
       
 74540  
       
 74541  	lsr.l	#1,%d0
       
 74542  	jne	1f
       
 74543  	jcc	.Lcls_epilogue
       
 74544 +	| CIF_FLAGS_INT
       
 74545  	move.l	-12(%fp),%d0
       
 74546  .Lcls_epilogue:
       
 74547 +	| no CIF_FLAGS_*
       
 74548  	unlk	%fp
       
 74549  	rts
       
 74550  1:
       
 74551  	lea	-12(%fp),%a0
       
 74552  	lsr.l	#2,%d0
       
 74553  	jne	1f
       
 74554  	jcs	.Lcls_ret_float
       
 74555 +	| CIF_FLAGS_DINT
       
 74556  	move.l	(%a0)+,%d0
       
 74557  	move.l	(%a0),%d1
       
 74558  	jra	.Lcls_epilogue
       
 74559  .Lcls_ret_float:
       
 74560 +#if defined(__MC68881__) || defined(__HAVE_68881__)
       
 74561  	fmove.s	(%a0),%fp0
       
 74562 +#else
       
 74563 +	move.l	(%a0),%d0
       
 74564 +#endif
       
 74565  	jra	.Lcls_epilogue
       
 74566  1:
       
 74567  	lsr.l	#2,%d0
       
 74568  	jne	1f
       
 74569  	jcs	.Lcls_ret_ldouble
       
 74570 +	| CIF_FLAGS_DOUBLE
       
 74571 +#if defined(__MC68881__) || defined(__HAVE_68881__)
       
 74572  	fmove.d	(%a0),%fp0
       
 74573 +#else
       
 74574 +	move.l	(%a0)+,%d0
       
 74575 +	move.l	(%a0),%d1
       
 74576 +#endif
       
 74577  	jra	.Lcls_epilogue
       
 74578  .Lcls_ret_ldouble:
       
 74579 +#if defined(__MC68881__) || defined(__HAVE_68881__)
       
 74580  	fmove.x	(%a0),%fp0
       
 74581 +#else
       
 74582 +	move.l	(%a0)+,%d0
       
 74583 +	move.l	(%a0)+,%d1
       
 74584 +	move.l	(%a0),%d2
       
 74585 +#endif
       
 74586  	jra	.Lcls_epilogue
       
 74587  1:
       
 74588  	lsr.l	#2,%d0
       
 74589 -	jne	.Lcls_ret_struct2
       
 74590 +	jne	1f
       
 74591  	jcs	.Lcls_ret_struct1
       
 74592 +	| CIF_FLAGS_POINTER
       
 74593  	move.l	(%a0),%a0
       
 74594  	move.l	%a0,%d0
       
 74595  	jra	.Lcls_epilogue
       
 74596  .Lcls_ret_struct1:
       
 74597  	move.b	(%a0),%d0
       
 74598  	jra	.Lcls_epilogue
       
 74599 -.Lcls_ret_struct2:
       
 74600 +1:
       
 74601 +	lsr.l	#2,%d0
       
 74602 +	jne	1f
       
 74603 +	jcs	.Lcls_ret_sint8
       
 74604 +	| CIF_FLAGS_STRUCT2
       
 74605  	move.w	(%a0),%d0
       
 74606  	jra	.Lcls_epilogue
       
 74607 +.Lcls_ret_sint8:
       
 74608 +	move.l	(%a0),%d0
       
 74609 +	| NOTE: On the mc68000, extb is not supported. 8->16, then 16->32.
       
 74610 +#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__)
       
 74611 +	ext.w	%d0
       
 74612 +	ext.l	%d0
       
 74613 +#else
       
 74614 +	extb.l	%d0
       
 74615 +#endif
       
 74616 +	jra	.Lcls_epilogue
       
 74617 +1:
       
 74618 +	| CIF_FLAGS_SINT16
       
 74619 +	move.l	(%a0),%d0
       
 74620 +	ext.l	%d0
       
 74621 +	jra	.Lcls_epilogue
       
 74622  	CFI_ENDPROC()
       
 74623  
       
 74624 -	.size	ffi_closure_SYSV,.-ffi_closure_SYSV
       
 74625 +	.size	CALLFUNC(ffi_closure_SYSV),.-CALLFUNC(ffi_closure_SYSV)
       
 74626  
       
 74627 -	.globl	ffi_closure_struct_SYSV
       
 74628 -	.type	ffi_closure_struct_SYSV, @function
       
 74629 +	.globl	CALLFUNC(ffi_closure_struct_SYSV)
       
 74630 +	.type	CALLFUNC(ffi_closure_struct_SYSV), @function
       
 74631  	.align	4
       
 74632  
       
 74633 -ffi_closure_struct_SYSV:
       
 74634 +CALLFUNC(ffi_closure_struct_SYSV):
       
 74635  	CFI_STARTPROC()
       
 74636  	link	%fp,#0
       
 74637  	CFI_OFFSET(14,-8)
       
 74638  	CFI_DEF_CFA(14,8)
       
 74639  	move.l	%sp,-12(%fp)
       
 74640  	pea	8(%fp)
       
 74641  	move.l	%a1,-(%sp)
       
 74642  	move.l	%a0,-(%sp)
       
 74643  #if !defined __PIC__
       
 74644 -	jsr	ffi_closure_SYSV_inner
       
 74645 +	jsr	CALLFUNC(ffi_closure_SYSV_inner)
       
 74646  #else
       
 74647 -	bsr.l	ffi_closure_SYSV_inner@PLTPC
       
 74648 +	bsr.l	CALLFUNC(ffi_closure_SYSV_inner@PLTPC)
       
 74649  #endif
       
 74650  	unlk	%fp
       
 74651  	rts
       
 74652  	CFI_ENDPROC()
       
 74653 -	.size	ffi_closure_struct_SYSV,.-ffi_closure_struct_SYSV
       
 74654 +	.size	CALLFUNC(ffi_closure_struct_SYSV),.-CALLFUNC(ffi_closure_struct_SYSV)
       
 74655  
       
 74656  #if defined __ELF__ && defined __linux__
       
 74657  	.section	.note.GNU-stack,"",@progbits
       
 74658  #endif
       
 74659 diff --git a/js/src/ctypes/libffi/src/m88k/ffi.c b/js/src/ctypes/libffi/src/m88k/ffi.c
       
 74660 new file mode 100644
       
 74661 --- /dev/null
       
 74662 +++ b/js/src/ctypes/libffi/src/m88k/ffi.c
       
 74663 @@ -0,0 +1,400 @@
       
 74664 +/*
       
 74665 + * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
       
 74666 + *
       
 74667 + * Permission is hereby granted, free of charge, to any person obtaining
       
 74668 + * a copy of this software and associated documentation files (the
       
 74669 + * ``Software''), to deal in the Software without restriction, including
       
 74670 + * without limitation the rights to use, copy, modify, merge, publish,
       
 74671 + * distribute, sublicense, and/or sell copies of the Software, and to
       
 74672 + * permit persons to whom the Software is furnished to do so, subject to
       
 74673 + * the following conditions:
       
 74674 + * 
       
 74675 + * The above copyright notice and this permission notice shall be included
       
 74676 + * in all copies or substantial portions of the Software.
       
 74677 + * 
       
 74678 + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 74679 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 74680 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 74681 + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 74682 + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 74683 + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 74684 + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
 74685 + */
       
 74686 +
       
 74687 +/*
       
 74688 + * m88k Foreign Function Interface
       
 74689 + *
       
 74690 + * This file attempts to provide all the FFI entry points which can reliably
       
 74691 + * be implemented in C.
       
 74692 + *
       
 74693 + * Only OpenBSD/m88k is currently supported; other platforms (such as
       
 74694 + * Motorola's SysV/m88k) could be supported with the following tweaks:
       
 74695 + *
       
 74696 + * - non-OpenBSD systems use an `outgoing parameter area' as part of the
       
 74697 + *   88BCS calling convention, which is not supported under OpenBSD from
       
 74698 + *   release 3.6 onwards.  Supporting it should be as easy as taking it
       
 74699 + *   into account when adjusting the stack, in the assembly code.
       
 74700 + *
       
 74701 + * - the logic deciding whether a function argument gets passed through
       
 74702 + *   registers, or on the stack, has changed several times in OpenBSD in
       
 74703 + *   edge cases (especially for structs larger than 32 bytes being passed
       
 74704 + *   by value). The code below attemps to match the logic used by the
       
 74705 + *   system compiler of OpenBSD 5.3, i.e. gcc 3.3.6 with many m88k backend
       
 74706 + *   fixes.
       
 74707 + */
       
 74708 +
       
 74709 +#include <ffi.h>
       
 74710 +#include <ffi_common.h>
       
 74711 +
       
 74712 +#include <stdlib.h>
       
 74713 +#include <unistd.h>
       
 74714 +
       
 74715 +void ffi_call_OBSD (unsigned int, extended_cif *, unsigned int, void *,
       
 74716 +		    void (*fn) ());
       
 74717 +void *ffi_prep_args (void *, extended_cif *);
       
 74718 +void ffi_closure_OBSD (ffi_closure *);
       
 74719 +void ffi_closure_struct_OBSD (ffi_closure *);
       
 74720 +unsigned int ffi_closure_OBSD_inner (ffi_closure *, void *, unsigned int *,
       
 74721 +				     char *);
       
 74722 +void ffi_cacheflush_OBSD (unsigned int, unsigned int);
       
 74723 +
       
 74724 +#define CIF_FLAGS_INT		(1 << 0)
       
 74725 +#define CIF_FLAGS_DINT		(1 << 1)
       
 74726 +
       
 74727 +/*
       
 74728 + * Foreign Function Interface API
       
 74729 + */
       
 74730 +
       
 74731 +/* ffi_prep_args is called by the assembly routine once stack space has
       
 74732 +   been allocated for the function's arguments.  */
       
 74733 +
       
 74734 +void *
       
 74735 +ffi_prep_args (void *stack, extended_cif *ecif)
       
 74736 +{
       
 74737 +  unsigned int i;
       
 74738 +  void **p_argv;
       
 74739 +  char *argp, *stackp;
       
 74740 +  unsigned int *regp;
       
 74741 +  unsigned int regused;
       
 74742 +  ffi_type **p_arg;
       
 74743 +  void *struct_value_ptr;
       
 74744 +
       
 74745 +  regp = (unsigned int *)stack;
       
 74746 +  stackp = (char *)(regp + 8);
       
 74747 +  regused = 0;
       
 74748 +
       
 74749 +  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
       
 74750 +      && !ecif->cif->flags)
       
 74751 +    struct_value_ptr = ecif->rvalue;
       
 74752 +  else
       
 74753 +    struct_value_ptr = NULL;
       
 74754 +
       
 74755 +  p_argv = ecif->avalue;
       
 74756 +
       
 74757 +  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i != 0; i--, p_arg++)
       
 74758 +    {
       
 74759 +      size_t z;
       
 74760 +      unsigned short t, a;
       
 74761 +
       
 74762 +      z = (*p_arg)->size;
       
 74763 +      t = (*p_arg)->type;
       
 74764 +      a = (*p_arg)->alignment;
       
 74765 +
       
 74766 +      /*
       
 74767 +       * Figure out whether the argument can be passed through registers
       
 74768 +       * or on the stack.
       
 74769 +       * The rule is that registers can only receive simple types not larger
       
 74770 +       * than 64 bits, or structs the exact size of a register and aligned to
       
 74771 +       * the size of a register.
       
 74772 +       */
       
 74773 +      if (t == FFI_TYPE_STRUCT)
       
 74774 +	{
       
 74775 +	  if (z == sizeof (int) && a == sizeof (int) && regused < 8)
       
 74776 +	    argp = (char *)regp;
       
 74777 +	  else
       
 74778 +	    argp = stackp;
       
 74779 +	}
       
 74780 +      else
       
 74781 +	{
       
 74782 +	  if (z > sizeof (int) && regused < 8 - 1)
       
 74783 +	    {
       
 74784 +	      /* align to an even register pair */
       
 74785 +	      if (regused & 1)
       
 74786 +		{
       
 74787 +		  regp++;
       
 74788 +		  regused++;
       
 74789 +		}
       
 74790 +	    }
       
 74791 +	  if (regused < 8)
       
 74792 +	    argp = (char *)regp;
       
 74793 +	  else
       
 74794 +	    argp = stackp;
       
 74795 +	}
       
 74796 +
       
 74797 +      /* Enforce proper stack alignment of 64-bit types */
       
 74798 +      if (argp == stackp && a > sizeof (int))
       
 74799 +	{
       
 74800 +	  stackp = (char *) ALIGN(stackp, a);
       
 74801 +	  argp = stackp;
       
 74802 +	}
       
 74803 +
       
 74804 +      switch (t)
       
 74805 +	{
       
 74806 +	case FFI_TYPE_SINT8:
       
 74807 +	  *(signed int *) argp = (signed int) *(SINT8 *) *p_argv;
       
 74808 +	  break;
       
 74809 +
       
 74810 +	case FFI_TYPE_UINT8:
       
 74811 +	  *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv;
       
 74812 +	  break;
       
 74813 +
       
 74814 +	case FFI_TYPE_SINT16:
       
 74815 +	  *(signed int *) argp = (signed int) *(SINT16 *) *p_argv;
       
 74816 +	  break;
       
 74817 +
       
 74818 +	case FFI_TYPE_UINT16:
       
 74819 +	  *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv;
       
 74820 +	  break;
       
 74821 +
       
 74822 +	case FFI_TYPE_INT:
       
 74823 +	case FFI_TYPE_FLOAT:
       
 74824 +	case FFI_TYPE_UINT32:
       
 74825 +	case FFI_TYPE_SINT32:
       
 74826 +	case FFI_TYPE_POINTER:
       
 74827 +	  *(unsigned int *) argp = *(unsigned int *) *p_argv;
       
 74828 +	  break;
       
 74829 +
       
 74830 +	case FFI_TYPE_DOUBLE:
       
 74831 +	case FFI_TYPE_UINT64:
       
 74832 +	case FFI_TYPE_SINT64:
       
 74833 +	case FFI_TYPE_STRUCT:
       
 74834 +	  memcpy (argp, *p_argv, z);
       
 74835 +	  break;
       
 74836 +
       
 74837 +	default:
       
 74838 +	  FFI_ASSERT (0);
       
 74839 +	}
       
 74840 +
       
 74841 +      /* Align if necessary.  */
       
 74842 +      if ((sizeof (int) - 1) & z)
       
 74843 +	z = ALIGN(z, sizeof (int));
       
 74844 +
       
 74845 +      p_argv++;
       
 74846 +
       
 74847 +      /* Be careful, once all registers are filled, and about to continue
       
 74848 +         on stack, regp == stackp.  Therefore the check for regused as well. */
       
 74849 +      if (argp == (char *)regp && regused < 8)
       
 74850 +	{
       
 74851 +	  regp += z / sizeof (int);
       
 74852 +	  regused += z / sizeof (int);
       
 74853 +	}
       
 74854 +      else
       
 74855 +	stackp += z;
       
 74856 +    }
       
 74857 +
       
 74858 +  return struct_value_ptr;
       
 74859 +}
       
 74860 +
       
 74861 +/* Perform machine dependent cif processing */
       
 74862 +ffi_status
       
 74863 +ffi_prep_cif_machdep (ffi_cif *cif)
       
 74864 +{
       
 74865 +  /* Set the return type flag */
       
 74866 +  switch (cif->rtype->type)
       
 74867 +    {
       
 74868 +    case FFI_TYPE_VOID:
       
 74869 +      cif->flags = 0;
       
 74870 +      break;
       
 74871 +
       
 74872 +    case FFI_TYPE_STRUCT:
       
 74873 +      if (cif->rtype->size == sizeof (int) &&
       
 74874 +	  cif->rtype->alignment == sizeof (int))
       
 74875 +	cif->flags = CIF_FLAGS_INT;
       
 74876 +      else
       
 74877 +	cif->flags = 0;
       
 74878 +      break;
       
 74879 +
       
 74880 +    case FFI_TYPE_DOUBLE:
       
 74881 +    case FFI_TYPE_SINT64:
       
 74882 +    case FFI_TYPE_UINT64:
       
 74883 +      cif->flags = CIF_FLAGS_DINT;
       
 74884 +      break;
       
 74885 +
       
 74886 +    default:
       
 74887 +      cif->flags = CIF_FLAGS_INT;
       
 74888 +      break;
       
 74889 +    }
       
 74890 +
       
 74891 +  return FFI_OK;
       
 74892 +}
       
 74893 +
       
 74894 +void
       
 74895 +ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue)
       
 74896 +{
       
 74897 +  extended_cif ecif;
       
 74898 +
       
 74899 +  ecif.cif = cif;
       
 74900 +  ecif.avalue = avalue;
       
 74901 +
       
 74902 +  /* If the return value is a struct and we don't have a return value
       
 74903 +     address then we need to make one.  */
       
 74904 +
       
 74905 +  if (rvalue == NULL
       
 74906 +      && cif->rtype->type == FFI_TYPE_STRUCT
       
 74907 +      && (cif->rtype->size != sizeof (int)
       
 74908 +	  || cif->rtype->alignment != sizeof (int)))
       
 74909 +    ecif.rvalue = alloca (cif->rtype->size);
       
 74910 +  else
       
 74911 +    ecif.rvalue = rvalue;
       
 74912 +
       
 74913 +  switch (cif->abi)
       
 74914 +    {
       
 74915 +    case FFI_OBSD:
       
 74916 +      ffi_call_OBSD (cif->bytes, &ecif, cif->flags, ecif.rvalue, fn);
       
 74917 +      break;
       
 74918 +
       
 74919 +    default:
       
 74920 +      FFI_ASSERT (0);
       
 74921 +      break;
       
 74922 +    }
       
 74923 +}
       
 74924 +
       
 74925 +/*
       
 74926 + * Closure API
       
 74927 + */
       
 74928 +
       
 74929 +static void
       
 74930 +ffi_prep_closure_args_OBSD (ffi_cif *cif, void **avalue, unsigned int *regp,
       
 74931 +			    char *stackp)
       
 74932 +{
       
 74933 +  unsigned int i;
       
 74934 +  void **p_argv;
       
 74935 +  char *argp;
       
 74936 +  unsigned int regused;
       
 74937 +  ffi_type **p_arg;
       
 74938 +
       
 74939 +  regused = 0;
       
 74940 +
       
 74941 +  p_argv = avalue;
       
 74942 +
       
 74943 +  for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++)
       
 74944 +    {
       
 74945 +      size_t z;
       
 74946 +      unsigned short t, a;
       
 74947 +
       
 74948 +      z = (*p_arg)->size;
       
 74949 +      t = (*p_arg)->type;
       
 74950 +      a = (*p_arg)->alignment;
       
 74951 +
       
 74952 +      /*
       
 74953 +       * Figure out whether the argument has been passed through registers
       
 74954 +       * or on the stack.
       
 74955 +       * The rule is that registers can only receive simple types not larger
       
 74956 +       * than 64 bits, or structs the exact size of a register and aligned to
       
 74957 +       * the size of a register.
       
 74958 +       */
       
 74959 +      if (t == FFI_TYPE_STRUCT)
       
 74960 +	{
       
 74961 +	  if (z == sizeof (int) && a == sizeof (int) && regused < 8)
       
 74962 +	    argp = (char *)regp;
       
 74963 +	  else
       
 74964 +	    argp = stackp;
       
 74965 +	}
       
 74966 +      else
       
 74967 +	{
       
 74968 +	  if (z > sizeof (int) && regused < 8 - 1)
       
 74969 +	    {
       
 74970 +	      /* align to an even register pair */
       
 74971 +	      if (regused & 1)
       
 74972 +		{
       
 74973 +		  regp++;
       
 74974 +		  regused++;
       
 74975 +		}
       
 74976 +	    }
       
 74977 +	  if (regused < 8)
       
 74978 +	    argp = (char *)regp;
       
 74979 +	  else
       
 74980 +	    argp = stackp;
       
 74981 +	}
       
 74982 +
       
 74983 +      /* Enforce proper stack alignment of 64-bit types */
       
 74984 +      if (argp == stackp && a > sizeof (int))
       
 74985 +	{
       
 74986 +	  stackp = (char *) ALIGN(stackp, a);
       
 74987 +	  argp = stackp;
       
 74988 +	}
       
 74989 +
       
 74990 +      if (z < sizeof (int) && t != FFI_TYPE_STRUCT)
       
 74991 +	*p_argv = (void *) (argp + sizeof (int) - z);
       
 74992 +      else
       
 74993 +	*p_argv = (void *) argp;
       
 74994 +
       
 74995 +      /* Align if necessary */
       
 74996 +      if ((sizeof (int) - 1) & z)
       
 74997 +	z = ALIGN(z, sizeof (int));
       
 74998 +
       
 74999 +      p_argv++;
       
 75000 +
       
 75001 +      /* Be careful, once all registers are exhausted, and about to fetch from
       
 75002 +	 stack, regp == stackp.  Therefore the check for regused as well. */
       
 75003 +      if (argp == (char *)regp && regused < 8)
       
 75004 +	{
       
 75005 +	  regp += z / sizeof (int);
       
 75006 +	  regused += z / sizeof (int);
       
 75007 +	}
       
 75008 +      else
       
 75009 +	stackp += z;
       
 75010 +    }
       
 75011 +}
       
 75012 +
       
 75013 +unsigned int
       
 75014 +ffi_closure_OBSD_inner (ffi_closure *closure, void *resp, unsigned int *regp,
       
 75015 +			char *stackp)
       
 75016 +{
       
 75017 +  ffi_cif *cif;
       
 75018 +  void **arg_area;
       
 75019 +
       
 75020 +  cif = closure->cif;
       
 75021 +  arg_area = (void**) alloca (cif->nargs * sizeof (void *));
       
 75022 +
       
 75023 +  ffi_prep_closure_args_OBSD(cif, arg_area, regp, stackp);
       
 75024 +
       
 75025 +  (closure->fun) (cif, resp, arg_area, closure->user_data);
       
 75026 +
       
 75027 +  return cif->flags;
       
 75028 +}
       
 75029 +
       
 75030 +ffi_status
       
 75031 +ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif,
       
 75032 +		      void (*fun)(ffi_cif*,void*,void**,void*),
       
 75033 +		      void *user_data, void *codeloc)
       
 75034 +{
       
 75035 +  unsigned int *tramp = (unsigned int *) codeloc;
       
 75036 +  void *fn;
       
 75037 +
       
 75038 +  FFI_ASSERT (cif->abi == FFI_OBSD);
       
 75039 +
       
 75040 +  if (cif->rtype->type == FFI_TYPE_STRUCT && !cif->flags)
       
 75041 +    fn = &ffi_closure_struct_OBSD;
       
 75042 +  else
       
 75043 +    fn = &ffi_closure_OBSD;
       
 75044 +
       
 75045 +  /* or.u %r10, %r0, %hi16(fn) */
       
 75046 +  tramp[0] = 0x5d400000 | (((unsigned int)fn) >> 16);
       
 75047 +  /* or.u %r13, %r0, %hi16(closure) */
       
 75048 +  tramp[1] = 0x5da00000 | ((unsigned int)closure >> 16);
       
 75049 +  /* or %r10, %r10, %lo16(fn) */
       
 75050 +  tramp[2] = 0x594a0000 | (((unsigned int)fn) & 0xffff);
       
 75051 +  /* jmp.n %r10 */
       
 75052 +  tramp[3] = 0xf400c40a;
       
 75053 +  /* or %r13, %r13, %lo16(closure) */
       
 75054 +  tramp[4] = 0x59ad0000 | ((unsigned int)closure & 0xffff);
       
 75055 +
       
 75056 +  ffi_cacheflush_OBSD((unsigned int)codeloc, FFI_TRAMPOLINE_SIZE);
       
 75057 +
       
 75058 +  closure->cif  = cif;
       
 75059 +  closure->user_data = user_data;
       
 75060 +  closure->fun  = fun;
       
 75061 +
       
 75062 +  return FFI_OK;
       
 75063 +}
       
 75064 diff --git a/js/src/ctypes/libffi/src/m88k/ffitarget.h b/js/src/ctypes/libffi/src/m88k/ffitarget.h
       
 75065 new file mode 100644
       
 75066 --- /dev/null
       
 75067 +++ b/js/src/ctypes/libffi/src/m88k/ffitarget.h
       
 75068 @@ -0,0 +1,49 @@
       
 75069 +/*
       
 75070 + * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
       
 75071 + *
       
 75072 + * Permission is hereby granted, free of charge, to any person obtaining
       
 75073 + * a copy of this software and associated documentation files (the
       
 75074 + * ``Software''), to deal in the Software without restriction, including
       
 75075 + * without limitation the rights to use, copy, modify, merge, publish,
       
 75076 + * distribute, sublicense, and/or sell copies of the Software, and to
       
 75077 + * permit persons to whom the Software is furnished to do so, subject to
       
 75078 + * the following conditions:
       
 75079 + * 
       
 75080 + * The above copyright notice and this permission notice shall be included
       
 75081 + * in all copies or substantial portions of the Software.
       
 75082 + * 
       
 75083 + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 75084 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 75085 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 75086 + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 75087 + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 75088 + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 75089 + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
 75090 + */
       
 75091 +
       
 75092 +/*
       
 75093 + * m88k Foreign Function Interface
       
 75094 + */
       
 75095 +
       
 75096 +#ifndef LIBFFI_TARGET_H
       
 75097 +#define LIBFFI_TARGET_H
       
 75098 +
       
 75099 +#ifndef LIBFFI_ASM
       
 75100 +typedef unsigned long ffi_arg;
       
 75101 +typedef signed long ffi_sarg;
       
 75102 +
       
 75103 +typedef enum ffi_abi {
       
 75104 +  FFI_FIRST_ABI = 0,
       
 75105 +  FFI_OBSD,
       
 75106 +  FFI_DEFAULT_ABI = FFI_OBSD,
       
 75107 +  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1
       
 75108 +} ffi_abi;
       
 75109 +#endif
       
 75110 +
       
 75111 +/* ---- Definitions for closures ----------------------------------------- */
       
 75112 +
       
 75113 +#define FFI_CLOSURES 1
       
 75114 +#define FFI_TRAMPOLINE_SIZE 0x14
       
 75115 +#define FFI_NATIVE_RAW_API 0
       
 75116 +
       
 75117 +#endif
       
 75118 diff --git a/js/src/ctypes/libffi/src/m88k/obsd.S b/js/src/ctypes/libffi/src/m88k/obsd.S
       
 75119 new file mode 100644
       
 75120 --- /dev/null
       
 75121 +++ b/js/src/ctypes/libffi/src/m88k/obsd.S
       
 75122 @@ -0,0 +1,209 @@
       
 75123 +/*
       
 75124 + * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
       
 75125 + *
       
 75126 + * Permission is hereby granted, free of charge, to any person obtaining
       
 75127 + * a copy of this software and associated documentation files (the
       
 75128 + * ``Software''), to deal in the Software without restriction, including
       
 75129 + * without limitation the rights to use, copy, modify, merge, publish,
       
 75130 + * distribute, sublicense, and/or sell copies of the Software, and to
       
 75131 + * permit persons to whom the Software is furnished to do so, subject to
       
 75132 + * the following conditions:
       
 75133 + * 
       
 75134 + * The above copyright notice and this permission notice shall be included
       
 75135 + * in all copies or substantial portions of the Software.
       
 75136 + * 
       
 75137 + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 75138 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 75139 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 75140 + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 75141 + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 75142 + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 75143 + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
 75144 + */
       
 75145 +
       
 75146 +/*
       
 75147 + * m88k Foreign Function Interface
       
 75148 + */
       
 75149 +
       
 75150 +#define LIBFFI_ASM	
       
 75151 +#include <fficonfig.h>
       
 75152 +#include <ffi.h>
       
 75153 +
       
 75154 +	.text
       
 75155 +
       
 75156 +/*
       
 75157 + * ffi_cacheflush_OBSD(unsigned int addr,	%r2
       
 75158 + *		       unsigned int size);	%r3
       
 75159 + */
       
 75160 +	.align	4
       
 75161 +	.globl	ffi_cacheflush_OBSD
       
 75162 +	.type	ffi_cacheflush_OBSD,@function
       
 75163 +ffi_cacheflush_OBSD:
       
 75164 +	tb0	0,   %r0, 451
       
 75165 +	or	%r0, %r0, %r0
       
 75166 +	jmp	%r1
       
 75167 +	.size	ffi_cacheflush_OBSD, . - ffi_cacheflush_OBSD
       
 75168 +
       
 75169 +/*
       
 75170 + * ffi_call_OBSD(unsigned bytes,		%r2
       
 75171 + *		 extended_cif *ecif,		%r3
       
 75172 + *		 unsigned flags,		%r4
       
 75173 + *		 void *rvalue,			%r5
       
 75174 + *		 void (*fn)());			%r6
       
 75175 + */
       
 75176 +	.align	4
       
 75177 +	.globl	ffi_call_OBSD
       
 75178 +	.type	ffi_call_OBSD,@function
       
 75179 +ffi_call_OBSD:
       
 75180 +	subu	%r31, %r31, 32
       
 75181 +	st	%r30, %r31, 4
       
 75182 +	st	%r1,  %r31, 0
       
 75183 +	addu	%r30, %r31, 32
       
 75184 +
       
 75185 +	| Save the few arguments we'll need after ffi_prep_args()
       
 75186 +	st.d	%r4, %r31, 8
       
 75187 +	st	%r6, %r31, 16
       
 75188 +
       
 75189 +	| Allocate room for the image of r2-r9, and the stack space for
       
 75190 +	| the args (rounded to a 16-byte boundary)
       
 75191 +	addu	%r2,  %r2,  (8 * 4) + 15
       
 75192 +	clr	%r2,  %r2,  4<0>
       
 75193 +	subu	%r31, %r31, %r2
       
 75194 +
       
 75195 +	| Fill register and stack image
       
 75196 +	or	%r2, %r31, %r0
       
 75197 +#ifdef PIC
       
 75198 +	bsr	ffi_prep_args#plt
       
 75199 +#else
       
 75200 +	bsr	ffi_prep_args
       
 75201 +#endif
       
 75202 +
       
 75203 +	| Save pointer to return struct address, if any
       
 75204 +	or	%r12, %r2, %r0
       
 75205 +
       
 75206 +	| Get function pointer
       
 75207 +	subu	%r4,  %r30, 32
       
 75208 +	ld	%r1,  %r4,  16
       
 75209 +
       
 75210 +	| Fetch the register arguments
       
 75211 +	ld.d	%r2, %r31, (0 * 4)
       
 75212 +	ld.d	%r4, %r31, (2 * 4)
       
 75213 +	ld.d	%r6, %r31, (4 * 4)
       
 75214 +	ld.d	%r8, %r31, (6 * 4)
       
 75215 +	addu	%r31, %r31, (8 * 4)
       
 75216 +
       
 75217 +	| Invoke the function
       
 75218 +	jsr	%r1
       
 75219 +
       
 75220 +	| Restore stack now that we don't need the args anymore
       
 75221 +	subu	%r31, %r30, 32
       
 75222 +
       
 75223 +	| Figure out what to return as the function's return value
       
 75224 +	ld	%r5, %r31, 12		| rvalue
       
 75225 +	ld	%r4, %r31, 8		| flags
       
 75226 +
       
 75227 +	bcnd	eq0, %r5, 9f
       
 75228 +
       
 75229 +	bb0	0, %r4, 1f		| CIF_FLAGS_INT
       
 75230 +	st	%r2, %r5, 0
       
 75231 +	br	9f
       
 75232 +
       
 75233 +1:
       
 75234 +	bb0	1, %r4, 1f		| CIF_FLAGS_DINT
       
 75235 +	st.d	%r2, %r5, 0
       
 75236 +	br	9f
       
 75237 +
       
 75238 +1:
       
 75239 +9:
       
 75240 +	ld	%r1,  %r31, 0
       
 75241 +	ld	%r30, %r31, 4
       
 75242 +	jmp.n	%r1
       
 75243 +	 addu	%r31, %r31, 32
       
 75244 +	.size	ffi_call_OBSD, . - ffi_call_OBSD
       
 75245 +
       
 75246 +/*
       
 75247 + * ffi_closure_OBSD(ffi_closure *closure);	%r13
       
 75248 + */
       
 75249 +	.align	4
       
 75250 +	.globl	ffi_closure_OBSD
       
 75251 +	.type	ffi_closure_OBSD, @function
       
 75252 +ffi_closure_OBSD:
       
 75253 +	subu	%r31, %r31, 16
       
 75254 +	st	%r30, %r31, 4
       
 75255 +	st	%r1,  %r31, 0
       
 75256 +	addu	%r30, %r31, 16
       
 75257 +
       
 75258 +	| Make room on the stack for saved register arguments and return
       
 75259 +	| value
       
 75260 +	subu	%r31, %r31, (8 * 4) + (2 * 4)
       
 75261 +	st.d	%r2,  %r31, (0 * 4)
       
 75262 +	st.d	%r4,  %r31, (2 * 4)
       
 75263 +	st.d	%r6,  %r31, (4 * 4)
       
 75264 +	st.d	%r8,  %r31, (6 * 4)
       
 75265 +
       
 75266 +	| Invoke the closure function
       
 75267 +	or	%r5,  %r30, 0			| calling stack
       
 75268 +	addu	%r4,  %r31, 0			| saved registers
       
 75269 +	addu	%r3,  %r31, (8 * 4)		| return value
       
 75270 +	or	%r2,  %r13, %r0			| closure
       
 75271 +#ifdef PIC
       
 75272 +	bsr	ffi_closure_OBSD_inner#plt
       
 75273 +#else
       
 75274 +	bsr	ffi_closure_OBSD_inner
       
 75275 +#endif
       
 75276 +
       
 75277 +	| Figure out what to return as the function's return value
       
 75278 +	bb0	0, %r2, 1f		| CIF_FLAGS_INT
       
 75279 +	ld	%r2, %r31, (8 * 4)
       
 75280 +	br	9f
       
 75281 +
       
 75282 +1:
       
 75283 +	bb0	1, %r2, 1f		| CIF_FLAGS_DINT
       
 75284 +	ld.d	%r2, %r31, (8 * 4)
       
 75285 +	br	9f
       
 75286 +
       
 75287 +1:
       
 75288 +9:
       
 75289 +	subu	%r31, %r30, 16
       
 75290 +	ld	%r1,  %r31, 0
       
 75291 +	ld	%r30, %r31, 4
       
 75292 +	jmp.n	%r1
       
 75293 +	 addu	%r31, %r31, 16
       
 75294 +	.size	ffi_closure_OBSD,.-ffi_closure_OBSD
       
 75295 +
       
 75296 +/*
       
 75297 + * ffi_closure_struct_OBSD(ffi_closure *closure);	%r13
       
 75298 + */
       
 75299 +	.align	4
       
 75300 +	.globl	ffi_closure_struct_OBSD
       
 75301 +	.type	ffi_closure_struct_OBSD, @function
       
 75302 +ffi_closure_struct_OBSD:
       
 75303 +	subu	%r31, %r31, 16
       
 75304 +	st	%r30, %r31, 4
       
 75305 +	st	%r1,  %r31, 0
       
 75306 +	addu	%r30, %r31, 16
       
 75307 +
       
 75308 +	| Make room on the stack for saved register arguments
       
 75309 +	subu	%r31, %r31, (8 * 4)
       
 75310 +	st.d	%r2,  %r31, (0 * 4)
       
 75311 +	st.d	%r4,  %r31, (2 * 4)
       
 75312 +	st.d	%r6,  %r31, (4 * 4)
       
 75313 +	st.d	%r8,  %r31, (6 * 4)
       
 75314 +
       
 75315 +	| Invoke the closure function
       
 75316 +	or	%r5,  %r30, 0			| calling stack
       
 75317 +	addu	%r4,  %r31, 0			| saved registers
       
 75318 +	or	%r3,  %r12, 0			| return value
       
 75319 +	or	%r2,  %r13, %r0			| closure
       
 75320 +#ifdef PIC
       
 75321 +	bsr	ffi_closure_OBSD_inner#plt
       
 75322 +#else
       
 75323 +	bsr	ffi_closure_OBSD_inner
       
 75324 +#endif
       
 75325 +
       
 75326 +	subu	%r31, %r30, 16
       
 75327 +	ld	%r1,  %r31, 0
       
 75328 +	ld	%r30, %r31, 4
       
 75329 +	jmp.n	%r1
       
 75330 +	 addu	%r31, %r31, 16
       
 75331 +	.size	ffi_closure_struct_OBSD,.-ffi_closure_struct_OBSD
       
 75332 diff --git a/js/src/ctypes/libffi/src/metag/ffi.c b/js/src/ctypes/libffi/src/metag/ffi.c
       
 75333 new file mode 100644
       
 75334 --- /dev/null
       
 75335 +++ b/js/src/ctypes/libffi/src/metag/ffi.c
       
 75336 @@ -0,0 +1,330 @@
       
 75337 +/* ----------------------------------------------------------------------
       
 75338 +  ffi.c - Copyright (c) 2013 Imagination Technologies
       
 75339 +
       
 75340 +  Meta Foreign Function Interface
       
 75341 +  Permission is hereby granted, free of charge, to any person obtaining
       
 75342 +  a copy of this software and associated documentation files (the
       
 75343 +  `Software''), to deal in the Software without restriction, including
       
 75344 +  without limitation the rights to use, copy, modify, merge, publish,
       
 75345 +  distribute, sublicense, and/or sell copies of the Software, and to
       
 75346 +  permit persons to whom the Software is furnished to do so, subject to
       
 75347 +  the following conditions:
       
 75348 +
       
 75349 +  The above copyright notice and this permission notice shall be included
       
 75350 +  in all copies or substantial portions of the Software.
       
 75351 +
       
 75352 +  THE SOFTWARE IS PROVIDED `AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
       
 75353 +  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 75354 +  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 75355 +  IN NO EVENT SHALL SIMON POSNJAK BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
 75356 +  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
 75357 +  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 75358 +  OTHER DEALINGS IN THE SOFTWARE.
       
 75359 +----------------------------------------------------------------------- */
       
 75360 +
       
 75361 +#include <ffi.h>
       
 75362 +#include <ffi_common.h>
       
 75363 +
       
 75364 +#include <stdlib.h>
       
 75365 +
       
 75366 +#define MIN(a,b) (((a) < (b)) ? (a) : (b))
       
 75367 +
       
 75368 +/*
       
 75369 + * ffi_prep_args is called by the assembly routine once stack space has been
       
 75370 + * allocated for the function's arguments
       
 75371 + */
       
 75372 +
       
 75373 +unsigned int ffi_prep_args(char *stack, extended_cif *ecif)
       
 75374 +{
       
 75375 +	register unsigned int i;
       
 75376 +	register void **p_argv;
       
 75377 +	register char *argp;
       
 75378 +	register ffi_type **p_arg;
       
 75379 +
       
 75380 +	argp = stack;
       
 75381 +
       
 75382 +	/* Store return value */
       
 75383 +	if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
       
 75384 +		argp -= 4;
       
 75385 +		*(void **) argp = ecif->rvalue;
       
 75386 +	}
       
 75387 +
       
 75388 +	p_argv = ecif->avalue;
       
 75389 +
       
 75390 +	/* point to next location */
       
 75391 +	for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++, p_argv++)
       
 75392 +	{
       
 75393 +		size_t z;
       
 75394 +
       
 75395 +		/* Move argp to address of argument */
       
 75396 +		z = (*p_arg)->size;
       
 75397 +		argp -= z;
       
 75398 +
       
 75399 +		/* Align if necessary */
       
 75400 +		argp = (char *) ALIGN_DOWN(ALIGN_DOWN(argp, (*p_arg)->alignment), 4);
       
 75401 +
       
 75402 +		if (z < sizeof(int)) {
       
 75403 +			z = sizeof(int);
       
 75404 +			switch ((*p_arg)->type)
       
 75405 +			{
       
 75406 +			case FFI_TYPE_SINT8:
       
 75407 +				*(signed int *) argp = (signed int)*(SINT8 *)(* p_argv);
       
 75408 +				break;
       
 75409 +			case FFI_TYPE_UINT8:
       
 75410 +				*(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv);
       
 75411 +				break;
       
 75412 +			case FFI_TYPE_SINT16:
       
 75413 +				*(signed int *) argp = (signed int)*(SINT16 *)(* p_argv);
       
 75414 +				break;
       
 75415 +			case FFI_TYPE_UINT16:
       
 75416 +				*(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv);
       
 75417 +			case FFI_TYPE_STRUCT:
       
 75418 +				memcpy(argp, *p_argv, (*p_arg)->size);
       
 75419 +				break;
       
 75420 +			default:
       
 75421 +				FFI_ASSERT(0);
       
 75422 +			}
       
 75423 +		} else if ( z == sizeof(int)) {
       
 75424 +			*(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv);
       
 75425 +		} else {
       
 75426 +			memcpy(argp, *p_argv, z);
       
 75427 +		}
       
 75428 +	}
       
 75429 +
       
 75430 +	/* return the size of the arguments to be passed in registers,
       
 75431 +	   padded to an 8 byte boundary to preserve stack alignment */
       
 75432 +	return ALIGN(MIN(stack - argp, 6*4), 8);
       
 75433 +}
       
 75434 +
       
 75435 +/* Perform machine dependent cif processing */
       
 75436 +ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
       
 75437 +{
       
 75438 +	ffi_type **ptr;
       
 75439 +	unsigned i, bytes = 0;
       
 75440 +
       
 75441 +	for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) {
       
 75442 +		if ((*ptr)->size == 0)
       
 75443 +			return FFI_BAD_TYPEDEF;
       
 75444 +
       
 75445 +		/* Perform a sanity check on the argument type, do this
       
 75446 +		   check after the initialization.  */
       
 75447 +		FFI_ASSERT_VALID_TYPE(*ptr);
       
 75448 +
       
 75449 +		/* Add any padding if necessary */
       
 75450 +		if (((*ptr)->alignment - 1) & bytes)
       
 75451 +			bytes = ALIGN(bytes, (*ptr)->alignment);
       
 75452 +
       
 75453 +		bytes += ALIGN((*ptr)->size, 4);
       
 75454 +	}
       
 75455 +
       
 75456 +	/* Ensure arg space is aligned to an 8-byte boundary */
       
 75457 +	bytes = ALIGN(bytes, 8);
       
 75458 +
       
 75459 +	/* Make space for the return structure pointer */
       
 75460 +	if (cif->rtype->type == FFI_TYPE_STRUCT) {
       
 75461 +		bytes += sizeof(void*);
       
 75462 +
       
 75463 +		/* Ensure stack is aligned to an 8-byte boundary */
       
 75464 +		bytes = ALIGN(bytes, 8);
       
 75465 +	}
       
 75466 +
       
 75467 +	cif->bytes = bytes;
       
 75468 +
       
 75469 +	/* Set the return type flag */
       
 75470 +	switch (cif->rtype->type) {
       
 75471 +	case FFI_TYPE_VOID:
       
 75472 +	case FFI_TYPE_FLOAT:
       
 75473 +	case FFI_TYPE_DOUBLE:
       
 75474 +		cif->flags = (unsigned) cif->rtype->type;
       
 75475 +		break;
       
 75476 +	case FFI_TYPE_SINT64:
       
 75477 +	case FFI_TYPE_UINT64:
       
 75478 +		cif->flags = (unsigned) FFI_TYPE_SINT64;
       
 75479 +		break;
       
 75480 +	case FFI_TYPE_STRUCT:
       
 75481 +		/* Meta can store return values which are <= 64 bits */
       
 75482 +		if (cif->rtype->size <= 4)
       
 75483 +			/* Returned to D0Re0 as 32-bit value */
       
 75484 +			cif->flags = (unsigned)FFI_TYPE_INT;
       
 75485 +		else if ((cif->rtype->size > 4) && (cif->rtype->size <= 8))
       
 75486 +			/* Returned valued is stored to D1Re0|R0Re0 */
       
 75487 +			cif->flags = (unsigned)FFI_TYPE_DOUBLE;
       
 75488 +		else
       
 75489 +			/* value stored in memory */
       
 75490 +			cif->flags = (unsigned)FFI_TYPE_STRUCT;
       
 75491 +		break;
       
 75492 +	default:
       
 75493 +		cif->flags = (unsigned)FFI_TYPE_INT;
       
 75494 +		break;
       
 75495 +	}
       
 75496 +	return FFI_OK;
       
 75497 +}
       
 75498 +
       
 75499 +extern void ffi_call_SYSV(void (*fn)(void), extended_cif *, unsigned, unsigned, double *);
       
 75500 +
       
 75501 +/*
       
 75502 + * Exported in API. Entry point
       
 75503 + * cif -> ffi_cif object
       
 75504 + * fn -> function pointer
       
 75505 + * rvalue -> pointer to return value
       
 75506 + * avalue -> vector of void * pointers pointing to memory locations holding the
       
 75507 + * arguments
       
 75508 + */
       
 75509 +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 75510 +{
       
 75511 +	extended_cif ecif;
       
 75512 +
       
 75513 +	int small_struct = (((cif->flags == FFI_TYPE_INT) || (cif->flags == FFI_TYPE_DOUBLE)) && (cif->rtype->type == FFI_TYPE_STRUCT));
       
 75514 +	ecif.cif = cif;
       
 75515 +	ecif.avalue = avalue;
       
 75516 +
       
 75517 +	double temp;
       
 75518 +
       
 75519 +	/*
       
 75520 +	 * If the return value is a struct and we don't have a return value address
       
 75521 +	 * then we need to make one
       
 75522 +	 */
       
 75523 +
       
 75524 +	if ((rvalue == NULL ) && (cif->flags == FFI_TYPE_STRUCT))
       
 75525 +		ecif.rvalue = alloca(cif->rtype->size);
       
 75526 +	else if (small_struct)
       
 75527 +		ecif.rvalue = &temp;
       
 75528 +	else
       
 75529 +		ecif.rvalue = rvalue;
       
 75530 +
       
 75531 +	switch (cif->abi) {
       
 75532 +	case FFI_SYSV:
       
 75533 +		ffi_call_SYSV(fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
       
 75534 +		break;
       
 75535 +	default:
       
 75536 +		FFI_ASSERT(0);
       
 75537 +		break;
       
 75538 +	}
       
 75539 +
       
 75540 +	if (small_struct)
       
 75541 +		memcpy (rvalue, &temp, cif->rtype->size);
       
 75542 +}
       
 75543 +
       
 75544 +/* private members */
       
 75545 +
       
 75546 +static void ffi_prep_incoming_args_SYSV (char *, void **, void **,
       
 75547 +	ffi_cif*, float *);
       
 75548 +
       
 75549 +void ffi_closure_SYSV (ffi_closure *);
       
 75550 +
       
 75551 +/* Do NOT change that without changing the FFI_TRAMPOLINE_SIZE */
       
 75552 +extern unsigned int ffi_metag_trampoline[10]; /* 10 instructions */
       
 75553 +
       
 75554 +/* end of private members */
       
 75555 +
       
 75556 +/*
       
 75557 + * __tramp: trampoline memory location
       
 75558 + * __fun: assembly routine
       
 75559 + * __ctx: memory location for wrapper
       
 75560 + *
       
 75561 + * At this point, tramp[0] == __ctx !
       
 75562 + */
       
 75563 +void ffi_init_trampoline(unsigned char *__tramp, unsigned int __fun, unsigned int __ctx) {
       
 75564 +	memcpy (__tramp, ffi_metag_trampoline, sizeof(ffi_metag_trampoline));
       
 75565 +	*(unsigned int*) &__tramp[40] = __ctx;
       
 75566 +	*(unsigned int*) &__tramp[44] = __fun;
       
 75567 +	/* This will flush the instruction cache */
       
 75568 +	__builtin_meta2_cachewd(&__tramp[0], 1);
       
 75569 +	__builtin_meta2_cachewd(&__tramp[47], 1);
       
 75570 +}
       
 75571 +
       
 75572 +
       
 75573 +
       
 75574 +/* the cif must already be prepared */
       
 75575 +
       
 75576 +ffi_status
       
 75577 +ffi_prep_closure_loc (ffi_closure *closure,
       
 75578 +	ffi_cif* cif,
       
 75579 +	void (*fun)(ffi_cif*,void*,void**,void*),
       
 75580 +	void *user_data,
       
 75581 +	void *codeloc)
       
 75582 +{
       
 75583 +	void (*closure_func)(ffi_closure*) = NULL;
       
 75584 +
       
 75585 +	if (cif->abi == FFI_SYSV)
       
 75586 +		closure_func = &ffi_closure_SYSV;
       
 75587 +	else
       
 75588 +		return FFI_BAD_ABI;
       
 75589 +
       
 75590 +	ffi_init_trampoline(
       
 75591 +		(unsigned char*)&closure->tramp[0],
       
 75592 +		(unsigned int)closure_func,
       
 75593 +		(unsigned int)codeloc);
       
 75594 +
       
 75595 +	closure->cif = cif;
       
 75596 +	closure->user_data = user_data;
       
 75597 +	closure->fun = fun;
       
 75598 +
       
 75599 +	return FFI_OK;
       
 75600 +}
       
 75601 +
       
 75602 +
       
 75603 +/* This function is jumped to by the trampoline */
       
 75604 +unsigned int ffi_closure_SYSV_inner (closure, respp, args, vfp_args)
       
 75605 +	ffi_closure *closure;
       
 75606 +	void **respp;
       
 75607 +	void *args;
       
 75608 +	void *vfp_args;
       
 75609 +{
       
 75610 +	ffi_cif *cif;
       
 75611 +	void **arg_area;
       
 75612 +
       
 75613 +	cif = closure->cif;
       
 75614 +	arg_area = (void**) alloca (cif->nargs * sizeof (void*));
       
 75615 +
       
 75616 +	/*
       
 75617 +	 * This call will initialize ARG_AREA, such that each
       
 75618 +	 * element in that array points to the corresponding
       
 75619 +	 * value on the stack; and if the function returns
       
 75620 +	 * a structure, it will re-set RESP to point to the
       
 75621 +	 * structure return address.
       
 75622 +	 */
       
 75623 +	ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args);
       
 75624 +
       
 75625 +	(closure->fun) ( cif, *respp, arg_area, closure->user_data);
       
 75626 +
       
 75627 +	return cif->flags;
       
 75628 +}
       
 75629 +
       
 75630 +static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
       
 75631 +	void **avalue, ffi_cif *cif,
       
 75632 +	float *vfp_stack)
       
 75633 +{
       
 75634 +	register unsigned int i;
       
 75635 +	register void **p_argv;
       
 75636 +	register char *argp;
       
 75637 +	register ffi_type **p_arg;
       
 75638 +
       
 75639 +	/* stack points to original arguments */
       
 75640 +	argp = stack;
       
 75641 +
       
 75642 +	/* Store return value */
       
 75643 +	if ( cif->flags == FFI_TYPE_STRUCT ) {
       
 75644 +		argp -= 4;
       
 75645 +		*rvalue = *(void **) argp;
       
 75646 +	}
       
 75647 +
       
 75648 +	p_argv = avalue;
       
 75649 +
       
 75650 +	for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) {
       
 75651 +		size_t z;
       
 75652 +		size_t alignment;
       
 75653 +
       
 75654 +		alignment = (*p_arg)->alignment;
       
 75655 +		if (alignment < 4)
       
 75656 +			alignment = 4;
       
 75657 +		if ((alignment - 1) & (unsigned)argp)
       
 75658 +			argp = (char *) ALIGN(argp, alignment);
       
 75659 +
       
 75660 +		z = (*p_arg)->size;
       
 75661 +		*p_argv = (void*) argp;
       
 75662 +		p_argv++;
       
 75663 +		argp -= z;
       
 75664 +	}
       
 75665 +	return;
       
 75666 +}
       
 75667 diff --git a/js/src/ctypes/libffi/src/metag/ffitarget.h b/js/src/ctypes/libffi/src/metag/ffitarget.h
       
 75668 new file mode 100644
       
 75669 --- /dev/null
       
 75670 +++ b/js/src/ctypes/libffi/src/metag/ffitarget.h
       
 75671 @@ -0,0 +1,53 @@
       
 75672 +/* -----------------------------------------------------------------*-C-*-
       
 75673 +   ffitarget.h - Copyright (c) 2013 Imagination Technologies Ltd.
       
 75674 +   Target configuration macros for Meta
       
 75675 +
       
 75676 +   Permission is hereby granted, free of charge, to any person obtaining
       
 75677 +   a copy of this software and associated documentation files (the
       
 75678 +   ``Software''), to deal in the Software without restriction, including
       
 75679 +   without limitation the rights to use, copy, modify, merge, publish,
       
 75680 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 75681 +   permit persons to whom the Software is furnished to do so, subject to
       
 75682 +   the following conditions:
       
 75683 +
       
 75684 +   The above copyright notice and this permission notice shall be included
       
 75685 +   in all copies or substantial portions of the Software.
       
 75686 +
       
 75687 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 75688 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 75689 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 75690 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 75691 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 75692 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 75693 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 75694 +   DEALINGS IN THE SOFTWARE.
       
 75695 +
       
 75696 +   ----------------------------------------------------------------------- */
       
 75697 +
       
 75698 +#ifndef LIBFFI_TARGET_H
       
 75699 +#define LIBFFI_TARGET_H
       
 75700 +
       
 75701 +#ifndef LIBFFI_H
       
 75702 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 75703 +#endif
       
 75704 +
       
 75705 +#ifndef LIBFFI_ASM
       
 75706 +typedef unsigned long          ffi_arg;
       
 75707 +typedef signed long            ffi_sarg;
       
 75708 +
       
 75709 +typedef enum ffi_abi {
       
 75710 +  FFI_FIRST_ABI = 0,
       
 75711 +  FFI_SYSV,
       
 75712 +  FFI_DEFAULT_ABI = FFI_SYSV,
       
 75713 +  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1,
       
 75714 +} ffi_abi;
       
 75715 +#endif
       
 75716 +
       
 75717 +/* ---- Definitions for closures ----------------------------------------- */
       
 75718 +
       
 75719 +#define FFI_CLOSURES 1
       
 75720 +#define FFI_TRAMPOLINE_SIZE 48
       
 75721 +#define FFI_NATIVE_RAW_API 0
       
 75722 +
       
 75723 +#endif
       
 75724 +
       
 75725 diff --git a/js/src/ctypes/libffi/src/metag/sysv.S b/js/src/ctypes/libffi/src/metag/sysv.S
       
 75726 new file mode 100644
       
 75727 --- /dev/null
       
 75728 +++ b/js/src/ctypes/libffi/src/metag/sysv.S
       
 75729 @@ -0,0 +1,311 @@
       
 75730 +/* -----------------------------------------------------------------------
       
 75731 +   sysv.S - Copyright (c) 2013 Imagination Technologies Ltd.
       
 75732 +
       
 75733 +   Meta Foreign Function Interface
       
 75734 +
       
 75735 +   Permission is hereby granted, free of charge, to any person obtaining
       
 75736 +   a copy of this software and associated documentation files (the
       
 75737 +   ``Software''), to deal in the Software without restriction, including
       
 75738 +   without limitation the rights to use, copy, modify, merge, publish,
       
 75739 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 75740 +   permit persons to whom the Software is furnished to do so, subject to
       
 75741 +   the following conditions:
       
 75742 +
       
 75743 +   The above copyright notice and this permission notice shall be included
       
 75744 +   in all copies or substantial portions of the Software.
       
 75745 +
       
 75746 +
       
 75747 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 75748 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 75749 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 75750 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 75751 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 75752 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 75753 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 75754 +   DEALINGS IN THE SOFTWARE.
       
 75755 +   ----------------------------------------------------------------------- */
       
 75756 +
       
 75757 +#define LIBFFI_ASM
       
 75758 +#include <fficonfig.h>
       
 75759 +#include <ffi.h>
       
 75760 +#ifdef HAVE_MACHINE_ASM_H
       
 75761 +#include <machine/asm.h>
       
 75762 +#else
       
 75763 +#ifdef __USER_LABEL_PREFIX__
       
 75764 +#define CONCAT1(a, b) CONCAT2(a, b)
       
 75765 +#define CONCAT2(a, b) a ## b
       
 75766 +
       
 75767 +/* Use the right prefix for global labels. */
       
 75768 +#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
       
 75769 +#else
       
 75770 +#define CNAME(x) x
       
 75771 +#endif
       
 75772 +#define ENTRY(x) .globl CNAME(x); .type CNAME(x), %function; CNAME(x):
       
 75773 +#endif
       
 75774 +
       
 75775 +#ifdef __ELF__
       
 75776 +#define LSYM(x) .x
       
 75777 +#else
       
 75778 +#define LSYM(x) x
       
 75779 +#endif
       
 75780 +
       
 75781 +.macro call_reg x=
       
 75782 +	.text
       
 75783 +	.balign 4
       
 75784 +	mov D1RtP, \x
       
 75785 +	swap D1RtP, PC
       
 75786 +.endm
       
 75787 +
       
 75788 +! Save register arguments
       
 75789 +.macro SAVE_ARGS
       
 75790 +	.text
       
 75791 +	.balign 4
       
 75792 +	setl	[A0StP++], D0Ar6, D1Ar5
       
 75793 +	setl	[A0StP++], D0Ar4, D1Ar3
       
 75794 +	setl	[A0StP++], D0Ar2, D1Ar1
       
 75795 +.endm
       
 75796 +
       
 75797 +! Save retrun, frame pointer and other regs
       
 75798 +.macro SAVE_REGS regs=
       
 75799 +	.text
       
 75800 +	.balign 4
       
 75801 +	setl	[A0StP++], D0FrT, D1RtP
       
 75802 +	! Needs to be a pair of regs
       
 75803 +	.ifnc "\regs",""
       
 75804 +	setl	[A0StP++], \regs
       
 75805 +	.endif
       
 75806 +.endm
       
 75807 +
       
 75808 +! Declare a global function
       
 75809 +.macro METAG_FUNC_START name
       
 75810 +	.text
       
 75811 +	.balign 4
       
 75812 +	ENTRY(\name)
       
 75813 +.endm
       
 75814 +
       
 75815 +! Return registers from the stack. Reverse SAVE_REGS operation
       
 75816 +.macro RET_REGS regs=, cond=
       
 75817 +	.ifnc "\regs", ""
       
 75818 +	getl	\regs, [--A0StP]
       
 75819 +	.endif
       
 75820 +	getl	D0FrT, D1RtP, [--A0StP]
       
 75821 +.endm
       
 75822 +
       
 75823 +! Return arguments
       
 75824 +.macro RET_ARGS
       
 75825 +	getl	D0Ar2, D1Ar1, [--A0StP]
       
 75826 +	getl	D0Ar4, D1Ar3, [--A0StP]
       
 75827 +	getl	D0Ar6, D1Ar5, [--A0StP]
       
 75828 +.endm
       
 75829 +
       
 75830 +
       
 75831 +	! D1Ar1:	fn
       
 75832 +	! D0Ar2:	&ecif
       
 75833 +	! D1Ar3:	cif->bytes
       
 75834 +	! D0Ar4:	fig->flags
       
 75835 +	! D1Ar5:	ecif.rvalue
       
 75836 +
       
 75837 +	! This assumes we are using GNU as
       
 75838 +METAG_FUNC_START ffi_call_SYSV
       
 75839 +	! Save argument registers
       
 75840 +
       
 75841 +	SAVE_ARGS
       
 75842 +
       
 75843 +	! new frame
       
 75844 +	mov	D0FrT, A0FrP
       
 75845 +	add     A0FrP, A0StP, #0
       
 75846 +
       
 75847 +	! Preserve the old frame pointer
       
 75848 +	SAVE_REGS "D1.5, D0.5"
       
 75849 +
       
 75850 +	! Make room for new args. cifs->bytes is the total space for input
       
 75851 +	! and return arguments
       
 75852 +
       
 75853 +	add	A0StP, A0StP, D1Ar3
       
 75854 +
       
 75855 +	! Preserve cifs->bytes & fn
       
 75856 +	mov	D0.5, D1Ar3
       
 75857 +	mov	D1.5, D1Ar1
       
 75858 +
       
 75859 +	! Place all of the ffi_prep_args in position
       
 75860 +	mov	D1Ar1, A0StP
       
 75861 +
       
 75862 +	! Call ffi_prep_args(stack, &ecif)
       
 75863 +#ifdef __PIC__
       
 75864 +	callr  D1RtP, CNAME(ffi_prep_args@PLT)
       
 75865 +#else
       
 75866 +	callr  D1RtP, CNAME(ffi_prep_args)
       
 75867 +#endif
       
 75868 +
       
 75869 +	! Restore fn pointer
       
 75870 +
       
 75871 +	! The foreign stack should look like this
       
 75872 +	! XXXXX XXXXXX <--- stack pointer
       
 75873 +	! FnArgN rvalue
       
 75874 +	! FnArgN+2 FnArgN+1
       
 75875 +	! FnArgN+4 FnArgN+3
       
 75876 +	! ....
       
 75877 +	!
       
 75878 +
       
 75879 +	! A0StP now points to the first (or return) argument + 4
       
 75880 +
       
 75881 +	! Preserve cif->bytes
       
 75882 +	getl	D0Ar2, D1Ar1, [--A0StP]
       
 75883 +	getl	D0Ar4, D1Ar3, [--A0StP]
       
 75884 +	getl	D0Ar6, D1Ar5, [--A0StP]
       
 75885 +
       
 75886 +	! Place A0StP to the first argument again
       
 75887 +	add	A0StP, A0StP, #24 ! That's because we loaded 6 regs x 4 byte each
       
 75888 +
       
 75889 +	! A0FrP points to the initial stack without the reserved space for the
       
 75890 +	! cifs->bytes, whilst A0StP points to the stack after the space allocation
       
 75891 +
       
 75892 +	! fn was the first argument of ffi_call_SYSV.
       
 75893 +	! The stack at this point looks like this:
       
 75894 +	!
       
 75895 +	! A0StP(on entry to _SYSV) ->	Arg6	Arg5     | low
       
 75896 +	!				Arg4	Arg3     |
       
 75897 +	! 				Arg2	Arg1     |
       
 75898 +	! A0FrP ---->			D0FrtP	D1RtP    |
       
 75899 +	!				D1.5	D0.5	 |
       
 75900 +	! A0StP(bf prep_args) ->	FnArgn	FnArgn-1 |
       
 75901 +	!				FnArgn-2FnArgn-3 |
       
 75902 +	!				................ | <= cifs->bytes
       
 75903 +	!				FnArg4  FnArg3	 |
       
 75904 +	! A0StP (prv_A0StP+cifs->bytes) FnArg2  FnArg1   | high
       
 75905 +	!
       
 75906 +	! fn was in Arg1 so it's located in in A0FrP+#-0xC
       
 75907 +	!
       
 75908 +
       
 75909 +	! D0Re0 contains the size of arguments stored in registers
       
 75910 +	sub	A0StP, A0StP, D0Re0
       
 75911 +
       
 75912 +	! Arg1 is the function pointer for the foreign call. This has been
       
 75913 +	! preserved in D1.5
       
 75914 +
       
 75915 +	! Time to call (fn). Arguments should be like this:
       
 75916 +	! Arg1-Arg6 are loaded to regs
       
 75917 +	! The rest of the arguments are stored in stack pointed by A0StP
       
 75918 +
       
 75919 +	call_reg D1.5
       
 75920 +
       
 75921 +	! Reset stack.
       
 75922 +
       
 75923 +	mov	A0StP, A0FrP
       
 75924 +
       
 75925 +	! Load Arg1 with the pointer to storage for the return type
       
 75926 +	! This was stored in Arg5
       
 75927 +
       
 75928 +	getd	D1Ar1, [A0FrP+#-20]
       
 75929 +
       
 75930 +	! Load D0Ar2 with the return type code. This was stored in Arg4 (flags)
       
 75931 +
       
 75932 +	getd	D0Ar2, [A0FrP+#-16]
       
 75933 +
       
 75934 +	! We are ready to start processing the return value
       
 75935 +	! D0Re0 (and D1Re0) hold the return value
       
 75936 +
       
 75937 +	! If the return value is NULL, assume no return value
       
 75938 +	cmp	D1Ar1, #0
       
 75939 +	beq	LSYM(Lepilogue)
       
 75940 +
       
 75941 +	! return INT
       
 75942 +	cmp		D0Ar2, #FFI_TYPE_INT
       
 75943 +	! Sadly, there is no setd{cc} instruction so we need to workaround that
       
 75944 +	bne	.INT64
       
 75945 +	setd	[D1Ar1], D0Re0
       
 75946 +	b	LSYM(Lepilogue)
       
 75947 +
       
 75948 +	! return INT64
       
 75949 +.INT64:
       
 75950 +	cmp	D0Ar2, #FFI_TYPE_SINT64
       
 75951 +	setleq	[D1Ar1], D0Re0, D1Re0
       
 75952 +
       
 75953 +	! return DOUBLE
       
 75954 +	cmp	D0Ar2, #FFI_TYPE_DOUBLE
       
 75955 +	setl	[D1AR1++], D0Re0, D1Re0
       
 75956 +
       
 75957 +LSYM(Lepilogue):
       
 75958 +	! At this point, the stack pointer points right after the argument
       
 75959 +	! saved area. We need to restore 4 regs, therefore we need to move
       
 75960 +	! 16 bytes ahead.
       
 75961 +	add     A0StP, A0StP, #16
       
 75962 +	RET_REGS "D1.5, D0.5"
       
 75963 +	RET_ARGS
       
 75964 +	getd	D0Re0, [A0StP]
       
 75965 +	mov     A0FrP, D0FrT
       
 75966 +	swap	D1RtP, PC
       
 75967 +
       
 75968 +.ffi_call_SYSV_end:
       
 75969 +       .size   CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
       
 75970 +
       
 75971 +
       
 75972 +/*
       
 75973 +	(called by ffi_metag_trampoline)
       
 75974 +	void ffi_closure_SYSV (ffi_closure*)
       
 75975 +
       
 75976 +	(called by ffi_closure_SYSV)
       
 75977 +	unsigned int FFI_HIDDEN
       
 75978 +	ffi_closure_SYSV_inner (closure,respp, args)
       
 75979 +		ffi_closure *closure;
       
 75980 +		void **respp;
       
 75981 +		void *args;
       
 75982 +*/
       
 75983 +
       
 75984 +METAG_FUNC_START ffi_closure_SYSV
       
 75985 +	! We assume that D1Ar1 holds the address of the
       
 75986 +	! ffi_closure struct. We will use that to fetch the
       
 75987 +	! arguments. The stack pointer points to an empty space
       
 75988 +	! and it is ready to store more data.
       
 75989 +
       
 75990 +	! D1Ar1 is ready
       
 75991 +	! Allocate stack space for return value
       
 75992 +	add A0StP, A0StP, #8
       
 75993 +	! Store it to D0Ar2
       
 75994 +	sub D0Ar2, A0StP, #8
       
 75995 +
       
 75996 +	sub D1Ar3, A0FrP, #4
       
 75997 +
       
 75998 +	! D1Ar3 contains the address of the original D1Ar1 argument
       
 75999 +	! We need to subtract #4 later on
       
 76000 +
       
 76001 +	! Preverve D0Ar2
       
 76002 +	mov D0.5, D0Ar2
       
 76003 +
       
 76004 +#ifdef __PIC__
       
 76005 +	callr D1RtP, CNAME(ffi_closure_SYSV_inner@PLT)
       
 76006 +#else
       
 76007 +	callr D1RtP, CNAME(ffi_closure_SYSV_inner)
       
 76008 +#endif
       
 76009 +
       
 76010 +	! Check the return value and store it to D0.5
       
 76011 +	cmp D0Re0, #FFI_TYPE_INT
       
 76012 +	beq .Lretint
       
 76013 +	cmp D0Re0, #FFI_TYPE_DOUBLE
       
 76014 +	beq .Lretdouble
       
 76015 +.Lclosure_epilogue:
       
 76016 +	sub A0StP, A0StP, #8
       
 76017 +	RET_REGS "D1.5, D0.5"
       
 76018 +	RET_ARGS
       
 76019 +	swap	D1RtP, PC
       
 76020 +
       
 76021 +.Lretint:
       
 76022 +	setd [D0.5], D0Re0
       
 76023 +	b .Lclosure_epilogue
       
 76024 +.Lretdouble:
       
 76025 +	setl [D0.5++], D0Re0, D1Re0
       
 76026 +	b .Lclosure_epilogue
       
 76027 +.ffi_closure_SYSV_end:
       
 76028 +.size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
       
 76029 +
       
 76030 +
       
 76031 +ENTRY(ffi_metag_trampoline)
       
 76032 +	SAVE_ARGS
       
 76033 +	! New frame
       
 76034 +	mov A0FrP, A0StP
       
 76035 +	SAVE_REGS "D1.5, D0.5"
       
 76036 +	mov D0.5, PC
       
 76037 +	! Load D1Ar1 the value of ffi_metag_trampoline
       
 76038 +	getd D1Ar1, [D0.5 + #8]
       
 76039 +	! Jump to ffi_closure_SYSV
       
 76040 +	getd PC, [D0.5 + #12]
       
 76041 diff --git a/js/src/ctypes/libffi/src/microblaze/ffi.c b/js/src/ctypes/libffi/src/microblaze/ffi.c
       
 76042 new file mode 100644
       
 76043 --- /dev/null
       
 76044 +++ b/js/src/ctypes/libffi/src/microblaze/ffi.c
       
 76045 @@ -0,0 +1,321 @@
       
 76046 +/* -----------------------------------------------------------------------
       
 76047 +   ffi.c - Copyright (c) 2012, 2013 Xilinx, Inc
       
 76048 +
       
 76049 +   MicroBlaze Foreign Function Interface
       
 76050 +
       
 76051 +   Permission is hereby granted, free of charge, to any person obtaining
       
 76052 +   a copy of this software and associated documentation files (the
       
 76053 +   ``Software''), to deal in the Software without restriction, including
       
 76054 +   without limitation the rights to use, copy, modify, merge, publish,
       
 76055 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 76056 +   permit persons to whom the Software is furnished to do so, subject to
       
 76057 +   the following conditions:
       
 76058 +
       
 76059 +   The above copyright notice and this permission notice shall be included
       
 76060 +   in all copies or substantial portions of the Software.
       
 76061 +
       
 76062 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 76063 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 76064 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 76065 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 76066 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 76067 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 76068 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 76069 +   DEALINGS IN THE SOFTWARE.
       
 76070 +   ----------------------------------------------------------------------- */
       
 76071 +
       
 76072 +#include <ffi.h>
       
 76073 +#include <ffi_common.h>
       
 76074 +
       
 76075 +extern void ffi_call_SYSV(void (*)(void*, extended_cif*), extended_cif*,
       
 76076 +		unsigned int, unsigned int, unsigned int*, void (*fn)(void),
       
 76077 +		unsigned int, unsigned int);
       
 76078 +
       
 76079 +extern void ffi_closure_SYSV(void);
       
 76080 +
       
 76081 +#define WORD_SIZE			sizeof(unsigned int)
       
 76082 +#define ARGS_REGISTER_SIZE	(WORD_SIZE * 6)
       
 76083 +#define WORD_ALIGN(x)		ALIGN(x, WORD_SIZE)
       
 76084 +
       
 76085 +/* ffi_prep_args is called by the assembly routine once stack space
       
 76086 +   has been allocated for the function's arguments */
       
 76087 +void ffi_prep_args(void* stack, extended_cif* ecif)
       
 76088 +{
       
 76089 +	unsigned int i;
       
 76090 +	ffi_type** p_arg;
       
 76091 +	void** p_argv;
       
 76092 +	void* stack_args_p = stack;
       
 76093 +
       
 76094 +	p_argv = ecif->avalue;
       
 76095 +
       
 76096 +	if (ecif == NULL || ecif->cif == NULL) {
       
 76097 +		return; /* no description to prepare */
       
 76098 +	}
       
 76099 +
       
 76100 +	if ((ecif->cif->rtype != NULL) &&
       
 76101 +			(ecif->cif->rtype->type == FFI_TYPE_STRUCT))
       
 76102 +	{
       
 76103 +		/* if return type is a struct which is referenced on the stack/reg5,
       
 76104 +		 * by a pointer. Stored the return value pointer in r5.
       
 76105 +		 */
       
 76106 +		char* addr = stack_args_p;
       
 76107 +		memcpy(addr, &(ecif->rvalue), WORD_SIZE);
       
 76108 +		stack_args_p += WORD_SIZE;
       
 76109 +	}
       
 76110 +
       
 76111 +	if (ecif->avalue == NULL) {
       
 76112 +		return; /* no arguments to prepare */
       
 76113 +	}
       
 76114 +
       
 76115 +	for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs;
       
 76116 +			i++, p_arg++)
       
 76117 +	{
       
 76118 +		size_t size = (*p_arg)->size;
       
 76119 +		int type = (*p_arg)->type;
       
 76120 +		void* value = p_argv[i];
       
 76121 +		char* addr = stack_args_p;
       
 76122 +		int aligned_size = WORD_ALIGN(size);
       
 76123 +
       
 76124 +		/* force word alignment on the stack */
       
 76125 +		stack_args_p += aligned_size;
       
 76126 +		
       
 76127 +		switch (type)
       
 76128 +		{
       
 76129 +			case FFI_TYPE_UINT8:
       
 76130 +				*(unsigned int *)addr = (unsigned int)*(UINT8*)(value);
       
 76131 +				break;
       
 76132 +			case FFI_TYPE_SINT8:
       
 76133 +				*(signed int *)addr = (signed int)*(SINT8*)(value);
       
 76134 +				break;
       
 76135 +			case FFI_TYPE_UINT16:
       
 76136 +				*(unsigned int *)addr = (unsigned int)*(UINT16*)(value);
       
 76137 +				break;
       
 76138 +			case FFI_TYPE_SINT16:
       
 76139 +				*(signed int *)addr = (signed int)*(SINT16*)(value);
       
 76140 +				break;
       
 76141 +			case FFI_TYPE_STRUCT:
       
 76142 +#if __BIG_ENDIAN__
       
 76143 +				/*
       
 76144 +				 * MicroBlaze toolchain appears to emit:
       
 76145 +				 * bsrli r5, r5, 8 (caller)
       
 76146 +				 * ...
       
 76147 +				 * <branch to callee>
       
 76148 +				 * ...
       
 76149 +				 * bslli r5, r5, 8 (callee)
       
 76150 +				 * 
       
 76151 +				 * For structs like "struct a { uint8_t a[3]; };", when passed
       
 76152 +				 * by value.
       
 76153 +				 *
       
 76154 +				 * Structs like "struct b { uint16_t a; };" are also expected
       
 76155 +				 * to be packed strangely in registers.
       
 76156 +				 *
       
 76157 +				 * This appears to be because the microblaze toolchain expects
       
 76158 +				 * "struct b == uint16_t", which is only any issue for big
       
 76159 +				 * endian.
       
 76160 +				 *
       
 76161 +				 * The following is a work around for big-endian only, for the
       
 76162 +				 * above mentioned case, it will re-align the contents of a
       
 76163 +				 * <= 3-byte struct value.
       
 76164 +				 */
       
 76165 +				if (size < WORD_SIZE)
       
 76166 +				{
       
 76167 +				  memcpy (addr + (WORD_SIZE - size), value, size);
       
 76168 +				  break;
       
 76169 +				}
       
 76170 +#endif
       
 76171 +			case FFI_TYPE_SINT32:
       
 76172 +			case FFI_TYPE_UINT32:
       
 76173 +			case FFI_TYPE_FLOAT:
       
 76174 +			case FFI_TYPE_SINT64:
       
 76175 +			case FFI_TYPE_UINT64:
       
 76176 +			case FFI_TYPE_DOUBLE:
       
 76177 +			default:
       
 76178 +				memcpy(addr, value, aligned_size);
       
 76179 +		}
       
 76180 +	}
       
 76181 +}
       
 76182 +
       
 76183 +ffi_status ffi_prep_cif_machdep(ffi_cif* cif)
       
 76184 +{
       
 76185 +	/* check ABI */
       
 76186 +	switch (cif->abi)
       
 76187 +	{
       
 76188 +		case FFI_SYSV:
       
 76189 +			break;
       
 76190 +		default:
       
 76191 +			return FFI_BAD_ABI;
       
 76192 +	}
       
 76193 +	return FFI_OK;
       
 76194 +}
       
 76195 +
       
 76196 +void ffi_call(ffi_cif* cif, void (*fn)(void), void* rvalue, void** avalue)
       
 76197 +{
       
 76198 +	extended_cif ecif;
       
 76199 +	ecif.cif = cif;
       
 76200 +	ecif.avalue = avalue;
       
 76201 +
       
 76202 +	/* If the return value is a struct and we don't have a return */
       
 76203 +	/* value address then we need to make one */
       
 76204 +	if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) {
       
 76205 +		ecif.rvalue = alloca(cif->rtype->size);
       
 76206 +	} else {
       
 76207 +		ecif.rvalue = rvalue;
       
 76208 +	}
       
 76209 +
       
 76210 +	switch (cif->abi)
       
 76211 +	{
       
 76212 +	case FFI_SYSV:
       
 76213 +		ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags,
       
 76214 +				ecif.rvalue, fn, cif->rtype->type, cif->rtype->size);
       
 76215 +		break;
       
 76216 +	default:
       
 76217 +		FFI_ASSERT(0);
       
 76218 +		break;
       
 76219 +	}
       
 76220 +}
       
 76221 +
       
 76222 +void ffi_closure_call_SYSV(void* register_args, void* stack_args,
       
 76223 +			ffi_closure* closure, void* rvalue,
       
 76224 +			unsigned int* rtype, unsigned int* rsize)
       
 76225 +{
       
 76226 +	/* prepare arguments for closure call */
       
 76227 +	ffi_cif* cif = closure->cif;
       
 76228 +	ffi_type** arg_types = cif->arg_types;
       
 76229 +
       
 76230 +	/* re-allocate data for the args. This needs to be done in order to keep
       
 76231 +	 * multi-word objects (e.g. structs) in contiguous memory. Callers are not
       
 76232 +	 * required to store the value of args in the lower 6 words in the stack
       
 76233 +	 * (although they are allocated in the stack).
       
 76234 +	 */
       
 76235 +	char* stackclone = alloca(cif->bytes);
       
 76236 +	void** avalue = alloca(cif->nargs * sizeof(void*));
       
 76237 +	void* struct_rvalue = NULL;
       
 76238 +	char* ptr = stackclone;
       
 76239 +	int i;
       
 76240 +
       
 76241 +	/* copy registers into stack clone */
       
 76242 +	int registers_used = cif->bytes;
       
 76243 +	if (registers_used > ARGS_REGISTER_SIZE) {
       
 76244 +		registers_used = ARGS_REGISTER_SIZE;
       
 76245 +	}
       
 76246 +	memcpy(stackclone, register_args, registers_used);
       
 76247 +
       
 76248 +	/* copy stack allocated args into stack clone */
       
 76249 +	if (cif->bytes > ARGS_REGISTER_SIZE) {
       
 76250 +		int stack_used = cif->bytes - ARGS_REGISTER_SIZE;
       
 76251 +		memcpy(stackclone + ARGS_REGISTER_SIZE, stack_args, stack_used);
       
 76252 +	}
       
 76253 +
       
 76254 +	/* preserve struct type return pointer passing */
       
 76255 +	if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) {
       
 76256 +		struct_rvalue = *((void**)ptr);
       
 76257 +		ptr += WORD_SIZE;
       
 76258 +	}
       
 76259 +
       
 76260 +	/* populate arg pointer list */
       
 76261 +	for (i = 0; i < cif->nargs; i++)
       
 76262 +	{
       
 76263 +		switch (arg_types[i]->type)
       
 76264 +		{
       
 76265 +			case FFI_TYPE_SINT8:
       
 76266 +			case FFI_TYPE_UINT8:
       
 76267 +#ifdef __BIG_ENDIAN__
       
 76268 +				avalue[i] = ptr + 3;
       
 76269 +#else
       
 76270 +				avalue[i] = ptr;
       
 76271 +#endif
       
 76272 +				break;
       
 76273 +			case FFI_TYPE_SINT16:
       
 76274 +			case FFI_TYPE_UINT16:
       
 76275 +#ifdef __BIG_ENDIAN__
       
 76276 +				avalue[i] = ptr + 2;
       
 76277 +#else
       
 76278 +				avalue[i] = ptr;
       
 76279 +#endif
       
 76280 +				break;
       
 76281 +			case FFI_TYPE_STRUCT:
       
 76282 +#if __BIG_ENDIAN__
       
 76283 +				/*
       
 76284 +				 * Work around strange ABI behaviour.
       
 76285 +				 * (see info in ffi_prep_args)
       
 76286 +				 */
       
 76287 +				if (arg_types[i]->size < WORD_SIZE)
       
 76288 +				{
       
 76289 +				  memcpy (ptr, ptr + (WORD_SIZE - arg_types[i]->size), arg_types[i]->size);
       
 76290 +				}
       
 76291 +#endif
       
 76292 +				avalue[i] = (void*)ptr;
       
 76293 +				break;
       
 76294 +			case FFI_TYPE_UINT64:
       
 76295 +			case FFI_TYPE_SINT64:
       
 76296 +			case FFI_TYPE_DOUBLE:
       
 76297 +				avalue[i] = ptr;
       
 76298 +				break;
       
 76299 +			case FFI_TYPE_SINT32:
       
 76300 +			case FFI_TYPE_UINT32:
       
 76301 +			case FFI_TYPE_FLOAT:
       
 76302 +			default:
       
 76303 +				/* default 4-byte argument */
       
 76304 +				avalue[i] = ptr;
       
 76305 +				break;
       
 76306 +		}
       
 76307 +		ptr += WORD_ALIGN(arg_types[i]->size);
       
 76308 +	}
       
 76309 +
       
 76310 +	/* set the return type info passed back to the wrapper */
       
 76311 +	*rsize = cif->rtype->size;
       
 76312 +	*rtype = cif->rtype->type;
       
 76313 +	if (struct_rvalue != NULL) {
       
 76314 +		closure->fun(cif, struct_rvalue, avalue, closure->user_data);
       
 76315 +		/* copy struct return pointer value into function return value */
       
 76316 +		*((void**)rvalue) = struct_rvalue;
       
 76317 +	} else {
       
 76318 +		closure->fun(cif, rvalue, avalue, closure->user_data);
       
 76319 +	}
       
 76320 +}
       
 76321 +
       
 76322 +ffi_status ffi_prep_closure_loc(
       
 76323 +		ffi_closure* closure, ffi_cif* cif,
       
 76324 +		void (*fun)(ffi_cif*, void*, void**, void*),
       
 76325 +		void* user_data, void* codeloc)
       
 76326 +{
       
 76327 +	unsigned long* tramp = (unsigned long*)&(closure->tramp[0]);
       
 76328 +	unsigned long cls = (unsigned long)codeloc;
       
 76329 +	unsigned long fn = 0;
       
 76330 +	unsigned long fn_closure_call_sysv = (unsigned long)ffi_closure_call_SYSV;
       
 76331 +
       
 76332 +	closure->cif = cif;
       
 76333 +	closure->fun = fun;
       
 76334 +	closure->user_data = user_data;
       
 76335 +
       
 76336 +	switch (cif->abi)
       
 76337 +	{
       
 76338 +	case FFI_SYSV:
       
 76339 +		fn = (unsigned long)ffi_closure_SYSV;
       
 76340 +
       
 76341 +		/* load r11 (temp) with fn */
       
 76342 +		/* imm fn(upper) */
       
 76343 +		tramp[0] = 0xb0000000 | ((fn >> 16) & 0xffff);
       
 76344 +		/* addik r11, r0, fn(lower) */
       
 76345 +		tramp[1] = 0x31600000 | (fn & 0xffff);
       
 76346 +
       
 76347 +		/* load r12 (temp) with cls */
       
 76348 +		/* imm cls(upper) */
       
 76349 +		tramp[2] = 0xb0000000 | ((cls >> 16) & 0xffff);
       
 76350 +		/* addik r12, r0, cls(lower) */
       
 76351 +		tramp[3] = 0x31800000 | (cls & 0xffff);
       
 76352 +
       
 76353 +		/* load r3 (temp) with ffi_closure_call_SYSV */
       
 76354 +		/* imm fn_closure_call_sysv(upper) */
       
 76355 +		tramp[4] = 0xb0000000 | ((fn_closure_call_sysv >> 16) & 0xffff);
       
 76356 +		/* addik r3, r0, fn_closure_call_sysv(lower) */
       
 76357 +		tramp[5] = 0x30600000 | (fn_closure_call_sysv & 0xffff);
       
 76358 +		/* branch/jump to address stored in r11 (fn) */
       
 76359 +		tramp[6] = 0x98085800; /* bra r11 */
       
 76360 +
       
 76361 +		break;
       
 76362 +	default:
       
 76363 +		return FFI_BAD_ABI;
       
 76364 +	}
       
 76365 +	return FFI_OK;
       
 76366 +}
       
 76367 diff --git a/js/src/ctypes/libffi/src/microblaze/ffitarget.h b/js/src/ctypes/libffi/src/microblaze/ffitarget.h
       
 76368 new file mode 100644
       
 76369 --- /dev/null
       
 76370 +++ b/js/src/ctypes/libffi/src/microblaze/ffitarget.h
       
 76371 @@ -0,0 +1,53 @@
       
 76372 +/* -----------------------------------------------------------------------
       
 76373 +   ffitarget.h - Copyright (c) 2012, 2013 Xilinx, Inc
       
 76374 +
       
 76375 +   Target configuration macros for MicroBlaze.
       
 76376 +
       
 76377 +   Permission is hereby granted, free of charge, to any person obtaining
       
 76378 +   a copy of this software and associated documentation files (the
       
 76379 +   ``Software''), to deal in the Software without restriction, including
       
 76380 +   without limitation the rights to use, copy, modify, merge, publish,
       
 76381 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 76382 +   permit persons to whom the Software is furnished to do so, subject to
       
 76383 +   the following conditions:
       
 76384 +
       
 76385 +   The above copyright notice and this permission notice shall be included
       
 76386 +   in all copies or substantial portions of the Software.
       
 76387 +
       
 76388 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 76389 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 76390 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 76391 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 76392 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 76393 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 76394 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 76395 +   DEALINGS IN THE SOFTWARE.
       
 76396 +   ----------------------------------------------------------------------- */
       
 76397 +
       
 76398 +#ifndef LIBFFI_TARGET_H
       
 76399 +#define LIBFFI_TARGET_H
       
 76400 +
       
 76401 +#ifndef LIBFFI_H
       
 76402 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 76403 +#endif
       
 76404 +
       
 76405 +#ifndef LIBFFI_ASM
       
 76406 +typedef unsigned long			ffi_arg;
       
 76407 +typedef signed long			ffi_sarg;
       
 76408 +
       
 76409 +typedef enum ffi_abi {
       
 76410 +	FFI_FIRST_ABI = 0,
       
 76411 +	FFI_SYSV,
       
 76412 +	FFI_LAST_ABI,
       
 76413 +	FFI_DEFAULT_ABI = FFI_SYSV
       
 76414 +} ffi_abi;
       
 76415 +#endif
       
 76416 +
       
 76417 +/* Definitions for closures */
       
 76418 +
       
 76419 +#define FFI_CLOSURES 1
       
 76420 +#define FFI_NATIVE_RAW_API 0
       
 76421 +
       
 76422 +#define FFI_TRAMPOLINE_SIZE (4*8)
       
 76423 +
       
 76424 +#endif
       
 76425 diff --git a/js/src/ctypes/libffi/src/microblaze/sysv.S b/js/src/ctypes/libffi/src/microblaze/sysv.S
       
 76426 new file mode 100644
       
 76427 --- /dev/null
       
 76428 +++ b/js/src/ctypes/libffi/src/microblaze/sysv.S
       
 76429 @@ -0,0 +1,302 @@
       
 76430 +/* -----------------------------------------------------------------------
       
 76431 +   sysv.S - Copyright (c) 2012, 2013 Xilinx, Inc
       
 76432 +
       
 76433 +   MicroBlaze Foreign Function Interface
       
 76434 +
       
 76435 +   Permission is hereby granted, free of charge, to any person obtaining
       
 76436 +   a copy of this software and associated documentation files (the
       
 76437 +   ``Software''), to deal in the Software without restriction, including
       
 76438 +   without limitation the rights to use, copy, modify, merge, publish,
       
 76439 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 76440 +   permit persons to whom the Software is furnished to do so, subject to
       
 76441 +   the following conditions:
       
 76442 +
       
 76443 +   The above copyright notice and this permission notice shall be included
       
 76444 +   in all copies or substantial portions of the Software.
       
 76445 +
       
 76446 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 76447 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 76448 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 76449 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 76450 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 76451 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 76452 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 76453 +   DEALINGS IN THE SOFTWARE.
       
 76454 +   ----------------------------------------------------------------------- */
       
 76455 +
       
 76456 +#define LIBFFI_ASM
       
 76457 +#include <fficonfig.h>
       
 76458 +#include <ffi.h>
       
 76459 +
       
 76460 +	/*
       
 76461 +	 * arg[0] (r5)  = ffi_prep_args,
       
 76462 +	 * arg[1] (r6)  = &ecif,
       
 76463 +	 * arg[2] (r7)  = cif->bytes,
       
 76464 +	 * arg[3] (r8)  = cif->flags,
       
 76465 +	 * arg[4] (r9)  = ecif.rvalue,
       
 76466 +	 * arg[5] (r10) = fn
       
 76467 +	 * arg[6] (sp[0]) = cif->rtype->type
       
 76468 +	 * arg[7] (sp[4]) = cif->rtype->size
       
 76469 +	 */
       
 76470 +	.text
       
 76471 +	.globl ffi_call_SYSV
       
 76472 +	.type ffi_call_SYSV, @function
       
 76473 +ffi_call_SYSV:
       
 76474 +	/* push callee saves */
       
 76475 +	addik r1, r1, -20
       
 76476 +	swi r19, r1, 0 /* Frame Pointer */
       
 76477 +	swi r20, r1, 4 /* PIC register */
       
 76478 +	swi r21, r1, 8 /* PIC register */
       
 76479 +	swi r22, r1, 12 /* save for locals */
       
 76480 +	swi r23, r1, 16 /* save for locals */
       
 76481 +	
       
 76482 +	/* save the r5-r10 registers in the stack */
       
 76483 +	addik r1, r1, -24 /* increment sp to store 6x 32-bit words */
       
 76484 +	swi r5, r1, 0
       
 76485 +	swi r6, r1, 4
       
 76486 +	swi r7, r1, 8
       
 76487 +	swi r8, r1, 12
       
 76488 +	swi r9, r1, 16
       
 76489 +	swi r10, r1, 20
       
 76490 +
       
 76491 +	/* save function pointer */
       
 76492 +	addik r3, r5, 0 /* copy ffi_prep_args into r3 */
       
 76493 +	addik r22, r1, 0 /* save sp for unallocated args into r22 (callee-saved) */
       
 76494 +	addik r23, r10, 0 /* save function address into r23 (callee-saved) */
       
 76495 +
       
 76496 +	/* prepare stack with allocation for n (bytes = r7) args */
       
 76497 +	rsub r1, r7, r1 /* subtract bytes from sp */
       
 76498 +
       
 76499 +	/* prep args for ffi_prep_args call */
       
 76500 +	addik r5, r1, 0 /* store stack pointer into arg[0] */
       
 76501 +	/* r6 still holds ecif for arg[1] */
       
 76502 +
       
 76503 +	/* Call ffi_prep_args(stack, &ecif). */
       
 76504 +	addik r1, r1, -4
       
 76505 +	swi r15, r1, 0 /* store the link register in the frame */
       
 76506 +	brald r15, r3
       
 76507 +	nop /* branch has delay slot */
       
 76508 +	lwi r15, r1, 0
       
 76509 +	addik r1, r1, 4 /* restore the link register from the frame */
       
 76510 +	/* returns calling stack pointer location */
       
 76511 +
       
 76512 +	/* prepare args for fn call, prep_args populates them onto the stack */
       
 76513 +	lwi r5, r1, 0 /* arg[0] */
       
 76514 +	lwi r6, r1, 4 /* arg[1] */
       
 76515 +	lwi r7, r1, 8 /* arg[2] */
       
 76516 +	lwi r8, r1, 12 /* arg[3] */
       
 76517 +	lwi r9, r1, 16 /* arg[4] */
       
 76518 +	lwi r10, r1, 20 /* arg[5] */
       
 76519 +
       
 76520 +	/* call (fn) (...). */
       
 76521 +	addik r1, r1, -4
       
 76522 +	swi r15, r1, 0 /* store the link register in the frame */
       
 76523 +	brald r15, r23
       
 76524 +	nop /* branch has delay slot */
       
 76525 +	lwi r15, r1, 0
       
 76526 +	addik r1, r1, 4 /* restore the link register from the frame */
       
 76527 +
       
 76528 +	/* Remove the space we pushed for the args. */
       
 76529 +	addik r1, r22, 0 /* restore old SP */
       
 76530 +
       
 76531 +	/* restore this functions parameters */
       
 76532 +	lwi r5, r1, 0 /* arg[0] */
       
 76533 +	lwi r6, r1, 4 /* arg[1] */
       
 76534 +	lwi r7, r1, 8 /* arg[2] */
       
 76535 +	lwi r8, r1, 12 /* arg[3] */
       
 76536 +	lwi r9, r1, 16 /* arg[4] */
       
 76537 +	lwi r10, r1, 20 /* arg[5] */
       
 76538 +	addik r1, r1, 24 /* decrement sp to de-allocate 6x 32-bit words */
       
 76539 +
       
 76540 +	/* If the return value pointer is NULL, assume no return value. */
       
 76541 +	beqi r9, ffi_call_SYSV_end
       
 76542 +
       
 76543 +	lwi r22, r1, 48 /* get return type (20 for locals + 28 for arg[6]) */
       
 76544 +	lwi r23, r1, 52 /* get return size (20 for locals + 32 for arg[7])  */
       
 76545 +	
       
 76546 +	/* Check if return type is actually a struct, do nothing */
       
 76547 +	rsubi r11, r22, FFI_TYPE_STRUCT
       
 76548 +	beqi r11, ffi_call_SYSV_end
       
 76549 +
       
 76550 +	/* Return 8bit */
       
 76551 +	rsubi r11, r23, 1
       
 76552 +	beqi r11, ffi_call_SYSV_store8
       
 76553 +
       
 76554 +	/* Return 16bit */
       
 76555 +	rsubi r11, r23, 2
       
 76556 +	beqi r11, ffi_call_SYSV_store16
       
 76557 +
       
 76558 +	/* Return 32bit */
       
 76559 +	rsubi r11, r23, 4
       
 76560 +	beqi r11, ffi_call_SYSV_store32
       
 76561 +
       
 76562 +	/* Return 64bit */
       
 76563 +	rsubi r11, r23, 8
       
 76564 +	beqi r11, ffi_call_SYSV_store64
       
 76565 +
       
 76566 +	/* Didn't match anything */
       
 76567 +	bri ffi_call_SYSV_end
       
 76568 +
       
 76569 +ffi_call_SYSV_store64:
       
 76570 +	swi r3, r9, 0 /* store word r3 into return value */
       
 76571 +	swi r4, r9, 4 /* store word r4 into return value */
       
 76572 +	bri ffi_call_SYSV_end
       
 76573 +
       
 76574 +ffi_call_SYSV_store32:
       
 76575 +	swi r3, r9, 0 /* store word r3 into return value */
       
 76576 +	bri ffi_call_SYSV_end
       
 76577 +
       
 76578 +ffi_call_SYSV_store16:
       
 76579 +#ifdef __BIG_ENDIAN__
       
 76580 +	shi r3, r9, 2 /* store half-word r3 into return value */
       
 76581 +#else
       
 76582 +	shi r3, r9, 0 /* store half-word r3 into return value */
       
 76583 +#endif
       
 76584 +	bri ffi_call_SYSV_end
       
 76585 +
       
 76586 +ffi_call_SYSV_store8:
       
 76587 +#ifdef __BIG_ENDIAN__
       
 76588 +	sbi r3, r9, 3 /* store byte r3 into return value */
       
 76589 +#else
       
 76590 +	sbi r3, r9, 0 /* store byte r3 into return value */
       
 76591 +#endif
       
 76592 +	bri ffi_call_SYSV_end
       
 76593 +
       
 76594 +ffi_call_SYSV_end:
       
 76595 +	/* callee restores */
       
 76596 +	lwi r19, r1, 0 /* frame pointer */
       
 76597 +	lwi r20, r1, 4 /* PIC register */
       
 76598 +	lwi r21, r1, 8 /* PIC register */
       
 76599 +	lwi r22, r1, 12
       
 76600 +	lwi r23, r1, 16
       
 76601 +	addik r1, r1, 20
       
 76602 +
       
 76603 +	/* return from sub-routine (with delay slot) */
       
 76604 +	rtsd r15, 8
       
 76605 +	nop
       
 76606 +
       
 76607 +	.size ffi_call_SYSV, . - ffi_call_SYSV
       
 76608 +
       
 76609 +/* ------------------------------------------------------------------------- */
       
 76610 +
       
 76611 +	/*
       
 76612 +	 * args passed into this function, are passed down to the callee.
       
 76613 +	 * this function is the target of the closure trampoline, as such r12 is 
       
 76614 +	 * a pointer to the closure object.
       
 76615 +	 */
       
 76616 +	.text
       
 76617 +	.globl ffi_closure_SYSV
       
 76618 +	.type ffi_closure_SYSV, @function
       
 76619 +ffi_closure_SYSV:
       
 76620 +	/* push callee saves */
       
 76621 +	addik r11, r1, 28 /* save stack args start location (excluding regs/link) */
       
 76622 +	addik r1, r1, -12
       
 76623 +	swi r19, r1, 0 /* Frame Pointer */
       
 76624 +	swi r20, r1, 4 /* PIC register */
       
 76625 +	swi r21, r1, 8 /* PIC register */
       
 76626 +
       
 76627 +	/* store register args on stack */
       
 76628 +	addik r1, r1, -24
       
 76629 +	swi r5, r1, 0
       
 76630 +	swi r6, r1, 4
       
 76631 +	swi r7, r1, 8
       
 76632 +	swi r8, r1, 12
       
 76633 +	swi r9, r1, 16
       
 76634 +	swi r10, r1, 20
       
 76635 +
       
 76636 +	/* setup args */
       
 76637 +	addik r5, r1, 0 /* register_args */
       
 76638 +	addik r6, r11, 0 /* stack_args */
       
 76639 +	addik r7, r12, 0 /* closure object */
       
 76640 +	addik r1, r1, -8 /* allocate return value */
       
 76641 +	addik r8, r1, 0 /* void* rvalue */
       
 76642 +	addik r1, r1, -8 /* allocate for return type/size values */
       
 76643 +	addik r9, r1, 0 /* void* rtype */
       
 76644 +	addik r10, r1, 4 /* void* rsize */
       
 76645 +
       
 76646 +	/* call the wrap_call function */
       
 76647 +	addik r1, r1, -28 /* allocate args + link reg */
       
 76648 +	swi r15, r1, 0 /* store the link register in the frame */
       
 76649 +	brald r15, r3
       
 76650 +	nop /* branch has delay slot */
       
 76651 +	lwi r15, r1, 0
       
 76652 +	addik r1, r1, 28 /* restore the link register from the frame */
       
 76653 +
       
 76654 +ffi_closure_SYSV_prepare_return:
       
 76655 +	lwi r9, r1, 0 /* rtype */
       
 76656 +	lwi r10, r1, 4 /* rsize */
       
 76657 +	addik r1, r1, 8 /* de-allocate return info values */
       
 76658 +
       
 76659 +	/* Check if return type is actually a struct, store 4 bytes */
       
 76660 +	rsubi r11, r9, FFI_TYPE_STRUCT
       
 76661 +	beqi r11, ffi_closure_SYSV_store32
       
 76662 +
       
 76663 +	/* Return 8bit */
       
 76664 +	rsubi r11, r10, 1
       
 76665 +	beqi r11, ffi_closure_SYSV_store8
       
 76666 +
       
 76667 +	/* Return 16bit */
       
 76668 +	rsubi r11, r10, 2
       
 76669 +	beqi r11, ffi_closure_SYSV_store16
       
 76670 +
       
 76671 +	/* Return 32bit */
       
 76672 +	rsubi r11, r10, 4
       
 76673 +	beqi r11, ffi_closure_SYSV_store32
       
 76674 +
       
 76675 +	/* Return 64bit */
       
 76676 +	rsubi r11, r10, 8
       
 76677 +	beqi r11, ffi_closure_SYSV_store64
       
 76678 +
       
 76679 +	/* Didn't match anything */
       
 76680 +	bri ffi_closure_SYSV_end
       
 76681 +
       
 76682 +ffi_closure_SYSV_store64:
       
 76683 +	lwi r3, r1, 0 /* store word r3 into return value */
       
 76684 +	lwi r4, r1, 4 /* store word r4 into return value */
       
 76685 +	/* 64 bits == 2 words, no sign extend occurs */
       
 76686 +	bri ffi_closure_SYSV_end
       
 76687 +
       
 76688 +ffi_closure_SYSV_store32:
       
 76689 +	lwi r3, r1, 0 /* store word r3 into return value */
       
 76690 +	/* 32 bits == 1 word, no sign extend occurs */
       
 76691 +	bri ffi_closure_SYSV_end
       
 76692 +
       
 76693 +ffi_closure_SYSV_store16:
       
 76694 +#ifdef __BIG_ENDIAN__
       
 76695 +	lhui r3, r1, 2 /* store half-word r3 into return value */
       
 76696 +#else
       
 76697 +	lhui r3, r1, 0 /* store half-word r3 into return value */
       
 76698 +#endif
       
 76699 +	rsubi r11, r9, FFI_TYPE_SINT16
       
 76700 +	bnei r11, ffi_closure_SYSV_end
       
 76701 +	sext16 r3, r3 /* fix sign extend of sint8 */
       
 76702 +	bri ffi_closure_SYSV_end
       
 76703 +
       
 76704 +ffi_closure_SYSV_store8:
       
 76705 +#ifdef __BIG_ENDIAN__
       
 76706 +	lbui r3, r1, 3 /* store byte r3 into return value */
       
 76707 +#else
       
 76708 +	lbui r3, r1, 0 /* store byte r3 into return value */
       
 76709 +#endif
       
 76710 +	rsubi r11, r9, FFI_TYPE_SINT8
       
 76711 +	bnei r11, ffi_closure_SYSV_end
       
 76712 +	sext8 r3, r3 /* fix sign extend of sint8 */
       
 76713 +	bri ffi_closure_SYSV_end
       
 76714 +
       
 76715 +ffi_closure_SYSV_end:
       
 76716 +	addik r1, r1, 8 /* de-allocate return value */
       
 76717 +
       
 76718 +	/* de-allocate stored args */
       
 76719 +	addik r1, r1, 24
       
 76720 +
       
 76721 +	/* callee restores */
       
 76722 +	lwi r19, r1, 0 /* frame pointer */
       
 76723 +	lwi r20, r1, 4 /* PIC register */
       
 76724 +	lwi r21, r1, 8 /* PIC register */
       
 76725 +	addik r1, r1, 12
       
 76726 +
       
 76727 +	/* return from sub-routine (with delay slot) */
       
 76728 +	rtsd r15, 8
       
 76729 +	nop
       
 76730 +
       
 76731 +	.size ffi_closure_SYSV, . - ffi_closure_SYSV
       
 76732 diff --git a/js/src/ctypes/libffi/src/mips/ffi.c b/js/src/ctypes/libffi/src/mips/ffi.c
       
 76733 --- a/js/src/ctypes/libffi/src/mips/ffi.c
       
 76734 +++ b/js/src/ctypes/libffi/src/mips/ffi.c
       
 76735 @@ -1,11 +1,12 @@
       
 76736  /* -----------------------------------------------------------------------
       
 76737 -   ffi.c - Copyright (c) 1996, 2007, 2008  Red Hat, Inc.
       
 76738 -           Copyright (c) 2008       David Daney
       
 76739 +   ffi.c - Copyright (c) 2011  Anthony Green
       
 76740 +           Copyright (c) 2008  David Daney
       
 76741 +           Copyright (c) 1996, 2007, 2008, 2011  Red Hat, Inc.
       
 76742     
       
 76743     MIPS Foreign Function Interface 
       
 76744  
       
 76745     Permission is hereby granted, free of charge, to any person obtaining
       
 76746     a copy of this software and associated documentation files (the
       
 76747     ``Software''), to deal in the Software without restriction, including
       
 76748     without limitation the rights to use, copy, modify, merge, publish,
       
 76749     distribute, sublicense, and/or sell copies of the Software, and to
       
 76750 @@ -164,17 +165,24 @@ static void ffi_prep_args(char *stack,
       
 76751  		*(ffi_arg *)argp = *(UINT16 *)(* p_argv);
       
 76752  		break;
       
 76753  		  
       
 76754  	      case FFI_TYPE_SINT32:
       
 76755  		*(ffi_arg *)argp = *(SINT32 *)(* p_argv);
       
 76756  		break;
       
 76757  		  
       
 76758  	      case FFI_TYPE_UINT32:
       
 76759 +#ifdef FFI_MIPS_N32
       
 76760 +		/* The N32 ABI requires that 32-bit integers
       
 76761 +		   be sign-extended to 64-bits, regardless of
       
 76762 +		   whether they are signed or unsigned. */
       
 76763 +		*(ffi_arg *)argp = *(SINT32 *)(* p_argv);
       
 76764 +#else
       
 76765  		*(ffi_arg *)argp = *(UINT32 *)(* p_argv);
       
 76766 +#endif
       
 76767  		break;
       
 76768  
       
 76769  	      /* This can only happen with 64bit slots.  */
       
 76770  	      case FFI_TYPE_FLOAT:
       
 76771  		*(float *) argp = *(float *)(* p_argv);
       
 76772  		break;
       
 76773  
       
 76774  	      /* Handle structures.  */
       
 76775 @@ -661,20 +669,29 @@ ffi_prep_closure_loc (ffi_closure *closu
       
 76776  		      void *user_data,
       
 76777  		      void *codeloc)
       
 76778  {
       
 76779    unsigned int *tramp = (unsigned int *) &closure->tramp[0];
       
 76780    void * fn;
       
 76781    char *clear_location = (char *) codeloc;
       
 76782  
       
 76783  #if defined(FFI_MIPS_O32)
       
 76784 -  FFI_ASSERT(cif->abi == FFI_O32 || cif->abi == FFI_O32_SOFT_FLOAT);
       
 76785 +  if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT)
       
 76786 +    return FFI_BAD_ABI;
       
 76787    fn = ffi_closure_O32;
       
 76788 -#else /* FFI_MIPS_N32 */
       
 76789 -  FFI_ASSERT(cif->abi == FFI_N32 || cif->abi == FFI_N64);
       
 76790 +#else
       
 76791 +#if _MIPS_SIM ==_ABIN32
       
 76792 +  if (cif->abi != FFI_N32
       
 76793 +      && cif->abi != FFI_N32_SOFT_FLOAT)
       
 76794 +    return FFI_BAD_ABI;
       
 76795 +#else
       
 76796 +  if (cif->abi != FFI_N64
       
 76797 +      && cif->abi != FFI_N64_SOFT_FLOAT)
       
 76798 +    return FFI_BAD_ABI;
       
 76799 +#endif
       
 76800    fn = ffi_closure_N32;
       
 76801  #endif /* FFI_MIPS_O32 */
       
 76802  
       
 76803  #if defined(FFI_MIPS_O32) || (_MIPS_SIM ==_ABIN32)
       
 76804    /* lui  $25,high(fn) */
       
 76805    tramp[0] = 0x3c190000 | ((unsigned)fn >> 16);
       
 76806    /* ori  $25,low(fn)  */
       
 76807    tramp[1] = 0x37390000 | ((unsigned)fn & 0xffff);
       
 76808 diff --git a/js/src/ctypes/libffi/src/mips/ffitarget.h b/js/src/ctypes/libffi/src/mips/ffitarget.h
       
 76809 --- a/js/src/ctypes/libffi/src/mips/ffitarget.h
       
 76810 +++ b/js/src/ctypes/libffi/src/mips/ffitarget.h
       
 76811 @@ -1,10 +1,11 @@
       
 76812  /* -----------------------------------------------------------------*-C-*-
       
 76813 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 76814 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 76815 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 76816     Target configuration macros for MIPS.
       
 76817  
       
 76818     Permission is hereby granted, free of charge, to any person obtaining
       
 76819     a copy of this software and associated documentation files (the
       
 76820     ``Software''), to deal in the Software without restriction, including
       
 76821     without limitation the rights to use, copy, modify, merge, publish,
       
 76822     distribute, sublicense, and/or sell copies of the Software, and to
       
 76823     permit persons to whom the Software is furnished to do so, subject to
       
 76824 @@ -22,41 +23,53 @@
       
 76825     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 76826     DEALINGS IN THE SOFTWARE.
       
 76827  
       
 76828     ----------------------------------------------------------------------- */
       
 76829  
       
 76830  #ifndef LIBFFI_TARGET_H
       
 76831  #define LIBFFI_TARGET_H
       
 76832  
       
 76833 +#ifndef LIBFFI_H
       
 76834 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 76835 +#endif
       
 76836 +
       
 76837  #ifdef linux
       
 76838  # include <asm/sgidefs.h>
       
 76839 +#elif defined(__rtems__)
       
 76840 +/*
       
 76841 + * Subprogram calling convention - copied from sgidefs.h
       
 76842 + */
       
 76843 +#define _MIPS_SIM_ABI32		1
       
 76844 +#define _MIPS_SIM_NABI32	2
       
 76845 +#define _MIPS_SIM_ABI64		3
       
 76846  #elif !defined(__OpenBSD__)
       
 76847  # include <sgidefs.h>
       
 76848  #endif
       
 76849 +
       
 76850  #  ifndef _ABIN32
       
 76851  #    define _ABIN32 _MIPS_SIM_NABI32
       
 76852  #  endif
       
 76853  #  ifndef _ABI64
       
 76854  #    define _ABI64 _MIPS_SIM_ABI64
       
 76855  #  endif
       
 76856  #  ifndef _ABIO32
       
 76857  #    define _ABIO32 _MIPS_SIM_ABI32
       
 76858  #  endif
       
 76859  
       
 76860  #if !defined(_MIPS_SIM)
       
 76861 --- something is very wrong --
       
 76862 +# error -- something is very wrong --
       
 76863  #else
       
 76864  #  if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64))
       
 76865  #    define FFI_MIPS_N32
       
 76866  #  else
       
 76867  #    if (_MIPS_SIM==_ABIO32 && defined(_ABIO32))
       
 76868  #      define FFI_MIPS_O32
       
 76869  #    else
       
 76870 --- this is an unsupported platform --
       
 76871 +#     error -- this is an unsupported platform --
       
 76872  #    endif
       
 76873  #  endif
       
 76874  #endif
       
 76875  
       
 76876  #ifdef FFI_MIPS_O32
       
 76877  /* O32 stack frames have 32bit integer args */
       
 76878  #  define FFI_SIZEOF_ARG    4
       
 76879  #else
       
 76880 diff --git a/js/src/ctypes/libffi/src/mips/n32.S b/js/src/ctypes/libffi/src/mips/n32.S
       
 76881 --- a/js/src/ctypes/libffi/src/mips/n32.S
       
 76882 +++ b/js/src/ctypes/libffi/src/mips/n32.S
       
 76883 @@ -38,16 +38,17 @@
       
 76884  #define raddr    a4
       
 76885  #define fn       a5
       
 76886  
       
 76887  #define SIZEOF_FRAME	( 8 * FFI_SIZEOF_ARG )
       
 76888  
       
 76889  #ifdef __GNUC__
       
 76890  	.abicalls
       
 76891  #endif
       
 76892 +	.set mips4
       
 76893  	.text
       
 76894  	.align	2
       
 76895  	.globl	ffi_call_N32
       
 76896  	.ent	ffi_call_N32
       
 76897  ffi_call_N32:	
       
 76898  .LFB3:
       
 76899  	.frame	$fp, SIZEOF_FRAME, ra
       
 76900  	.mask	0xc0000000,-FFI_SIZEOF_ARG
       
 76901 @@ -102,111 +103,95 @@ sixteen:
       
 76902  
       
 76903  	ADDU	t9, t9, t8
       
 76904  	
       
 76905  loadregs:	
       
 76906  
       
 76907  	REG_L	t6, 3*FFI_SIZEOF_ARG($fp)  # load the flags word into t6.
       
 76908  
       
 76909  	and	t4, t6, ((1<<FFI_FLAG_BITS)-1)
       
 76910 -	bnez	t4, arg1_floatp
       
 76911  	REG_L	a0, 0*FFI_SIZEOF_ARG(t9)
       
 76912 -	b	arg1_next
       
 76913 -arg1_floatp:	
       
 76914 +	beqz	t4, arg1_next
       
 76915  	bne	t4, FFI_TYPE_FLOAT, arg1_doublep
       
 76916  	l.s	$f12, 0*FFI_SIZEOF_ARG(t9)
       
 76917  	b	arg1_next
       
 76918  arg1_doublep:	
       
 76919  	l.d	$f12, 0*FFI_SIZEOF_ARG(t9)
       
 76920  arg1_next:	
       
 76921  	
       
 76922  	SRL	t4, t6, 1*FFI_FLAG_BITS
       
 76923  	and	t4, ((1<<FFI_FLAG_BITS)-1)
       
 76924 -	bnez	t4, arg2_floatp
       
 76925  	REG_L	a1, 1*FFI_SIZEOF_ARG(t9)
       
 76926 -	b	arg2_next
       
 76927 -arg2_floatp:
       
 76928 +	beqz	t4, arg2_next
       
 76929  	bne	t4, FFI_TYPE_FLOAT, arg2_doublep
       
 76930  	l.s	$f13, 1*FFI_SIZEOF_ARG(t9)	
       
 76931  	b	arg2_next
       
 76932  arg2_doublep:	
       
 76933  	l.d	$f13, 1*FFI_SIZEOF_ARG(t9)	
       
 76934  arg2_next:	
       
 76935  	
       
 76936  	SRL	t4, t6, 2*FFI_FLAG_BITS
       
 76937  	and	t4, ((1<<FFI_FLAG_BITS)-1)
       
 76938 -	bnez	t4, arg3_floatp
       
 76939  	REG_L	a2, 2*FFI_SIZEOF_ARG(t9)
       
 76940 -	b	arg3_next
       
 76941 -arg3_floatp:
       
 76942 +	beqz	t4, arg3_next
       
 76943  	bne	t4, FFI_TYPE_FLOAT, arg3_doublep
       
 76944  	l.s	$f14, 2*FFI_SIZEOF_ARG(t9)	
       
 76945  	b	arg3_next
       
 76946  arg3_doublep:	
       
 76947  	l.d	$f14, 2*FFI_SIZEOF_ARG(t9)	
       
 76948  arg3_next:	
       
 76949  	
       
 76950  	SRL	t4, t6, 3*FFI_FLAG_BITS
       
 76951  	and	t4, ((1<<FFI_FLAG_BITS)-1)
       
 76952 -	bnez	t4, arg4_floatp
       
 76953  	REG_L	a3, 3*FFI_SIZEOF_ARG(t9)
       
 76954 -	b	arg4_next
       
 76955 -arg4_floatp:
       
 76956 +	beqz	t4, arg4_next
       
 76957  	bne	t4, FFI_TYPE_FLOAT, arg4_doublep
       
 76958  	l.s	$f15, 3*FFI_SIZEOF_ARG(t9)	
       
 76959  	b	arg4_next
       
 76960  arg4_doublep:	
       
 76961  	l.d	$f15, 3*FFI_SIZEOF_ARG(t9)	
       
 76962  arg4_next:	
       
 76963  	
       
 76964  	SRL	t4, t6, 4*FFI_FLAG_BITS
       
 76965  	and	t4, ((1<<FFI_FLAG_BITS)-1)
       
 76966 -	bnez	t4, arg5_floatp
       
 76967  	REG_L	a4, 4*FFI_SIZEOF_ARG(t9)
       
 76968 -	b	arg5_next
       
 76969 -arg5_floatp:
       
 76970 +	beqz	t4, arg5_next
       
 76971  	bne	t4, FFI_TYPE_FLOAT, arg5_doublep
       
 76972  	l.s	$f16, 4*FFI_SIZEOF_ARG(t9)	
       
 76973  	b	arg5_next
       
 76974  arg5_doublep:	
       
 76975  	l.d	$f16, 4*FFI_SIZEOF_ARG(t9)	
       
 76976  arg5_next:	
       
 76977  	
       
 76978  	SRL	t4, t6, 5*FFI_FLAG_BITS
       
 76979  	and	t4, ((1<<FFI_FLAG_BITS)-1)
       
 76980 -	bnez	t4, arg6_floatp
       
 76981  	REG_L	a5, 5*FFI_SIZEOF_ARG(t9)
       
 76982 -	b	arg6_next
       
 76983 -arg6_floatp:
       
 76984 +	beqz	t4, arg6_next
       
 76985  	bne	t4, FFI_TYPE_FLOAT, arg6_doublep
       
 76986  	l.s	$f17, 5*FFI_SIZEOF_ARG(t9)	
       
 76987  	b	arg6_next
       
 76988  arg6_doublep:	
       
 76989  	l.d	$f17, 5*FFI_SIZEOF_ARG(t9)	
       
 76990  arg6_next:	
       
 76991  	
       
 76992  	SRL	t4, t6, 6*FFI_FLAG_BITS
       
 76993  	and	t4, ((1<<FFI_FLAG_BITS)-1)
       
 76994 -	bnez	t4, arg7_floatp
       
 76995  	REG_L	a6, 6*FFI_SIZEOF_ARG(t9)
       
 76996 -	b	arg7_next
       
 76997 -arg7_floatp:
       
 76998 +	beqz	t4, arg7_next
       
 76999  	bne	t4, FFI_TYPE_FLOAT, arg7_doublep
       
 77000  	l.s	$f18, 6*FFI_SIZEOF_ARG(t9)	
       
 77001  	b	arg7_next
       
 77002  arg7_doublep:	
       
 77003  	l.d	$f18, 6*FFI_SIZEOF_ARG(t9)	
       
 77004  arg7_next:	
       
 77005  	
       
 77006  	SRL	t4, t6, 7*FFI_FLAG_BITS
       
 77007  	and	t4, ((1<<FFI_FLAG_BITS)-1)
       
 77008 -	bnez	t4, arg8_floatp
       
 77009  	REG_L	a7, 7*FFI_SIZEOF_ARG(t9)
       
 77010 -	b	arg8_next
       
 77011 -arg8_floatp:
       
 77012 +	beqz	t4, arg8_next
       
 77013  	bne	t4, FFI_TYPE_FLOAT, arg8_doublep
       
 77014   	l.s	$f19, 7*FFI_SIZEOF_ARG(t9)	
       
 77015  	b	arg8_next
       
 77016  arg8_doublep:	
       
 77017   	l.d	$f19, 7*FFI_SIZEOF_ARG(t9)	
       
 77018  arg8_next:	
       
 77019  
       
 77020  callit:		
       
 77021 diff --git a/js/src/ctypes/libffi/src/moxie/eabi.S b/js/src/ctypes/libffi/src/moxie/eabi.S
       
 77022 --- a/js/src/ctypes/libffi/src/moxie/eabi.S
       
 77023 +++ b/js/src/ctypes/libffi/src/moxie/eabi.S
       
 77024 @@ -1,12 +1,12 @@
       
 77025  /* -----------------------------------------------------------------------
       
 77026 -   eabi.S - Copyright (c) 2004  Anthony Green
       
 77027 +   eabi.S - Copyright (c) 2012, 2013  Anthony Green
       
 77028     
       
 77029 -   FR-V Assembly glue.
       
 77030 +   Moxie Assembly glue.
       
 77031  
       
 77032     Permission is hereby granted, free of charge, to any person obtaining
       
 77033     a copy of this software and associated documentation files (the
       
 77034     ``Software''), to deal in the Software without restriction, including
       
 77035     without limitation the rights to use, copy, modify, merge, publish,
       
 77036     distribute, sublicense, and/or sell copies of the Software, and to
       
 77037     permit persons to whom the Software is furnished to do so, subject to
       
 77038     the following conditions:
       
 77039 @@ -29,100 +29,73 @@
       
 77040  
       
 77041  	.globl ffi_prep_args_EABI
       
 77042  
       
 77043  	.text
       
 77044  	.p2align 4
       
 77045  	.globl ffi_call_EABI
       
 77046  	.type ffi_call_EABI, @function
       
 77047  
       
 77048 -	# gr8 :   ffi_prep_args
       
 77049 -	# gr9 :   &ecif
       
 77050 -	# gr10:   cif->bytes
       
 77051 -	# gr11:   fig->flags
       
 77052 -	# gr12:   ecif.rvalue
       
 77053 -	# gr13:   fn
       
 77054 +	# $r0 :   ffi_prep_args
       
 77055 +	# $r1 :   &ecif
       
 77056 +	# $r2 :   cif->bytes
       
 77057 +	# $r3 :   fig->flags
       
 77058 +	# $r4 :   ecif.rvalue
       
 77059 +	# $r5 :   fn
       
 77060  	
       
 77061 -ffi_call_EABI:	
       
 77062 -	addi	sp, #-80, sp
       
 77063 -	sti	fp, @(sp, #24)
       
 77064 -	addi	sp, #24, fp
       
 77065 -	movsg	lr, gr5
       
 77066 +ffi_call_EABI:
       
 77067 +	push	$sp, $r6
       
 77068 +	push	$sp, $r7
       
 77069 +	push	$sp, $r8
       
 77070 +	dec	$sp, 24
       
 77071  
       
 77072 -	/* Make room for the new arguments.  */
       
 77073 -	/* subi	sp, fp, gr10 */
       
 77074 -	
       
 77075 -	/* Store return address and incoming args on stack.  */
       
 77076 -	sti	gr5, @(fp, #8)
       
 77077 -	sti	gr8, @(fp, #-4)
       
 77078 -	sti	gr9, @(fp, #-8)
       
 77079 -	sti	gr10, @(fp, #-12)
       
 77080 -	sti	gr11, @(fp, #-16)
       
 77081 -	sti	gr12, @(fp, #-20)
       
 77082 -	sti	gr13, @(fp, #-24)
       
 77083 -
       
 77084 -	sub     sp, gr10, sp
       
 77085 +	/* Store incoming args on stack.  */
       
 77086 +	sto.l	0($sp), $r0 /* ffi_prep_args */
       
 77087 +	sto.l	4($sp), $r1 /* ecif */
       
 77088 +	sto.l	8($sp), $r2 /* bytes */
       
 77089 +	sto.l	12($sp), $r3 /* flags */
       
 77090 +	sto.l	16($sp), $r4 /* &rvalue */
       
 77091 +	sto.l	20($sp), $r5 /* fn */
       
 77092  	
       
 77093  	/* Call ffi_prep_args.  */
       
 77094 -	ldi	@(fp, #-4), gr4
       
 77095 -	addi	sp, #0, gr8
       
 77096 -	ldi	@(fp, #-8), gr9
       
 77097 -#ifdef __FRV_FDPIC__
       
 77098 -	ldd	@(gr4, gr0), gr14
       
 77099 -	calll	@(gr14, gr0)
       
 77100 -#else
       
 77101 -	calll	@(gr4, gr0)
       
 77102 -#endif	
       
 77103 +	mov 	$r6, $r4 /* Save result buffer */
       
 77104 +	mov	$r7, $r5 /* Save the target fn */
       
 77105 +	mov	$r8, $r3 /* Save the flags */
       
 77106 +	sub.l	$sp, $r2 /* Allocate stack space */
       
 77107 +	mov	$r0, $sp /* We can stomp over $r0 */
       
 77108 +	/* $r1 is already set up */
       
 77109 +	jsra 	ffi_prep_args
       
 77110  
       
 77111 -	/* ffi_prep_args returns the new stack pointer.  */
       
 77112 -	mov	gr8, gr4
       
 77113 -		
       
 77114 -	ldi	@(sp, #0), gr8
       
 77115 -	ldi	@(sp, #4), gr9
       
 77116 -	ldi	@(sp, #8), gr10
       
 77117 -	ldi	@(sp, #12), gr11
       
 77118 -	ldi	@(sp, #16), gr12
       
 77119 -	ldi	@(sp, #20), gr13
       
 77120 -
       
 77121 -	/* Always copy the return value pointer into the hidden
       
 77122 -	   parameter register.  This is only strictly necessary
       
 77123 -	   when we're returning an aggregate type, but it doesn't
       
 77124 -	   hurt to do this all the time, and it saves a branch.  */
       
 77125 -	ldi	@(fp, #-20), gr3
       
 77126 -
       
 77127 -	/* Use the ffi_prep_args return value for the new sp.  */
       
 77128 -	mov	gr4, sp
       
 77129 +	/* Load register arguments.  */
       
 77130 +	ldo.l	$r0, 0($sp)
       
 77131 +	ldo.l	$r1, 4($sp)
       
 77132 +	ldo.l	$r2, 8($sp)
       
 77133 +	ldo.l	$r3, 12($sp)
       
 77134 +	ldo.l	$r4, 16($sp)
       
 77135 +	ldo.l	$r5, 20($sp)
       
 77136  	
       
 77137  	/* Call the target function.  */
       
 77138 -	ldi	@(fp, -24), gr4
       
 77139 -#ifdef __FRV_FDPIC__
       
 77140 -	ldd	@(gr4, gr0), gr14
       
 77141 -	calll	@(gr14, gr0)
       
 77142 -#else
       
 77143 -	calll	@(gr4, gr0)
       
 77144 -#endif	
       
 77145 +	jsr	$r7
       
 77146  
       
 77147 -	/* Store the result. */
       
 77148 -	ldi	@(fp, #-16), gr10  /* fig->flags */
       
 77149 -	ldi	@(fp, #-20), gr4   /* ecif.rvalue */
       
 77150 +	ldi.l	$r7, 0xffffffff
       
 77151 +	cmp	$r8, $r7
       
 77152 +	beq	retstruct
       
 77153  
       
 77154 -	/* Is the return value stored in two registers?  */
       
 77155 -	cmpi	gr10, #8, icc0
       
 77156 -	bne	icc0, 0, .L2
       
 77157 -	/*   Yes, save them.  */
       
 77158 -	sti	gr8, @(gr4, #0)
       
 77159 -	sti	gr9, @(gr4, #4)
       
 77160 -	bra	.L3
       
 77161 -.L2:
       
 77162 -	/* Is the return value a structure?  */
       
 77163 -	cmpi	gr10, #-1, icc0
       
 77164 -	beq	icc0, 0, .L3
       
 77165 -	/*   No, save a 4 byte return value.  */
       
 77166 -	sti	gr8, @(gr4, #0)
       
 77167 -.L3:	
       
 77168 +	ldi.l	$r7, 4
       
 77169 +	cmp	$r8, $r7
       
 77170 +	bgt	ret2reg
       
 77171  
       
 77172 -	/* Restore the stack, and return.  */
       
 77173 -	ldi	@(fp, 8), gr5
       
 77174 -	ld	@(fp, gr0), fp
       
 77175 -	addi	sp,#80,sp
       
 77176 -	jmpl	@(gr5,gr0)
       
 77177 +	st.l	($r6), $r0
       
 77178 +	jmpa	retdone
       
 77179 +
       
 77180 +ret2reg:	
       
 77181 +	st.l	($r6), $r0
       
 77182 +	sto.l	4($r6), $r1
       
 77183 +
       
 77184 +retstruct:
       
 77185 +retdone:	
       
 77186 +	/* Return.  */
       
 77187 +	ldo.l	$r6, -4($fp)
       
 77188 +	ldo.l	$r7, -8($fp)
       
 77189 +	ldo.l	$r8, -12($fp)
       
 77190 +	ret
       
 77191  	.size ffi_call_EABI, .-ffi_call_EABI
       
 77192  	
       
 77193 diff --git a/js/src/ctypes/libffi/src/moxie/ffi.c b/js/src/ctypes/libffi/src/moxie/ffi.c
       
 77194 --- a/js/src/ctypes/libffi/src/moxie/ffi.c
       
 77195 +++ b/js/src/ctypes/libffi/src/moxie/ffi.c
       
 77196 @@ -1,10 +1,10 @@
       
 77197  /* -----------------------------------------------------------------------
       
 77198 -   ffi.c - Copyright (C) 2009  Anthony Green
       
 77199 +   ffi.c - Copyright (C) 2012, 2013  Anthony Green
       
 77200     
       
 77201     Moxie Foreign Function Interface 
       
 77202  
       
 77203     Permission is hereby granted, free of charge, to any person obtaining
       
 77204     a copy of this software and associated documentation files (the
       
 77205     ``Software''), to deal in the Software without restriction, including
       
 77206     without limitation the rights to use, copy, modify, merge, publish,
       
 77207     distribute, sublicense, and/or sell copies of the Software, and to
       
 77208 @@ -38,40 +38,35 @@ void *ffi_prep_args(char *stack, extende
       
 77209    register void **p_argv;
       
 77210    register char *argp;
       
 77211    register ffi_type **p_arg;
       
 77212    register int count = 0;
       
 77213  
       
 77214    p_argv = ecif->avalue;
       
 77215    argp = stack;
       
 77216  
       
 77217 +  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT)
       
 77218 +    {
       
 77219 +      *(void **) argp = ecif->rvalue;
       
 77220 +      argp += 4;
       
 77221 +    }
       
 77222 +
       
 77223    for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
       
 77224         (i != 0);
       
 77225         i--, p_arg++)
       
 77226      {
       
 77227        size_t z;
       
 77228        
       
 77229        z = (*p_arg)->size;
       
 77230  
       
 77231        if ((*p_arg)->type == FFI_TYPE_STRUCT)
       
 77232  	{
       
 77233  	  z = sizeof(void*);
       
 77234  	  *(void **) argp = *p_argv;
       
 77235  	} 
       
 77236 -      /*      if ((*p_arg)->type == FFI_TYPE_FLOAT)
       
 77237 -	{
       
 77238 -	  if (count > 24)
       
 77239 -	    {
       
 77240 -	      // This is going on the stack.  Turn it into a double.  
       
 77241 -	      *(double *) argp = (double) *(float*)(* p_argv);
       
 77242 -	      z = sizeof(double);
       
 77243 -	    }
       
 77244 -	  else
       
 77245 -	    *(void **) argp = *(void **)(* p_argv);
       
 77246 -	}  */
       
 77247        else if (z < sizeof(int))
       
 77248  	{
       
 77249  	  z = sizeof(int);
       
 77250  	  switch ((*p_arg)->type)
       
 77251  	    {
       
 77252  	    case FFI_TYPE_SINT8:
       
 77253  	      *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv);
       
 77254  	      break;
       
 77255 @@ -142,135 +137,136 @@ void ffi_call(ffi_cif *cif,
       
 77256  
       
 77257    if ((rvalue == NULL) && 
       
 77258        (cif->rtype->type == FFI_TYPE_STRUCT))
       
 77259      {
       
 77260        ecif.rvalue = alloca(cif->rtype->size);
       
 77261      }
       
 77262    else
       
 77263      ecif.rvalue = rvalue;
       
 77264 -    
       
 77265 -  
       
 77266 +
       
 77267    switch (cif->abi) 
       
 77268      {
       
 77269      case FFI_EABI:
       
 77270        ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, 
       
 77271  		    cif->flags, ecif.rvalue, fn);
       
 77272        break;
       
 77273      default:
       
 77274        FFI_ASSERT(0);
       
 77275        break;
       
 77276      }
       
 77277  }
       
 77278  
       
 77279  void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3,
       
 77280  		       unsigned arg4, unsigned arg5, unsigned arg6)
       
 77281  {
       
 77282    /* This function is called by a trampoline.  The trampoline stows a
       
 77283 -     pointer to the ffi_closure object in gr7.  We must save this
       
 77284 +     pointer to the ffi_closure object in $r7.  We must save this
       
 77285       pointer in a place that will persist while we do our work.  */
       
 77286 -  register ffi_closure *creg __asm__ ("gr7");
       
 77287 +  register ffi_closure *creg __asm__ ("$r12");
       
 77288    ffi_closure *closure = creg;
       
 77289  
       
 77290    /* Arguments that don't fit in registers are found on the stack
       
 77291       at a fixed offset above the current frame pointer.  */
       
 77292 -  register char *frame_pointer __asm__ ("fp");
       
 77293 -  char *stack_args = frame_pointer + 16;
       
 77294 +  register char *frame_pointer __asm__ ("$fp");
       
 77295 +
       
 77296 +  /* Pointer to a struct return value.  */
       
 77297 +  void *struct_rvalue = (void *) arg1;
       
 77298 +
       
 77299 +  /* 6 words reserved for register args + 3 words from jsr */
       
 77300 +  char *stack_args = frame_pointer + 9*4; 
       
 77301  
       
 77302    /* Lay the register arguments down in a continuous chunk of memory.  */
       
 77303    unsigned register_args[6] =
       
 77304      { arg1, arg2, arg3, arg4, arg5, arg6 };
       
 77305 +  char *register_args_ptr = (char *) register_args;
       
 77306  
       
 77307    ffi_cif *cif = closure->cif;
       
 77308    ffi_type **arg_types = cif->arg_types;
       
 77309    void **avalue = alloca (cif->nargs * sizeof(void *));
       
 77310    char *ptr = (char *) register_args;
       
 77311    int i;
       
 77312  
       
 77313 +  /* preserve struct type return pointer passing */
       
 77314 +  if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) {
       
 77315 +    ptr += 4;
       
 77316 +    register_args_ptr = (char *)&register_args[1];
       
 77317 +  }
       
 77318 +
       
 77319    /* Find the address of each argument.  */
       
 77320    for (i = 0; i < cif->nargs; i++)
       
 77321      {
       
 77322        switch (arg_types[i]->type)
       
 77323  	{
       
 77324  	case FFI_TYPE_SINT8:
       
 77325  	case FFI_TYPE_UINT8:
       
 77326  	  avalue[i] = ptr + 3;
       
 77327  	  break;
       
 77328  	case FFI_TYPE_SINT16:
       
 77329  	case FFI_TYPE_UINT16:
       
 77330  	  avalue[i] = ptr + 2;
       
 77331  	  break;
       
 77332  	case FFI_TYPE_SINT32:
       
 77333  	case FFI_TYPE_UINT32:
       
 77334  	case FFI_TYPE_FLOAT:
       
 77335 +	case FFI_TYPE_POINTER:
       
 77336  	  avalue[i] = ptr;
       
 77337  	  break;
       
 77338  	case FFI_TYPE_STRUCT:
       
 77339  	  avalue[i] = *(void**)ptr;
       
 77340  	  break;
       
 77341  	default:
       
 77342  	  /* This is an 8-byte value.  */
       
 77343  	  avalue[i] = ptr;
       
 77344  	  ptr += 4;
       
 77345  	  break;
       
 77346  	}
       
 77347        ptr += 4;
       
 77348  
       
 77349        /* If we've handled more arguments than fit in registers,
       
 77350  	 start looking at the those passed on the stack.  */
       
 77351 -      if (ptr == ((char *)register_args + (6*4)))
       
 77352 +      if (ptr == &register_args[6])
       
 77353  	ptr = stack_args;
       
 77354      }
       
 77355  
       
 77356    /* Invoke the closure.  */
       
 77357 -  if (cif->rtype->type == FFI_TYPE_STRUCT)
       
 77358 +  if (cif->rtype && (cif->rtype->type == FFI_TYPE_STRUCT))
       
 77359      {
       
 77360 -      /* The caller allocates space for the return structure, and
       
 77361 -       passes a pointer to this space in gr3.  Use this value directly
       
 77362 -       as the return value.  */
       
 77363 -      register void *return_struct_ptr __asm__("gr3");
       
 77364 -      (closure->fun) (cif, return_struct_ptr, avalue, closure->user_data);
       
 77365 +      (closure->fun) (cif, struct_rvalue, avalue, closure->user_data);
       
 77366      }
       
 77367    else
       
 77368      {
       
 77369        /* Allocate space for the return value and call the function.  */
       
 77370        long long rvalue;
       
 77371        (closure->fun) (cif, &rvalue, avalue, closure->user_data);
       
 77372 -
       
 77373 -      /* Functions return 4-byte or smaller results in gr8.  8-byte
       
 77374 -	 values also use gr9.  We fill the both, even for small return
       
 77375 -	 values, just to avoid a branch.  */ 
       
 77376 -      asm ("ldi  @(%0, #0), gr8" : : "r" (&rvalue));
       
 77377 -      asm ("ldi  @(%0, #0), gr9" : : "r" (&((int *) &rvalue)[1]));
       
 77378 +      asm ("mov $r12, %0\n ld.l $r0, ($r12)\n ldo.l $r1, 4($r12)" : : "r" (&rvalue));
       
 77379      }
       
 77380  }
       
 77381  
       
 77382  ffi_status
       
 77383  ffi_prep_closure_loc (ffi_closure* closure,
       
 77384  		      ffi_cif* cif,
       
 77385  		      void (*fun)(ffi_cif*, void*, void**, void*),
       
 77386  		      void *user_data,
       
 77387  		      void *codeloc)
       
 77388  {
       
 77389 -  unsigned int *tramp = (unsigned int *) &closure->tramp[0];
       
 77390 +  unsigned short *tramp = (unsigned short *) &closure->tramp[0];
       
 77391    unsigned long fn = (long) ffi_closure_eabi;
       
 77392    unsigned long cls = (long) codeloc;
       
 77393 -  int i;
       
 77394 +
       
 77395 +  if (cif->abi != FFI_EABI)
       
 77396 +    return FFI_BAD_ABI;
       
 77397  
       
 77398    fn = (unsigned long) ffi_closure_eabi;
       
 77399  
       
 77400 -  tramp[0] = 0x8cfc0000 + (fn  & 0xffff); /* setlos lo(fn), gr6    */
       
 77401 -  tramp[1] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7   */
       
 77402 -  tramp[2] = 0x8cf80000 + (fn  >> 16);	  /* sethi hi(fn), gr6     */
       
 77403 -  tramp[3] = 0x8ef80000 + (cls >> 16);    /* sethi hi(cls), gr7    */
       
 77404 -  tramp[4] = 0x80300006;                  /* jmpl @(gr0, gr6)      */
       
 77405 +  tramp[0] = 0x01e0; /* ldi.l $r7, .... */
       
 77406 +  tramp[1] = cls >> 16;
       
 77407 +  tramp[2] = cls & 0xffff;
       
 77408 +  tramp[3] = 0x1a00; /* jmpa .... */
       
 77409 +  tramp[4] = fn >> 16;
       
 77410 +  tramp[5] = fn & 0xffff;
       
 77411  
       
 77412    closure->cif = cif;
       
 77413    closure->fun = fun;
       
 77414    closure->user_data = user_data;
       
 77415  
       
 77416 -  /* Cache flushing.  */
       
 77417 -  for (i = 0; i < FFI_TRAMPOLINE_SIZE; i++)
       
 77418 -    __asm__ volatile ("dcf @(%0,%1)\n\tici @(%2,%1)" :: "r" (tramp), "r" (i),
       
 77419 -		      "r" (codeloc));
       
 77420 -
       
 77421    return FFI_OK;
       
 77422  }
       
 77423 diff --git a/js/src/ctypes/libffi/src/moxie/ffitarget.h b/js/src/ctypes/libffi/src/moxie/ffitarget.h
       
 77424 --- a/js/src/ctypes/libffi/src/moxie/ffitarget.h
       
 77425 +++ b/js/src/ctypes/libffi/src/moxie/ffitarget.h
       
 77426 @@ -1,10 +1,10 @@
       
 77427  /* -----------------------------------------------------------------*-C-*-
       
 77428 -   ffitarget.h - Copyright (c) 2009 Anthony Green
       
 77429 +   ffitarget.h - Copyright (c) 2012, 2013  Anthony Green
       
 77430     Target configuration macros for Moxie
       
 77431  
       
 77432     Permission is hereby granted, free of charge, to any person obtaining
       
 77433     a copy of this software and associated documentation files (the
       
 77434     ``Software''), to deal in the Software without restriction, including
       
 77435     without limitation the rights to use, copy, modify, merge, publish,
       
 77436     distribute, sublicense, and/or sell copies of the Software, and to
       
 77437     permit persons to whom the Software is furnished to do so, subject to
       
 77438 @@ -31,22 +31,22 @@
       
 77439  
       
 77440  #ifndef LIBFFI_ASM
       
 77441  typedef unsigned long          ffi_arg;
       
 77442  typedef signed long            ffi_sarg;
       
 77443  
       
 77444  typedef enum ffi_abi {
       
 77445    FFI_FIRST_ABI = 0,
       
 77446    FFI_EABI,
       
 77447 -  FFI_LAST_ABI,
       
 77448 -  FFI_DEFAULT_ABI = FFI_EABI
       
 77449 +  FFI_DEFAULT_ABI = FFI_EABI,
       
 77450 +  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1
       
 77451  } ffi_abi;
       
 77452  #endif
       
 77453  
       
 77454  /* ---- Definitions for closures ----------------------------------------- */
       
 77455  
       
 77456 -#define FFI_CLOSURES 0
       
 77457 +#define FFI_CLOSURES 1
       
 77458  #define FFI_NATIVE_RAW_API 0
       
 77459  
       
 77460 -/* Trampolines are 5 4-byte instructions long.  */
       
 77461 -#define FFI_TRAMPOLINE_SIZE (5*4)
       
 77462 +/* Trampolines are 12-bytes long.  See ffi_prep_closure_loc.  */
       
 77463 +#define FFI_TRAMPOLINE_SIZE (12)
       
 77464  
       
 77465  #endif
       
 77466 diff --git a/js/src/ctypes/libffi/src/nios2/ffi.c b/js/src/ctypes/libffi/src/nios2/ffi.c
       
 77467 new file mode 100644
       
 77468 --- /dev/null
       
 77469 +++ b/js/src/ctypes/libffi/src/nios2/ffi.c
       
 77470 @@ -0,0 +1,304 @@
       
 77471 +/* libffi support for Altera Nios II.
       
 77472 +
       
 77473 +   Copyright (c) 2013 Mentor Graphics.
       
 77474 +
       
 77475 +   Permission is hereby granted, free of charge, to any person obtaining
       
 77476 +   a copy of this software and associated documentation files (the
       
 77477 +   ``Software''), to deal in the Software without restriction, including
       
 77478 +   without limitation the rights to use, copy, modify, merge, publish,
       
 77479 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 77480 +   permit persons to whom the Software is furnished to do so, subject to
       
 77481 +   the following conditions:
       
 77482 +   
       
 77483 +   The above copyright notice and this permission notice shall be
       
 77484 +   included in all copies or substantial portions of the Software.
       
 77485 +   
       
 77486 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 77487 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 77488 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 77489 +   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 77490 +   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 77491 +   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 77492 +   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
       
 77493 +
       
 77494 +
       
 77495 +#include <ffi.h>
       
 77496 +#include <ffi_common.h>
       
 77497 +
       
 77498 +#include <stdlib.h>
       
 77499 +
       
 77500 +/* The Nios II Processor Reference Handbook defines the procedure call
       
 77501 +   ABI as follows.
       
 77502 +
       
 77503 +   Arguments are passed as if a structure containing the types of
       
 77504 +   the arguments were constructed.  The first 16 bytes are passed in r4
       
 77505 +   through r7, the remainder on the stack.  The first 16 bytes of a function
       
 77506 +   taking variable arguments are passed in r4-r7 in the same way.
       
 77507 +
       
 77508 +   Return values of types up to 8 bytes are returned in r2 and r3.  For
       
 77509 +   return values greater than 8 bytes, the caller must allocate memory for
       
 77510 +   the result and pass the address as if it were argument 0.  
       
 77511 +
       
 77512 +   While this isn't specified explicitly in the ABI documentation, GCC
       
 77513 +   promotes integral arguments smaller than int size to 32 bits.
       
 77514 +
       
 77515 +   Also of note, the ABI specifies that all structure objects are
       
 77516 +   aligned to 32 bits even if all their fields have a smaller natural
       
 77517 +   alignment.  See FFI_AGGREGATE_ALIGNMENT.  */
       
 77518 +
       
 77519 +
       
 77520 +/* Declare the assembly language hooks.  */
       
 77521 +
       
 77522 +extern UINT64 ffi_call_sysv (void (*) (char *, extended_cif *),
       
 77523 +			     extended_cif *,
       
 77524 +			     unsigned, 
       
 77525 +			     void (*fn) (void));
       
 77526 +extern void ffi_closure_sysv (void);
       
 77527 +
       
 77528 +/* Perform machine-dependent cif processing.  */
       
 77529 +
       
 77530 +ffi_status ffi_prep_cif_machdep (ffi_cif *cif)
       
 77531 +{
       
 77532 +  /* We always want at least 16 bytes in the parameter block since it
       
 77533 +     simplifies the low-level call function.  Also round the parameter
       
 77534 +     block size up to a multiple of 4 bytes to preserve
       
 77535 +     32-bit alignment of the stack pointer.  */
       
 77536 +  if (cif->bytes < 16)
       
 77537 +    cif->bytes = 16;
       
 77538 +  else
       
 77539 +    cif->bytes = (cif->bytes + 3) & ~3;
       
 77540 +
       
 77541 +  return FFI_OK;
       
 77542 +}
       
 77543 +
       
 77544 +
       
 77545 +/* ffi_prep_args is called by the assembly routine to transfer arguments
       
 77546 +   to the stack using the pointers in the ecif array.
       
 77547 +   Note that the stack buffer is big enough to fit all the arguments,
       
 77548 +   but the first 16 bytes will be copied to registers for the actual
       
 77549 +   call.  */
       
 77550 +
       
 77551 +void ffi_prep_args (char *stack, extended_cif *ecif)
       
 77552 +{
       
 77553 +  char *argp = stack;
       
 77554 +  unsigned int i;
       
 77555 +
       
 77556 +  /* The implicit return value pointer is passed as if it were a hidden
       
 77557 +     first argument.  */
       
 77558 +  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
       
 77559 +      && ecif->cif->rtype->size > 8)
       
 77560 +    {
       
 77561 +      (*(void **) argp) = ecif->rvalue;
       
 77562 +      argp += 4;
       
 77563 +    }
       
 77564 +
       
 77565 +  for (i = 0; i < ecif->cif->nargs; i++)
       
 77566 +    {
       
 77567 +      void *avalue = ecif->avalue[i];
       
 77568 +      ffi_type *atype = ecif->cif->arg_types[i];
       
 77569 +      size_t size = atype->size;
       
 77570 +      size_t alignment = atype->alignment;
       
 77571 +
       
 77572 +      /* Align argp as appropriate for the argument type.  */
       
 77573 +      if ((alignment - 1) & (unsigned) argp)
       
 77574 +	argp = (char *) ALIGN (argp, alignment);
       
 77575 +
       
 77576 +      /* Copy the argument, promoting integral types smaller than a
       
 77577 +	 word to word size.  */
       
 77578 +      if (size < sizeof (int))
       
 77579 +	{
       
 77580 +	  size = sizeof (int);
       
 77581 +	  switch (atype->type)
       
 77582 +	    {
       
 77583 +	    case FFI_TYPE_SINT8:
       
 77584 +	      *(signed int *) argp = (signed int) *(SINT8 *) avalue;
       
 77585 +	      break;
       
 77586 +		  
       
 77587 +	    case FFI_TYPE_UINT8:
       
 77588 +	      *(unsigned int *) argp = (unsigned int) *(UINT8 *) avalue;
       
 77589 +	      break;
       
 77590 +		  
       
 77591 +	    case FFI_TYPE_SINT16:
       
 77592 +	      *(signed int *) argp = (signed int) *(SINT16 *) avalue;
       
 77593 +	      break;
       
 77594 +		  
       
 77595 +	    case FFI_TYPE_UINT16:
       
 77596 +	      *(unsigned int *) argp = (unsigned int) *(UINT16 *) avalue;
       
 77597 +	      break;
       
 77598 +
       
 77599 +	    case FFI_TYPE_STRUCT:
       
 77600 +	      memcpy (argp, avalue, atype->size);
       
 77601 +	      break;
       
 77602 +
       
 77603 +	    default:
       
 77604 +	      FFI_ASSERT(0);
       
 77605 +	    }
       
 77606 +	}
       
 77607 +      else if (size == sizeof (int))
       
 77608 +	*(unsigned int *) argp = (unsigned int) *(UINT32 *) avalue;
       
 77609 +      else
       
 77610 +	memcpy (argp, avalue, size);
       
 77611 +      argp += size;
       
 77612 +    }
       
 77613 +}
       
 77614 +
       
 77615 +
       
 77616 +/* Call FN using the prepared CIF.  RVALUE points to space allocated by
       
 77617 +   the caller for the return value, and AVALUE is an array of argument
       
 77618 +   pointers.  */
       
 77619 +
       
 77620 +void ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue)
       
 77621 +{
       
 77622 +
       
 77623 +  extended_cif ecif;
       
 77624 +  UINT64 result;
       
 77625 +
       
 77626 +  /* If bigret is true, this is the case where a return value of larger
       
 77627 +     than 8 bytes is handled by being passed by reference as an implicit
       
 77628 +     argument.  */
       
 77629 +  int bigret = (cif->rtype->type == FFI_TYPE_STRUCT
       
 77630 +		&& cif->rtype->size > 8);
       
 77631 +
       
 77632 +  ecif.cif = cif;
       
 77633 +  ecif.avalue = avalue;
       
 77634 +
       
 77635 +  /* Allocate space for return value if this is the pass-by-reference case
       
 77636 +     and the caller did not provide a buffer.  */
       
 77637 +  if (rvalue == NULL && bigret)
       
 77638 +    ecif.rvalue = alloca (cif->rtype->size);
       
 77639 +  else
       
 77640 +    ecif.rvalue = rvalue;
       
 77641 +
       
 77642 +  result = ffi_call_sysv (ffi_prep_args, &ecif, cif->bytes, fn);
       
 77643 +
       
 77644 +  /* Now result contains the 64 bit contents returned from fn in
       
 77645 +     r2 and r3.  Copy the value of the appropriate size to the user-provided
       
 77646 +     rvalue buffer.  */
       
 77647 +  if (rvalue && !bigret)
       
 77648 +    switch (cif->rtype->size)
       
 77649 +      {
       
 77650 +      case 1:
       
 77651 +	*(UINT8 *)rvalue = (UINT8) result;
       
 77652 +	break;
       
 77653 +      case 2:
       
 77654 +	*(UINT16 *)rvalue = (UINT16) result;
       
 77655 +	break;
       
 77656 +      case 4:
       
 77657 +	*(UINT32 *)rvalue = (UINT32) result;
       
 77658 +	break;
       
 77659 +      case 8:
       
 77660 +	*(UINT64 *)rvalue = (UINT64) result;
       
 77661 +	break;
       
 77662 +      default:
       
 77663 +	memcpy (rvalue, (void *)&result, cif->rtype->size);
       
 77664 +	break;
       
 77665 +      }
       
 77666 +}
       
 77667 +
       
 77668 +/* This function is invoked from the closure trampoline to invoke
       
 77669 +   CLOSURE with argument block ARGS.  Parse ARGS according to
       
 77670 +   CLOSURE->cfi and invoke CLOSURE->fun.  */
       
 77671 +
       
 77672 +static UINT64
       
 77673 +ffi_closure_helper (unsigned char *args,
       
 77674 +		    ffi_closure *closure)
       
 77675 +{
       
 77676 +  ffi_cif *cif = closure->cif;
       
 77677 +  unsigned char *argp = args;
       
 77678 +  void **parsed_args = alloca (cif->nargs * sizeof (void *));
       
 77679 +  UINT64 result;
       
 77680 +  void *retptr;
       
 77681 +  unsigned int i;
       
 77682 +
       
 77683 +  /* First figure out what to do about the return type.  If this is the
       
 77684 +     big-structure-return case, the first arg is the hidden return buffer
       
 77685 +     allocated by the caller.  */
       
 77686 +  if (cif->rtype->type == FFI_TYPE_STRUCT
       
 77687 +      && cif->rtype->size > 8)
       
 77688 +    {
       
 77689 +      retptr = *((void **) argp);
       
 77690 +      argp += 4;
       
 77691 +    }
       
 77692 +  else
       
 77693 +    retptr = (void *) &result;
       
 77694 +
       
 77695 +  /* Fill in the array of argument pointers.  */
       
 77696 +  for (i = 0; i < cif->nargs; i++)
       
 77697 +    {
       
 77698 +      size_t size = cif->arg_types[i]->size;
       
 77699 +      size_t alignment = cif->arg_types[i]->alignment;
       
 77700 +
       
 77701 +      /* Align argp as appropriate for the argument type.  */
       
 77702 +      if ((alignment - 1) & (unsigned) argp)
       
 77703 +	argp = (char *) ALIGN (argp, alignment);
       
 77704 +
       
 77705 +      /* Arguments smaller than an int are promoted to int.  */
       
 77706 +      if (size < sizeof (int))
       
 77707 +	size = sizeof (int);
       
 77708 +
       
 77709 +      /* Store the pointer.  */
       
 77710 +      parsed_args[i] = argp;
       
 77711 +      argp += size;
       
 77712 +    }
       
 77713 +
       
 77714 +  /* Call the user-supplied function.  */
       
 77715 +  (closure->fun) (cif, retptr, parsed_args, closure->user_data);
       
 77716 +  return result;
       
 77717 +}
       
 77718 +
       
 77719 +
       
 77720 +/* Initialize CLOSURE with a trampoline to call FUN with
       
 77721 +   CIF and USER_DATA.  */
       
 77722 +ffi_status
       
 77723 +ffi_prep_closure_loc (ffi_closure* closure,
       
 77724 +		      ffi_cif* cif,
       
 77725 +		      void (*fun) (ffi_cif*, void*, void**, void*),
       
 77726 +		      void *user_data,
       
 77727 +		      void *codeloc)
       
 77728 +{
       
 77729 +  unsigned int *tramp = (unsigned int *) &closure->tramp[0];
       
 77730 +  int i;
       
 77731 +
       
 77732 +  if (cif->abi != FFI_SYSV)
       
 77733 +    return FFI_BAD_ABI;
       
 77734 +
       
 77735 +  /* The trampoline looks like:
       
 77736 +       movhi r8, %hi(ffi_closure_sysv)
       
 77737 +       ori r8, r8, %lo(ffi_closure_sysv)
       
 77738 +       movhi r9, %hi(ffi_closure_helper)
       
 77739 +       ori r0, r9, %lo(ffi_closure_helper)
       
 77740 +       movhi r10, %hi(closure)
       
 77741 +       ori r10, r10, %lo(closure)
       
 77742 +       jmp r8
       
 77743 +     and then ffi_closure_sysv retrieves the closure pointer out of r10
       
 77744 +     in addition to the arguments passed in the normal way for the call,
       
 77745 +     and invokes ffi_closure_helper.  We encode the pointer to
       
 77746 +     ffi_closure_helper in the trampoline because making a PIC call
       
 77747 +     to it in ffi_closure_sysv would be messy (it would have to indirect
       
 77748 +     through the GOT).  */
       
 77749 +
       
 77750 +#define HI(x) ((((unsigned int) (x)) >> 16) & 0xffff)
       
 77751 +#define LO(x) (((unsigned int) (x)) & 0xffff)
       
 77752 +  tramp[0] = (0 << 27) | (8 << 22) | (HI (ffi_closure_sysv) << 6) | 0x34;
       
 77753 +  tramp[1] = (8 << 27) | (8 << 22) | (LO (ffi_closure_sysv) << 6) | 0x14;
       
 77754 +  tramp[2] = (0 << 27) | (9 << 22) | (HI (ffi_closure_helper) << 6) | 0x34;
       
 77755 +  tramp[3] = (9 << 27) | (9 << 22) | (LO (ffi_closure_helper) << 6) | 0x14;
       
 77756 +  tramp[4] = (0 << 27) | (10 << 22) | (HI (closure) << 6) | 0x34;
       
 77757 +  tramp[5] = (10 << 27) | (10 << 22) | (LO (closure) << 6) | 0x14;
       
 77758 +  tramp[6] = (8 << 27) | (0x0d << 11) | 0x3a;
       
 77759 +#undef HI
       
 77760 +#undef LO
       
 77761 +
       
 77762 +  /* Flush the caches.
       
 77763 +     See Example 9-4 in the Nios II Software Developer's Handbook.  */
       
 77764 +  for (i = 0; i < 7; i++)
       
 77765 +    asm volatile ("flushd 0(%0); flushi %0" :: "r"(tramp + i) : "memory");
       
 77766 +  asm volatile ("flushp" ::: "memory");
       
 77767 +
       
 77768 +  closure->cif = cif;
       
 77769 +  closure->fun = fun;
       
 77770 +  closure->user_data = user_data;
       
 77771 +
       
 77772 +  return FFI_OK;
       
 77773 +}
       
 77774 +
       
 77775 diff --git a/js/src/ctypes/libffi/src/nios2/ffitarget.h b/js/src/ctypes/libffi/src/nios2/ffitarget.h
       
 77776 new file mode 100644
       
 77777 --- /dev/null
       
 77778 +++ b/js/src/ctypes/libffi/src/nios2/ffitarget.h
       
 77779 @@ -0,0 +1,52 @@
       
 77780 +/* libffi target includes for Altera Nios II.
       
 77781 +
       
 77782 +   Copyright (c) 2013 Mentor Graphics.
       
 77783 +
       
 77784 +   Permission is hereby granted, free of charge, to any person obtaining
       
 77785 +   a copy of this software and associated documentation files (the
       
 77786 +   ``Software''), to deal in the Software without restriction, including
       
 77787 +   without limitation the rights to use, copy, modify, merge, publish,
       
 77788 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 77789 +   permit persons to whom the Software is furnished to do so, subject to
       
 77790 +   the following conditions:
       
 77791 +   
       
 77792 +   The above copyright notice and this permission notice shall be
       
 77793 +   included in all copies or substantial portions of the Software.
       
 77794 +   
       
 77795 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 77796 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 77797 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 77798 +   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 77799 +   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 77800 +   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 77801 +   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
       
 77802 +
       
 77803 +
       
 77804 +#ifndef LIBFFI_TARGET_H
       
 77805 +#define LIBFFI_TARGET_H
       
 77806 +
       
 77807 +#ifndef LIBFFI_H
       
 77808 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 77809 +#endif
       
 77810 +
       
 77811 +#ifndef LIBFFI_ASM
       
 77812 +typedef unsigned long          ffi_arg;
       
 77813 +typedef signed long            ffi_sarg;
       
 77814 +
       
 77815 +typedef enum ffi_abi {
       
 77816 +  FFI_FIRST_ABI = 0,
       
 77817 +  FFI_SYSV,
       
 77818 +  FFI_LAST_ABI,
       
 77819 +  FFI_DEFAULT_ABI = FFI_SYSV
       
 77820 +} ffi_abi;
       
 77821 +#endif
       
 77822 +
       
 77823 +/* Structures have a 4-byte alignment even if all the fields have lesser
       
 77824 +   alignment requirements.  */
       
 77825 +#define FFI_AGGREGATE_ALIGNMENT 4
       
 77826 +
       
 77827 +#define FFI_CLOSURES 1
       
 77828 +#define FFI_TRAMPOLINE_SIZE 28   /* 7 instructions */
       
 77829 +#define FFI_NATIVE_RAW_API 0
       
 77830 +
       
 77831 +#endif
       
 77832 diff --git a/js/src/ctypes/libffi/src/nios2/sysv.S b/js/src/ctypes/libffi/src/nios2/sysv.S
       
 77833 new file mode 100644
       
 77834 --- /dev/null
       
 77835 +++ b/js/src/ctypes/libffi/src/nios2/sysv.S
       
 77836 @@ -0,0 +1,136 @@
       
 77837 +/* Low-level libffi support for Altera Nios II.
       
 77838 +
       
 77839 +   Copyright (c) 2013 Mentor Graphics.
       
 77840 +
       
 77841 +   Permission is hereby granted, free of charge, to any person obtaining
       
 77842 +   a copy of this software and associated documentation files (the
       
 77843 +   ``Software''), to deal in the Software without restriction, including
       
 77844 +   without limitation the rights to use, copy, modify, merge, publish,
       
 77845 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 77846 +   permit persons to whom the Software is furnished to do so, subject to
       
 77847 +   the following conditions:
       
 77848 +   
       
 77849 +   The above copyright notice and this permission notice shall be
       
 77850 +   included in all copies or substantial portions of the Software.
       
 77851 +   
       
 77852 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 77853 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 77854 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 77855 +   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 77856 +   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 77857 +   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 77858 +   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
       
 77859 +
       
 77860 +/* This function is declared on the C side as 
       
 77861 +
       
 77862 +   extern UINT64 ffi_call_sysv (void (*arghook) (char *, extended_cif *),
       
 77863 +	  		        extended_cif *ecif,
       
 77864 +				unsigned nbytes, 
       
 77865 +				void (*fn) (void));
       
 77866 +	
       
 77867 +   On input, the arguments appear as
       
 77868 +	r4 = arghook
       
 77869 +	r5 = ecif
       
 77870 +	r6 = nbytes
       
 77871 +	r7 = fn
       
 77872 +*/
       
 77873 +
       
 77874 +	.section	.text
       
 77875 +	.align	2
       
 77876 +	.global	ffi_call_sysv
       
 77877 +	.type	ffi_call_sysv, @function
       
 77878 +
       
 77879 +ffi_call_sysv:
       
 77880 +	.cfi_startproc
       
 77881 +
       
 77882 +	/* Create the stack frame, saving r16 so we can use it locally.  */
       
 77883 +	addi	sp, sp, -12
       
 77884 +	.cfi_def_cfa_offset 12
       
 77885 +	stw	ra, 8(sp)
       
 77886 +	stw	fp, 4(sp)
       
 77887 +	stw	r16, 0(sp)
       
 77888 +	.cfi_offset 31, -4
       
 77889 +	.cfi_offset 28, -8
       
 77890 +	.cfi_offset 16, -12
       
 77891 +	mov	fp, sp
       
 77892 +	.cfi_def_cfa_register 28
       
 77893 +	mov	r16, r7
       
 77894 +
       
 77895 +	/* Adjust the stack pointer to create the argument buffer
       
 77896 +	   nbytes long.  */
       
 77897 +	sub	sp, sp, r6
       
 77898 +
       
 77899 +	/* Call the arghook function.  */
       
 77900 +	mov	r2, r4		/* fn */
       
 77901 +	mov	r4, sp		/* argbuffer */
       
 77902 +	callr	r2		/* r5 already contains ecif */
       
 77903 +
       
 77904 +	/* Pop off the first 16 bytes of the argument buffer on the stack,
       
 77905 +	   transferring the contents to the argument registers.  */
       
 77906 +	ldw	r4, 0(sp)
       
 77907 +	ldw	r5, 4(sp)
       
 77908 +	ldw	r6, 8(sp)
       
 77909 +	ldw	r7, 12(sp)
       
 77910 +	addi	sp, sp, 16
       
 77911 +
       
 77912 +	/* Call the user function, which leaves its result in r2 and r3.  */
       
 77913 +	callr	r16
       
 77914 +
       
 77915 +	/* Pop off the stack frame.  */
       
 77916 +	mov	sp, fp
       
 77917 +	ldw	ra, 8(sp)
       
 77918 +	ldw	fp, 4(sp)
       
 77919 +	ldw	r16, 0(sp)
       
 77920 +	addi	sp, sp, 12
       
 77921 +	ret
       
 77922 +	.cfi_endproc
       
 77923 +	.size	ffi_call_sysv, .-ffi_call_sysv
       
 77924 +
       
 77925 +
       
 77926 +/* Closure trampolines jump here after putting the C helper address
       
 77927 +   in r9 and the closure pointer in r10.  The user-supplied arguments
       
 77928 +   to the closure are in the normal places, in r4-r7 and on the
       
 77929 +   stack.  Push the register arguments on the stack too and then call the
       
 77930 +   C helper function to deal with them.  */
       
 77931 +   
       
 77932 +	.section	.text
       
 77933 +	.align	2
       
 77934 +	.global	ffi_closure_sysv
       
 77935 +	.type	ffi_closure_sysv, @function
       
 77936 +
       
 77937 +ffi_closure_sysv:
       
 77938 +	.cfi_startproc
       
 77939 +
       
 77940 +	/* Create the stack frame, pushing the register args on the stack
       
 77941 +	   just below the stack args.  This is the same trick illustrated
       
 77942 +	   in Figure 7-3 in the Nios II Processor Reference Handbook, used
       
 77943 +	   for variable arguments and structures passed by value.  */
       
 77944 +	addi	sp, sp, -20
       
 77945 +	.cfi_def_cfa_offset 20
       
 77946 +	stw	ra, 0(sp)
       
 77947 +	.cfi_offset 31, -20
       
 77948 +	stw	r4, 4(sp)
       
 77949 +	.cfi_offset 4, -16
       
 77950 +	stw	r5, 8(sp)
       
 77951 +	.cfi_offset 5, -12
       
 77952 +	stw	r6, 12(sp)
       
 77953 +	.cfi_offset 6, -8
       
 77954 +	stw	r7, 16(sp)
       
 77955 +	.cfi_offset 7, -4
       
 77956 +
       
 77957 +	/* Call the helper.
       
 77958 +	   r4 = pointer to arguments on stack
       
 77959 +	   r5 = closure pointer (loaded in r10 by the trampoline)
       
 77960 +	   r9 = address of helper function (loaded by trampoline) */
       
 77961 +	addi	r4, sp, 4
       
 77962 +	mov	r5, r10
       
 77963 +	callr	r9
       
 77964 +	
       
 77965 +	/* Pop the stack and return.  */
       
 77966 +	ldw	ra, 0(sp)
       
 77967 +	addi	sp, sp, 20
       
 77968 +	.cfi_def_cfa_offset -20
       
 77969 +	ret
       
 77970 +	.cfi_endproc
       
 77971 +	.size	ffi_closure_sysv, .-ffi_closure_sysv
       
 77972 +
       
 77973 diff --git a/js/src/ctypes/libffi/src/pa/ffi.c b/js/src/ctypes/libffi/src/pa/ffi.c
       
 77974 --- a/js/src/ctypes/libffi/src/pa/ffi.c
       
 77975 +++ b/js/src/ctypes/libffi/src/pa/ffi.c
       
 77976 @@ -1,14 +1,16 @@
       
 77977  /* -----------------------------------------------------------------------
       
 77978 -   ffi.c - (c) 2003-2004 Randolph Chung <tausq@debian.org>
       
 77979 +   ffi.c - (c) 2011 Anthony Green
       
 77980             (c) 2008 Red Hat, Inc.
       
 77981 -
       
 77982 +	   (c) 2006 Free Software Foundation, Inc.
       
 77983 +           (c) 2003-2004 Randolph Chung <tausq@debian.org>
       
 77984 +           
       
 77985     HPPA Foreign Function Interface
       
 77986 -   HP-UX PA ABI support (c) 2006 Free Software Foundation, Inc.
       
 77987 +   HP-UX PA ABI support 
       
 77988  
       
 77989     Permission is hereby granted, free of charge, to any person obtaining
       
 77990     a copy of this software and associated documentation files (the
       
 77991     ``Software''), to deal in the Software without restriction, including
       
 77992     without limitation the rights to use, copy, modify, merge, publish,
       
 77993     distribute, sublicense, and/or sell copies of the Software, and to
       
 77994     permit persons to whom the Software is furnished to do so, subject to
       
 77995     the following conditions:
       
 77996 @@ -628,17 +630,18 @@ ffi_prep_closure_loc (ffi_closure* closu
       
 77997  		      void *user_data,
       
 77998  		      void *codeloc)
       
 77999  {
       
 78000    UINT32 *tramp = (UINT32 *)(closure->tramp);
       
 78001  #ifdef PA_HPUX
       
 78002    UINT32 *tmp;
       
 78003  #endif
       
 78004  
       
 78005 -  FFI_ASSERT (cif->abi == FFI_PA32);
       
 78006 +  if (cif->abi != FFI_PA32)
       
 78007 +    return FFI_BAD_ABI;
       
 78008  
       
 78009    /* Make a small trampoline that will branch to our
       
 78010       handler function. Use PC-relative addressing.  */
       
 78011  
       
 78012  #ifdef PA_LINUX
       
 78013    tramp[0] = 0xeaa00000; /* b,l .+8,%r21        ; %r21 <- pc+8 */
       
 78014    tramp[1] = 0xd6a01c1e; /* depi 0,31,2,%r21    ; mask priv bits */
       
 78015    tramp[2] = 0x4aa10028; /* ldw 20(%r21),%r1    ; load plabel */
       
 78016 diff --git a/js/src/ctypes/libffi/src/pa/ffitarget.h b/js/src/ctypes/libffi/src/pa/ffitarget.h
       
 78017 --- a/js/src/ctypes/libffi/src/pa/ffitarget.h
       
 78018 +++ b/js/src/ctypes/libffi/src/pa/ffitarget.h
       
 78019 @@ -1,10 +1,11 @@
       
 78020  /* -----------------------------------------------------------------*-C-*-
       
 78021 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 78022 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 78023 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 78024     Target configuration macros for hppa.
       
 78025  
       
 78026     Permission is hereby granted, free of charge, to any person obtaining
       
 78027     a copy of this software and associated documentation files (the
       
 78028     ``Software''), to deal in the Software without restriction, including
       
 78029     without limitation the rights to use, copy, modify, merge, publish,
       
 78030     distribute, sublicense, and/or sell copies of the Software, and to
       
 78031     permit persons to whom the Software is furnished to do so, subject to
       
 78032 @@ -22,16 +23,20 @@
       
 78033     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 78034     DEALINGS IN THE SOFTWARE.
       
 78035  
       
 78036     ----------------------------------------------------------------------- */
       
 78037  
       
 78038  #ifndef LIBFFI_TARGET_H
       
 78039  #define LIBFFI_TARGET_H
       
 78040  
       
 78041 +#ifndef LIBFFI_H
       
 78042 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 78043 +#endif
       
 78044 +
       
 78045  /* ---- System specific configurations ----------------------------------- */
       
 78046  
       
 78047  #ifndef LIBFFI_ASM
       
 78048  typedef unsigned long          ffi_arg;
       
 78049  typedef signed long            ffi_sarg;
       
 78050  
       
 78051  typedef enum ffi_abi {
       
 78052    FFI_FIRST_ABI = 0,
       
 78053 diff --git a/js/src/ctypes/libffi/src/powerpc/aix.S b/js/src/ctypes/libffi/src/powerpc/aix.S
       
 78054 --- a/js/src/ctypes/libffi/src/powerpc/aix.S
       
 78055 +++ b/js/src/ctypes/libffi/src/powerpc/aix.S
       
 78056 @@ -1,10 +1,10 @@
       
 78057  /* -----------------------------------------------------------------------
       
 78058 -   aix.S - Copyright (c) 2002,2009 Free Software Foundation, Inc.
       
 78059 +   aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
       
 78060     based on darwin.S by John Hornkvist
       
 78061  
       
 78062     PowerPC Assembly glue.
       
 78063  
       
 78064     Permission is hereby granted, free of charge, to any person obtaining
       
 78065     a copy of this software and associated documentation files (the
       
 78066     ``Software''), to deal in the Software without restriction, including
       
 78067     without limitation the rights to use, copy, modify, merge, publish,
       
 78068 @@ -74,16 +74,18 @@
       
 78069  	.set f15,15
       
 78070  	.set f16,16
       
 78071  	.set f17,17
       
 78072  	.set f18,18
       
 78073  	.set f19,19
       
 78074  	.set f20,20
       
 78075  	.set f21,21
       
 78076  
       
 78077 +	.extern .ffi_prep_args
       
 78078 +
       
 78079  #define LIBFFI_ASM
       
 78080  #include <fficonfig.h>
       
 78081  #include <ffi.h>
       
 78082  #define JUMPTARGET(name) name
       
 78083  #define L(x) x
       
 78084  	.file "aix.S"
       
 78085  	.toc
       
 78086  
       
 78087 @@ -120,39 +122,40 @@ ffi_call_AIX:
       
 78088  	mr	r31, r5	/* flags, */
       
 78089  	mr	r30, r6	/* rvalue, */
       
 78090  	mr	r29, r7	/* function address.  */
       
 78091  	std	r2, 40(r1)
       
 78092  
       
 78093  	/* Call ffi_prep_args.  */
       
 78094  	mr	r4, r1
       
 78095  	bl	.ffi_prep_args
       
 78096 +	nop
       
 78097  
       
 78098  	/* Now do the call.  */
       
 78099  	ld	r0, 0(r29)
       
 78100  	ld	r2, 8(r29)
       
 78101  	ld	r11, 16(r29)
       
 78102  	/* Set up cr1 with bits 4-7 of the flags.  */
       
 78103  	mtcrf	0x40, r31
       
 78104  	mtctr	r0
       
 78105  	/* Load all those argument registers.  */
       
 78106 -	// We have set up a nice stack frame, just load it into registers.
       
 78107 +	/* We have set up a nice stack frame, just load it into registers. */
       
 78108  	ld	r3, 40+(1*8)(r1)
       
 78109  	ld	r4, 40+(2*8)(r1)
       
 78110  	ld	r5, 40+(3*8)(r1)
       
 78111  	ld	r6, 40+(4*8)(r1)
       
 78112  	nop
       
 78113  	ld	r7, 40+(5*8)(r1)
       
 78114  	ld	r8, 40+(6*8)(r1)
       
 78115  	ld	r9, 40+(7*8)(r1)
       
 78116  	ld	r10,40+(8*8)(r1)
       
 78117  
       
 78118  L1:
       
 78119  	/* Load all the FP registers.  */
       
 78120 -	bf	6,L2 // 2f + 0x18
       
 78121 +	bf	6,L2 /* 2f + 0x18 */
       
 78122  	lfd	f1,-32-(13*8)(r28)
       
 78123  	lfd	f2,-32-(12*8)(r28)
       
 78124  	lfd	f3,-32-(11*8)(r28)
       
 78125  	lfd	f4,-32-(10*8)(r28)
       
 78126  	nop
       
 78127  	lfd	f5,-32-(9*8)(r28)
       
 78128  	lfd	f6,-32-(8*8)(r28)
       
 78129  	lfd	f7,-32-(7*8)(r28)
       
 78130 @@ -221,39 +224,40 @@ L(float_return_value):
       
 78131  	mr	r31, r5	/* flags, */
       
 78132  	mr	r30, r6	/* rvalue, */
       
 78133  	mr	r29, r7	/* function address, */
       
 78134  	stw	r2, 20(r1)
       
 78135  
       
 78136  	/* Call ffi_prep_args.  */
       
 78137  	mr	r4, r1
       
 78138  	bl	.ffi_prep_args
       
 78139 +	nop
       
 78140  
       
 78141  	/* Now do the call.  */
       
 78142  	lwz	r0, 0(r29)
       
 78143  	lwz	r2, 4(r29)
       
 78144  	lwz	r11, 8(r29)
       
 78145  	/* Set up cr1 with bits 4-7 of the flags.  */
       
 78146  	mtcrf	0x40, r31
       
 78147  	mtctr	r0
       
 78148  	/* Load all those argument registers.  */
       
 78149 -	// We have set up a nice stack frame, just load it into registers.
       
 78150 +	/* We have set up a nice stack frame, just load it into registers. */
       
 78151  	lwz	r3, 20+(1*4)(r1)
       
 78152  	lwz	r4, 20+(2*4)(r1)
       
 78153  	lwz	r5, 20+(3*4)(r1)
       
 78154  	lwz	r6, 20+(4*4)(r1)
       
 78155  	nop
       
 78156  	lwz	r7, 20+(5*4)(r1)
       
 78157  	lwz	r8, 20+(6*4)(r1)
       
 78158  	lwz	r9, 20+(7*4)(r1)
       
 78159  	lwz	r10,20+(8*4)(r1)
       
 78160  
       
 78161  L1:
       
 78162  	/* Load all the FP registers.  */
       
 78163 -	bf	6,L2 // 2f + 0x18
       
 78164 +	bf	6,L2 /* 2f + 0x18 */
       
 78165  	lfd	f1,-16-(13*8)(r28)
       
 78166  	lfd	f2,-16-(12*8)(r28)
       
 78167  	lfd	f3,-16-(11*8)(r28)
       
 78168  	lfd	f4,-16-(10*8)(r28)
       
 78169  	nop
       
 78170  	lfd	f5,-16-(9*8)(r28)
       
 78171  	lfd	f6,-16-(8*8)(r28)
       
 78172  	lfd	f7,-16-(7*8)(r28)
       
 78173 @@ -298,17 +302,17 @@ L(fp_return_value):
       
 78174  	stfd	f1, 0(r30)
       
 78175  	b	L(done_return_value)
       
 78176  L(float_return_value):
       
 78177  	stfs	f1, 0(r30)
       
 78178  	b	L(done_return_value)
       
 78179  #endif
       
 78180  	.long 0
       
 78181  	.byte 0,0,0,1,128,4,0,0
       
 78182 -//END(ffi_call_AIX)
       
 78183 +/* END(ffi_call_AIX) */
       
 78184  
       
 78185  .csect .text[PR]
       
 78186  	.align 2
       
 78187  	.globl ffi_call_DARWIN
       
 78188  	.globl .ffi_call_DARWIN
       
 78189  .csect ffi_call_DARWIN[DS]
       
 78190  ffi_call_DARWIN:
       
 78191  #ifdef __64BIT__
       
 78192 @@ -316,9 +320,9 @@ ffi_call_DARWIN:
       
 78193  #else
       
 78194  	.long .ffi_call_DARWIN, TOC[tc0], 0
       
 78195  #endif
       
 78196  	.csect .text[PR]
       
 78197  .ffi_call_DARWIN:
       
 78198  	blr
       
 78199  	.long 0
       
 78200  	.byte 0,0,0,0,0,0,0,0
       
 78201 -//END(ffi_call_DARWIN)
       
 78202 +/* END(ffi_call_DARWIN) */
       
 78203 diff --git a/js/src/ctypes/libffi/src/powerpc/aix_closure.S b/js/src/ctypes/libffi/src/powerpc/aix_closure.S
       
 78204 --- a/js/src/ctypes/libffi/src/powerpc/aix_closure.S
       
 78205 +++ b/js/src/ctypes/libffi/src/powerpc/aix_closure.S
       
 78206 @@ -74,16 +74,18 @@
       
 78207  	.set f15,15
       
 78208  	.set f16,16
       
 78209  	.set f17,17
       
 78210  	.set f18,18
       
 78211  	.set f19,19
       
 78212  	.set f20,20
       
 78213  	.set f21,21
       
 78214  
       
 78215 +	.extern .ffi_closure_helper_DARWIN
       
 78216 +
       
 78217  #define LIBFFI_ASM
       
 78218  #define JUMPTARGET(name) name
       
 78219  #define L(x) x
       
 78220  	.file "aix_closure.S"
       
 78221  	.toc
       
 78222  LC..60:
       
 78223  	.tc L..60[TC],L..60
       
 78224  	.csect .text[PR]
       
 78225 @@ -160,16 +162,17 @@ ffi_closure_ASM:
       
 78226  	nop
       
 78227  
       
 78228  	/* now r3 contains the return type */
       
 78229  	/* so use it to look up in a table */
       
 78230  	/* so we know how to deal with each type */
       
 78231  
       
 78232  	/* look up the proper starting point in table  */
       
 78233  	/* by using return type as offset */
       
 78234 +	lhz	r3, 10(r3)	/* load type from return type */
       
 78235  	ld	r4, LC..60(2)	/* get address of jump table */
       
 78236  	sldi	r3, r3, 4	/* now multiply return type by 16 */
       
 78237  	ld	r0, 240+16(r1)	/* load return address */
       
 78238  	add	r3, r3, r4	/* add contents of table to table address */
       
 78239  	mtctr	r3
       
 78240  	bctr			/* jump to it */
       
 78241  
       
 78242  /* Each fragment must be exactly 16 bytes long (4 instructions).
       
 78243 @@ -332,18 +335,19 @@ L..finish:
       
 78244  	nop
       
 78245  
       
 78246  	/* now r3 contains the return type */
       
 78247  	/* so use it to look up in a table */
       
 78248  	/* so we know how to deal with each type */
       
 78249  
       
 78250  	/* look up the proper starting point in table  */
       
 78251  	/* by using return type as offset */
       
 78252 +	lhz	r3, 6(r3)	/* load type from return type */
       
 78253  	lwz	r4, LC..60(2)	/* get address of jump table */
       
 78254 -	slwi	r3, r3, 4	/* now multiply return type by 4 */
       
 78255 +	slwi	r3, r3, 4	/* now multiply return type by 16 */
       
 78256  	lwz	r0, 176+8(r1)	/* load return address */
       
 78257  	add	r3, r3, r4	/* add contents of table to table address */
       
 78258  	mtctr	r3
       
 78259  	bctr			/* jump to it */
       
 78260  
       
 78261  /* Each fragment must be exactly 16 bytes long (4 instructions).
       
 78262     Align to 16 byte boundary for cache and dispatch efficiency.  */
       
 78263  	.align 4
       
 78264 diff --git a/js/src/ctypes/libffi/src/powerpc/asm.h b/js/src/ctypes/libffi/src/powerpc/asm.h
       
 78265 --- a/js/src/ctypes/libffi/src/powerpc/asm.h
       
 78266 +++ b/js/src/ctypes/libffi/src/powerpc/asm.h
       
 78267 @@ -37,17 +37,17 @@
       
 78268  /* This seems to always be the case on PPC.  */
       
 78269  #define ALIGNARG(log2) log2
       
 78270  /* For ELF we need the `.type' directive to make shared libs work right.  */
       
 78271  #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
       
 78272  #define ASM_SIZE_DIRECTIVE(name) .size name,.-name
       
 78273  
       
 78274  /* If compiled for profiling, call `_mcount' at the start of each function.  */
       
 78275  #ifdef	PROF
       
 78276 -/* The mcount code relies on a the return address being on the stack
       
 78277 +/* The mcount code relies on the return address being on the stack
       
 78278     to locate our caller and so it can restore it; so store one just
       
 78279     for its benefit.  */
       
 78280  #ifdef PIC
       
 78281  #define CALL_MCOUNT							      \
       
 78282    .pushsection;								      \
       
 78283    .section ".data";							      \
       
 78284    .align ALIGNARG(2);							      \
       
 78285  0:.long 0;								      \
       
 78286 diff --git a/js/src/ctypes/libffi/src/powerpc/darwin.S b/js/src/ctypes/libffi/src/powerpc/darwin.S
       
 78287 --- a/js/src/ctypes/libffi/src/powerpc/darwin.S
       
 78288 +++ b/js/src/ctypes/libffi/src/powerpc/darwin.S
       
 78289 @@ -1,11 +1,11 @@
       
 78290  /* -----------------------------------------------------------------------
       
 78291     darwin.S - Copyright (c) 2000 John Hornkvist
       
 78292 -	      Copyright (c) 2004 Free Software Foundation, Inc.
       
 78293 +	      Copyright (c) 2004, 2010 Free Software Foundation, Inc.
       
 78294  
       
 78295     PowerPC Assembly glue.
       
 78296  
       
 78297     Permission is hereby granted, free of charge, to any person obtaining
       
 78298     a copy of this software and associated documentation files (the
       
 78299     ``Software''), to deal in the Software without restriction, including
       
 78300     without limitation the rights to use, copy, modify, merge, publish,
       
 78301     distribute, sublicense, and/or sell copies of the Software, and to
       
 78302 @@ -19,207 +19,342 @@
       
 78303     OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 78304     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 78305     IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
 78306     OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
 78307     ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 78308     OTHER DEALINGS IN THE SOFTWARE.
       
 78309     ----------------------------------------------------------------------- */
       
 78310  
       
 78311 +#define LIBFFI_ASM
       
 78312  #if defined(__ppc64__)
       
 78313  #define MODE_CHOICE(x, y) y
       
 78314  #else
       
 78315  #define MODE_CHOICE(x, y) x
       
 78316  #endif
       
 78317  
       
 78318 -#define g_long  MODE_CHOICE(long, quad)         /* usage is ".g_long" */
       
 78319 +#define machine_choice	MODE_CHOICE(ppc7400,ppc64)
       
 78320  
       
 78321 -#define LOG2_GPR_BYTES  MODE_CHOICE(2,3)        /* log2(GPR_BYTES) */
       
 78322 +; Define some pseudo-opcodes for size-independent load & store of GPRs ...
       
 78323 +#define lgu		MODE_CHOICE(lwzu, ldu)
       
 78324 +#define lg		MODE_CHOICE(lwz,ld)
       
 78325 +#define sg		MODE_CHOICE(stw,std)
       
 78326 +#define sgu		MODE_CHOICE(stwu,stdu)
       
 78327 +#define sgux		MODE_CHOICE(stwux,stdux)
       
 78328  
       
 78329 -#define LIBFFI_ASM
       
 78330 +; ... and the size of GPRs and their storage indicator.
       
 78331 +#define GPR_BYTES	MODE_CHOICE(4,8)
       
 78332 +#define LOG2_GPR_BYTES	MODE_CHOICE(2,3)	/* log2(GPR_BYTES) */
       
 78333 +#define g_long		MODE_CHOICE(long, quad)	/* usage is ".g_long" */
       
 78334 +
       
 78335 +; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04.
       
 78336 +#define LINKAGE_SIZE	MODE_CHOICE(24,48)
       
 78337 +#define PARAM_AREA	MODE_CHOICE(32,64)
       
 78338 +#define SAVED_LR_OFFSET	MODE_CHOICE(8,16)	/* save position for lr */
       
 78339 +
       
 78340 +/* If there is any FP stuff we make space for all of the regs.  */
       
 78341 +#define SAVED_FPR_COUNT 13
       
 78342 +#define FPR_SIZE	8
       
 78343 +#define RESULT_BYTES	16
       
 78344 +
       
 78345 +/* This should be kept in step with the same value in ffi_darwin.c.  */
       
 78346 +#define ASM_NEEDS_REGISTERS 4
       
 78347 +#define SAVE_REGS_SIZE (ASM_NEEDS_REGISTERS * GPR_BYTES)
       
 78348 +
       
 78349  #include <fficonfig.h>
       
 78350  #include <ffi.h>
       
 78351 +
       
 78352  #define JUMPTARGET(name) name
       
 78353  #define L(x) x
       
 78354 -.text
       
 78355 +
       
 78356 +	.text
       
 78357  	.align 2
       
 78358 -.globl _ffi_prep_args
       
 78359 +	.globl _ffi_prep_args
       
 78360  
       
 78361 -.text
       
 78362  	.align 2
       
 78363 -.globl _ffi_call_DARWIN
       
 78364 -.text
       
 78365 -	.align 2
       
 78366 +	.globl _ffi_call_DARWIN
       
 78367 +
       
 78368 +	/* We arrive here with:
       
 78369 +	   r3 = ptr to extended cif.
       
 78370 +	   r4 = -bytes.
       
 78371 +	   r5 = cif flags.
       
 78372 +	   r6 = ptr to return value.
       
 78373 +	   r7 = fn pointer (user func).
       
 78374 +	   r8 = fn pointer (ffi_prep_args).
       
 78375 +	   r9 = ffi_type* for the ret val.  */
       
 78376 +
       
 78377  _ffi_call_DARWIN:
       
 78378 -LFB0:
       
 78379 +Lstartcode:
       
 78380  	mr   	r12,r8	/* We only need r12 until the call,
       
 78381 -			   so it doesn't have to be saved.  */
       
 78382 +			   so it does not have to be saved.  */
       
 78383  LFB1:
       
 78384  	/* Save the old stack pointer as AP.  */
       
 78385  	mr	r8,r1
       
 78386  LCFI0:
       
 78387 +	
       
 78388 +	/* Save the retval type in parents frame.  */
       
 78389 +	sg	r9,(LINKAGE_SIZE+6*GPR_BYTES)(r8)
       
 78390 +
       
 78391  	/* Allocate the stack space we need.  */
       
 78392 -	stwux	r1,r1,r4
       
 78393 +	sgux	r1,r1,r4
       
 78394  
       
 78395  	/* Save registers we use.  */
       
 78396  	mflr	r9
       
 78397 +	sg	r9,SAVED_LR_OFFSET(r8)
       
 78398  
       
 78399 -	stw	r28,-16(r8)	
       
 78400 -	stw	r29,-12(r8)
       
 78401 -	stw	r30,-8(r8)
       
 78402 -	stw	r31,-4(r8)
       
 78403 +	sg	r28,-(4 * GPR_BYTES)(r8)	
       
 78404 +	sg	r29,-(3 * GPR_BYTES)(r8)
       
 78405 +	sg	r30,-(2 * GPR_BYTES)(r8)
       
 78406 +	sg	r31,-(    GPR_BYTES)(r8)
       
 78407  
       
 78408 -	stw	r9,8(r8)
       
 78409 -	stw	r2,20(r1)
       
 78410 +#if !defined(POWERPC_DARWIN)
       
 78411 +	/* The TOC slot is reserved in the Darwin ABI and r2 is volatile.  */
       
 78412 +	sg	r2,(5 * GPR_BYTES)(r1)
       
 78413 +#endif
       
 78414 +
       
 78415  LCFI1:
       
 78416  
       
 78417  	/* Save arguments over call.  */
       
 78418  	mr	r31,r5	/* flags,  */
       
 78419  	mr	r30,r6	/* rvalue,  */
       
 78420  	mr	r29,r7	/* function address,  */
       
 78421  	mr	r28,r8	/* our AP.  */
       
 78422  LCFI2:
       
 78423 -	/* Call ffi_prep_args.  */
       
 78424 +	/* Call ffi_prep_args. r3 = extended cif, r4 = stack ptr copy.  */
       
 78425  	mr	r4,r1
       
 78426  	li	r9,0
       
 78427  
       
 78428  	mtctr	r12 /* r12 holds address of _ffi_prep_args.  */
       
 78429  	bctrl
       
 78430 -	lwz     r2,20(r1)
       
 78431  
       
 78432 +#if !defined(POWERPC_DARWIN)
       
 78433 +	/* The TOC slot is reserved in the Darwin ABI and r2 is volatile.  */
       
 78434 +	lg     r2,(5 * GPR_BYTES)(r1)
       
 78435 +#endif
       
 78436  	/* Now do the call.
       
 78437  	   Set up cr1 with bits 4-7 of the flags.  */
       
 78438  	mtcrf	0x40,r31
       
 78439  	/* Get the address to call into CTR.  */
       
 78440  	mtctr	r29
       
 78441  	/* Load all those argument registers.
       
 78442  	   We have set up a nice stack frame, just load it into registers.  */
       
 78443 -	lwz     r3,20+(1*4)(r1)
       
 78444 -	lwz     r4,20+(2*4)(r1)
       
 78445 -	lwz     r5,20+(3*4)(r1)
       
 78446 -	lwz     r6,20+(4*4)(r1)
       
 78447 +	lg     r3, (LINKAGE_SIZE                )(r1)
       
 78448 +	lg     r4, (LINKAGE_SIZE +     GPR_BYTES)(r1)
       
 78449 +	lg     r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r1)
       
 78450 +	lg     r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r1)
       
 78451  	nop
       
 78452 -	lwz     r7,20+(5*4)(r1)
       
 78453 -	lwz     r8,20+(6*4)(r1)
       
 78454 -	lwz     r9,20+(7*4)(r1)
       
 78455 -	lwz     r10,20+(8*4)(r1)
       
 78456 +	lg     r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r1)
       
 78457 +	lg     r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r1)
       
 78458 +	lg     r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r1)
       
 78459 +	lg     r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r1)
       
 78460  
       
 78461  L1:
       
 78462 -	/* Load all the FP registers.  */
       
 78463 +	/* ... Load all the FP registers.  */
       
 78464  	bf	6,L2	/* No floats to load.  */
       
 78465 -	lfd	f1,-16-(13*8)(r28)
       
 78466 -	lfd	f2,-16-(12*8)(r28)
       
 78467 -	lfd	f3,-16-(11*8)(r28)
       
 78468 -	lfd	f4,-16-(10*8)(r28)
       
 78469 +	lfd	f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28)
       
 78470 +	lfd	f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28)
       
 78471 +	lfd	f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28)
       
 78472 +	lfd	f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28)
       
 78473  	nop
       
 78474 -	lfd	f5,-16-(9*8)(r28)
       
 78475 -	lfd	f6,-16-(8*8)(r28)
       
 78476 -	lfd	f7,-16-(7*8)(r28)
       
 78477 -	lfd	f8,-16-(6*8)(r28)
       
 78478 +	lfd	f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28)
       
 78479 +	lfd	f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28)
       
 78480 +	lfd	f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28)
       
 78481 +	lfd	f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28)
       
 78482  	nop
       
 78483 -	lfd     f9,-16-(5*8)(r28)
       
 78484 -	lfd     f10,-16-(4*8)(r28)
       
 78485 -	lfd     f11,-16-(3*8)(r28)
       
 78486 -	lfd     f12,-16-(2*8)(r28)
       
 78487 +	lfd     f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28)
       
 78488 +	lfd     f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28)
       
 78489 +	lfd     f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28)
       
 78490 +	lfd     f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28)
       
 78491  	nop
       
 78492 -	lfd     f13,-16-(1*8)(r28)
       
 78493 +	lfd     f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28)
       
 78494  
       
 78495  L2:
       
 78496  	mr	r12,r29	/* Put the target address in r12 as specified.  */
       
 78497  	mtctr  	r12
       
 78498  	nop
       
 78499  	nop
       
 78500 +
       
 78501  	/* Make the call.  */
       
 78502  	bctrl
       
 78503  
       
 78504  	/* Now, deal with the return value.  */
       
 78505 -	mtcrf	0x01,r31
       
 78506  
       
 78507 -	bt	30,L(done_return_value)
       
 78508 -	bt	29,L(fp_return_value)
       
 78509 -	stw	r3,0(r30)
       
 78510 -	bf	28,L(done_return_value)
       
 78511 -	stw	r4,4(r30)
       
 78512 +	/* m64 structure returns can occupy the same set of registers as
       
 78513 +	   would be used to pass such a structure as arg0 - so take care 
       
 78514 +	   not to step on any possibly hot regs.  */
       
 78515  
       
 78516 -	/* Fall through.  */
       
 78517 +	/* Get the flags.. */
       
 78518 +	mtcrf	0x03,r31 ; we need c6 & cr7 now.
       
 78519 +	; FLAG_RETURNS_NOTHING also covers struct ret-by-ref.
       
 78520 +	bt	30,L(done_return_value)	  ; FLAG_RETURNS_NOTHING
       
 78521 +	bf	27,L(scalar_return_value) ; not FLAG_RETURNS_STRUCT
       
 78522 +	
       
 78523 +	/* OK, so we have a struct.  */
       
 78524 +#if defined(__ppc64__)
       
 78525 +	bt	31,L(maybe_return_128) ; FLAG_RETURNS_128BITS, special case 
       
 78526  
       
 78527 -L(done_return_value):
       
 78528 -	/* Restore the registers we used and return.  */
       
 78529 -	lwz	r9,8(r28)
       
 78530 -	lwz	r31,-4(r28)
       
 78531 -	mtlr	r9
       
 78532 -	lwz	r30,-8(r28)
       
 78533 -	lwz	r29,-12(r28)
       
 78534 -	lwz	r28,-16(r28)
       
 78535 -	lwz	r1,0(r1)
       
 78536 -	blr
       
 78537 +	/* OK, we have to map the return back to a mem struct.
       
 78538 +	   We are about to trample the parents param area, so recover the
       
 78539 +	   return type.  r29 is free, since the call is done.  */
       
 78540 +	lg	r29,(LINKAGE_SIZE + 6 * GPR_BYTES)(r28)
       
 78541 +
       
 78542 +	sg	r3, (LINKAGE_SIZE                )(r28)
       
 78543 +	sg	r4, (LINKAGE_SIZE +     GPR_BYTES)(r28)
       
 78544 +	sg	r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r28)
       
 78545 +	sg	r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r28)
       
 78546 +	nop
       
 78547 +	sg	r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r28)
       
 78548 +	sg	r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r28)
       
 78549 +	sg	r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r28)
       
 78550 +	sg	r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28)
       
 78551 +	/* OK, so do the block move - we trust that memcpy will not trample
       
 78552 +	   the fprs...  */
       
 78553 +	mr 	r3,r30 ; dest
       
 78554 +	addi	r4,r28,LINKAGE_SIZE ; source
       
 78555 +	/* The size is a size_t, should be long.  */
       
 78556 +	lg	r5,0(r29)
       
 78557 +	/* Figure out small structs */
       
 78558 +	cmpi	0,r5,4
       
 78559 +	bgt	L3	; 1, 2 and 4 bytes have special rules.
       
 78560 +	cmpi	0,r5,3
       
 78561 +	beq	L3	; not 3
       
 78562 +	addi	r4,r4,8
       
 78563 +	subf	r4,r5,r4
       
 78564 +L3:
       
 78565 +	bl	_memcpy
       
 78566 +	
       
 78567 +	/* ... do we need the FP registers? - recover the flags.. */
       
 78568 +	mtcrf	0x03,r31 ; we need c6 & cr7 now.
       
 78569 +	bf	29,L(done_return_value)	/* No floats in the struct.  */
       
 78570 +	stfd	f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28)
       
 78571 +	stfd	f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28)
       
 78572 +	stfd	f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28)
       
 78573 +	stfd	f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28)
       
 78574 +	nop
       
 78575 +	stfd	f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28)
       
 78576 +	stfd	f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28)
       
 78577 +	stfd	f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28)
       
 78578 +	stfd	f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28)
       
 78579 +	nop
       
 78580 +	stfd	f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28)
       
 78581 +	stfd	f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28)
       
 78582 +	stfd	f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28)
       
 78583 +	stfd	f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28)
       
 78584 +	nop
       
 78585 +	stfd	f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28)
       
 78586 +
       
 78587 +	mr	r3,r29	; ffi_type *
       
 78588 +	mr	r4,r30	; dest
       
 78589 +	addi	r5,r28,-SAVE_REGS_SIZE-(13*FPR_SIZE) ; fprs
       
 78590 +	xor	r6,r6,r6
       
 78591 +	sg	r6,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28)
       
 78592 +	addi	r6,r28,(LINKAGE_SIZE + 7 * GPR_BYTES) ; point to a zeroed counter.
       
 78593 +	bl 	_darwin64_struct_floats_to_mem
       
 78594 +
       
 78595 +	b L(done_return_value)
       
 78596 +#else
       
 78597 +	stw	r3,0(r30) ; m32 the only struct return in reg is 4 bytes.
       
 78598 +#endif
       
 78599 +	b L(done_return_value)
       
 78600  
       
 78601  L(fp_return_value):
       
 78602  	/* Do we have long double to store?  */
       
 78603 -	bf	31,L(fd_return_value)
       
 78604 +	bf	31,L(fd_return_value) ; FLAG_RETURNS_128BITS
       
 78605  	stfd	f1,0(r30)
       
 78606 -	stfd	f2,8(r30)
       
 78607 +	stfd	f2,FPR_SIZE(r30)
       
 78608  	b	L(done_return_value)
       
 78609  
       
 78610  L(fd_return_value):
       
 78611  	/* Do we have double to store?  */
       
 78612  	bf	28,L(float_return_value)
       
 78613  	stfd	f1,0(r30)
       
 78614  	b	L(done_return_value)
       
 78615  
       
 78616  L(float_return_value):
       
 78617  	/* We only have a float to store.  */
       
 78618  	stfs	f1,0(r30)
       
 78619  	b	L(done_return_value)
       
 78620  
       
 78621 +L(scalar_return_value):
       
 78622 +	bt	29,L(fp_return_value)	; FLAG_RETURNS_FP
       
 78623 +	; ffi_arg is defined as unsigned long. 
       
 78624 +	sg	r3,0(r30)		; Save the reg.
       
 78625 +	bf	28,L(done_return_value) ; not FLAG_RETURNS_64BITS 
       
 78626 +
       
 78627 +#if defined(__ppc64__)
       
 78628 +L(maybe_return_128):
       
 78629 +	std	r3,0(r30)
       
 78630 +	bf	31,L(done_return_value) ; not FLAG_RETURNS_128BITS 
       
 78631 +	std	r4,8(r30)
       
 78632 +#else
       
 78633 +	stw	r4,4(r30)
       
 78634 +#endif
       
 78635 +
       
 78636 +	/* Fall through.  */
       
 78637 +	/* We want this at the end to simplify eh epilog computation.  */
       
 78638 +
       
 78639 +L(done_return_value):
       
 78640 +	/* Restore the registers we used and return.  */
       
 78641 +	lg	r29,SAVED_LR_OFFSET(r28)
       
 78642 +	; epilog
       
 78643 +	lg	r31,-(1 * GPR_BYTES)(r28)
       
 78644 +	mtlr	r29
       
 78645 +	lg	r30,-(2 * GPR_BYTES)(r28)
       
 78646 +	lg	r29,-(3 * GPR_BYTES)(r28)
       
 78647 +	lg	r28,-(4 * GPR_BYTES)(r28)
       
 78648 +	lg	r1,0(r1)
       
 78649 +	blr
       
 78650  LFE1:
       
 78651 +	.align	1
       
 78652  /* END(_ffi_call_DARWIN)  */
       
 78653  
       
 78654  /* Provide a null definition of _ffi_call_AIX.  */
       
 78655 -.text
       
 78656 -	.align 2
       
 78657 -.globl _ffi_call_AIX
       
 78658 -.text
       
 78659 +	.text
       
 78660 +	.globl _ffi_call_AIX
       
 78661  	.align 2
       
 78662  _ffi_call_AIX:
       
 78663  	blr
       
 78664  /* END(_ffi_call_AIX)  */
       
 78665  
       
 78666 -.data
       
 78667 -.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms
       
 78668 +/* EH stuff.  */
       
 78669 +
       
 78670 +#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78)
       
 78671 +
       
 78672 +	.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
       
 78673  EH_frame1:
       
 78674  	.set	L$set$0,LECIE1-LSCIE1
       
 78675  	.long	L$set$0	; Length of Common Information Entry
       
 78676  LSCIE1:
       
 78677  	.long	0x0	; CIE Identifier Tag
       
 78678  	.byte	0x1	; CIE Version
       
 78679  	.ascii	"zR\0"	; CIE Augmentation
       
 78680  	.byte	0x1	; uleb128 0x1; CIE Code Alignment Factor
       
 78681 -	.byte	0x7c	; sleb128 -4; CIE Data Alignment Factor
       
 78682 +	.byte	EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
       
 78683  	.byte	0x41	; CIE RA Column
       
 78684  	.byte	0x1	; uleb128 0x1; Augmentation size
       
 78685 -	.byte	0x90	; FDE Encoding (indirect pcrel)
       
 78686 +	.byte	0x10	; FDE Encoding (pcrel)
       
 78687  	.byte	0xc	; DW_CFA_def_cfa
       
 78688  	.byte	0x1	; uleb128 0x1
       
 78689  	.byte	0x0	; uleb128 0x0
       
 78690  	.align	LOG2_GPR_BYTES
       
 78691  LECIE1:
       
 78692 -.globl _ffi_call_DARWIN.eh
       
 78693 +
       
 78694 +	.globl _ffi_call_DARWIN.eh
       
 78695  _ffi_call_DARWIN.eh:
       
 78696  LSFDE1:
       
 78697  	.set	L$set$1,LEFDE1-LASFDE1
       
 78698  	.long	L$set$1	; FDE Length
       
 78699  LASFDE1:
       
 78700  	.long	LASFDE1-EH_frame1 ; FDE CIE offset
       
 78701 -	.g_long	LLFB0$non_lazy_ptr-.	; FDE initial location
       
 78702 -	.set	L$set$3,LFE1-LFB0
       
 78703 +	.g_long	Lstartcode-.	; FDE initial location
       
 78704 +	.set	L$set$3,LFE1-Lstartcode
       
 78705  	.g_long	L$set$3	; FDE address range
       
 78706  	.byte   0x0     ; uleb128 0x0; Augmentation size
       
 78707  	.byte	0x4	; DW_CFA_advance_loc4
       
 78708 -	.set	L$set$4,LCFI0-LFB1
       
 78709 +	.set	L$set$4,LCFI0-Lstartcode
       
 78710  	.long	L$set$4
       
 78711  	.byte	0xd	; DW_CFA_def_cfa_register
       
 78712  	.byte	0x08	; uleb128 0x08
       
 78713  	.byte	0x4	; DW_CFA_advance_loc4
       
 78714  	.set	L$set$5,LCFI1-LCFI0
       
 78715  	.long	L$set$5
       
 78716  	.byte   0x11    ; DW_CFA_offset_extended_sf
       
 78717  	.byte	0x41	; uleb128 0x41
       
 78718 @@ -234,12 +369,10 @@ LASFDE1:
       
 78719  	.byte	0x4	; uleb128 0x4
       
 78720  	.byte	0x4	; DW_CFA_advance_loc4
       
 78721  	.set	L$set$6,LCFI2-LCFI1
       
 78722  	.long	L$set$6
       
 78723  	.byte	0xd	; DW_CFA_def_cfa_register
       
 78724  	.byte	0x1c	; uleb128 0x1c
       
 78725  	.align LOG2_GPR_BYTES
       
 78726  LEFDE1:
       
 78727 -.data
       
 78728 -	.align LOG2_GPR_BYTES
       
 78729 -LLFB0$non_lazy_ptr:
       
 78730 -	.g_long LFB0
       
 78731 +	.align 1
       
 78732 +
       
 78733 diff --git a/js/src/ctypes/libffi/src/powerpc/darwin_closure.S b/js/src/ctypes/libffi/src/powerpc/darwin_closure.S
       
 78734 --- a/js/src/ctypes/libffi/src/powerpc/darwin_closure.S
       
 78735 +++ b/js/src/ctypes/libffi/src/powerpc/darwin_closure.S
       
 78736 @@ -1,11 +1,12 @@
       
 78737  /* -----------------------------------------------------------------------
       
 78738 -   darwin_closure.S - Copyright (c) 2002, 2003, 2004, Free Software Foundation,
       
 78739 -   Inc. based on ppc_closure.S
       
 78740 +   darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010, 
       
 78741 +   Free Software Foundation, Inc. 
       
 78742 +   based on ppc_closure.S
       
 78743  
       
 78744     PowerPC Assembly glue.
       
 78745  
       
 78746     Permission is hereby granted, free of charge, to any person obtaining
       
 78747     a copy of this software and associated documentation files (the
       
 78748     ``Software''), to deal in the Software without restriction, including
       
 78749     without limitation the rights to use, copy, modify, merge, publish,
       
 78750     distribute, sublicense, and/or sell copies of the Software, and to
       
 78751 @@ -28,101 +29,187 @@
       
 78752  #define L(x) x
       
 78753  
       
 78754  #if defined(__ppc64__)
       
 78755  #define MODE_CHOICE(x, y) y
       
 78756  #else
       
 78757  #define MODE_CHOICE(x, y) x
       
 78758  #endif
       
 78759  
       
 78760 -#define lgu     MODE_CHOICE(lwzu, ldu)
       
 78761 +#define machine_choice	MODE_CHOICE(ppc7400,ppc64)
       
 78762  
       
 78763 -#define g_long  MODE_CHOICE(long, quad)         /* usage is ".g_long" */
       
 78764 +; Define some pseudo-opcodes for size-independent load & store of GPRs ...
       
 78765 +#define lgu		MODE_CHOICE(lwzu, ldu)
       
 78766 +#define lg		MODE_CHOICE(lwz,ld)
       
 78767 +#define sg		MODE_CHOICE(stw,std)
       
 78768 +#define sgu		MODE_CHOICE(stwu,stdu)
       
 78769  
       
 78770 -#define LOG2_GPR_BYTES  MODE_CHOICE(2,3)        /* log2(GPR_BYTES) */
       
 78771 +; ... and the size of GPRs and their storage indicator.
       
 78772 +#define GPR_BYTES	MODE_CHOICE(4,8)
       
 78773 +#define LOG2_GPR_BYTES	MODE_CHOICE(2,3)	/* log2(GPR_BYTES) */
       
 78774 +#define g_long		MODE_CHOICE(long, quad)	/* usage is ".g_long" */
       
 78775 +
       
 78776 +; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04.
       
 78777 +#define LINKAGE_SIZE	MODE_CHOICE(24,48)
       
 78778 +#define PARAM_AREA	MODE_CHOICE(32,64)
       
 78779 +
       
 78780 +#define SAVED_CR_OFFSET	MODE_CHOICE(4,8)	/* save position for CR */
       
 78781 +#define SAVED_LR_OFFSET	MODE_CHOICE(8,16)	/* save position for lr */
       
 78782 +
       
 78783 +/* WARNING: if ffi_type is changed... here be monsters.  
       
 78784 +   Offsets of items within the result type.  */
       
 78785 +#define FFI_TYPE_TYPE	MODE_CHOICE(6,10)
       
 78786 +#define FFI_TYPE_ELEM	MODE_CHOICE(8,16)
       
 78787 +
       
 78788 +#define SAVED_FPR_COUNT 13
       
 78789 +#define FPR_SIZE	8
       
 78790 +/* biggest m64 struct ret is 8GPRS + 13FPRS = 168 bytes - rounded to 16bytes = 176. */
       
 78791 +#define RESULT_BYTES	MODE_CHOICE(16,176)
       
 78792 +
       
 78793 +; The whole stack frame **MUST** be 16byte-aligned.
       
 78794 +#define SAVE_SIZE (((LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)+15) & -16LL)
       
 78795 +#define PAD_SIZE (SAVE_SIZE-(LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES))
       
 78796 +
       
 78797 +#define PARENT_PARM_BASE (SAVE_SIZE+LINKAGE_SIZE)
       
 78798 +#define FP_SAVE_BASE (LINKAGE_SIZE+PARAM_AREA)
       
 78799 +
       
 78800 +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
       
 78801 +; We no longer need the pic symbol stub for Darwin >= 9.
       
 78802 +#define BLCLS_HELP _ffi_closure_helper_DARWIN
       
 78803 +#define STRUCT_RETVALUE_P _darwin64_struct_ret_by_value_p
       
 78804 +#define PASS_STR_FLOATS _darwin64_pass_struct_floats
       
 78805 +#undef WANT_STUB
       
 78806 +#else
       
 78807 +#define BLCLS_HELP L_ffi_closure_helper_DARWIN$stub
       
 78808 +#define STRUCT_RETVALUE_P L_darwin64_struct_ret_by_value_p$stub
       
 78809 +#define PASS_STR_FLOATS L_darwin64_pass_struct_floats$stub
       
 78810 +#define WANT_STUB
       
 78811 +#endif
       
 78812 +
       
 78813 +/* m32/m64
       
 78814 +
       
 78815 +   The stack layout looks like this:
       
 78816 +
       
 78817 +   |   Additional params...			| |     Higher address
       
 78818 +   ~						~ ~
       
 78819 +   |   Parameters      (at least 8*4/8=32/64)	| | NUM_GPR_ARG_REGISTERS
       
 78820 +   |--------------------------------------------| |
       
 78821 +   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
       
 78822 +   |--------------------------------------------| |
       
 78823 +   |   Reserved                       2*4/8	| |
       
 78824 +   |--------------------------------------------| |
       
 78825 +   |   Space for callee`s LR		4/8	| |
       
 78826 +   |--------------------------------------------| |
       
 78827 +   |   Saved CR [low word for m64]      4/8	| |
       
 78828 +   |--------------------------------------------| |
       
 78829 +   |   Current backchain pointer	4/8	|-/ Parent`s frame.
       
 78830 +   |--------------------------------------------| <+ <<< on entry to
       
 78831 +   |   Result Bytes		       16/176	| |
       
 78832 +   |--------------------------------------------| |
       
 78833 +   ~   padding to 16-byte alignment		~ ~
       
 78834 +   |--------------------------------------------| |
       
 78835 +   |   NUM_FPR_ARG_REGISTERS slots		| |
       
 78836 +   |   here fp13 .. fp1		       13*8	| |
       
 78837 +   |--------------------------------------------| |
       
 78838 +   |   R3..R10			  8*4/8=32/64	| | NUM_GPR_ARG_REGISTERS
       
 78839 +   |--------------------------------------------| |
       
 78840 +   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
       
 78841 +   |--------------------------------------------| |	stack	|
       
 78842 +   |   Reserved [compiler,binder]     2*4/8	| |	grows	|
       
 78843 +   |--------------------------------------------| |	down	V
       
 78844 +   |   Space for callees LR		4/8	| |
       
 78845 +   |--------------------------------------------| |	lower addresses
       
 78846 +   |   Saved CR [low word for m64]      4/8	| |
       
 78847 +   |--------------------------------------------| |     stack pointer here
       
 78848 +   |   Current backchain pointer	4/8	|-/	during
       
 78849 +   |--------------------------------------------|   <<<	call.
       
 78850 +
       
 78851 +*/
       
 78852  
       
 78853  	.file	"darwin_closure.S"
       
 78854 -.text
       
 78855 -	.align LOG2_GPR_BYTES
       
 78856 -.globl _ffi_closure_ASM
       
 78857  
       
 78858 -.text
       
 78859 +	.machine machine_choice
       
 78860 +
       
 78861 +	.text
       
 78862 +	.globl _ffi_closure_ASM
       
 78863  	.align LOG2_GPR_BYTES
       
 78864  _ffi_closure_ASM:
       
 78865  LFB1:
       
 78866 -	mflr	r0		/* extract return address  */
       
 78867 -	stw	r0,8(r1)	/* save the return address  */
       
 78868 +Lstartcode:
       
 78869 +	mflr	r0			/* extract return address  */
       
 78870 +	sg	r0,SAVED_LR_OFFSET(r1)	/* save the return address  */
       
 78871  LCFI0:
       
 78872 -	/* 24 Bytes (Linkage Area)
       
 78873 -	   32 Bytes (outgoing parameter area, always reserved)
       
 78874 -	   104 Bytes (13*8 from FPR)
       
 78875 -	   16 Bytes (result)
       
 78876 -	   176 Bytes  */
       
 78877 -
       
 78878 -	stwu	r1,-176(r1)	/* skip over caller save area
       
 78879 -				keep stack aligned to 16.  */
       
 78880 +	sgu	r1,-SAVE_SIZE(r1)	/* skip over caller save area
       
 78881 +					keep stack aligned to 16.  */
       
 78882  LCFI1:
       
 78883  	/* We want to build up an area for the parameters passed
       
 78884  	   in registers. (both floating point and integer)  */
       
 78885  
       
 78886 -	/* We store gpr 3 to gpr 10 (aligned to 4)
       
 78887 -	   in the parents outgoing area.  */
       
 78888 -	stw   r3,200(r1)
       
 78889 -	stw   r4,204(r1)
       
 78890 -	stw   r5,208(r1)
       
 78891 -	stw   r6,212(r1)
       
 78892 -	stw   r7,216(r1)
       
 78893 -	stw   r8,220(r1)
       
 78894 -	stw   r9,224(r1)
       
 78895 -	stw   r10,228(r1)
       
 78896 +	/* Put gpr 3 to gpr 10 in the parents outgoing area...
       
 78897 +	   ... the remainder of any params that overflowed the regs will
       
 78898 +	   follow here.  */
       
 78899 +	sg	r3, (PARENT_PARM_BASE                )(r1)
       
 78900 +	sg	r4, (PARENT_PARM_BASE + GPR_BYTES    )(r1)
       
 78901 +	sg	r5, (PARENT_PARM_BASE + GPR_BYTES * 2)(r1)
       
 78902 +	sg	r6, (PARENT_PARM_BASE + GPR_BYTES * 3)(r1)
       
 78903 +	sg	r7, (PARENT_PARM_BASE + GPR_BYTES * 4)(r1)
       
 78904 +	sg	r8, (PARENT_PARM_BASE + GPR_BYTES * 5)(r1)
       
 78905 +	sg	r9, (PARENT_PARM_BASE + GPR_BYTES * 6)(r1)
       
 78906 +	sg	r10,(PARENT_PARM_BASE + GPR_BYTES * 7)(r1)
       
 78907  
       
 78908 -	/* We save fpr 1 to fpr 13. (aligned to 8)  */
       
 78909 -	stfd  f1,56(r1)
       
 78910 -	stfd  f2,64(r1)
       
 78911 -	stfd  f3,72(r1)
       
 78912 -	stfd  f4,80(r1)
       
 78913 -	stfd  f5,88(r1)
       
 78914 -	stfd  f6,96(r1)
       
 78915 -	stfd  f7,104(r1)
       
 78916 -	stfd  f8,112(r1)
       
 78917 -	stfd  f9,120(r1)
       
 78918 -	stfd  f10,128(r1)
       
 78919 -	stfd  f11,136(r1)
       
 78920 -	stfd  f12,144(r1)
       
 78921 -	stfd  f13,152(r1)
       
 78922 +	/* We save fpr 1 to fpr 14 in our own save frame.  */
       
 78923 +	stfd	f1, (FP_SAVE_BASE                 )(r1)
       
 78924 +	stfd	f2, (FP_SAVE_BASE +  FPR_SIZE     )(r1)
       
 78925 +	stfd	f3, (FP_SAVE_BASE +  FPR_SIZE * 2 )(r1)
       
 78926 +	stfd	f4, (FP_SAVE_BASE +  FPR_SIZE * 3 )(r1)
       
 78927 +	stfd	f5, (FP_SAVE_BASE +  FPR_SIZE * 4 )(r1)
       
 78928 +	stfd	f6, (FP_SAVE_BASE +  FPR_SIZE * 5 )(r1)
       
 78929 +	stfd	f7, (FP_SAVE_BASE +  FPR_SIZE * 6 )(r1)
       
 78930 +	stfd	f8, (FP_SAVE_BASE +  FPR_SIZE * 7 )(r1)
       
 78931 +	stfd	f9, (FP_SAVE_BASE +  FPR_SIZE * 8 )(r1)
       
 78932 +	stfd	f10,(FP_SAVE_BASE +  FPR_SIZE * 9 )(r1)
       
 78933 +	stfd	f11,(FP_SAVE_BASE +  FPR_SIZE * 10)(r1)
       
 78934 +	stfd	f12,(FP_SAVE_BASE +  FPR_SIZE * 11)(r1)
       
 78935 +	stfd	f13,(FP_SAVE_BASE +  FPR_SIZE * 12)(r1)
       
 78936  
       
 78937  	/* Set up registers for the routine that actually does the work
       
 78938  	   get the context pointer from the trampoline.  */
       
 78939 -	mr r3,r11
       
 78940 +	mr	r3,r11
       
 78941  
       
 78942  	/* Now load up the pointer to the result storage.  */
       
 78943 -	addi r4,r1,160
       
 78944 +	addi	r4,r1,(SAVE_SIZE-RESULT_BYTES)
       
 78945  
       
 78946  	/* Now load up the pointer to the saved gpr registers.  */
       
 78947 -	addi r5,r1,200
       
 78948 +	addi	r5,r1,PARENT_PARM_BASE
       
 78949  
       
 78950  	/* Now load up the pointer to the saved fpr registers.  */
       
 78951 -	addi r6,r1,56
       
 78952 +	addi	r6,r1,FP_SAVE_BASE
       
 78953  
       
 78954  	/* Make the call.  */
       
 78955 -	bl	Lffi_closure_helper_DARWIN$stub
       
 78956 +	bl	BLCLS_HELP
       
 78957  
       
 78958 -	/* Now r3 contains the return type
       
 78959 -	   so use it to look up in a table
       
 78960 +	/* r3 contains the rtype pointer... save it since we will need
       
 78961 +	   it later.  */
       
 78962 +	sg	r3,LINKAGE_SIZE(r1)	; ffi_type * result_type
       
 78963 +	lg	r0,0(r3)		; size => r0
       
 78964 +	lhz	r3,FFI_TYPE_TYPE(r3)	; type => r3
       
 78965 +
       
 78966 +	/* The helper will have intercepted structure returns and inserted
       
 78967 +	   the caller`s destination address for structs returned by ref.  */
       
 78968 +
       
 78969 +	/* r3 contains the return type  so use it to look up in a table
       
 78970  	   so we know how to deal with each type.  */
       
 78971  
       
 78972 -	/* Look up the proper starting point in table
       
 78973 -	   by using return type as offset.  */
       
 78974 -	addi  r5,r1,160		  /* Get pointer to results area.  */
       
 78975 -	bl    Lget_ret_type0_addr /* Get pointer to Lret_type0 into LR.  */
       
 78976 -	mflr  r4		  /* Move to r4.  */
       
 78977 -	slwi  r3,r3,4		  /* Now multiply return type by 16.  */
       
 78978 -	add   r3,r3,r4		  /* Add contents of table to table address.  */
       
 78979 -	mtctr r3
       
 78980 -	bctr			  /* Jump to it.  */
       
 78981 +	addi	r5,r1,(SAVE_SIZE-RESULT_BYTES) /* Otherwise, our return is here.  */
       
 78982 +	bl	Lget_ret_type0_addr	/* Get pointer to Lret_type0 into LR.  */
       
 78983 +	mflr	r4			/* Move to r4.  */
       
 78984 +	slwi	r3,r3,4			/* Now multiply return type by 16.  */
       
 78985 +	add	r3,r3,r4		/* Add contents of table to table address.  */
       
 78986 +	mtctr	r3
       
 78987 +	bctr			 	 /* Jump to it.  */
       
 78988  LFE1:
       
 78989  /* Each of the ret_typeX code fragments has to be exactly 16 bytes long
       
 78990     (4 instructions). For cache effectiveness we align to a 16 byte boundary
       
 78991     first.  */
       
 78992  
       
 78993  	.align 4
       
 78994  
       
 78995  	nop
       
 78996 @@ -135,17 +222,17 @@ Lget_ret_type0_addr:
       
 78997  Lret_type0:
       
 78998  	b	Lfinish
       
 78999  	nop
       
 79000  	nop
       
 79001  	nop
       
 79002  
       
 79003  /* case FFI_TYPE_INT  */
       
 79004  Lret_type1:
       
 79005 -	lwz	r3,0(r5)
       
 79006 +	lg	r3,0(r5)
       
 79007  	b	Lfinish
       
 79008  	nop
       
 79009  	nop
       
 79010  
       
 79011  /* case FFI_TYPE_FLOAT  */
       
 79012  Lret_type2:
       
 79013  	lfs	f1,0(r5)
       
 79014  	b	Lfinish
       
 79015 @@ -163,155 +250,322 @@ Lret_type3:
       
 79016  Lret_type4:
       
 79017  	lfd	f1,0(r5)
       
 79018  	lfd	f2,8(r5)
       
 79019  	b	Lfinish
       
 79020  	nop
       
 79021  
       
 79022  /* case FFI_TYPE_UINT8  */
       
 79023  Lret_type5:
       
 79024 +#if defined(__ppc64__)
       
 79025 +	lbz	r3,7(r5)
       
 79026 +#else
       
 79027  	lbz	r3,3(r5)
       
 79028 +#endif
       
 79029  	b	Lfinish
       
 79030  	nop
       
 79031  	nop
       
 79032  
       
 79033  /* case FFI_TYPE_SINT8  */
       
 79034  Lret_type6:
       
 79035 +#if defined(__ppc64__)
       
 79036 +	lbz	r3,7(r5)
       
 79037 +#else
       
 79038  	lbz	r3,3(r5)
       
 79039 +#endif
       
 79040  	extsb	r3,r3
       
 79041  	b	Lfinish
       
 79042  	nop
       
 79043  
       
 79044  /* case FFI_TYPE_UINT16  */
       
 79045  Lret_type7:
       
 79046 +#if defined(__ppc64__)
       
 79047 +	lhz	r3,6(r5)
       
 79048 +#else
       
 79049  	lhz	r3,2(r5)
       
 79050 +#endif
       
 79051  	b	Lfinish
       
 79052  	nop
       
 79053  	nop
       
 79054  
       
 79055  /* case FFI_TYPE_SINT16  */
       
 79056  Lret_type8:
       
 79057 +#if defined(__ppc64__)
       
 79058 +	lha	r3,6(r5)
       
 79059 +#else
       
 79060  	lha	r3,2(r5)
       
 79061 +#endif
       
 79062  	b	Lfinish
       
 79063  	nop
       
 79064  	nop
       
 79065  
       
 79066  /* case FFI_TYPE_UINT32  */
       
 79067  Lret_type9:
       
 79068 +#if defined(__ppc64__)
       
 79069 +	lwz	r3,4(r5)
       
 79070 +#else
       
 79071  	lwz	r3,0(r5)
       
 79072 +#endif
       
 79073  	b	Lfinish
       
 79074  	nop
       
 79075  	nop
       
 79076  
       
 79077  /* case FFI_TYPE_SINT32  */
       
 79078  Lret_type10:
       
 79079 +#if defined(__ppc64__)
       
 79080 +	lwz	r3,4(r5)
       
 79081 +#else
       
 79082  	lwz	r3,0(r5)
       
 79083 +#endif
       
 79084  	b	Lfinish
       
 79085  	nop
       
 79086  	nop
       
 79087  
       
 79088  /* case FFI_TYPE_UINT64  */
       
 79089  Lret_type11:
       
 79090 +#if defined(__ppc64__)
       
 79091 +	lg	r3,0(r5)
       
 79092 +	b	Lfinish
       
 79093 +	nop
       
 79094 +#else
       
 79095  	lwz	r3,0(r5)
       
 79096  	lwz	r4,4(r5)
       
 79097  	b	Lfinish
       
 79098 +#endif
       
 79099  	nop
       
 79100  
       
 79101  /* case FFI_TYPE_SINT64  */
       
 79102  Lret_type12:
       
 79103 +#if defined(__ppc64__)
       
 79104 +	lg	r3,0(r5)
       
 79105 +	b	Lfinish
       
 79106 +	nop
       
 79107 +#else
       
 79108  	lwz	r3,0(r5)
       
 79109  	lwz	r4,4(r5)
       
 79110  	b	Lfinish
       
 79111 +#endif
       
 79112  	nop
       
 79113  
       
 79114  /* case FFI_TYPE_STRUCT  */
       
 79115  Lret_type13:
       
 79116 +#if defined(__ppc64__)
       
 79117 +	lg	r3,0(r5)		; we need at least this...
       
 79118 +	cmpi	0,r0,4
       
 79119 +	bgt	Lstructend		; not a special small case
       
 79120 +	b	Lsmallstruct		; see if we need more.
       
 79121 +#else
       
 79122 +	cmpi	0,r0,4
       
 79123 +	bgt	Lfinish		; not by value
       
 79124 +	lg	r3,0(r5)
       
 79125 +	b	Lfinish
       
 79126 +#endif
       
 79127 +/* case FFI_TYPE_POINTER  */
       
 79128 +Lret_type14:
       
 79129 +	lg	r3,0(r5)
       
 79130  	b	Lfinish
       
 79131  	nop
       
 79132  	nop
       
 79133 -	nop
       
 79134  
       
 79135 -/* case FFI_TYPE_POINTER  */
       
 79136 -Lret_type14:
       
 79137 -	lwz	r3,0(r5)
       
 79138 -	b	Lfinish
       
 79139 -	nop
       
 79140 -	nop
       
 79141 +#if defined(__ppc64__)
       
 79142 +Lsmallstruct:
       
 79143 +	beq	Lfour			; continuation of Lret13.
       
 79144 +	cmpi	0,r0,3
       
 79145 +	beq	Lfinish			; don`t adjust this - can`t be any floats here...
       
 79146 +	srdi	r3,r3,48
       
 79147 +	cmpi	0,r0,2
       
 79148 +	beq	Lfinish			; .. or here ..
       
 79149 +	srdi	r3,r3,8
       
 79150 +	b 	Lfinish			; .. or here.
       
 79151 +
       
 79152 +Lfour:
       
 79153 +	lg	r6,LINKAGE_SIZE(r1)	; get the result type
       
 79154 +	lg	r6,FFI_TYPE_ELEM(r6)	; elements array pointer
       
 79155 +	lg	r6,0(r6)		; first element
       
 79156 +	lhz	r0,FFI_TYPE_TYPE(r6)	; OK go the type
       
 79157 +	cmpi	0,r0,2			; FFI_TYPE_FLOAT
       
 79158 +	bne	Lfourint
       
 79159 +	lfs	f1,0(r5)		; just one float in the struct.
       
 79160 +	b 	Lfinish
       
 79161 +
       
 79162 +Lfourint:
       
 79163 +	srdi	r3,r3,32		; four bytes.
       
 79164 +	b 	Lfinish
       
 79165 +
       
 79166 +Lstructend:
       
 79167 +	lg	r3,LINKAGE_SIZE(r1)	; get the result type
       
 79168 +	bl	STRUCT_RETVALUE_P
       
 79169 +	cmpi	0,r3,0
       
 79170 +	beq	Lfinish			; nope.
       
 79171 +	/* Recover a pointer to the results.  */
       
 79172 +	addi	r11,r1,(SAVE_SIZE-RESULT_BYTES)
       
 79173 +	lg	r3,0(r11)		; we need at least this...
       
 79174 +	lg	r4,8(r11)
       
 79175 +	cmpi	0,r0,16
       
 79176 +	beq	Lfinish		; special case 16 bytes we don't consider floats.
       
 79177 +
       
 79178 +	/* OK, frustratingly, the process of saving the struct to mem might have
       
 79179 +	   messed with the FPRs, so we have to re-load them :(.
       
 79180 +	   We`ll use our FPRs space again - calling: 
       
 79181 +	   void darwin64_pass_struct_floats (ffi_type *s, char *src, 
       
 79182 +					     unsigned *nfpr, double **fprs) 
       
 79183 +	   We`ll temporarily pinch the first two slots of the param area for local
       
 79184 +	   vars used by the routine.  */
       
 79185 +	xor	r6,r6,r6
       
 79186 +	addi	r5,r1,PARENT_PARM_BASE		; some space
       
 79187 +	sg	r6,0(r5)			; *nfpr zeroed.
       
 79188 +	addi	r6,r5,8				; **fprs
       
 79189 +	addi	r3,r1,FP_SAVE_BASE		; pointer to FPRs space
       
 79190 +	sg	r3,0(r6)
       
 79191 +	mr	r4,r11				; the struct is here...
       
 79192 +	lg	r3,LINKAGE_SIZE(r1)		; ffi_type * result_type.
       
 79193 +	bl	PASS_STR_FLOATS			; get struct floats into FPR save space.
       
 79194 +	/* See if we used any floats  */
       
 79195 +	lwz	r0,(SAVE_SIZE-RESULT_BYTES)(r1)	
       
 79196 +	cmpi	0,r0,0
       
 79197 +	beq	Lstructints			; nope.
       
 79198 +	/* OK load `em up... */
       
 79199 +	lfd	f1, (FP_SAVE_BASE                 )(r1)
       
 79200 +	lfd	f2, (FP_SAVE_BASE +  FPR_SIZE     )(r1)
       
 79201 +	lfd	f3, (FP_SAVE_BASE +  FPR_SIZE * 2 )(r1)
       
 79202 +	lfd	f4, (FP_SAVE_BASE +  FPR_SIZE * 3 )(r1)
       
 79203 +	lfd	f5, (FP_SAVE_BASE +  FPR_SIZE * 4 )(r1)
       
 79204 +	lfd	f6, (FP_SAVE_BASE +  FPR_SIZE * 5 )(r1)
       
 79205 +	lfd	f7, (FP_SAVE_BASE +  FPR_SIZE * 6 )(r1)
       
 79206 +	lfd	f8, (FP_SAVE_BASE +  FPR_SIZE * 7 )(r1)
       
 79207 +	lfd	f9, (FP_SAVE_BASE +  FPR_SIZE * 8 )(r1)
       
 79208 +	lfd	f10,(FP_SAVE_BASE +  FPR_SIZE * 9 )(r1)
       
 79209 +	lfd	f11,(FP_SAVE_BASE +  FPR_SIZE * 10)(r1)
       
 79210 +	lfd	f12,(FP_SAVE_BASE +  FPR_SIZE * 11)(r1)
       
 79211 +	lfd	f13,(FP_SAVE_BASE +  FPR_SIZE * 12)(r1)
       
 79212 +
       
 79213 +	/* point back at our saved struct.  */
       
 79214 +Lstructints:
       
 79215 +	addi	r11,r1,(SAVE_SIZE-RESULT_BYTES)
       
 79216 +	lg	r3,0(r11)			; we end up picking the
       
 79217 +	lg	r4,8(r11)			; first two again.
       
 79218 +	lg	r5,16(r11)
       
 79219 +	lg	r6,24(r11)
       
 79220 +	lg	r7,32(r11)
       
 79221 +	lg	r8,40(r11)
       
 79222 +	lg	r9,48(r11)
       
 79223 +	lg	r10,56(r11)
       
 79224 +#endif
       
 79225  
       
 79226  /* case done  */
       
 79227  Lfinish:
       
 79228 -	addi	r1,r1,176	/* Restore stack pointer.  */
       
 79229 -	lwz	r0,8(r1)	/* Get return address.  */
       
 79230 -	mtlr	r0		/* Reset link register.  */
       
 79231 +	addi	r1,r1,SAVE_SIZE		/* Restore stack pointer.  */
       
 79232 +	lg	r0,SAVED_LR_OFFSET(r1)	/* Get return address.  */
       
 79233 +	mtlr	r0			/* Reset link register.  */
       
 79234  	blr
       
 79235 -
       
 79236 +Lendcode:
       
 79237 +	.align 1
       
 79238 +	
       
 79239  /* END(ffi_closure_ASM)  */
       
 79240  
       
 79241 -.data
       
 79242 -.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
       
 79243 +/* EH frame stuff.  */
       
 79244 +#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78)
       
 79245 +/* 176, 400 */
       
 79246 +#define EH_FRAME_OFFSETA MODE_CHOICE(176,0x90)
       
 79247 +#define EH_FRAME_OFFSETB MODE_CHOICE(1,3)
       
 79248 +
       
 79249 +	.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
       
 79250  EH_frame1:
       
 79251  	.set	L$set$0,LECIE1-LSCIE1
       
 79252  	.long	L$set$0	; Length of Common Information Entry
       
 79253  LSCIE1:
       
 79254  	.long	0x0	; CIE Identifier Tag
       
 79255  	.byte	0x1	; CIE Version
       
 79256  	.ascii	"zR\0"	; CIE Augmentation
       
 79257  	.byte	0x1	; uleb128 0x1; CIE Code Alignment Factor
       
 79258 -	.byte	0x7c	; sleb128 -4; CIE Data Alignment Factor
       
 79259 +	.byte	EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
       
 79260  	.byte	0x41	; CIE RA Column
       
 79261  	.byte	0x1	; uleb128 0x1; Augmentation size
       
 79262 -	.byte	0x90	; FDE Encoding (indirect pcrel)
       
 79263 +	.byte	0x10	; FDE Encoding (pcrel)
       
 79264  	.byte	0xc	; DW_CFA_def_cfa
       
 79265  	.byte	0x1	; uleb128 0x1
       
 79266  	.byte	0x0	; uleb128 0x0
       
 79267  	.align	LOG2_GPR_BYTES
       
 79268  LECIE1:
       
 79269 -.globl _ffi_closure_ASM.eh
       
 79270 +	.globl _ffi_closure_ASM.eh
       
 79271  _ffi_closure_ASM.eh:
       
 79272  LSFDE1:
       
 79273  	.set	L$set$1,LEFDE1-LASFDE1
       
 79274  	.long	L$set$1	; FDE Length
       
 79275  
       
 79276  LASFDE1:
       
 79277  	.long	LASFDE1-EH_frame1	; FDE CIE offset
       
 79278 -	.g_long	LLFB1$non_lazy_ptr-.	; FDE initial location
       
 79279 -	.set	L$set$3,LFE1-LFB1
       
 79280 +	.g_long	Lstartcode-.	; FDE initial location
       
 79281 +	.set	L$set$3,LFE1-Lstartcode
       
 79282  	.g_long	L$set$3	; FDE address range
       
 79283  	.byte   0x0     ; uleb128 0x0; Augmentation size
       
 79284  	.byte	0x4	; DW_CFA_advance_loc4
       
 79285  	.set	L$set$3,LCFI1-LCFI0
       
 79286  	.long	L$set$3
       
 79287  	.byte	0xe	; DW_CFA_def_cfa_offset
       
 79288 -	.byte	176,1	; uleb128 176
       
 79289 +	.byte	EH_FRAME_OFFSETA,EH_FRAME_OFFSETB	; uleb128 176,1/190,3
       
 79290  	.byte	0x4	; DW_CFA_advance_loc4
       
 79291 -	.set	L$set$4,LCFI0-LFB1
       
 79292 +	.set	L$set$4,LCFI0-Lstartcode
       
 79293  	.long	L$set$4
       
 79294  	.byte   0x11    ; DW_CFA_offset_extended_sf
       
 79295  	.byte	0x41	; uleb128 0x41
       
 79296  	.byte   0x7e    ; sleb128 -2
       
 79297  	.align	LOG2_GPR_BYTES
       
 79298  LEFDE1:
       
 79299 -.data
       
 79300 -	.align	LOG2_GPR_BYTES
       
 79301 -LDFCM0:
       
 79302 -.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
       
 79303 -	.align	LOG2_GPR_BYTES
       
 79304 -Lffi_closure_helper_DARWIN$stub:
       
 79305 -#if 1
       
 79306 +	.align 	1
       
 79307 +
       
 79308 +#ifdef WANT_STUB
       
 79309 +	.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
       
 79310 +	.align 5
       
 79311 +L_ffi_closure_helper_DARWIN$stub:
       
 79312  	.indirect_symbol _ffi_closure_helper_DARWIN
       
 79313 -	mflr	r0
       
 79314 -	bcl	20,31,LO$ffi_closure_helper_DARWIN
       
 79315 -LO$ffi_closure_helper_DARWIN:
       
 79316 -	mflr	r11
       
 79317 -	addis	r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr - LO$ffi_closure_helper_DARWIN)
       
 79318 -	mtlr	r0
       
 79319 -	lgu	r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr - LO$ffi_closure_helper_DARWIN)(r11)
       
 79320 -	mtctr	r12
       
 79321 +	mflr r0
       
 79322 +	bcl 20,31,"L1$spb"
       
 79323 +"L1$spb":
       
 79324 +	mflr r11
       
 79325 +	addis r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")
       
 79326 +	mtlr r0
       
 79327 +	lwzu r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")(r11)
       
 79328 +	mtctr r12
       
 79329  	bctr
       
 79330 -.lazy_symbol_pointer
       
 79331 +	.lazy_symbol_pointer
       
 79332  L_ffi_closure_helper_DARWIN$lazy_ptr:
       
 79333  	.indirect_symbol _ffi_closure_helper_DARWIN
       
 79334 -	.g_long dyld_stub_binding_helper
       
 79335 +	.g_long	dyld_stub_binding_helper
       
 79336 +
       
 79337 +#if defined(__ppc64__)
       
 79338 +	.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
       
 79339 +	.align 5
       
 79340 +L_darwin64_struct_ret_by_value_p$stub:
       
 79341 +	.indirect_symbol _darwin64_struct_ret_by_value_p
       
 79342 +	mflr r0
       
 79343 +	bcl 20,31,"L2$spb"
       
 79344 +"L2$spb":
       
 79345 +	mflr r11
       
 79346 +	addis r11,r11,ha16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")
       
 79347 +	mtlr r0
       
 79348 +	lwzu r12,lo16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")(r11)
       
 79349 +	mtctr r12
       
 79350 +	bctr
       
 79351 +	.lazy_symbol_pointer
       
 79352 +L_darwin64_struct_ret_by_value_p$lazy_ptr:
       
 79353 +	.indirect_symbol _darwin64_struct_ret_by_value_p
       
 79354 +	.g_long	dyld_stub_binding_helper
       
 79355 +
       
 79356 +	.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
       
 79357 +	.align 5
       
 79358 +L_darwin64_pass_struct_floats$stub:
       
 79359 +	.indirect_symbol _darwin64_pass_struct_floats
       
 79360 +	mflr r0
       
 79361 +	bcl 20,31,"L3$spb"
       
 79362 +"L3$spb":
       
 79363 +	mflr r11
       
 79364 +	addis r11,r11,ha16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")
       
 79365 +	mtlr r0
       
 79366 +	lwzu r12,lo16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")(r11)
       
 79367 +	mtctr r12
       
 79368 +	bctr
       
 79369 +	.lazy_symbol_pointer
       
 79370 +L_darwin64_pass_struct_floats$lazy_ptr:
       
 79371 +	.indirect_symbol _darwin64_pass_struct_floats
       
 79372 +	.g_long	dyld_stub_binding_helper
       
 79373 +#  endif
       
 79374  #endif
       
 79375 -.data
       
 79376 -	.align LOG2_GPR_BYTES
       
 79377 -LLFB1$non_lazy_ptr:
       
 79378 -	.g_long LFB1
       
 79379 diff --git a/js/src/ctypes/libffi/src/powerpc/ffi.c b/js/src/ctypes/libffi/src/powerpc/ffi.c
       
 79380 --- a/js/src/ctypes/libffi/src/powerpc/ffi.c
       
 79381 +++ b/js/src/ctypes/libffi/src/powerpc/ffi.c
       
 79382 @@ -1,10 +1,11 @@
       
 79383  /* -----------------------------------------------------------------------
       
 79384 -   ffi.c - Copyright (C) 2011 Anthony Green
       
 79385 +   ffi.c - Copyright (C) 2013 IBM
       
 79386 +           Copyright (C) 2011 Anthony Green
       
 79387             Copyright (C) 2011 Kyle Moffett
       
 79388             Copyright (C) 2008 Red Hat, Inc
       
 79389             Copyright (C) 2007, 2008 Free Software Foundation, Inc
       
 79390  	   Copyright (c) 1998 Geoffrey Keating
       
 79391  
       
 79392     PowerPC Foreign Function Interface
       
 79393  
       
 79394     Permission is hereby granted, free of charge, to any person obtaining
       
 79395 @@ -22,1784 +23,119 @@
       
 79396     OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 79397     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 79398     IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
 79399     OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
 79400     ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 79401     OTHER DEALINGS IN THE SOFTWARE.
       
 79402     ----------------------------------------------------------------------- */
       
 79403  
       
 79404 -#include <ffi.h>
       
 79405 -#include <ffi_common.h>
       
 79406 +#include "ffi.h"
       
 79407 +#include "ffi_common.h"
       
 79408 +#include "ffi_powerpc.h"
       
 79409  
       
 79410 -#include <stdlib.h>
       
 79411 -#include <stdio.h>
       
 79412 -
       
 79413 -
       
 79414 -extern void ffi_closure_SYSV (void);
       
 79415 -extern void FFI_HIDDEN ffi_closure_LINUX64 (void);
       
 79416 -
       
 79417 -enum {
       
 79418 -  /* The assembly depends on these exact flags.  */
       
 79419 -  FLAG_RETURNS_SMST	= 1 << (31-31), /* Used for FFI_SYSV small structs.  */
       
 79420 -  FLAG_RETURNS_NOTHING  = 1 << (31-30), /* These go in cr7 */
       
 79421 -#ifndef __NO_FPRS__
       
 79422 -  FLAG_RETURNS_FP       = 1 << (31-29),
       
 79423 -#endif
       
 79424 -  FLAG_RETURNS_64BITS   = 1 << (31-28),
       
 79425 -
       
 79426 -  FLAG_RETURNS_128BITS  = 1 << (31-27), /* cr6  */
       
 79427 -
       
 79428 -  FLAG_ARG_NEEDS_COPY   = 1 << (31- 7),
       
 79429 -  FLAG_ARG_NEEDS_PSAVE  = FLAG_ARG_NEEDS_COPY, /* Used by ELFv2 */
       
 79430 -#ifndef __NO_FPRS__
       
 79431 -  FLAG_FP_ARGUMENTS     = 1 << (31- 6), /* cr1.eq; specified by ABI */
       
 79432 -#endif
       
 79433 -  FLAG_4_GPR_ARGUMENTS  = 1 << (31- 5),
       
 79434 -  FLAG_RETVAL_REFERENCE = 1 << (31- 4)
       
 79435 -};
       
 79436 -
       
 79437 -/* About the SYSV ABI.  */
       
 79438 -#define ASM_NEEDS_REGISTERS 4
       
 79439 -#define NUM_GPR_ARG_REGISTERS 8
       
 79440 -#ifndef __NO_FPRS__
       
 79441 -# define NUM_FPR_ARG_REGISTERS 8
       
 79442 -#endif
       
 79443 -
       
 79444 -/* ffi_prep_args_SYSV is called by the assembly routine once stack space
       
 79445 -   has been allocated for the function's arguments.
       
 79446 -
       
 79447 -   The stack layout we want looks like this:
       
 79448 -
       
 79449 -   |   Return address from ffi_call_SYSV 4bytes	|	higher addresses
       
 79450 -   |--------------------------------------------|
       
 79451 -   |   Previous backchain pointer	4	|       stack pointer here
       
 79452 -   |--------------------------------------------|<+ <<<	on entry to
       
 79453 -   |   Saved r28-r31			4*4	| |	ffi_call_SYSV
       
 79454 -   |--------------------------------------------| |
       
 79455 -   |   GPR registers r3-r10		8*4	| |	ffi_call_SYSV
       
 79456 -   |--------------------------------------------| |
       
 79457 -   |   FPR registers f1-f8 (optional)	8*8	| |
       
 79458 -   |--------------------------------------------| |	stack	|
       
 79459 -   |   Space for copied structures		| |	grows	|
       
 79460 -   |--------------------------------------------| |	down    V
       
 79461 -   |   Parameters that didn't fit in registers  | |
       
 79462 -   |--------------------------------------------| |	lower addresses
       
 79463 -   |   Space for callee's LR		4	| |
       
 79464 -   |--------------------------------------------| |	stack pointer here
       
 79465 -   |   Current backchain pointer	4	|-/	during
       
 79466 -   |--------------------------------------------|   <<<	ffi_call_SYSV
       
 79467 -
       
 79468 -*/
       
 79469 -
       
 79470 -void
       
 79471 -ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
       
 79472 +#if HAVE_LONG_DOUBLE_VARIANT
       
 79473 +/* Adjust ffi_type_longdouble.  */
       
 79474 +void FFI_HIDDEN
       
 79475 +ffi_prep_types (ffi_abi abi)
       
 79476  {
       
 79477 -  const unsigned bytes = ecif->cif->bytes;
       
 79478 -  const unsigned flags = ecif->cif->flags;
       
 79479 -
       
 79480 -  typedef union {
       
 79481 -    char *c;
       
 79482 -    unsigned *u;
       
 79483 -    long long *ll;
       
 79484 -    float *f;
       
 79485 -    double *d;
       
 79486 -  } valp;
       
 79487 -
       
 79488 -  /* 'stacktop' points at the previous backchain pointer.  */
       
 79489 -  valp stacktop;
       
 79490 -
       
 79491 -  /* 'gpr_base' points at the space for gpr3, and grows upwards as
       
 79492 -     we use GPR registers.  */
       
 79493 -  valp gpr_base;
       
 79494 -  int intarg_count;
       
 79495 -
       
 79496 -#ifndef __NO_FPRS__
       
 79497 -  /* 'fpr_base' points at the space for fpr1, and grows upwards as
       
 79498 -     we use FPR registers.  */
       
 79499 -  valp fpr_base;
       
 79500 -  int fparg_count;
       
 79501 -#endif
       
 79502 -
       
 79503 -  /* 'copy_space' grows down as we put structures in it.  It should
       
 79504 -     stay 16-byte aligned.  */
       
 79505 -  valp copy_space;
       
 79506 -
       
 79507 -  /* 'next_arg' grows up as we put parameters in it.  */
       
 79508 -  valp next_arg;
       
 79509 -
       
 79510 -  int i;
       
 79511 -  ffi_type **ptr;
       
 79512 -#ifndef __NO_FPRS__
       
 79513 -  double double_tmp;
       
 79514 -#endif
       
 79515 -  union {
       
 79516 -    void **v;
       
 79517 -    char **c;
       
 79518 -    signed char **sc;
       
 79519 -    unsigned char **uc;
       
 79520 -    signed short **ss;
       
 79521 -    unsigned short **us;
       
 79522 -    unsigned int **ui;
       
 79523 -    long long **ll;
       
 79524 -    float **f;
       
 79525 -    double **d;
       
 79526 -  } p_argv;
       
 79527 -  size_t struct_copy_size;
       
 79528 -  unsigned gprvalue;
       
 79529 -
       
 79530 -  stacktop.c = (char *) stack + bytes;
       
 79531 -  gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS;
       
 79532 -  intarg_count = 0;
       
 79533 -#ifndef __NO_FPRS__
       
 79534 -  fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS;
       
 79535 -  fparg_count = 0;
       
 79536 -  copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c);
       
 79537 -#else
       
 79538 -  copy_space.c = gpr_base.c;
       
 79539 -#endif
       
 79540 -  next_arg.u = stack + 2;
       
 79541 -
       
 79542 -  /* Check that everything starts aligned properly.  */
       
 79543 -  FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
       
 79544 -  FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0);
       
 79545 -  FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
       
 79546 -  FFI_ASSERT ((bytes & 0xF) == 0);
       
 79547 -  FFI_ASSERT (copy_space.c >= next_arg.c);
       
 79548 -
       
 79549 -  /* Deal with return values that are actually pass-by-reference.  */
       
 79550 -  if (flags & FLAG_RETVAL_REFERENCE)
       
 79551 -    {
       
 79552 -      *gpr_base.u++ = (unsigned long) (char *) ecif->rvalue;
       
 79553 -      intarg_count++;
       
 79554 -    }
       
 79555 -
       
 79556 -  /* Now for the arguments.  */
       
 79557 -  p_argv.v = ecif->avalue;
       
 79558 -  for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
       
 79559 -       i > 0;
       
 79560 -       i--, ptr++, p_argv.v++)
       
 79561 -    {
       
 79562 -      unsigned short typenum = (*ptr)->type;
       
 79563 -
       
 79564 -      /* We may need to handle some values depending on ABI */
       
 79565 -      if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT) {
       
 79566 -		if (typenum == FFI_TYPE_FLOAT)
       
 79567 -			typenum = FFI_TYPE_UINT32;
       
 79568 -		if (typenum == FFI_TYPE_DOUBLE)
       
 79569 -			typenum = FFI_TYPE_UINT64;
       
 79570 -		if (typenum == FFI_TYPE_LONGDOUBLE)
       
 79571 -			typenum = FFI_TYPE_UINT128;
       
 79572 -      } else if (ecif->cif->abi != FFI_LINUX) {
       
 79573 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 79574 -		if (typenum == FFI_TYPE_LONGDOUBLE)
       
 79575 -			typenum = FFI_TYPE_STRUCT;
       
 79576 -#endif
       
 79577 -      }
       
 79578 -
       
 79579 -      /* Now test the translated value */
       
 79580 -      switch (typenum) {
       
 79581 -#ifndef __NO_FPRS__
       
 79582 -	case FFI_TYPE_FLOAT:
       
 79583 -	  /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32.  */
       
 79584 -	  double_tmp = **p_argv.f;
       
 79585 -	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
       
 79586 -	    {
       
 79587 -	      *next_arg.f = (float) double_tmp;
       
 79588 -	      next_arg.u += 1;
       
 79589 -	      intarg_count++;
       
 79590 -	    }
       
 79591 -	  else
       
 79592 -	    *fpr_base.d++ = double_tmp;
       
 79593 -	  fparg_count++;
       
 79594 -	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 79595 -	  break;
       
 79596 -
       
 79597 -	case FFI_TYPE_DOUBLE:
       
 79598 -	  /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64.  */
       
 79599 -	  double_tmp = **p_argv.d;
       
 79600 -
       
 79601 -	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
       
 79602 -	    {
       
 79603 -	      if (intarg_count >= NUM_GPR_ARG_REGISTERS
       
 79604 -		  && intarg_count % 2 != 0)
       
 79605 -		{
       
 79606 -		  intarg_count++;
       
 79607 -		  next_arg.u++;
       
 79608 -		}
       
 79609 -	      *next_arg.d = double_tmp;
       
 79610 -	      next_arg.u += 2;
       
 79611 -	    }
       
 79612 -	  else
       
 79613 -	    *fpr_base.d++ = double_tmp;
       
 79614 -	  fparg_count++;
       
 79615 -	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 79616 -	  break;
       
 79617 -
       
 79618 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 79619 -	case FFI_TYPE_LONGDOUBLE:
       
 79620 -	      double_tmp = (*p_argv.d)[0];
       
 79621 -
       
 79622 -	      if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1)
       
 79623 -		{
       
 79624 -		  if (intarg_count >= NUM_GPR_ARG_REGISTERS
       
 79625 -		      && intarg_count % 2 != 0)
       
 79626 -		    {
       
 79627 -		      intarg_count++;
       
 79628 -		      next_arg.u++;
       
 79629 -		    }
       
 79630 -		  *next_arg.d = double_tmp;
       
 79631 -		  next_arg.u += 2;
       
 79632 -		  double_tmp = (*p_argv.d)[1];
       
 79633 -		  *next_arg.d = double_tmp;
       
 79634 -		  next_arg.u += 2;
       
 79635 -		}
       
 79636 -	      else
       
 79637 -		{
       
 79638 -		  *fpr_base.d++ = double_tmp;
       
 79639 -		  double_tmp = (*p_argv.d)[1];
       
 79640 -		  *fpr_base.d++ = double_tmp;
       
 79641 -		}
       
 79642 -
       
 79643 -	      fparg_count += 2;
       
 79644 -	      FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 79645 -	  break;
       
 79646 -#endif
       
 79647 -#endif /* have FPRs */
       
 79648 -
       
 79649 -	/*
       
 79650 -	 * The soft float ABI for long doubles works like this, a long double
       
 79651 -	 * is passed in four consecutive GPRs if available.  A maximum of 2
       
 79652 -	 * long doubles can be passed in gprs.  If we do not have 4 GPRs
       
 79653 -	 * left, the long double is passed on the stack, 4-byte aligned.
       
 79654 -	 */
       
 79655 -	case FFI_TYPE_UINT128: {
       
 79656 -		unsigned int int_tmp = (*p_argv.ui)[0];
       
 79657 -		unsigned int ii;
       
 79658 -		if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3) {
       
 79659 -			if (intarg_count < NUM_GPR_ARG_REGISTERS)
       
 79660 -				intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count;
       
 79661 -			*(next_arg.u++) = int_tmp;
       
 79662 -			for (ii = 1; ii < 4; ii++) {
       
 79663 -				int_tmp = (*p_argv.ui)[ii];
       
 79664 -				*(next_arg.u++) = int_tmp;
       
 79665 -			}
       
 79666 -		} else {
       
 79667 -			*(gpr_base.u++) = int_tmp;
       
 79668 -			for (ii = 1; ii < 4; ii++) {
       
 79669 -				int_tmp = (*p_argv.ui)[ii];
       
 79670 -				*(gpr_base.u++) = int_tmp;
       
 79671 -			}
       
 79672 -		}
       
 79673 -		intarg_count += 4;
       
 79674 -		break;
       
 79675 -	}
       
 79676 -
       
 79677 -	case FFI_TYPE_UINT64:
       
 79678 -	case FFI_TYPE_SINT64:
       
 79679 -	  if (intarg_count == NUM_GPR_ARG_REGISTERS-1)
       
 79680 -	    intarg_count++;
       
 79681 -	  if (intarg_count >= NUM_GPR_ARG_REGISTERS)
       
 79682 -	    {
       
 79683 -	      if (intarg_count % 2 != 0)
       
 79684 -		{
       
 79685 -		  intarg_count++;
       
 79686 -		  next_arg.u++;
       
 79687 -		}
       
 79688 -	      *next_arg.ll = **p_argv.ll;
       
 79689 -	      next_arg.u += 2;
       
 79690 -	    }
       
 79691 -	  else
       
 79692 -	    {
       
 79693 -	      /* whoops: abi states only certain register pairs
       
 79694 -	       * can be used for passing long long int
       
 79695 -	       * specifically (r3,r4), (r5,r6), (r7,r8),
       
 79696 -	       * (r9,r10) and if next arg is long long but
       
 79697 -	       * not correct starting register of pair then skip
       
 79698 -	       * until the proper starting register
       
 79699 -	       */
       
 79700 -	      if (intarg_count % 2 != 0)
       
 79701 -		{
       
 79702 -		  intarg_count ++;
       
 79703 -		  gpr_base.u++;
       
 79704 -		}
       
 79705 -	      *gpr_base.ll++ = **p_argv.ll;
       
 79706 -	    }
       
 79707 -	  intarg_count += 2;
       
 79708 -	  break;
       
 79709 -
       
 79710 -	case FFI_TYPE_STRUCT:
       
 79711 -	  struct_copy_size = ((*ptr)->size + 15) & ~0xF;
       
 79712 -	  copy_space.c -= struct_copy_size;
       
 79713 -	  memcpy (copy_space.c, *p_argv.c, (*ptr)->size);
       
 79714 -
       
 79715 -	  gprvalue = (unsigned long) copy_space.c;
       
 79716 -
       
 79717 -	  FFI_ASSERT (copy_space.c > next_arg.c);
       
 79718 -	  FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY);
       
 79719 -	  goto putgpr;
       
 79720 -
       
 79721 -	case FFI_TYPE_UINT8:
       
 79722 -	  gprvalue = **p_argv.uc;
       
 79723 -	  goto putgpr;
       
 79724 -	case FFI_TYPE_SINT8:
       
 79725 -	  gprvalue = **p_argv.sc;
       
 79726 -	  goto putgpr;
       
 79727 -	case FFI_TYPE_UINT16:
       
 79728 -	  gprvalue = **p_argv.us;
       
 79729 -	  goto putgpr;
       
 79730 -	case FFI_TYPE_SINT16:
       
 79731 -	  gprvalue = **p_argv.ss;
       
 79732 -	  goto putgpr;
       
 79733 -
       
 79734 -	case FFI_TYPE_INT:
       
 79735 -	case FFI_TYPE_UINT32:
       
 79736 -	case FFI_TYPE_SINT32:
       
 79737 -	case FFI_TYPE_POINTER:
       
 79738 -
       
 79739 -	  gprvalue = **p_argv.ui;
       
 79740 -
       
 79741 -	putgpr:
       
 79742 -	  if (intarg_count >= NUM_GPR_ARG_REGISTERS)
       
 79743 -	    *next_arg.u++ = gprvalue;
       
 79744 -	  else
       
 79745 -	    *gpr_base.u++ = gprvalue;
       
 79746 -	  intarg_count++;
       
 79747 -	  break;
       
 79748 -	}
       
 79749 -    }
       
 79750 -
       
 79751 -  /* Check that we didn't overrun the stack...  */
       
 79752 -  FFI_ASSERT (copy_space.c >= next_arg.c);
       
 79753 -  FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS);
       
 79754 -  /* The assert below is testing that the number of integer arguments agrees
       
 79755 -     with the number found in ffi_prep_cif_machdep().  However, intarg_count
       
 79756 -     is incremented whenever we place an FP arg on the stack, so account for
       
 79757 -     that before our assert test.  */
       
 79758 -#ifndef __NO_FPRS__
       
 79759 -  if (fparg_count > NUM_FPR_ARG_REGISTERS)
       
 79760 -    intarg_count -= fparg_count - NUM_FPR_ARG_REGISTERS;
       
 79761 -  FFI_ASSERT (fpr_base.u
       
 79762 -	      <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
       
 79763 -#endif
       
 79764 -  FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);
       
 79765 -}
       
 79766 -
       
 79767 -/* About the LINUX64 ABI.  */
       
 79768 -enum {
       
 79769 -  NUM_GPR_ARG_REGISTERS64 = 8,
       
 79770 -  NUM_FPR_ARG_REGISTERS64 = 13
       
 79771 -};
       
 79772 -enum { ASM_NEEDS_REGISTERS64 = 4 };
       
 79773 -
       
 79774 -#if _CALL_ELF == 2
       
 79775 -static unsigned int
       
 79776 -discover_homogeneous_aggregate (const ffi_type *t, unsigned int *elnum)
       
 79777 -{
       
 79778 -  switch (t->type)
       
 79779 -    {
       
 79780 -    case FFI_TYPE_FLOAT:
       
 79781 -    case FFI_TYPE_DOUBLE:
       
 79782 -      *elnum = 1;
       
 79783 -      return (int) t->type;
       
 79784 -
       
 79785 -    case FFI_TYPE_STRUCT:;
       
 79786 -      {
       
 79787 -	unsigned int base_elt = 0, total_elnum = 0;
       
 79788 -	ffi_type **el = t->elements;
       
 79789 -	while (*el)
       
 79790 -	  {
       
 79791 -	    unsigned int el_elt, el_elnum = 0;
       
 79792 -	    el_elt = discover_homogeneous_aggregate (*el, &el_elnum);
       
 79793 -	    if (el_elt == 0
       
 79794 -		|| (base_elt && base_elt != el_elt))
       
 79795 -	      return 0;
       
 79796 -	    base_elt = el_elt;
       
 79797 -	    total_elnum += el_elnum;
       
 79798 -	    if (total_elnum > 8)
       
 79799 -	      return 0;
       
 79800 -	    el++;
       
 79801 -	  }
       
 79802 -	*elnum = total_elnum;
       
 79803 -	return base_elt;
       
 79804 -      }
       
 79805 -
       
 79806 -    default:
       
 79807 -      return 0;
       
 79808 -    }
       
 79809 +# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 79810 +#  ifdef POWERPC64
       
 79811 +  ffi_prep_types_linux64 (abi);
       
 79812 +#  else
       
 79813 +  ffi_prep_types_sysv (abi);
       
 79814 +#  endif
       
 79815 +# endif
       
 79816  }
       
 79817  #endif
       
 79818  
       
 79819 -
       
 79820 -/* ffi_prep_args64 is called by the assembly routine once stack space
       
 79821 -   has been allocated for the function's arguments.
       
 79822 -
       
 79823 -   The stack layout we want looks like this:
       
 79824 -
       
 79825 -   |   Ret addr from ffi_call_LINUX64	8bytes	|	higher addresses
       
 79826 -   |--------------------------------------------|
       
 79827 -   |   CR save area			8bytes	|
       
 79828 -   |--------------------------------------------|
       
 79829 -   |   Previous backchain pointer	8	|	stack pointer here
       
 79830 -   |--------------------------------------------|<+ <<<	on entry to
       
 79831 -   |   Saved r28-r31			4*8	| |	ffi_call_LINUX64
       
 79832 -   |--------------------------------------------| |
       
 79833 -   |   GPR registers r3-r10		8*8	| |
       
 79834 -   |--------------------------------------------| |
       
 79835 -   |   FPR registers f1-f13 (optional)	13*8	| |
       
 79836 -   |--------------------------------------------| |
       
 79837 -   |   Parameter save area		        | |
       
 79838 -   |--------------------------------------------| |
       
 79839 -   |   TOC save area			8	| |
       
 79840 -   |--------------------------------------------| |	stack	|
       
 79841 -   |   Linker doubleword		8	| |	grows	|
       
 79842 -   |--------------------------------------------| |	down	V
       
 79843 -   |   Compiler doubleword		8	| |
       
 79844 -   |--------------------------------------------| |	lower addresses
       
 79845 -   |   Space for callee's LR		8	| |
       
 79846 -   |--------------------------------------------| |
       
 79847 -   |   CR save area			8	| |
       
 79848 -   |--------------------------------------------| |	stack pointer here
       
 79849 -   |   Current backchain pointer	8	|-/	during
       
 79850 -   |--------------------------------------------|   <<<	ffi_call_LINUX64
       
 79851 -
       
 79852 -*/
       
 79853 -
       
 79854 -void FFI_HIDDEN
       
 79855 -ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
       
 79856 +/* Perform machine dependent cif processing */
       
 79857 +ffi_status FFI_HIDDEN
       
 79858 +ffi_prep_cif_machdep (ffi_cif *cif)
       
 79859  {
       
 79860 -  const unsigned long bytes = ecif->cif->bytes;
       
 79861 -  const unsigned long flags = ecif->cif->flags;
       
 79862 -
       
 79863 -  typedef union {
       
 79864 -    char *c;
       
 79865 -    unsigned long *ul;
       
 79866 -    float *f;
       
 79867 -    double *d;
       
 79868 -    size_t p;
       
 79869 -  } valp;
       
 79870 -
       
 79871 -  /* 'stacktop' points at the previous backchain pointer.  */
       
 79872 -  valp stacktop;
       
 79873 -
       
 79874 -  /* 'next_arg' points at the space for gpr3, and grows upwards as
       
 79875 -     we use GPR registers, then continues at rest.  */
       
 79876 -  valp gpr_base;
       
 79877 -  valp gpr_end;
       
 79878 -  valp rest;
       
 79879 -  valp next_arg;
       
 79880 -
       
 79881 -  /* 'fpr_base' points at the space for fpr3, and grows upwards as
       
 79882 -     we use FPR registers.  */
       
 79883 -  valp fpr_base;
       
 79884 -  unsigned int fparg_count;
       
 79885 -
       
 79886 -  unsigned int i, words, nargs, nfixedargs;
       
 79887 -  ffi_type **ptr;
       
 79888 -  double double_tmp;
       
 79889 -  union {
       
 79890 -    void **v;
       
 79891 -    char **c;
       
 79892 -    signed char **sc;
       
 79893 -    unsigned char **uc;
       
 79894 -    signed short **ss;
       
 79895 -    unsigned short **us;
       
 79896 -    signed int **si;
       
 79897 -    unsigned int **ui;
       
 79898 -    unsigned long **ul;
       
 79899 -    float **f;
       
 79900 -    double **d;
       
 79901 -  } p_argv;
       
 79902 -  unsigned long gprvalue;
       
 79903 -#ifdef __STRUCT_PARM_ALIGN__
       
 79904 -  unsigned long align;
       
 79905 +#ifdef POWERPC64
       
 79906 +  return ffi_prep_cif_linux64 (cif);
       
 79907 +#else
       
 79908 +  return ffi_prep_cif_sysv (cif);
       
 79909  #endif
       
 79910 -
       
 79911 -  stacktop.c = (char *) stack + bytes;
       
 79912 -  gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64;
       
 79913 -  gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64;
       
 79914 -#if _CALL_ELF == 2
       
 79915 -  rest.ul = stack + 4 + NUM_GPR_ARG_REGISTERS64;
       
 79916 -#else
       
 79917 -  rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64;
       
 79918 -#endif
       
 79919 -  fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64;
       
 79920 -  fparg_count = 0;
       
 79921 -  next_arg.ul = gpr_base.ul;
       
 79922 -
       
 79923 -  /* Check that everything starts aligned properly.  */
       
 79924 -  FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
       
 79925 -  FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
       
 79926 -  FFI_ASSERT ((bytes & 0xF) == 0);
       
 79927 -
       
 79928 -  /* Deal with return values that are actually pass-by-reference.  */
       
 79929 -  if (flags & FLAG_RETVAL_REFERENCE)
       
 79930 -    *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue;
       
 79931 -
       
 79932 -  /* Now for the arguments.  */
       
 79933 -  p_argv.v = ecif->avalue;
       
 79934 -  nargs = ecif->cif->nargs;
       
 79935 -  nfixedargs = ecif->cif->nfixedargs;
       
 79936 -  for (ptr = ecif->cif->arg_types, i = 0;
       
 79937 -       i < nargs;
       
 79938 -       i++, ptr++, p_argv.v++)
       
 79939 -    {
       
 79940 -      unsigned int elt, elnum;
       
 79941 -
       
 79942 -      switch ((*ptr)->type)
       
 79943 -	{
       
 79944 -	case FFI_TYPE_FLOAT:
       
 79945 -	  double_tmp = **p_argv.f;
       
 79946 -	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 79947 -	    *fpr_base.d++ = double_tmp;
       
 79948 -	  else
       
 79949 -	    *next_arg.f = (float) double_tmp;
       
 79950 -	  if (++next_arg.ul == gpr_end.ul)
       
 79951 -	    next_arg.ul = rest.ul;
       
 79952 -	  fparg_count++;
       
 79953 -	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 79954 -	  break;
       
 79955 -
       
 79956 -	case FFI_TYPE_DOUBLE:
       
 79957 -	  double_tmp = **p_argv.d;
       
 79958 -	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 79959 -	    *fpr_base.d++ = double_tmp;
       
 79960 -	  else
       
 79961 -	    *next_arg.d = double_tmp;
       
 79962 -	  if (++next_arg.ul == gpr_end.ul)
       
 79963 -	    next_arg.ul = rest.ul;
       
 79964 -	  fparg_count++;
       
 79965 -	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 79966 -	  break;
       
 79967 -
       
 79968 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 79969 -	case FFI_TYPE_LONGDOUBLE:
       
 79970 -	  double_tmp = (*p_argv.d)[0];
       
 79971 -	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 79972 -	    *fpr_base.d++ = double_tmp;
       
 79973 -	  else
       
 79974 -	    *next_arg.d = double_tmp;
       
 79975 -	  if (++next_arg.ul == gpr_end.ul)
       
 79976 -	    next_arg.ul = rest.ul;
       
 79977 -	  fparg_count++;
       
 79978 -	  double_tmp = (*p_argv.d)[1];
       
 79979 -	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 79980 -	    *fpr_base.d++ = double_tmp;
       
 79981 -	  else
       
 79982 -	    *next_arg.d = double_tmp;
       
 79983 -	  if (++next_arg.ul == gpr_end.ul)
       
 79984 -	    next_arg.ul = rest.ul;
       
 79985 -	  fparg_count++;
       
 79986 -	  FFI_ASSERT (__LDBL_MANT_DIG__ == 106);
       
 79987 -	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 79988 -	  break;
       
 79989 -#endif
       
 79990 -
       
 79991 -	case FFI_TYPE_STRUCT:
       
 79992 -#ifdef __STRUCT_PARM_ALIGN__
       
 79993 -	  align = (*ptr)->alignment;
       
 79994 -	  if (align > __STRUCT_PARM_ALIGN__)
       
 79995 -	    align = __STRUCT_PARM_ALIGN__;
       
 79996 -	  if (align > 1)
       
 79997 -	    next_arg.p = ALIGN (next_arg.p, align);
       
 79998 -#endif
       
 79999 -	  elt = 0;
       
 80000 -#if _CALL_ELF == 2
       
 80001 -	  elt = discover_homogeneous_aggregate (*ptr, &elnum);
       
 80002 -#endif
       
 80003 -	  if (elt)
       
 80004 -	    {
       
 80005 -	      union {
       
 80006 -		void *v;
       
 80007 -		float *f;
       
 80008 -		double *d;
       
 80009 -	      } arg;
       
 80010 -
       
 80011 -	      arg.v = *p_argv.v;
       
 80012 -	      if (elt == FFI_TYPE_FLOAT)
       
 80013 -		{
       
 80014 -		  do
       
 80015 -		    {
       
 80016 -		      double_tmp = *arg.f++;
       
 80017 -		      if (fparg_count < NUM_FPR_ARG_REGISTERS64
       
 80018 -			  && i < nfixedargs)
       
 80019 -			*fpr_base.d++ = double_tmp;
       
 80020 -		      else
       
 80021 -			*next_arg.f = (float) double_tmp;
       
 80022 -		      if (++next_arg.f == gpr_end.f)
       
 80023 -			next_arg.f = rest.f;
       
 80024 -		      fparg_count++;
       
 80025 -		    }
       
 80026 -		  while (--elnum != 0);
       
 80027 -		  if ((next_arg.p & 3) != 0)
       
 80028 -		    {
       
 80029 -		      if (++next_arg.f == gpr_end.f)
       
 80030 -			next_arg.f = rest.f;
       
 80031 -		    }
       
 80032 -		}
       
 80033 -	      else
       
 80034 -		do
       
 80035 -		  {
       
 80036 -		    double_tmp = *arg.d++;
       
 80037 -		    if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 80038 -		      *fpr_base.d++ = double_tmp;
       
 80039 -		    else
       
 80040 -		      *next_arg.d = double_tmp;
       
 80041 -		    if (++next_arg.d == gpr_end.d)
       
 80042 -		      next_arg.d = rest.d;
       
 80043 -		    fparg_count++;
       
 80044 -		  }
       
 80045 -		while (--elnum != 0);
       
 80046 -	    }
       
 80047 -	  else
       
 80048 -	    {
       
 80049 -	      words = ((*ptr)->size + 7) / 8;
       
 80050 -	      if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul)
       
 80051 -		{
       
 80052 -		  size_t first = gpr_end.c - next_arg.c;
       
 80053 -		  memcpy (next_arg.c, *p_argv.c, first);
       
 80054 -		  memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first);
       
 80055 -		  next_arg.c = rest.c + words * 8 - first;
       
 80056 -		}
       
 80057 -	      else
       
 80058 -		{
       
 80059 -		  char *where = next_arg.c;
       
 80060 -
       
 80061 -#ifndef __LITTLE_ENDIAN__
       
 80062 -		  /* Structures with size less than eight bytes are passed
       
 80063 -		     left-padded.  */
       
 80064 -		  if ((*ptr)->size < 8)
       
 80065 -		    where += 8 - (*ptr)->size;
       
 80066 -#endif
       
 80067 -		  memcpy (where, *p_argv.c, (*ptr)->size);
       
 80068 -		  next_arg.ul += words;
       
 80069 -		  if (next_arg.ul == gpr_end.ul)
       
 80070 -		    next_arg.ul = rest.ul;
       
 80071 -		}
       
 80072 -	    }
       
 80073 -	  break;
       
 80074 -
       
 80075 -	case FFI_TYPE_UINT8:
       
 80076 -	  gprvalue = **p_argv.uc;
       
 80077 -	  goto putgpr;
       
 80078 -	case FFI_TYPE_SINT8:
       
 80079 -	  gprvalue = **p_argv.sc;
       
 80080 -	  goto putgpr;
       
 80081 -	case FFI_TYPE_UINT16:
       
 80082 -	  gprvalue = **p_argv.us;
       
 80083 -	  goto putgpr;
       
 80084 -	case FFI_TYPE_SINT16:
       
 80085 -	  gprvalue = **p_argv.ss;
       
 80086 -	  goto putgpr;
       
 80087 -	case FFI_TYPE_UINT32:
       
 80088 -	  gprvalue = **p_argv.ui;
       
 80089 -	  goto putgpr;
       
 80090 -	case FFI_TYPE_INT:
       
 80091 -	case FFI_TYPE_SINT32:
       
 80092 -	  gprvalue = **p_argv.si;
       
 80093 -	  goto putgpr;
       
 80094 -
       
 80095 -	case FFI_TYPE_UINT64:
       
 80096 -	case FFI_TYPE_SINT64:
       
 80097 -	case FFI_TYPE_POINTER:
       
 80098 -	  gprvalue = **p_argv.ul;
       
 80099 -	putgpr:
       
 80100 -	  *next_arg.ul++ = gprvalue;
       
 80101 -	  if (next_arg.ul == gpr_end.ul)
       
 80102 -	    next_arg.ul = rest.ul;
       
 80103 -	  break;
       
 80104 -	}
       
 80105 -    }
       
 80106 -
       
 80107 -  FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS
       
 80108 -	      || (next_arg.ul >= gpr_base.ul
       
 80109 -		  && next_arg.ul <= gpr_base.ul + 4));
       
 80110  }
       
 80111  
       
 80112 -
       
 80113 -
       
 80114 -/* Perform machine dependent cif processing */
       
 80115 -static ffi_status
       
 80116 -ffi_prep_cif_machdep_core (ffi_cif *cif)
       
 80117 -{
       
 80118 -  /* All this is for the SYSV and LINUX64 ABI.  */
       
 80119 -  ffi_type **ptr;
       
 80120 -  unsigned bytes;
       
 80121 -  unsigned i, fparg_count = 0, intarg_count = 0;
       
 80122 -  unsigned flags = cif->flags;
       
 80123 -  unsigned struct_copy_size = 0;
       
 80124 -  unsigned type = cif->rtype->type;
       
 80125 -  unsigned size = cif->rtype->size;
       
 80126 -
       
 80127 -  /* The machine-independent calculation of cif->bytes doesn't work
       
 80128 -     for us.  Redo the calculation.  */
       
 80129 -  if (cif->abi != FFI_LINUX64)
       
 80130 -    {
       
 80131 -      /* Space for the frame pointer, callee's LR, and the asm's temp regs.  */
       
 80132 -      bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int);
       
 80133 -
       
 80134 -      /* Space for the GPR registers.  */
       
 80135 -      bytes += NUM_GPR_ARG_REGISTERS * sizeof (int);
       
 80136 -    }
       
 80137 -  else
       
 80138 -    {
       
 80139 -      /* 64-bit ABI.  */
       
 80140 -#if _CALL_ELF == 2
       
 80141 -      /* Space for backchain, CR, LR, TOC and the asm's temp regs.  */
       
 80142 -      bytes = (4 + ASM_NEEDS_REGISTERS64) * sizeof (long);
       
 80143 -
       
 80144 -      /* Space for the general registers.  */
       
 80145 -      bytes += NUM_GPR_ARG_REGISTERS64 * sizeof (long);
       
 80146 -#else
       
 80147 -      /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp
       
 80148 -	 regs.  */
       
 80149 -      bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long);
       
 80150 -
       
 80151 -      /* Space for the mandatory parm save area and general registers.  */
       
 80152 -      bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long);
       
 80153 -#endif
       
 80154 -    }
       
 80155 -
       
 80156 -  /* Return value handling.  The rules for SYSV are as follows:
       
 80157 -     - 32-bit (or less) integer values are returned in gpr3;
       
 80158 -     - Structures of size <= 4 bytes also returned in gpr3;
       
 80159 -     - 64-bit integer values and structures between 5 and 8 bytes are returned
       
 80160 -     in gpr3 and gpr4;
       
 80161 -     - Single/double FP values are returned in fpr1;
       
 80162 -     - Larger structures are allocated space and a pointer is passed as
       
 80163 -     the first argument.
       
 80164 -     - long doubles (if not equivalent to double) are returned in
       
 80165 -     fpr1,fpr2 for Linux and as for large structs for SysV.
       
 80166 -     For LINUX64:
       
 80167 -     - integer values in gpr3;
       
 80168 -     - Structures/Unions by reference;
       
 80169 -     - Single/double FP values in fpr1, long double in fpr1,fpr2.
       
 80170 -     - soft-float float/doubles are treated as UINT32/UINT64 respectivley.
       
 80171 -     - soft-float long doubles are returned in gpr3-gpr6.  */
       
 80172 -  /* First translate for softfloat/nonlinux */
       
 80173 -  if (cif->abi == FFI_LINUX_SOFT_FLOAT)
       
 80174 -    {
       
 80175 -      if (type == FFI_TYPE_FLOAT)
       
 80176 -	type = FFI_TYPE_UINT32;
       
 80177 -      if (type == FFI_TYPE_DOUBLE)
       
 80178 -	type = FFI_TYPE_UINT64;
       
 80179 -      if (type == FFI_TYPE_LONGDOUBLE)
       
 80180 -	type = FFI_TYPE_UINT128;
       
 80181 -    }
       
 80182 -  else if (cif->abi != FFI_LINUX
       
 80183 -	   && cif->abi != FFI_LINUX64)
       
 80184 -    {
       
 80185 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 80186 -      if (type == FFI_TYPE_LONGDOUBLE)
       
 80187 -	type = FFI_TYPE_STRUCT;
       
 80188 -#endif
       
 80189 -    }
       
 80190 -
       
 80191 -  switch (type)
       
 80192 -    {
       
 80193 -#ifndef __NO_FPRS__
       
 80194 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 80195 -    case FFI_TYPE_LONGDOUBLE:
       
 80196 -      flags |= FLAG_RETURNS_128BITS;
       
 80197 -      /* Fall through.  */
       
 80198 -#endif
       
 80199 -    case FFI_TYPE_DOUBLE:
       
 80200 -      flags |= FLAG_RETURNS_64BITS;
       
 80201 -      /* Fall through.  */
       
 80202 -    case FFI_TYPE_FLOAT:
       
 80203 -      flags |= FLAG_RETURNS_FP;
       
 80204 -      break;
       
 80205 -#endif
       
 80206 -
       
 80207 -    case FFI_TYPE_UINT128:
       
 80208 -      flags |= FLAG_RETURNS_128BITS;
       
 80209 -      /* Fall through.  */
       
 80210 -    case FFI_TYPE_UINT64:
       
 80211 -    case FFI_TYPE_SINT64:
       
 80212 -      flags |= FLAG_RETURNS_64BITS;
       
 80213 -      break;
       
 80214 -
       
 80215 -    case FFI_TYPE_STRUCT:
       
 80216 -      /*
       
 80217 -       * The final SYSV ABI says that structures smaller or equal 8 bytes
       
 80218 -       * are returned in r3/r4.  The FFI_GCC_SYSV ABI instead returns them
       
 80219 -       * in memory.
       
 80220 -       *
       
 80221 -       * NOTE: The assembly code can safely assume that it just needs to
       
 80222 -       *       store both r3 and r4 into a 8-byte word-aligned buffer, as
       
 80223 -       *       we allocate a temporary buffer in ffi_call() if this flag is
       
 80224 -       *       set.
       
 80225 -       */
       
 80226 -      if (cif->abi == FFI_SYSV && size <= 8)
       
 80227 -	{
       
 80228 -	  flags |= FLAG_RETURNS_SMST;
       
 80229 -	  break;
       
 80230 -	}
       
 80231 -#if _CALL_ELF == 2
       
 80232 -      if (cif->abi == FFI_LINUX64)
       
 80233 -	{
       
 80234 -	  unsigned int elt, elnum;
       
 80235 -	  elt = discover_homogeneous_aggregate (cif->rtype, &elnum);
       
 80236 -	  if (elt)
       
 80237 -	    {
       
 80238 -	      if (elt == FFI_TYPE_DOUBLE)
       
 80239 -		flags |= FLAG_RETURNS_64BITS;
       
 80240 -	      flags |= FLAG_RETURNS_FP | FLAG_RETURNS_SMST;
       
 80241 -	      break;
       
 80242 -	    }
       
 80243 -	  if (size <= 16)
       
 80244 -	    {
       
 80245 -	      flags |= FLAG_RETURNS_SMST;
       
 80246 -	      break;
       
 80247 -	    }
       
 80248 -	}
       
 80249 -#endif
       
 80250 -      intarg_count++;
       
 80251 -      flags |= FLAG_RETVAL_REFERENCE;
       
 80252 -      /* Fall through.  */
       
 80253 -    case FFI_TYPE_VOID:
       
 80254 -      flags |= FLAG_RETURNS_NOTHING;
       
 80255 -      break;
       
 80256 -
       
 80257 -    default:
       
 80258 -      /* Returns 32-bit integer, or similar.  Nothing to do here.  */
       
 80259 -      break;
       
 80260 -    }
       
 80261 -
       
 80262 -  if (cif->abi != FFI_LINUX64)
       
 80263 -    /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the
       
 80264 -       first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest
       
 80265 -       goes on the stack.  Structures and long doubles (if not equivalent
       
 80266 -       to double) are passed as a pointer to a copy of the structure.
       
 80267 -       Stuff on the stack needs to keep proper alignment.  */
       
 80268 -    for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
       
 80269 -      {
       
 80270 -	unsigned short typenum = (*ptr)->type;
       
 80271 -
       
 80272 -	/* We may need to handle some values depending on ABI */
       
 80273 -	if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
       
 80274 -		if (typenum == FFI_TYPE_FLOAT)
       
 80275 -			typenum = FFI_TYPE_UINT32;
       
 80276 -		if (typenum == FFI_TYPE_DOUBLE)
       
 80277 -			typenum = FFI_TYPE_UINT64;
       
 80278 -		if (typenum == FFI_TYPE_LONGDOUBLE)
       
 80279 -			typenum = FFI_TYPE_UINT128;
       
 80280 -	} else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
       
 80281 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 80282 -		if (typenum == FFI_TYPE_LONGDOUBLE)
       
 80283 -			typenum = FFI_TYPE_STRUCT;
       
 80284 -#endif
       
 80285 -	}
       
 80286 -
       
 80287 -	switch (typenum) {
       
 80288 -#ifndef __NO_FPRS__
       
 80289 -	  case FFI_TYPE_FLOAT:
       
 80290 -	    fparg_count++;
       
 80291 -	    /* floating singles are not 8-aligned on stack */
       
 80292 -	    break;
       
 80293 -
       
 80294 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 80295 -	  case FFI_TYPE_LONGDOUBLE:
       
 80296 -	    fparg_count++;
       
 80297 -	    /* Fall thru */
       
 80298 -#endif
       
 80299 -	  case FFI_TYPE_DOUBLE:
       
 80300 -	    fparg_count++;
       
 80301 -	    /* If this FP arg is going on the stack, it must be
       
 80302 -	       8-byte-aligned.  */
       
 80303 -	    if (fparg_count > NUM_FPR_ARG_REGISTERS
       
 80304 -		&& intarg_count >= NUM_GPR_ARG_REGISTERS
       
 80305 -		&& intarg_count % 2 != 0)
       
 80306 -	      intarg_count++;
       
 80307 -	    break;
       
 80308 -#endif
       
 80309 -	  case FFI_TYPE_UINT128:
       
 80310 -		/*
       
 80311 -		 * A long double in FFI_LINUX_SOFT_FLOAT can use only a set
       
 80312 -		 * of four consecutive gprs. If we do not have enough, we
       
 80313 -		 * have to adjust the intarg_count value.
       
 80314 -		 */
       
 80315 -		if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3
       
 80316 -				&& intarg_count < NUM_GPR_ARG_REGISTERS)
       
 80317 -			intarg_count = NUM_GPR_ARG_REGISTERS;
       
 80318 -		intarg_count += 4;
       
 80319 -		break;
       
 80320 -
       
 80321 -	  case FFI_TYPE_UINT64:
       
 80322 -	  case FFI_TYPE_SINT64:
       
 80323 -	    /* 'long long' arguments are passed as two words, but
       
 80324 -	       either both words must fit in registers or both go
       
 80325 -	       on the stack.  If they go on the stack, they must
       
 80326 -	       be 8-byte-aligned.
       
 80327 -
       
 80328 -	       Also, only certain register pairs can be used for
       
 80329 -	       passing long long int -- specifically (r3,r4), (r5,r6),
       
 80330 -	       (r7,r8), (r9,r10).
       
 80331 -	    */
       
 80332 -	    if (intarg_count == NUM_GPR_ARG_REGISTERS-1
       
 80333 -		|| intarg_count % 2 != 0)
       
 80334 -	      intarg_count++;
       
 80335 -	    intarg_count += 2;
       
 80336 -	    break;
       
 80337 -
       
 80338 -	  case FFI_TYPE_STRUCT:
       
 80339 -	    /* We must allocate space for a copy of these to enforce
       
 80340 -	       pass-by-value.  Pad the space up to a multiple of 16
       
 80341 -	       bytes (the maximum alignment required for anything under
       
 80342 -	       the SYSV ABI).  */
       
 80343 -	    struct_copy_size += ((*ptr)->size + 15) & ~0xF;
       
 80344 -	    /* Fall through (allocate space for the pointer).  */
       
 80345 -
       
 80346 -	  case FFI_TYPE_POINTER:
       
 80347 -	  case FFI_TYPE_INT:
       
 80348 -	  case FFI_TYPE_UINT32:
       
 80349 -	  case FFI_TYPE_SINT32:
       
 80350 -	  case FFI_TYPE_UINT16:
       
 80351 -	  case FFI_TYPE_SINT16:
       
 80352 -	  case FFI_TYPE_UINT8:
       
 80353 -	  case FFI_TYPE_SINT8:
       
 80354 -	    /* Everything else is passed as a 4-byte word in a GPR, either
       
 80355 -	       the object itself or a pointer to it.  */
       
 80356 -	    intarg_count++;
       
 80357 -	    break;
       
 80358 -	  default:
       
 80359 -		FFI_ASSERT (0);
       
 80360 -	  }
       
 80361 -      }
       
 80362 -  else
       
 80363 -    for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
       
 80364 -      {
       
 80365 -	unsigned int elt, elnum;
       
 80366 -#ifdef __STRUCT_PARM_ALIGN__
       
 80367 -	unsigned int align;
       
 80368 -#endif
       
 80369 -
       
 80370 -	switch ((*ptr)->type)
       
 80371 -	  {
       
 80372 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 80373 -	  case FFI_TYPE_LONGDOUBLE:
       
 80374 -	    fparg_count += 2;
       
 80375 -	    intarg_count += 2;
       
 80376 -	    if (fparg_count > NUM_FPR_ARG_REGISTERS64)
       
 80377 -	      flags |= FLAG_ARG_NEEDS_PSAVE;
       
 80378 -	    break;
       
 80379 -#endif
       
 80380 -	  case FFI_TYPE_FLOAT:
       
 80381 -	  case FFI_TYPE_DOUBLE:
       
 80382 -	    fparg_count++;
       
 80383 -	    intarg_count++;
       
 80384 -	    if (fparg_count > NUM_FPR_ARG_REGISTERS64)
       
 80385 -	      flags |= FLAG_ARG_NEEDS_PSAVE;
       
 80386 -	    break;
       
 80387 -
       
 80388 -	  case FFI_TYPE_STRUCT:
       
 80389 -#ifdef __STRUCT_PARM_ALIGN__
       
 80390 -	    align = (*ptr)->alignment;
       
 80391 -	    if (align > __STRUCT_PARM_ALIGN__)
       
 80392 -	      align = __STRUCT_PARM_ALIGN__;
       
 80393 -	    align = align / 8;
       
 80394 -	    if (align > 1)
       
 80395 -	      intarg_count = ALIGN (intarg_count, align);
       
 80396 -#endif
       
 80397 -	    intarg_count += ((*ptr)->size + 7) / 8;
       
 80398 -	    elt = 0;
       
 80399 -#if _CALL_ELF == 2
       
 80400 -	    elt = discover_homogeneous_aggregate (*ptr, &elnum);
       
 80401 -#endif
       
 80402 -	    if (elt)
       
 80403 -	      {
       
 80404 -		fparg_count += elnum;
       
 80405 -		if (fparg_count > NUM_FPR_ARG_REGISTERS64)
       
 80406 -		  flags |= FLAG_ARG_NEEDS_PSAVE;
       
 80407 -	      }
       
 80408 -	    else
       
 80409 -	      {
       
 80410 -		if (intarg_count > NUM_GPR_ARG_REGISTERS64)
       
 80411 -		  flags |= FLAG_ARG_NEEDS_PSAVE;
       
 80412 -	      }
       
 80413 -	    break;
       
 80414 -
       
 80415 -	  case FFI_TYPE_POINTER:
       
 80416 -	  case FFI_TYPE_UINT64:
       
 80417 -	  case FFI_TYPE_SINT64:
       
 80418 -	  case FFI_TYPE_INT:
       
 80419 -	  case FFI_TYPE_UINT32:
       
 80420 -	  case FFI_TYPE_SINT32:
       
 80421 -	  case FFI_TYPE_UINT16:
       
 80422 -	  case FFI_TYPE_SINT16:
       
 80423 -	  case FFI_TYPE_UINT8:
       
 80424 -	  case FFI_TYPE_SINT8:
       
 80425 -	    /* Everything else is passed as a 8-byte word in a GPR, either
       
 80426 -	       the object itself or a pointer to it.  */
       
 80427 -	    intarg_count++;
       
 80428 -	    if (intarg_count > NUM_GPR_ARG_REGISTERS64)
       
 80429 -	      flags |= FLAG_ARG_NEEDS_PSAVE;
       
 80430 -	    break;
       
 80431 -	  default:
       
 80432 -	    FFI_ASSERT (0);
       
 80433 -	  }
       
 80434 -      }
       
 80435 -
       
 80436 -#ifndef __NO_FPRS__
       
 80437 -  if (fparg_count != 0)
       
 80438 -    flags |= FLAG_FP_ARGUMENTS;
       
 80439 -#endif
       
 80440 -  if (intarg_count > 4)
       
 80441 -    flags |= FLAG_4_GPR_ARGUMENTS;
       
 80442 -  if (struct_copy_size != 0)
       
 80443 -    flags |= FLAG_ARG_NEEDS_COPY;
       
 80444 -
       
 80445 -  if (cif->abi != FFI_LINUX64)
       
 80446 -    {
       
 80447 -#ifndef __NO_FPRS__
       
 80448 -      /* Space for the FPR registers, if needed.  */
       
 80449 -      if (fparg_count != 0)
       
 80450 -	bytes += NUM_FPR_ARG_REGISTERS * sizeof (double);
       
 80451 -#endif
       
 80452 -
       
 80453 -      /* Stack space.  */
       
 80454 -      if (intarg_count > NUM_GPR_ARG_REGISTERS)
       
 80455 -	bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int);
       
 80456 -#ifndef __NO_FPRS__
       
 80457 -      if (fparg_count > NUM_FPR_ARG_REGISTERS)
       
 80458 -	bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double);
       
 80459 -#endif
       
 80460 -    }
       
 80461 -  else
       
 80462 -    {
       
 80463 -#ifndef __NO_FPRS__
       
 80464 -      /* Space for the FPR registers, if needed.  */
       
 80465 -      if (fparg_count != 0)
       
 80466 -	bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double);
       
 80467 -#endif
       
 80468 -
       
 80469 -      /* Stack space.  */
       
 80470 -#if _CALL_ELF == 2
       
 80471 -      if ((flags & FLAG_ARG_NEEDS_PSAVE) != 0)
       
 80472 -	bytes += intarg_count * sizeof (long);
       
 80473 -#else
       
 80474 -      if (intarg_count > NUM_GPR_ARG_REGISTERS64)
       
 80475 -	bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long);
       
 80476 -#endif
       
 80477 -    }
       
 80478 -
       
 80479 -  /* The stack space allocated needs to be a multiple of 16 bytes.  */
       
 80480 -  bytes = (bytes + 15) & ~0xF;
       
 80481 -
       
 80482 -  /* Add in the space for the copied structures.  */
       
 80483 -  bytes += struct_copy_size;
       
 80484 -
       
 80485 -  cif->flags = flags;
       
 80486 -  cif->bytes = bytes;
       
 80487 -
       
 80488 -  return FFI_OK;
       
 80489 -}
       
 80490 -
       
 80491 -ffi_status
       
 80492 -ffi_prep_cif_machdep (ffi_cif *cif)
       
 80493 -{
       
 80494 -  cif->nfixedargs = cif->nargs;
       
 80495 -  return ffi_prep_cif_machdep_core (cif);
       
 80496 -}
       
 80497 -
       
 80498 -ffi_status
       
 80499 +ffi_status FFI_HIDDEN
       
 80500  ffi_prep_cif_machdep_var (ffi_cif *cif,
       
 80501 -			  unsigned int nfixedargs,
       
 80502 +			  unsigned int nfixedargs MAYBE_UNUSED,
       
 80503  			  unsigned int ntotalargs MAYBE_UNUSED)
       
 80504  {
       
 80505 -  cif->nfixedargs = nfixedargs;
       
 80506 -#if _CALL_ELF == 2
       
 80507 -  if (cif->abi == FFI_LINUX64)
       
 80508 -    cif->flags |= FLAG_ARG_NEEDS_PSAVE;
       
 80509 +#ifdef POWERPC64
       
 80510 +  return ffi_prep_cif_linux64_var (cif, nfixedargs, ntotalargs);
       
 80511 +#else
       
 80512 +  return ffi_prep_cif_sysv (cif);
       
 80513  #endif
       
 80514 -  return ffi_prep_cif_machdep_core (cif);
       
 80515  }
       
 80516  
       
 80517 -extern void ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *,
       
 80518 -			  void (*fn)(void));
       
 80519 -extern void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long,
       
 80520 -					unsigned long, unsigned long *,
       
 80521 -					void (*fn)(void));
       
 80522 -
       
 80523  void
       
 80524  ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 80525  {
       
 80526 -  /*
       
 80527 -   * The final SYSV ABI says that structures smaller or equal 8 bytes
       
 80528 -   * are returned in r3/r4.  The FFI_GCC_SYSV ABI instead returns them
       
 80529 -   * in memory.
       
 80530 -   *
       
 80531 -   * We bounce-buffer SYSV small struct return values so that sysv.S
       
 80532 -   * can write r3 and r4 to memory without worrying about struct size.
       
 80533 -   *
       
 80534 -   * For ELFv2 ABI, use a bounce buffer for homogeneous structs too,
       
 80535 -   * for similar reasons.
       
 80536 -   */
       
 80537 +  /* The final SYSV ABI says that structures smaller or equal 8 bytes
       
 80538 +     are returned in r3/r4.  A draft ABI used by linux instead returns
       
 80539 +     them in memory.
       
 80540 +
       
 80541 +     We bounce-buffer SYSV small struct return values so that sysv.S
       
 80542 +     can write r3 and r4 to memory without worrying about struct size.
       
 80543 +   
       
 80544 +     For ELFv2 ABI, use a bounce buffer for homogeneous structs too,
       
 80545 +     for similar reasons.  */
       
 80546    unsigned long smst_buffer[8];
       
 80547    extended_cif ecif;
       
 80548  
       
 80549    ecif.cif = cif;
       
 80550    ecif.avalue = avalue;
       
 80551  
       
 80552    ecif.rvalue = rvalue;
       
 80553    if ((cif->flags & FLAG_RETURNS_SMST) != 0)
       
 80554      ecif.rvalue = smst_buffer;
       
 80555    /* Ensure that we have a valid struct return value.
       
 80556       FIXME: Isn't this just papering over a user problem?  */
       
 80557    else if (!rvalue && cif->rtype->type == FFI_TYPE_STRUCT)
       
 80558      ecif.rvalue = alloca (cif->rtype->size);
       
 80559  
       
 80560 -  switch (cif->abi)
       
 80561 -    {
       
 80562 -#ifndef POWERPC64
       
 80563 -# ifndef __NO_FPRS__
       
 80564 -    case FFI_SYSV:
       
 80565 -    case FFI_GCC_SYSV:
       
 80566 -    case FFI_LINUX:
       
 80567 -# endif
       
 80568 -    case FFI_LINUX_SOFT_FLOAT:
       
 80569 -      ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn);
       
 80570 -      break;
       
 80571 +#ifdef POWERPC64
       
 80572 +  ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn);
       
 80573  #else
       
 80574 -    case FFI_LINUX64:
       
 80575 -      ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn);
       
 80576 -      break;
       
 80577 +  ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn);
       
 80578  #endif
       
 80579 -    default:
       
 80580 -      FFI_ASSERT (0);
       
 80581 -      break;
       
 80582 -    }
       
 80583  
       
 80584    /* Check for a bounce-buffered return value */
       
 80585    if (rvalue && ecif.rvalue == smst_buffer)
       
 80586      {
       
 80587        unsigned int rsize = cif->rtype->size;
       
 80588  #ifndef __LITTLE_ENDIAN__
       
 80589        /* The SYSV ABI returns a structure of up to 4 bytes in size
       
 80590  	 left-padded in r3.  */
       
 80591 -      if (cif->abi == FFI_SYSV && rsize <= 4)
       
 80592 +# ifndef POWERPC64
       
 80593 +      if (rsize <= 4)
       
 80594  	memcpy (rvalue, (char *) smst_buffer + 4 - rsize, rsize);
       
 80595 -      /* The SYSV ABI returns a structure of up to 8 bytes in size
       
 80596 -	 left-padded in r3/r4, and the ELFv2 ABI similarly returns a
       
 80597 -	 structure of up to 8 bytes in size left-padded in r3.  */
       
 80598 -      else if (rsize <= 8)
       
 80599 -	memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize);
       
 80600        else
       
 80601 +# endif
       
 80602 +	/* The SYSV ABI returns a structure of up to 8 bytes in size
       
 80603 +	   left-padded in r3/r4, and the ELFv2 ABI similarly returns a
       
 80604 +	   structure of up to 8 bytes in size left-padded in r3.  */
       
 80605 +	if (rsize <= 8)
       
 80606 +	  memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize);
       
 80607 +	else
       
 80608  #endif
       
 80609 -	memcpy (rvalue, smst_buffer, rsize);
       
 80610 +	  memcpy (rvalue, smst_buffer, rsize);
       
 80611      }
       
 80612  }
       
 80613  
       
 80614  
       
 80615 -#if !defined POWERPC64 || _CALL_ELF == 2
       
 80616 -#define MIN_CACHE_LINE_SIZE 8
       
 80617 -
       
 80618 -static void
       
 80619 -flush_icache (char *wraddr, char *xaddr, int size)
       
 80620 -{
       
 80621 -  int i;
       
 80622 -  for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE)
       
 80623 -    __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
       
 80624 -		      : : "r" (xaddr + i), "r" (wraddr + i) : "memory");
       
 80625 -  __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;"
       
 80626 -		    : : "r"(xaddr + size - 1), "r"(wraddr + size - 1)
       
 80627 -		    : "memory");
       
 80628 -}
       
 80629 -#endif
       
 80630 -
       
 80631  ffi_status
       
 80632  ffi_prep_closure_loc (ffi_closure *closure,
       
 80633  		      ffi_cif *cif,
       
 80634  		      void (*fun) (ffi_cif *, void *, void **, void *),
       
 80635  		      void *user_data,
       
 80636  		      void *codeloc)
       
 80637  {
       
 80638  #ifdef POWERPC64
       
 80639 -# if _CALL_ELF == 2
       
 80640 -  unsigned int *tramp = (unsigned int *) &closure->tramp[0];
       
 80641 -
       
 80642 -  if (cif->abi != FFI_LINUX64)
       
 80643 -    return FFI_BAD_ABI;
       
 80644 -
       
 80645 -  tramp[0] = 0xe96c0018;	/* 0:	ld	11,2f-0b(12)	*/
       
 80646 -  tramp[1] = 0xe98c0010;	/*	ld	12,1f-0b(12)	*/
       
 80647 -  tramp[2] = 0x7d8903a6;	/*	mtctr	12		*/
       
 80648 -  tramp[3] = 0x4e800420;	/*	bctr			*/
       
 80649 -				/* 1:	.quad	function_addr	*/
       
 80650 -				/* 2:	.quad	context		*/
       
 80651 -  *(void **) &tramp[4] = (void *) ffi_closure_LINUX64;
       
 80652 -  *(void **) &tramp[6] = codeloc;
       
 80653 -  flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
       
 80654 -# else
       
 80655 -  void **tramp = (void **) &closure->tramp[0];
       
 80656 -
       
 80657 -  if (cif->abi != FFI_LINUX64)
       
 80658 -    return FFI_BAD_ABI;
       
 80659 -  /* Copy function address and TOC from ffi_closure_LINUX64.  */
       
 80660 -  memcpy (tramp, (char *) ffi_closure_LINUX64, 16);
       
 80661 -  tramp[2] = codeloc;
       
 80662 -# endif
       
 80663 +  return ffi_prep_closure_loc_linux64 (closure, cif, fun, user_data, codeloc);
       
 80664  #else
       
 80665 -  unsigned int *tramp;
       
 80666 -
       
 80667 -  if (! (cif->abi == FFI_GCC_SYSV 
       
 80668 -	 || cif->abi == FFI_SYSV
       
 80669 -	 || cif->abi == FFI_LINUX
       
 80670 -	 || cif->abi == FFI_LINUX_SOFT_FLOAT))
       
 80671 -    return FFI_BAD_ABI;
       
 80672 -
       
 80673 -  tramp = (unsigned int *) &closure->tramp[0];
       
 80674 -  tramp[0] = 0x7c0802a6;  /*   mflr    r0 */
       
 80675 -  tramp[1] = 0x4800000d;  /*   bl      10 <trampoline_initial+0x10> */
       
 80676 -  tramp[4] = 0x7d6802a6;  /*   mflr    r11 */
       
 80677 -  tramp[5] = 0x7c0803a6;  /*   mtlr    r0 */
       
 80678 -  tramp[6] = 0x800b0000;  /*   lwz     r0,0(r11) */
       
 80679 -  tramp[7] = 0x816b0004;  /*   lwz     r11,4(r11) */
       
 80680 -  tramp[8] = 0x7c0903a6;  /*   mtctr   r0 */
       
 80681 -  tramp[9] = 0x4e800420;  /*   bctr */
       
 80682 -  *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */
       
 80683 -  *(void **) &tramp[3] = codeloc;                   /* context */
       
 80684 -
       
 80685 -  /* Flush the icache.  */
       
 80686 -  flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
       
 80687 +  return ffi_prep_closure_loc_sysv (closure, cif, fun, user_data, codeloc);
       
 80688  #endif
       
 80689 -
       
 80690 -  closure->cif = cif;
       
 80691 -  closure->fun = fun;
       
 80692 -  closure->user_data = user_data;
       
 80693 -
       
 80694 -  return FFI_OK;
       
 80695  }
       
 80696 -
       
 80697 -typedef union
       
 80698 -{
       
 80699 -  float f;
       
 80700 -  double d;
       
 80701 -} ffi_dblfl;
       
 80702 -
       
 80703 -int ffi_closure_helper_SYSV (ffi_closure *, void *, unsigned long *,
       
 80704 -			     ffi_dblfl *, unsigned long *);
       
 80705 -
       
 80706 -/* Basically the trampoline invokes ffi_closure_SYSV, and on
       
 80707 - * entry, r11 holds the address of the closure.
       
 80708 - * After storing the registers that could possibly contain
       
 80709 - * parameters to be passed into the stack frame and setting
       
 80710 - * up space for a return value, ffi_closure_SYSV invokes the
       
 80711 - * following helper function to do most of the work
       
 80712 - */
       
 80713 -
       
 80714 -int
       
 80715 -ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
       
 80716 -			 unsigned long *pgr, ffi_dblfl *pfr,
       
 80717 -			 unsigned long *pst)
       
 80718 -{
       
 80719 -  /* rvalue is the pointer to space for return value in closure assembly */
       
 80720 -  /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */
       
 80721 -  /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV  */
       
 80722 -  /* pst is the pointer to outgoing parameter stack in original caller */
       
 80723 -
       
 80724 -  void **          avalue;
       
 80725 -  ffi_type **      arg_types;
       
 80726 -  long             i, avn;
       
 80727 -#ifndef __NO_FPRS__
       
 80728 -  long             nf = 0;   /* number of floating registers already used */
       
 80729 -#endif
       
 80730 -  long             ng = 0;   /* number of general registers already used */
       
 80731 -
       
 80732 -  ffi_cif *cif = closure->cif;
       
 80733 -  unsigned       size     = cif->rtype->size;
       
 80734 -  unsigned short rtypenum = cif->rtype->type;
       
 80735 -
       
 80736 -  avalue = alloca (cif->nargs * sizeof (void *));
       
 80737 -
       
 80738 -  /* First translate for softfloat/nonlinux */
       
 80739 -  if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
       
 80740 -	if (rtypenum == FFI_TYPE_FLOAT)
       
 80741 -		rtypenum = FFI_TYPE_UINT32;
       
 80742 -	if (rtypenum == FFI_TYPE_DOUBLE)
       
 80743 -		rtypenum = FFI_TYPE_UINT64;
       
 80744 -	if (rtypenum == FFI_TYPE_LONGDOUBLE)
       
 80745 -		rtypenum = FFI_TYPE_UINT128;
       
 80746 -  } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
       
 80747 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 80748 -	if (rtypenum == FFI_TYPE_LONGDOUBLE)
       
 80749 -		rtypenum = FFI_TYPE_STRUCT;
       
 80750 -#endif
       
 80751 -  }
       
 80752 -
       
 80753 -
       
 80754 -  /* Copy the caller's structure return value address so that the closure
       
 80755 -     returns the data directly to the caller.
       
 80756 -     For FFI_SYSV the result is passed in r3/r4 if the struct size is less
       
 80757 -     or equal 8 bytes.  */
       
 80758 -  if (rtypenum == FFI_TYPE_STRUCT && ((cif->abi != FFI_SYSV) || (size > 8))) {
       
 80759 -      rvalue = (void *) *pgr;
       
 80760 -      ng++;
       
 80761 -      pgr++;
       
 80762 -    }
       
 80763 -
       
 80764 -  i = 0;
       
 80765 -  avn = cif->nargs;
       
 80766 -  arg_types = cif->arg_types;
       
 80767 -
       
 80768 -  /* Grab the addresses of the arguments from the stack frame.  */
       
 80769 -  while (i < avn) {
       
 80770 -      unsigned short typenum = arg_types[i]->type;
       
 80771 -
       
 80772 -      /* We may need to handle some values depending on ABI */
       
 80773 -      if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
       
 80774 -		if (typenum == FFI_TYPE_FLOAT)
       
 80775 -			typenum = FFI_TYPE_UINT32;
       
 80776 -		if (typenum == FFI_TYPE_DOUBLE)
       
 80777 -			typenum = FFI_TYPE_UINT64;
       
 80778 -		if (typenum == FFI_TYPE_LONGDOUBLE)
       
 80779 -			typenum = FFI_TYPE_UINT128;
       
 80780 -      } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
       
 80781 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 80782 -		if (typenum == FFI_TYPE_LONGDOUBLE)
       
 80783 -			typenum = FFI_TYPE_STRUCT;
       
 80784 -#endif
       
 80785 -      }
       
 80786 -
       
 80787 -      switch (typenum) {
       
 80788 -#ifndef __NO_FPRS__
       
 80789 -	case FFI_TYPE_FLOAT:
       
 80790 -	  /* unfortunately float values are stored as doubles
       
 80791 -	   * in the ffi_closure_SYSV code (since we don't check
       
 80792 -	   * the type in that routine).
       
 80793 -	   */
       
 80794 -
       
 80795 -	  /* there are 8 64bit floating point registers */
       
 80796 -
       
 80797 -	  if (nf < 8)
       
 80798 -	    {
       
 80799 -	      double temp = pfr->d;
       
 80800 -	      pfr->f = (float) temp;
       
 80801 -	      avalue[i] = pfr;
       
 80802 -	      nf++;
       
 80803 -	      pfr++;
       
 80804 -	    }
       
 80805 -	  else
       
 80806 -	    {
       
 80807 -	      /* FIXME? here we are really changing the values
       
 80808 -	       * stored in the original calling routines outgoing
       
 80809 -	       * parameter stack.  This is probably a really
       
 80810 -	       * naughty thing to do but...
       
 80811 -	       */
       
 80812 -	      avalue[i] = pst;
       
 80813 -	      pst += 1;
       
 80814 -	    }
       
 80815 -	  break;
       
 80816 -
       
 80817 -	case FFI_TYPE_DOUBLE:
       
 80818 -	  /* On the outgoing stack all values are aligned to 8 */
       
 80819 -	  /* there are 8 64bit floating point registers */
       
 80820 -
       
 80821 -	  if (nf < 8)
       
 80822 -	    {
       
 80823 -	      avalue[i] = pfr;
       
 80824 -	      nf++;
       
 80825 -	      pfr++;
       
 80826 -	    }
       
 80827 -	  else
       
 80828 -	    {
       
 80829 -	      if (((long) pst) & 4)
       
 80830 -		pst++;
       
 80831 -	      avalue[i] = pst;
       
 80832 -	      pst += 2;
       
 80833 -	    }
       
 80834 -	  break;
       
 80835 -
       
 80836 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 80837 -	case FFI_TYPE_LONGDOUBLE:
       
 80838 -	  if (nf < 7)
       
 80839 -	    {
       
 80840 -	      avalue[i] = pfr;
       
 80841 -	      pfr += 2;
       
 80842 -	      nf += 2;
       
 80843 -	    }
       
 80844 -	  else
       
 80845 -	    {
       
 80846 -	      if (((long) pst) & 4)
       
 80847 -		pst++;
       
 80848 -	      avalue[i] = pst;
       
 80849 -	      pst += 4;
       
 80850 -	      nf = 8;
       
 80851 -	    }
       
 80852 -	  break;
       
 80853 -#endif
       
 80854 -#endif /* have FPRS */
       
 80855 -
       
 80856 -	case FFI_TYPE_UINT128:
       
 80857 -		/*
       
 80858 -		 * Test if for the whole long double, 4 gprs are available.
       
 80859 -		 * otherwise the stuff ends up on the stack.
       
 80860 -		 */
       
 80861 -		if (ng < 5) {
       
 80862 -			avalue[i] = pgr;
       
 80863 -			pgr += 4;
       
 80864 -			ng += 4;
       
 80865 -		} else {
       
 80866 -			avalue[i] = pst;
       
 80867 -			pst += 4;
       
 80868 -			ng = 8+4;
       
 80869 -		}
       
 80870 -		break;
       
 80871 -
       
 80872 -	case FFI_TYPE_SINT8:
       
 80873 -	case FFI_TYPE_UINT8:
       
 80874 -#ifndef __LITTLE_ENDIAN__
       
 80875 -	  /* there are 8 gpr registers used to pass values */
       
 80876 -	  if (ng < 8)
       
 80877 -	    {
       
 80878 -	      avalue[i] = (char *) pgr + 3;
       
 80879 -	      ng++;
       
 80880 -	      pgr++;
       
 80881 -	    }
       
 80882 -	  else
       
 80883 -	    {
       
 80884 -	      avalue[i] = (char *) pst + 3;
       
 80885 -	      pst++;
       
 80886 -	    }
       
 80887 -	  break;
       
 80888 -#endif
       
 80889 -
       
 80890 -	case FFI_TYPE_SINT16:
       
 80891 -	case FFI_TYPE_UINT16:
       
 80892 -#ifndef __LITTLE_ENDIAN__
       
 80893 -	  /* there are 8 gpr registers used to pass values */
       
 80894 -	  if (ng < 8)
       
 80895 -	    {
       
 80896 -	      avalue[i] = (char *) pgr + 2;
       
 80897 -	      ng++;
       
 80898 -	      pgr++;
       
 80899 -	    }
       
 80900 -	  else
       
 80901 -	    {
       
 80902 -	      avalue[i] = (char *) pst + 2;
       
 80903 -	      pst++;
       
 80904 -	    }
       
 80905 -	  break;
       
 80906 -#endif
       
 80907 -
       
 80908 -	case FFI_TYPE_SINT32:
       
 80909 -	case FFI_TYPE_UINT32:
       
 80910 -	case FFI_TYPE_POINTER:
       
 80911 -	  /* there are 8 gpr registers used to pass values */
       
 80912 -	  if (ng < 8)
       
 80913 -	    {
       
 80914 -	      avalue[i] = pgr;
       
 80915 -	      ng++;
       
 80916 -	      pgr++;
       
 80917 -	    }
       
 80918 -	  else
       
 80919 -	    {
       
 80920 -	      avalue[i] = pst;
       
 80921 -	      pst++;
       
 80922 -	    }
       
 80923 -	  break;
       
 80924 -
       
 80925 -	case FFI_TYPE_STRUCT:
       
 80926 -	  /* Structs are passed by reference. The address will appear in a
       
 80927 -	     gpr if it is one of the first 8 arguments.  */
       
 80928 -	  if (ng < 8)
       
 80929 -	    {
       
 80930 -	      avalue[i] = (void *) *pgr;
       
 80931 -	      ng++;
       
 80932 -	      pgr++;
       
 80933 -	    }
       
 80934 -	  else
       
 80935 -	    {
       
 80936 -	      avalue[i] = (void *) *pst;
       
 80937 -	      pst++;
       
 80938 -	    }
       
 80939 -	  break;
       
 80940 -
       
 80941 -	case FFI_TYPE_SINT64:
       
 80942 -	case FFI_TYPE_UINT64:
       
 80943 -	  /* passing long long ints are complex, they must
       
 80944 -	   * be passed in suitable register pairs such as
       
 80945 -	   * (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10)
       
 80946 -	   * and if the entire pair aren't available then the outgoing
       
 80947 -	   * parameter stack is used for both but an alignment of 8
       
 80948 -	   * must will be kept.  So we must either look in pgr
       
 80949 -	   * or pst to find the correct address for this type
       
 80950 -	   * of parameter.
       
 80951 -	   */
       
 80952 -	  if (ng < 7)
       
 80953 -	    {
       
 80954 -	      if (ng & 0x01)
       
 80955 -		{
       
 80956 -		  /* skip r4, r6, r8 as starting points */
       
 80957 -		  ng++;
       
 80958 -		  pgr++;
       
 80959 -		}
       
 80960 -	      avalue[i] = pgr;
       
 80961 -	      ng += 2;
       
 80962 -	      pgr += 2;
       
 80963 -	    }
       
 80964 -	  else
       
 80965 -	    {
       
 80966 -	      if (((long) pst) & 4)
       
 80967 -		pst++;
       
 80968 -	      avalue[i] = pst;
       
 80969 -	      pst += 2;
       
 80970 -	      ng = 8;
       
 80971 -	    }
       
 80972 -	  break;
       
 80973 -
       
 80974 -	default:
       
 80975 -		FFI_ASSERT (0);
       
 80976 -	}
       
 80977 -
       
 80978 -      i++;
       
 80979 -    }
       
 80980 -
       
 80981 -
       
 80982 -  (closure->fun) (cif, rvalue, avalue, closure->user_data);
       
 80983 -
       
 80984 -  /* Tell ffi_closure_SYSV how to perform return type promotions.
       
 80985 -     Because the FFI_SYSV ABI returns the structures <= 8 bytes in r3/r4
       
 80986 -     we have to tell ffi_closure_SYSV how to treat them. We combine the base
       
 80987 -     type FFI_SYSV_TYPE_SMALL_STRUCT - 1  with the size of the struct.
       
 80988 -     So a one byte struct gets the return type 16. Return type 1 to 15 are
       
 80989 -     already used and we never have a struct with size zero. That is the reason
       
 80990 -     for the subtraction of 1. See the comment in ffitarget.h about ordering.
       
 80991 -  */
       
 80992 -  if (cif->abi == FFI_SYSV && rtypenum == FFI_TYPE_STRUCT && size <= 8)
       
 80993 -    return (FFI_SYSV_TYPE_SMALL_STRUCT - 1) + size;
       
 80994 -  return rtypenum;
       
 80995 -}
       
 80996 -
       
 80997 -int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *,
       
 80998 -					   unsigned long *, ffi_dblfl *);
       
 80999 -
       
 81000 -int FFI_HIDDEN
       
 81001 -ffi_closure_helper_LINUX64 (ffi_closure *closure, void *rvalue,
       
 81002 -			    unsigned long *pst, ffi_dblfl *pfr)
       
 81003 -{
       
 81004 -  /* rvalue is the pointer to space for return value in closure assembly */
       
 81005 -  /* pst is the pointer to parameter save area
       
 81006 -     (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */
       
 81007 -  /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */
       
 81008 -
       
 81009 -  void **avalue;
       
 81010 -  ffi_type **arg_types;
       
 81011 -  unsigned long i, avn, nfixedargs;
       
 81012 -  ffi_cif *cif;
       
 81013 -  ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64;
       
 81014 -#ifdef __STRUCT_PARM_ALIGN__
       
 81015 -  unsigned long align;
       
 81016 -#endif
       
 81017 -
       
 81018 -  cif = closure->cif;
       
 81019 -  avalue = alloca (cif->nargs * sizeof (void *));
       
 81020 -
       
 81021 -  /* Copy the caller's structure return value address so that the
       
 81022 -     closure returns the data directly to the caller.  */
       
 81023 -  if (cif->rtype->type == FFI_TYPE_STRUCT
       
 81024 -      && (cif->flags & FLAG_RETURNS_SMST) == 0)
       
 81025 -    {
       
 81026 -      rvalue = (void *) *pst;
       
 81027 -      pst++;
       
 81028 -    }
       
 81029 -
       
 81030 -  i = 0;
       
 81031 -  avn = cif->nargs;
       
 81032 -  nfixedargs = cif->nfixedargs;
       
 81033 -  arg_types = cif->arg_types;
       
 81034 -
       
 81035 -  /* Grab the addresses of the arguments from the stack frame.  */
       
 81036 -  while (i < avn)
       
 81037 -    {
       
 81038 -      unsigned int elt, elnum;
       
 81039 -
       
 81040 -      switch (arg_types[i]->type)
       
 81041 -	{
       
 81042 -	case FFI_TYPE_SINT8:
       
 81043 -	case FFI_TYPE_UINT8:
       
 81044 -#ifndef __LITTLE_ENDIAN__
       
 81045 -	  avalue[i] = (char *) pst + 7;
       
 81046 -	  pst++;
       
 81047 -	  break;
       
 81048 -#endif
       
 81049 -
       
 81050 -	case FFI_TYPE_SINT16:
       
 81051 -	case FFI_TYPE_UINT16:
       
 81052 -#ifndef __LITTLE_ENDIAN__
       
 81053 -	  avalue[i] = (char *) pst + 6;
       
 81054 -	  pst++;
       
 81055 -	  break;
       
 81056 -#endif
       
 81057 -
       
 81058 -	case FFI_TYPE_SINT32:
       
 81059 -	case FFI_TYPE_UINT32:
       
 81060 -#ifndef __LITTLE_ENDIAN__
       
 81061 -	  avalue[i] = (char *) pst + 4;
       
 81062 -	  pst++;
       
 81063 -	  break;
       
 81064 -#endif
       
 81065 -
       
 81066 -	case FFI_TYPE_SINT64:
       
 81067 -	case FFI_TYPE_UINT64:
       
 81068 -	case FFI_TYPE_POINTER:
       
 81069 -	  avalue[i] = pst;
       
 81070 -	  pst++;
       
 81071 -	  break;
       
 81072 -
       
 81073 -	case FFI_TYPE_STRUCT:
       
 81074 -#ifdef __STRUCT_PARM_ALIGN__
       
 81075 -	  align = arg_types[i]->alignment;
       
 81076 -	  if (align > __STRUCT_PARM_ALIGN__)
       
 81077 -	    align = __STRUCT_PARM_ALIGN__;
       
 81078 -	  if (align > 1)
       
 81079 -	    pst = (unsigned long *) ALIGN ((size_t) pst, align);
       
 81080 -#endif
       
 81081 -	  elt = 0;
       
 81082 -#if _CALL_ELF == 2
       
 81083 -	  elt = discover_homogeneous_aggregate (arg_types[i], &elnum);
       
 81084 -#endif
       
 81085 -	  if (elt)
       
 81086 -	    {
       
 81087 -	      union {
       
 81088 -		void *v;
       
 81089 -		unsigned long *ul;
       
 81090 -		float *f;
       
 81091 -		double *d;
       
 81092 -		size_t p;
       
 81093 -	      } to, from;
       
 81094 -
       
 81095 -	      /* Repackage the aggregate from its parts.  The
       
 81096 -		 aggregate size is not greater than the space taken by
       
 81097 -		 the registers so store back to the register/parameter
       
 81098 -		 save arrays.  */
       
 81099 -	      if (pfr + elnum <= end_pfr)
       
 81100 -		to.v = pfr;
       
 81101 -	      else
       
 81102 -		to.v = pst;
       
 81103 -
       
 81104 -	      avalue[i] = to.v;
       
 81105 -	      from.ul = pst;
       
 81106 -	      if (elt == FFI_TYPE_FLOAT)
       
 81107 -		{
       
 81108 -		  do
       
 81109 -		    {
       
 81110 -		      if (pfr < end_pfr && i < nfixedargs)
       
 81111 -			{
       
 81112 -			  *to.f = (float) pfr->d;
       
 81113 -			  pfr++;
       
 81114 -			}
       
 81115 -		      else
       
 81116 -			*to.f = *from.f;
       
 81117 -		      to.f++;
       
 81118 -		      from.f++;
       
 81119 -		    }
       
 81120 -		  while (--elnum != 0);
       
 81121 -		}
       
 81122 -	      else
       
 81123 -		{
       
 81124 -		  do
       
 81125 -		    {
       
 81126 -		      if (pfr < end_pfr && i < nfixedargs)
       
 81127 -			{
       
 81128 -			  *to.d = pfr->d;
       
 81129 -			  pfr++;
       
 81130 -			}
       
 81131 -		      else
       
 81132 -			*to.d = *from.d;
       
 81133 -		      to.d++;
       
 81134 -		      from.d++;
       
 81135 -		    }
       
 81136 -		  while (--elnum != 0);
       
 81137 -		}
       
 81138 -	    }
       
 81139 -	  else
       
 81140 -	    {
       
 81141 -#ifndef __LITTLE_ENDIAN__
       
 81142 -	      /* Structures with size less than eight bytes are passed
       
 81143 -		 left-padded.  */
       
 81144 -	      if (arg_types[i]->size < 8)
       
 81145 -		avalue[i] = (char *) pst + 8 - arg_types[i]->size;
       
 81146 -	      else
       
 81147 -#endif
       
 81148 -		avalue[i] = pst;
       
 81149 -	    }
       
 81150 -	  pst += (arg_types[i]->size + 7) / 8;
       
 81151 -	  break;
       
 81152 -
       
 81153 -	case FFI_TYPE_FLOAT:
       
 81154 -	  /* unfortunately float values are stored as doubles
       
 81155 -	   * in the ffi_closure_LINUX64 code (since we don't check
       
 81156 -	   * the type in that routine).
       
 81157 -	   */
       
 81158 -
       
 81159 -	  /* there are 13 64bit floating point registers */
       
 81160 -
       
 81161 -	  if (pfr < end_pfr && i < nfixedargs)
       
 81162 -	    {
       
 81163 -	      double temp = pfr->d;
       
 81164 -	      pfr->f = (float) temp;
       
 81165 -	      avalue[i] = pfr;
       
 81166 -	      pfr++;
       
 81167 -	    }
       
 81168 -	  else
       
 81169 -	    avalue[i] = pst;
       
 81170 -	  pst++;
       
 81171 -	  break;
       
 81172 -
       
 81173 -	case FFI_TYPE_DOUBLE:
       
 81174 -	  /* On the outgoing stack all values are aligned to 8 */
       
 81175 -	  /* there are 13 64bit floating point registers */
       
 81176 -
       
 81177 -	  if (pfr < end_pfr && i < nfixedargs)
       
 81178 -	    {
       
 81179 -	      avalue[i] = pfr;
       
 81180 -	      pfr++;
       
 81181 -	    }
       
 81182 -	  else
       
 81183 -	    avalue[i] = pst;
       
 81184 -	  pst++;
       
 81185 -	  break;
       
 81186 -
       
 81187 -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 81188 -	case FFI_TYPE_LONGDOUBLE:
       
 81189 -	  if (pfr + 1 < end_pfr && i + 1 < nfixedargs)
       
 81190 -	    {
       
 81191 -	      avalue[i] = pfr;
       
 81192 -	      pfr += 2;
       
 81193 -	    }
       
 81194 -	  else
       
 81195 -	    {
       
 81196 -	      if (pfr < end_pfr && i < nfixedargs)
       
 81197 -		{
       
 81198 -		  /* Passed partly in f13 and partly on the stack.
       
 81199 -		     Move it all to the stack.  */
       
 81200 -		  *pst = *(unsigned long *) pfr;
       
 81201 -		  pfr++;
       
 81202 -		}
       
 81203 -	      avalue[i] = pst;
       
 81204 -	    }
       
 81205 -	  pst += 2;
       
 81206 -	  break;
       
 81207 -#endif
       
 81208 -
       
 81209 -	default:
       
 81210 -	  FFI_ASSERT (0);
       
 81211 -	}
       
 81212 -
       
 81213 -      i++;
       
 81214 -    }
       
 81215 -
       
 81216 -
       
 81217 -  (closure->fun) (cif, rvalue, avalue, closure->user_data);
       
 81218 -
       
 81219 -  /* Tell ffi_closure_LINUX64 how to perform return type promotions.  */
       
 81220 -  if ((cif->flags & FLAG_RETURNS_SMST) != 0)
       
 81221 -    {
       
 81222 -      if ((cif->flags & FLAG_RETURNS_FP) == 0)
       
 81223 -	return FFI_V2_TYPE_SMALL_STRUCT + cif->rtype->size - 1;
       
 81224 -      else if ((cif->flags & FLAG_RETURNS_64BITS) != 0)
       
 81225 -	return FFI_V2_TYPE_DOUBLE_HOMOG;
       
 81226 -      else
       
 81227 -	return FFI_V2_TYPE_FLOAT_HOMOG;
       
 81228 -    }
       
 81229 -  return cif->rtype->type;
       
 81230 -}
       
 81231 diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c b/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c
       
 81232 --- a/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c
       
 81233 +++ b/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c
       
 81234 @@ -1,14 +1,14 @@
       
 81235  /* -----------------------------------------------------------------------
       
 81236     ffi_darwin.c
       
 81237  
       
 81238     Copyright (C) 1998 Geoffrey Keating
       
 81239     Copyright (C) 2001 John Hornkvist
       
 81240 -   Copyright (C) 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
       
 81241 +   Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
       
 81242  
       
 81243     FFI support for Darwin and AIX.
       
 81244     
       
 81245     Permission is hereby granted, free of charge, to any person obtaining
       
 81246     a copy of this software and associated documentation files (the
       
 81247     ``Software''), to deal in the Software without restriction, including
       
 81248     without limitation the rights to use, copy, modify, merge, publish,
       
 81249     distribute, sublicense, and/or sell copies of the Software, and to
       
 81250 @@ -30,87 +30,112 @@
       
 81251  #include <ffi.h>
       
 81252  #include <ffi_common.h>
       
 81253  
       
 81254  #include <stdlib.h>
       
 81255  
       
 81256  extern void ffi_closure_ASM (void);
       
 81257  
       
 81258  enum {
       
 81259 -  /* The assembly depends on these exact flags.  */
       
 81260 -  FLAG_RETURNS_NOTHING  = 1 << (31-30), /* These go in cr7  */
       
 81261 -  FLAG_RETURNS_FP       = 1 << (31-29),
       
 81262 -  FLAG_RETURNS_64BITS   = 1 << (31-28),
       
 81263 -  FLAG_RETURNS_128BITS  = 1 << (31-31),
       
 81264 +  /* The assembly depends on these exact flags.  
       
 81265 +     For Darwin64 (when FLAG_RETURNS_STRUCT is set):
       
 81266 +       FLAG_RETURNS_FP indicates that the structure embeds FP data.
       
 81267 +       FLAG_RETURNS_128BITS signals a special struct size that is not
       
 81268 +       expanded for float content.  */
       
 81269 +  FLAG_RETURNS_128BITS	= 1 << (31-31), /* These go in cr7  */
       
 81270 +  FLAG_RETURNS_NOTHING	= 1 << (31-30),
       
 81271 +  FLAG_RETURNS_FP	= 1 << (31-29),
       
 81272 +  FLAG_RETURNS_64BITS	= 1 << (31-28),
       
 81273 +
       
 81274 +  FLAG_RETURNS_STRUCT	= 1 << (31-27), /* This goes in cr6  */
       
 81275  
       
 81276    FLAG_ARG_NEEDS_COPY   = 1 << (31- 7),
       
 81277    FLAG_FP_ARGUMENTS     = 1 << (31- 6), /* cr1.eq; specified by ABI  */
       
 81278    FLAG_4_GPR_ARGUMENTS  = 1 << (31- 5),
       
 81279    FLAG_RETVAL_REFERENCE = 1 << (31- 4)
       
 81280  };
       
 81281  
       
 81282  /* About the DARWIN ABI.  */
       
 81283  enum {
       
 81284    NUM_GPR_ARG_REGISTERS = 8,
       
 81285 -  NUM_FPR_ARG_REGISTERS = 13
       
 81286 +  NUM_FPR_ARG_REGISTERS = 13,
       
 81287 +  LINKAGE_AREA_GPRS = 6
       
 81288  };
       
 81289 -enum { ASM_NEEDS_REGISTERS = 4 };
       
 81290 +
       
 81291 +enum { ASM_NEEDS_REGISTERS = 4 }; /* r28-r31 */
       
 81292  
       
 81293  /* ffi_prep_args is called by the assembly routine once stack space
       
 81294     has been allocated for the function's arguments.
       
 81295 +   
       
 81296 +   m32/m64
       
 81297  
       
 81298     The stack layout we want looks like this:
       
 81299  
       
 81300     |   Return address from ffi_call_DARWIN      |	higher addresses
       
 81301     |--------------------------------------------|
       
 81302 -   |   Previous backchain pointer	4	|	stack pointer here
       
 81303 +   |   Previous backchain pointer	4/8	|	stack pointer here
       
 81304     |--------------------------------------------|<+ <<<	on entry to
       
 81305 -   |   Saved r28-r31			4*4	| |	ffi_call_DARWIN
       
 81306 +   |   ASM_NEEDS_REGISTERS=r28-r31   4*(4/8)	| |	ffi_call_DARWIN
       
 81307     |--------------------------------------------| |
       
 81308 -   |   Parameters             (at least 8*4=32) | |
       
 81309 +   |   When we have any FP activity... the	| |
       
 81310 +   |   FPRs occupy NUM_FPR_ARG_REGISTERS slots	| |
       
 81311 +   |   here fp13 .. fp1 from high to low addr.	| |
       
 81312 +   ~						~ ~
       
 81313 +   |   Parameters      (at least 8*4/8=32/64)	| | NUM_GPR_ARG_REGISTERS
       
 81314     |--------------------------------------------| |
       
 81315 -   |   Space for GPR2                   4       | |
       
 81316 +   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
       
 81317     |--------------------------------------------| |	stack	|
       
 81318 -   |   Reserved                       2*4       | |	grows	|
       
 81319 +   |   Reserved                       2*4/8	| |	grows	|
       
 81320     |--------------------------------------------| |	down	V
       
 81321 -   |   Space for callee's LR		4	| |
       
 81322 +   |   Space for callee's LR		4/8	| |
       
 81323     |--------------------------------------------| |	lower addresses
       
 81324 -   |   Saved CR                         4       | |
       
 81325 +   |   Saved CR [low word for m64]      4/8	| |
       
 81326     |--------------------------------------------| |     stack pointer here
       
 81327 -   |   Current backchain pointer	4	|-/	during
       
 81328 +   |   Current backchain pointer	4/8	|-/	during
       
 81329     |--------------------------------------------|   <<<	ffi_call_DARWIN
       
 81330  
       
 81331     */
       
 81332  
       
 81333 +#if defined(POWERPC_DARWIN64)
       
 81334 +static void
       
 81335 +darwin64_pass_struct_by_value 
       
 81336 +  (ffi_type *, char *, unsigned, unsigned *, double **, unsigned long **);
       
 81337 +#endif
       
 81338 +
       
 81339 +/* This depends on GPR_SIZE = sizeof (unsigned long) */
       
 81340 +
       
 81341  void
       
 81342  ffi_prep_args (extended_cif *ecif, unsigned long *const stack)
       
 81343  {
       
 81344    const unsigned bytes = ecif->cif->bytes;
       
 81345    const unsigned flags = ecif->cif->flags;
       
 81346    const unsigned nargs = ecif->cif->nargs;
       
 81347 +#if !defined(POWERPC_DARWIN64) 
       
 81348    const ffi_abi abi = ecif->cif->abi;
       
 81349 +#endif
       
 81350  
       
 81351    /* 'stacktop' points at the previous backchain pointer.  */
       
 81352    unsigned long *const stacktop = stack + (bytes / sizeof(unsigned long));
       
 81353  
       
 81354    /* 'fpr_base' points at the space for fpr1, and grows upwards as
       
 81355       we use FPR registers.  */
       
 81356    double *fpr_base = (double *) (stacktop - ASM_NEEDS_REGISTERS) - NUM_FPR_ARG_REGISTERS;
       
 81357 -  int fparg_count = 0;
       
 81358 -
       
 81359 +  int gp_count = 0, fparg_count = 0;
       
 81360  
       
 81361    /* 'next_arg' grows up as we put parameters in it.  */
       
 81362 -  unsigned long *next_arg = stack + 6; /* 6 reserved positions.  */
       
 81363 +  unsigned long *next_arg = stack + LINKAGE_AREA_GPRS; /* 6 reserved positions.  */
       
 81364  
       
 81365    int i;
       
 81366    double double_tmp;
       
 81367    void **p_argv = ecif->avalue;
       
 81368    unsigned long gprvalue;
       
 81369    ffi_type** ptr = ecif->cif->arg_types;
       
 81370 +#if !defined(POWERPC_DARWIN64) 
       
 81371    char *dest_cpy;
       
 81372 +#endif
       
 81373    unsigned size_al = 0;
       
 81374  
       
 81375    /* Check that everything starts aligned properly.  */
       
 81376    FFI_ASSERT(((unsigned) (char *) stack & 0xF) == 0);
       
 81377    FFI_ASSERT(((unsigned) (char *) stacktop & 0xF) == 0);
       
 81378    FFI_ASSERT((bytes & 0xF) == 0);
       
 81379  
       
 81380    /* Deal with return values that are actually pass-by-reference.
       
 81381 @@ -125,78 +150,95 @@ ffi_prep_args (extended_cif *ecif, unsig
       
 81382      {
       
 81383        switch ((*ptr)->type)
       
 81384  	{
       
 81385  	/* If a floating-point parameter appears before all of the general-
       
 81386  	   purpose registers are filled, the corresponding GPRs that match
       
 81387  	   the size of the floating-point parameter are skipped.  */
       
 81388  	case FFI_TYPE_FLOAT:
       
 81389  	  double_tmp = *(float *) *p_argv;
       
 81390 -	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
       
 81391 -	    *(double *)next_arg = double_tmp;
       
 81392 -	  else
       
 81393 +	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
       
 81394  	    *fpr_base++ = double_tmp;
       
 81395 +#if defined(POWERPC_DARWIN)
       
 81396 +	  *(float *)next_arg = *(float *) *p_argv;
       
 81397 +#else
       
 81398 +	  *(double *)next_arg = double_tmp;
       
 81399 +#endif
       
 81400  	  next_arg++;
       
 81401 +	  gp_count++;
       
 81402  	  fparg_count++;
       
 81403  	  FFI_ASSERT(flags & FLAG_FP_ARGUMENTS);
       
 81404  	  break;
       
 81405  
       
 81406  	case FFI_TYPE_DOUBLE:
       
 81407  	  double_tmp = *(double *) *p_argv;
       
 81408 -	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
       
 81409 -	    *(double *)next_arg = double_tmp;
       
 81410 -	  else
       
 81411 +	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
       
 81412  	    *fpr_base++ = double_tmp;
       
 81413 +	  *(double *)next_arg = double_tmp;
       
 81414  #ifdef POWERPC64
       
 81415  	  next_arg++;
       
 81416 +	  gp_count++;
       
 81417  #else
       
 81418  	  next_arg += 2;
       
 81419 +	  gp_count += 2;
       
 81420  #endif
       
 81421  	  fparg_count++;
       
 81422  	  FFI_ASSERT(flags & FLAG_FP_ARGUMENTS);
       
 81423  	  break;
       
 81424  
       
 81425  #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 81426  
       
 81427  	case FFI_TYPE_LONGDOUBLE:
       
 81428 -#ifdef POWERPC64
       
 81429 +#  if defined(POWERPC64) && !defined(POWERPC_DARWIN64)
       
 81430 +	  /* ??? This will exceed the regs count when the value starts at fp13
       
 81431 +	     and it will not put the extra bit on the stack.  */
       
 81432  	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
       
 81433  	    *(long double *) fpr_base++ = *(long double *) *p_argv;
       
 81434  	  else
       
 81435  	    *(long double *) next_arg = *(long double *) *p_argv;
       
 81436  	  next_arg += 2;
       
 81437  	  fparg_count += 2;
       
 81438 -#else
       
 81439 +#  else
       
 81440  	  double_tmp = ((double *) *p_argv)[0];
       
 81441  	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
       
 81442  	    *fpr_base++ = double_tmp;
       
 81443 -	  else
       
 81444 -	    *(double *) next_arg = double_tmp;
       
 81445 +	  *(double *) next_arg = double_tmp;
       
 81446 +#    if defined(POWERPC_DARWIN64)
       
 81447 +	  next_arg++;
       
 81448 +	  gp_count++;
       
 81449 +#    else
       
 81450  	  next_arg += 2;
       
 81451 +	  gp_count += 2;
       
 81452 +#    endif
       
 81453  	  fparg_count++;
       
 81454 -
       
 81455  	  double_tmp = ((double *) *p_argv)[1];
       
 81456  	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
       
 81457  	    *fpr_base++ = double_tmp;
       
 81458 -	  else
       
 81459 -	    *(double *) next_arg = double_tmp;
       
 81460 +	  *(double *) next_arg = double_tmp;
       
 81461 +#    if defined(POWERPC_DARWIN64)
       
 81462 +	  next_arg++;
       
 81463 +	  gp_count++;
       
 81464 +#    else
       
 81465  	  next_arg += 2;
       
 81466 +	  gp_count += 2;
       
 81467 +#    endif
       
 81468  	  fparg_count++;
       
 81469 -#endif
       
 81470 +#  endif
       
 81471  	  FFI_ASSERT(flags & FLAG_FP_ARGUMENTS);
       
 81472  	  break;
       
 81473  #endif
       
 81474  	case FFI_TYPE_UINT64:
       
 81475  	case FFI_TYPE_SINT64:
       
 81476  #ifdef POWERPC64
       
 81477  	  gprvalue = *(long long *) *p_argv;
       
 81478  	  goto putgpr;
       
 81479  #else
       
 81480  	  *(long long *) next_arg = *(long long *) *p_argv;
       
 81481  	  next_arg += 2;
       
 81482 +	  gp_count += 2;
       
 81483  #endif
       
 81484  	  break;
       
 81485  	case FFI_TYPE_POINTER:
       
 81486  	  gprvalue = *(unsigned long *) *p_argv;
       
 81487  	  goto putgpr;
       
 81488  	case FFI_TYPE_UINT8:
       
 81489  	  gprvalue = *(unsigned char *) *p_argv;
       
 81490  	  goto putgpr;
       
 81491 @@ -206,101 +248,373 @@ ffi_prep_args (extended_cif *ecif, unsig
       
 81492  	case FFI_TYPE_UINT16:
       
 81493  	  gprvalue = *(unsigned short *) *p_argv;
       
 81494  	  goto putgpr;
       
 81495  	case FFI_TYPE_SINT16:
       
 81496  	  gprvalue = *(signed short *) *p_argv;
       
 81497  	  goto putgpr;
       
 81498  
       
 81499  	case FFI_TYPE_STRUCT:
       
 81500 -#ifdef POWERPC64
       
 81501 -	  dest_cpy = (char *) next_arg;
       
 81502  	  size_al = (*ptr)->size;
       
 81503 -	  if ((*ptr)->elements[0]->type == 3)
       
 81504 -	    size_al = ALIGN((*ptr)->size, 8);
       
 81505 -	  if (size_al < 3 && abi == FFI_DARWIN)
       
 81506 -	    dest_cpy += 4 - size_al;
       
 81507 -
       
 81508 -	  memcpy ((char *) dest_cpy, (char *) *p_argv, size_al);
       
 81509 -	  next_arg += (size_al + 7) / 8;
       
 81510 +#if defined(POWERPC_DARWIN64)
       
 81511 +	  next_arg = (unsigned long *)ALIGN((char *)next_arg, (*ptr)->alignment);
       
 81512 +	  darwin64_pass_struct_by_value (*ptr, (char *) *p_argv, 
       
 81513 +					 (unsigned) size_al,
       
 81514 +					 (unsigned int *) &fparg_count,
       
 81515 +					 &fpr_base, &next_arg);
       
 81516  #else
       
 81517  	  dest_cpy = (char *) next_arg;
       
 81518  
       
 81519 +	  /* If the first member of the struct is a double, then include enough
       
 81520 +	     padding in the struct size to align it to double-word.  */
       
 81521 +	  if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE)
       
 81522 +	    size_al = ALIGN((*ptr)->size, 8);
       
 81523 +
       
 81524 +#  if defined(POWERPC64) 
       
 81525 +	  FFI_ASSERT (abi != FFI_DARWIN);
       
 81526 +	  memcpy ((char *) dest_cpy, (char *) *p_argv, size_al);
       
 81527 +	  next_arg += (size_al + 7) / 8;
       
 81528 +#  else
       
 81529  	  /* Structures that match the basic modes (QI 1 byte, HI 2 bytes,
       
 81530  	     SI 4 bytes) are aligned as if they were those modes.
       
 81531  	     Structures with 3 byte in size are padded upwards.  */
       
 81532 -	  size_al = (*ptr)->size;
       
 81533 -	  /* If the first member of the struct is a double, then align
       
 81534 -	     the struct to double-word.  */
       
 81535 -	  if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE)
       
 81536 -	    size_al = ALIGN((*ptr)->size, 8);
       
 81537  	  if (size_al < 3 && abi == FFI_DARWIN)
       
 81538  	    dest_cpy += 4 - size_al;
       
 81539  
       
 81540  	  memcpy((char *) dest_cpy, (char *) *p_argv, size_al);
       
 81541  	  next_arg += (size_al + 3) / 4;
       
 81542 +#  endif
       
 81543  #endif
       
 81544  	  break;
       
 81545  
       
 81546  	case FFI_TYPE_INT:
       
 81547  	case FFI_TYPE_SINT32:
       
 81548  	  gprvalue = *(signed int *) *p_argv;
       
 81549  	  goto putgpr;
       
 81550  
       
 81551  	case FFI_TYPE_UINT32:
       
 81552  	  gprvalue = *(unsigned int *) *p_argv;
       
 81553  	putgpr:
       
 81554  	  *next_arg++ = gprvalue;
       
 81555 +	  gp_count++;
       
 81556  	  break;
       
 81557  	default:
       
 81558  	  break;
       
 81559  	}
       
 81560      }
       
 81561  
       
 81562    /* Check that we didn't overrun the stack...  */
       
 81563 -  //FFI_ASSERT(gpr_base <= stacktop - ASM_NEEDS_REGISTERS);
       
 81564 -  //FFI_ASSERT((unsigned *)fpr_base
       
 81565 -  //	     <= stacktop - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
       
 81566 -  //FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);
       
 81567 +  /* FFI_ASSERT(gpr_base <= stacktop - ASM_NEEDS_REGISTERS);
       
 81568 +     FFI_ASSERT((unsigned *)fpr_base
       
 81569 +     	     <= stacktop - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
       
 81570 +     FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);  */
       
 81571  }
       
 81572  
       
 81573 +#if defined(POWERPC_DARWIN64)
       
 81574 +
       
 81575 +/* See if we can put some of the struct into fprs.
       
 81576 +   This should not be called for structures of size 16 bytes, since these are not
       
 81577 +   broken out this way.  */
       
 81578 +static void
       
 81579 +darwin64_scan_struct_for_floats (ffi_type *s, unsigned *nfpr)
       
 81580 +{
       
 81581 +  int i;
       
 81582 +
       
 81583 +  FFI_ASSERT (s->type == FFI_TYPE_STRUCT)
       
 81584 +
       
 81585 +  for (i = 0; s->elements[i] != NULL; i++)
       
 81586 +    {
       
 81587 +      ffi_type *p = s->elements[i];
       
 81588 +      switch (p->type)
       
 81589 +	{
       
 81590 +	  case FFI_TYPE_STRUCT:
       
 81591 +	    darwin64_scan_struct_for_floats (p, nfpr);
       
 81592 +	    break;
       
 81593 +	  case FFI_TYPE_LONGDOUBLE:
       
 81594 +	    (*nfpr) += 2;
       
 81595 +	    break;
       
 81596 +	  case FFI_TYPE_DOUBLE:
       
 81597 +	  case FFI_TYPE_FLOAT:
       
 81598 +	    (*nfpr) += 1;
       
 81599 +	    break;
       
 81600 +	  default:
       
 81601 +	    break;    
       
 81602 +	}
       
 81603 +    }
       
 81604 +}
       
 81605 +
       
 81606 +static int
       
 81607 +darwin64_struct_size_exceeds_gprs_p (ffi_type *s, char *src, unsigned *nfpr)
       
 81608 +{
       
 81609 +  unsigned struct_offset=0, i;
       
 81610 +
       
 81611 +  for (i = 0; s->elements[i] != NULL; i++)
       
 81612 +    {
       
 81613 +      char *item_base;
       
 81614 +      ffi_type *p = s->elements[i];
       
 81615 +      /* Find the start of this item (0 for the first one).  */
       
 81616 +      if (i > 0)
       
 81617 +        struct_offset = ALIGN(struct_offset, p->alignment);
       
 81618 +
       
 81619 +      item_base = src + struct_offset;
       
 81620 +
       
 81621 +      switch (p->type)
       
 81622 +	{
       
 81623 +	  case FFI_TYPE_STRUCT:
       
 81624 +	    if (darwin64_struct_size_exceeds_gprs_p (p, item_base, nfpr))
       
 81625 +	      return 1;
       
 81626 +	    break;
       
 81627 +	  case FFI_TYPE_LONGDOUBLE:
       
 81628 +	    if (*nfpr >= NUM_FPR_ARG_REGISTERS)
       
 81629 +	      return 1;
       
 81630 +	    (*nfpr) += 1;
       
 81631 +	    item_base += 8;
       
 81632 +	  /* FALL THROUGH */
       
 81633 +	  case FFI_TYPE_DOUBLE:
       
 81634 +	    if (*nfpr >= NUM_FPR_ARG_REGISTERS)
       
 81635 +	      return 1;
       
 81636 +	    (*nfpr) += 1;
       
 81637 +	    break;
       
 81638 +	  case FFI_TYPE_FLOAT:
       
 81639 +	    if (*nfpr >= NUM_FPR_ARG_REGISTERS)
       
 81640 +	      return 1;
       
 81641 +	    (*nfpr) += 1;
       
 81642 +	    break;
       
 81643 +	  default:
       
 81644 +	    /* If we try and place any item, that is non-float, once we've
       
 81645 +	       exceeded the 8 GPR mark, then we can't fit the struct.  */
       
 81646 +	    if ((unsigned long)item_base >= 8*8) 
       
 81647 +	      return 1;
       
 81648 +	    break;    
       
 81649 +	}
       
 81650 +      /* now count the size of what we just used.  */
       
 81651 +      struct_offset += p->size;
       
 81652 +    }
       
 81653 +  return 0;
       
 81654 +}
       
 81655 +
       
 81656 +/* Can this struct be returned by value?  */
       
 81657 +int 
       
 81658 +darwin64_struct_ret_by_value_p (ffi_type *s)
       
 81659 +{
       
 81660 +  unsigned nfp = 0;
       
 81661 +
       
 81662 +  FFI_ASSERT (s && s->type == FFI_TYPE_STRUCT);
       
 81663 +  
       
 81664 +  /* The largest structure we can return is 8long + 13 doubles.  */
       
 81665 +  if (s->size > 168)
       
 81666 +    return 0;
       
 81667 +  
       
 81668 +  /* We can't pass more than 13 floats.  */
       
 81669 +  darwin64_scan_struct_for_floats (s, &nfp);
       
 81670 +  if (nfp > 13)
       
 81671 +    return 0;
       
 81672 +  
       
 81673 +  /* If there are not too many floats, and the struct is
       
 81674 +     small enough to accommodate in the GPRs, then it must be OK.  */
       
 81675 +  if (s->size <= 64)
       
 81676 +    return 1;
       
 81677 +  
       
 81678 +  /* Well, we have to look harder.  */
       
 81679 +  nfp = 0;
       
 81680 +  if (darwin64_struct_size_exceeds_gprs_p (s, NULL, &nfp))
       
 81681 +    return 0;
       
 81682 +  
       
 81683 +  return 1;
       
 81684 +}
       
 81685 +
       
 81686 +void
       
 81687 +darwin64_pass_struct_floats (ffi_type *s, char *src, 
       
 81688 +			     unsigned *nfpr, double **fprs)
       
 81689 +{
       
 81690 +  int i;
       
 81691 +  double *fpr_base = *fprs;
       
 81692 +  unsigned struct_offset = 0;
       
 81693 +
       
 81694 +  /* We don't assume anything about the alignment of the source.  */
       
 81695 +  for (i = 0; s->elements[i] != NULL; i++)
       
 81696 +    {
       
 81697 +      char *item_base;
       
 81698 +      ffi_type *p = s->elements[i];
       
 81699 +      /* Find the start of this item (0 for the first one).  */
       
 81700 +      if (i > 0)
       
 81701 +        struct_offset = ALIGN(struct_offset, p->alignment);
       
 81702 +      item_base = src + struct_offset;
       
 81703 +
       
 81704 +      switch (p->type)
       
 81705 +	{
       
 81706 +	  case FFI_TYPE_STRUCT:
       
 81707 +	    darwin64_pass_struct_floats (p, item_base, nfpr,
       
 81708 +					   &fpr_base);
       
 81709 +	    break;
       
 81710 +	  case FFI_TYPE_LONGDOUBLE:
       
 81711 +	    if (*nfpr < NUM_FPR_ARG_REGISTERS)
       
 81712 +	      *fpr_base++ = *(double *)item_base;
       
 81713 +	    (*nfpr) += 1;
       
 81714 +	    item_base += 8;
       
 81715 +	  /* FALL THROUGH */
       
 81716 +	  case FFI_TYPE_DOUBLE:
       
 81717 +	    if (*nfpr < NUM_FPR_ARG_REGISTERS)
       
 81718 +	      *fpr_base++ = *(double *)item_base;
       
 81719 +	    (*nfpr) += 1;
       
 81720 +	    break;
       
 81721 +	  case FFI_TYPE_FLOAT:
       
 81722 +	    if (*nfpr < NUM_FPR_ARG_REGISTERS)
       
 81723 +	      *fpr_base++ = (double) *(float *)item_base;
       
 81724 +	    (*nfpr) += 1;
       
 81725 +	    break;
       
 81726 +	  default:
       
 81727 +	    break;    
       
 81728 +	}
       
 81729 +      /* now count the size of what we just used.  */
       
 81730 +      struct_offset += p->size;
       
 81731 +    }
       
 81732 +  /* Update the scores.  */
       
 81733 +  *fprs = fpr_base;
       
 81734 +}
       
 81735 +
       
 81736 +/* Darwin64 special rules.
       
 81737 +   Break out a struct into params and float registers.  */
       
 81738 +static void
       
 81739 +darwin64_pass_struct_by_value (ffi_type *s, char *src, unsigned size,
       
 81740 +			       unsigned *nfpr, double **fprs, unsigned long **arg)
       
 81741 +{
       
 81742 +  unsigned long *next_arg = *arg;
       
 81743 +  char *dest_cpy = (char *)next_arg;
       
 81744 +
       
 81745 +  FFI_ASSERT (s->type == FFI_TYPE_STRUCT)
       
 81746 +
       
 81747 +  if (!size)
       
 81748 +    return;
       
 81749 +
       
 81750 +  /* First... special cases.  */
       
 81751 +  if (size < 3
       
 81752 +      || (size == 4 
       
 81753 +	  && s->elements[0] 
       
 81754 +	  && s->elements[0]->type != FFI_TYPE_FLOAT))
       
 81755 +    {
       
 81756 +      /* Must be at least one GPR, padding is unspecified in value, 
       
 81757 +	 let's make it zero.  */
       
 81758 +      *next_arg = 0UL; 
       
 81759 +      dest_cpy += 8 - size;
       
 81760 +      memcpy ((char *) dest_cpy, src, size);
       
 81761 +      next_arg++;
       
 81762 +    }
       
 81763 +  else if (size == 16)
       
 81764 +    {
       
 81765 +      memcpy ((char *) dest_cpy, src, size);
       
 81766 +      next_arg += 2;
       
 81767 +    }
       
 81768 +  else
       
 81769 +    {
       
 81770 +      /* now the general case, we consider embedded floats.  */
       
 81771 +      memcpy ((char *) dest_cpy, src, size);
       
 81772 +      darwin64_pass_struct_floats (s, src, nfpr, fprs);
       
 81773 +      next_arg += (size+7)/8;
       
 81774 +    }
       
 81775 +    
       
 81776 +  *arg = next_arg;
       
 81777 +}
       
 81778 +
       
 81779 +double *
       
 81780 +darwin64_struct_floats_to_mem (ffi_type *s, char *dest, double *fprs, unsigned *nf)
       
 81781 +{
       
 81782 +  int i;
       
 81783 +  unsigned struct_offset = 0;
       
 81784 +
       
 81785 +  /* We don't assume anything about the alignment of the source.  */
       
 81786 +  for (i = 0; s->elements[i] != NULL; i++)
       
 81787 +    {
       
 81788 +      char *item_base;
       
 81789 +      ffi_type *p = s->elements[i];
       
 81790 +      /* Find the start of this item (0 for the first one).  */
       
 81791 +      if (i > 0)
       
 81792 +        struct_offset = ALIGN(struct_offset, p->alignment);
       
 81793 +      item_base = dest + struct_offset;
       
 81794 +
       
 81795 +      switch (p->type)
       
 81796 +	{
       
 81797 +	  case FFI_TYPE_STRUCT:
       
 81798 +	    fprs = darwin64_struct_floats_to_mem (p, item_base, fprs, nf);
       
 81799 +	    break;
       
 81800 +	  case FFI_TYPE_LONGDOUBLE:
       
 81801 +	    if (*nf < NUM_FPR_ARG_REGISTERS)
       
 81802 +	      {
       
 81803 +		*(double *)item_base = *fprs++ ;
       
 81804 +		(*nf) += 1;
       
 81805 +	      }
       
 81806 +	    item_base += 8;
       
 81807 +	  /* FALL THROUGH */
       
 81808 +	  case FFI_TYPE_DOUBLE:
       
 81809 +	    if (*nf < NUM_FPR_ARG_REGISTERS)
       
 81810 +	      {
       
 81811 +		*(double *)item_base = *fprs++ ;
       
 81812 +		(*nf) += 1;
       
 81813 +	      }
       
 81814 +	    break;
       
 81815 +	  case FFI_TYPE_FLOAT:
       
 81816 +	    if (*nf < NUM_FPR_ARG_REGISTERS)
       
 81817 +	      {
       
 81818 +		*(float *)item_base = (float) *fprs++ ;
       
 81819 +		(*nf) += 1;
       
 81820 +	      }
       
 81821 +	    break;
       
 81822 +	  default:
       
 81823 +	    break;    
       
 81824 +	}
       
 81825 +      /* now count the size of what we just used.  */
       
 81826 +      struct_offset += p->size;
       
 81827 +    }
       
 81828 +  return fprs;
       
 81829 +}
       
 81830 +
       
 81831 +#endif
       
 81832 +
       
 81833  /* Adjust the size of S to be correct for Darwin.
       
 81834 -   On Darwin, the first field of a structure has natural alignment.  */
       
 81835 +   On Darwin m32, the first field of a structure has natural alignment.  
       
 81836 +   On Darwin m64, all fields have natural alignment.  */
       
 81837  
       
 81838  static void
       
 81839  darwin_adjust_aggregate_sizes (ffi_type *s)
       
 81840  {
       
 81841    int i;
       
 81842  
       
 81843    if (s->type != FFI_TYPE_STRUCT)
       
 81844      return;
       
 81845  
       
 81846    s->size = 0;
       
 81847    for (i = 0; s->elements[i] != NULL; i++)
       
 81848      {
       
 81849        ffi_type *p;
       
 81850        int align;
       
 81851        
       
 81852        p = s->elements[i];
       
 81853 -      darwin_adjust_aggregate_sizes (p);
       
 81854 -      if (i == 0
       
 81855 -	  && (p->type == FFI_TYPE_UINT64
       
 81856 -	      || p->type == FFI_TYPE_SINT64
       
 81857 -	      || p->type == FFI_TYPE_DOUBLE
       
 81858 -	      || p->alignment == 8))
       
 81859 -	align = 8;
       
 81860 +      if (p->type == FFI_TYPE_STRUCT)
       
 81861 +	darwin_adjust_aggregate_sizes (p);
       
 81862 +#if defined(POWERPC_DARWIN64)
       
 81863 +      /* Natural alignment for all items.  */
       
 81864 +      align = p->alignment;
       
 81865 +#else
       
 81866 +      /* Natural alignment for the first item... */
       
 81867 +      if (i == 0)
       
 81868 +	align = p->alignment;
       
 81869        else if (p->alignment == 16 || p->alignment < 4)
       
 81870 +	/* .. subsequent items with vector or align < 4 have natural align.  */
       
 81871  	align = p->alignment;
       
 81872        else
       
 81873 +	/* .. or align is 4.  */
       
 81874  	align = 4;
       
 81875 +#endif
       
 81876 +      /* Pad, if necessary, before adding the current item.  */
       
 81877        s->size = ALIGN(s->size, align) + p->size;
       
 81878      }
       
 81879    
       
 81880    s->size = ALIGN(s->size, s->alignment);
       
 81881    
       
 81882 +  /* This should not be necessary on m64, but harmless.  */
       
 81883    if (s->elements[0]->type == FFI_TYPE_UINT64
       
 81884        || s->elements[0]->type == FFI_TYPE_SINT64
       
 81885        || s->elements[0]->type == FFI_TYPE_DOUBLE
       
 81886        || s->elements[0]->alignment == 8)
       
 81887      s->alignment = s->alignment > 8 ? s->alignment : 8;
       
 81888    /* Do not add additional tail padding.  */
       
 81889  }
       
 81890  
       
 81891 @@ -342,17 +656,17 @@ aix_adjust_aggregate_sizes (ffi_type *s)
       
 81892  /* Perform machine dependent cif processing.  */
       
 81893  ffi_status
       
 81894  ffi_prep_cif_machdep (ffi_cif *cif)
       
 81895  {
       
 81896    /* All this is for the DARWIN ABI.  */
       
 81897    unsigned i;
       
 81898    ffi_type **ptr;
       
 81899    unsigned bytes;
       
 81900 -  int fparg_count = 0, intarg_count = 0;
       
 81901 +  unsigned fparg_count = 0, intarg_count = 0;
       
 81902    unsigned flags = 0;
       
 81903    unsigned size_al = 0;
       
 81904  
       
 81905    /* All the machine-independent calculation of cif->bytes will be wrong.
       
 81906       All the calculation of structure sizes will also be wrong.
       
 81907       Redo the calculation for DARWIN.  */
       
 81908  
       
 81909    if (cif->abi == FFI_DARWIN)
       
 81910 @@ -367,26 +681,35 @@ ffi_prep_cif_machdep (ffi_cif *cif)
       
 81911        aix_adjust_aggregate_sizes (cif->rtype);
       
 81912        for (i = 0; i < cif->nargs; i++)
       
 81913  	aix_adjust_aggregate_sizes (cif->arg_types[i]);
       
 81914      }
       
 81915  
       
 81916    /* Space for the frame pointer, callee's LR, CR, etc, and for
       
 81917       the asm's temp regs.  */
       
 81918  
       
 81919 -  bytes = (6 + ASM_NEEDS_REGISTERS) * sizeof(long);
       
 81920 +  bytes = (LINKAGE_AREA_GPRS + ASM_NEEDS_REGISTERS) * sizeof(unsigned long);
       
 81921  
       
 81922 -  /* Return value handling.  The rules are as follows:
       
 81923 +  /* Return value handling.  
       
 81924 +    The rules m32 are as follows:
       
 81925       - 32-bit (or less) integer values are returned in gpr3;
       
 81926 -     - Structures of size <= 4 bytes also returned in gpr3;
       
 81927 -     - 64-bit integer values and structures between 5 and 8 bytes are returned
       
 81928 -       in gpr3 and gpr4;
       
 81929 +     - structures of size <= 4 bytes also returned in gpr3;
       
 81930 +     - 64-bit integer values [??? and structures between 5 and 8 bytes] are
       
 81931 +       returned in gpr3 and gpr4;
       
 81932       - Single/double FP values are returned in fpr1;
       
 81933       - Long double FP (if not equivalent to double) values are returned in
       
 81934         fpr1 and fpr2;
       
 81935 +     m64:
       
 81936 +     - 64-bit or smaller integral values are returned in GPR3
       
 81937 +     - Single/double FP values are returned in fpr1;
       
 81938 +     - Long double FP values are returned in fpr1 and fpr2;
       
 81939 +     m64 Structures:
       
 81940 +     - If the structure could be accommodated in registers were it to be the
       
 81941 +       first argument to a routine, then it is returned in those registers.
       
 81942 +     m32/m64 structures otherwise:
       
 81943       - Larger structures values are allocated space and a pointer is passed
       
 81944         as the first argument.  */
       
 81945    switch (cif->rtype->type)
       
 81946      {
       
 81947  
       
 81948  #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 81949      case FFI_TYPE_LONGDOUBLE:
       
 81950        flags |= FLAG_RETURNS_128BITS;
       
 81951 @@ -405,124 +728,193 @@ ffi_prep_cif_machdep (ffi_cif *cif)
       
 81952      case FFI_TYPE_SINT64:
       
 81953  #ifdef POWERPC64
       
 81954      case FFI_TYPE_POINTER:
       
 81955  #endif
       
 81956        flags |= FLAG_RETURNS_64BITS;
       
 81957        break;
       
 81958  
       
 81959      case FFI_TYPE_STRUCT:
       
 81960 +#if defined(POWERPC_DARWIN64)
       
 81961 +      {
       
 81962 +	/* Can we fit the struct into regs?  */
       
 81963 +	if (darwin64_struct_ret_by_value_p (cif->rtype))
       
 81964 +	  {
       
 81965 +	    unsigned nfpr = 0;
       
 81966 +	    flags |= FLAG_RETURNS_STRUCT;
       
 81967 +	    if (cif->rtype->size != 16)
       
 81968 +	      darwin64_scan_struct_for_floats (cif->rtype, &nfpr) ;
       
 81969 +	    else
       
 81970 +	      flags |= FLAG_RETURNS_128BITS;
       
 81971 +	    /* Will be 0 for 16byte struct.  */
       
 81972 +	    if (nfpr)
       
 81973 +	      flags |= FLAG_RETURNS_FP;
       
 81974 +	  }
       
 81975 +	else /* By ref. */
       
 81976 +	  {
       
 81977 +	    flags |= FLAG_RETVAL_REFERENCE;
       
 81978 +	    flags |= FLAG_RETURNS_NOTHING;
       
 81979 +	    intarg_count++;
       
 81980 +	  }
       
 81981 +      }
       
 81982 +#elif defined(DARWIN_PPC)
       
 81983 +      if (cif->rtype->size <= 4)
       
 81984 +	flags |= FLAG_RETURNS_STRUCT;
       
 81985 +      else /* else by reference.  */
       
 81986 +	{
       
 81987 +	  flags |= FLAG_RETVAL_REFERENCE;
       
 81988 +	  flags |= FLAG_RETURNS_NOTHING;
       
 81989 +	  intarg_count++;
       
 81990 +	}
       
 81991 +#else /* assume we pass by ref.  */
       
 81992        flags |= FLAG_RETVAL_REFERENCE;
       
 81993        flags |= FLAG_RETURNS_NOTHING;
       
 81994        intarg_count++;
       
 81995 +#endif
       
 81996        break;
       
 81997      case FFI_TYPE_VOID:
       
 81998        flags |= FLAG_RETURNS_NOTHING;
       
 81999        break;
       
 82000  
       
 82001      default:
       
 82002        /* Returns 32-bit integer, or similar.  Nothing to do here.  */
       
 82003        break;
       
 82004      }
       
 82005  
       
 82006    /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the
       
 82007       first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest
       
 82008 -     goes on the stack.  Structures are passed as a pointer to a copy of
       
 82009 -     the structure. Stuff on the stack needs to keep proper alignment.  */
       
 82010 +     goes on the stack.  
       
 82011 +     ??? Structures are passed as a pointer to a copy of the structure. 
       
 82012 +     Stuff on the stack needs to keep proper alignment.  
       
 82013 +     For m64 the count is effectively of half-GPRs.  */
       
 82014    for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
       
 82015      {
       
 82016 +      unsigned align_words;
       
 82017        switch ((*ptr)->type)
       
 82018  	{
       
 82019  	case FFI_TYPE_FLOAT:
       
 82020  	case FFI_TYPE_DOUBLE:
       
 82021  	  fparg_count++;
       
 82022 +#if !defined(POWERPC_DARWIN64)
       
 82023  	  /* If this FP arg is going on the stack, it must be
       
 82024  	     8-byte-aligned.  */
       
 82025  	  if (fparg_count > NUM_FPR_ARG_REGISTERS
       
 82026 -	      && intarg_count%2 != 0)
       
 82027 +	      && (intarg_count & 0x01) != 0)
       
 82028  	    intarg_count++;
       
 82029 +#endif
       
 82030  	  break;
       
 82031  
       
 82032  #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 82033 -
       
 82034  	case FFI_TYPE_LONGDOUBLE:
       
 82035  	  fparg_count += 2;
       
 82036  	  /* If this FP arg is going on the stack, it must be
       
 82037 -	     8-byte-aligned.  */
       
 82038 -	  if (fparg_count > NUM_FPR_ARG_REGISTERS
       
 82039 -	      && intarg_count%2 != 0)
       
 82040 -	    intarg_count++;
       
 82041 -	  intarg_count +=2;
       
 82042 +	     16-byte-aligned.  */
       
 82043 +	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
       
 82044 +#if defined (POWERPC64)
       
 82045 +	    intarg_count = ALIGN(intarg_count, 2);
       
 82046 +#else
       
 82047 +	    intarg_count = ALIGN(intarg_count, 4);
       
 82048 +#endif
       
 82049  	  break;
       
 82050  #endif
       
 82051  
       
 82052  	case FFI_TYPE_UINT64:
       
 82053  	case FFI_TYPE_SINT64:
       
 82054 +#if defined(POWERPC64)
       
 82055 +	  intarg_count++;
       
 82056 +#else
       
 82057  	  /* 'long long' arguments are passed as two words, but
       
 82058  	     either both words must fit in registers or both go
       
 82059  	     on the stack.  If they go on the stack, they must
       
 82060  	     be 8-byte-aligned.  */
       
 82061  	  if (intarg_count == NUM_GPR_ARG_REGISTERS-1
       
 82062 -	      || (intarg_count >= NUM_GPR_ARG_REGISTERS && intarg_count%2 != 0))
       
 82063 +	      || (intarg_count >= NUM_GPR_ARG_REGISTERS 
       
 82064 +	          && (intarg_count & 0x01) != 0))
       
 82065  	    intarg_count++;
       
 82066  	  intarg_count += 2;
       
 82067 +#endif
       
 82068  	  break;
       
 82069  
       
 82070  	case FFI_TYPE_STRUCT:
       
 82071  	  size_al = (*ptr)->size;
       
 82072 +#if defined(POWERPC_DARWIN64)
       
 82073 +	  align_words = (*ptr)->alignment >> 3;
       
 82074 +	  if (align_words)
       
 82075 +	    intarg_count = ALIGN(intarg_count, align_words);
       
 82076 +	  /* Base size of the struct.  */
       
 82077 +	  intarg_count += (size_al + 7) / 8;
       
 82078 +	  /* If 16 bytes then don't worry about floats.  */
       
 82079 +	  if (size_al != 16)
       
 82080 +	    /* Scan through for floats to be placed in regs.  */
       
 82081 +	    darwin64_scan_struct_for_floats (*ptr, &fparg_count) ;
       
 82082 +#else
       
 82083 +	  align_words = (*ptr)->alignment >> 2;
       
 82084 +	  if (align_words)
       
 82085 +	    intarg_count = ALIGN(intarg_count, align_words);
       
 82086  	  /* If the first member of the struct is a double, then align
       
 82087 -	     the struct to double-word.  */
       
 82088 +	     the struct to double-word. 
       
 82089  	  if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE)
       
 82090 -	    size_al = ALIGN((*ptr)->size, 8);
       
 82091 -#ifdef POWERPC64
       
 82092 +	    size_al = ALIGN((*ptr)->size, 8); */
       
 82093 +#  ifdef POWERPC64
       
 82094  	  intarg_count += (size_al + 7) / 8;
       
 82095 -#else
       
 82096 +#  else
       
 82097  	  intarg_count += (size_al + 3) / 4;
       
 82098 +#  endif
       
 82099  #endif
       
 82100  	  break;
       
 82101  
       
 82102  	default:
       
 82103  	  /* Everything else is passed as a 4-byte word in a GPR, either
       
 82104  	     the object itself or a pointer to it.  */
       
 82105  	  intarg_count++;
       
 82106  	  break;
       
 82107  	}
       
 82108      }
       
 82109  
       
 82110    if (fparg_count != 0)
       
 82111      flags |= FLAG_FP_ARGUMENTS;
       
 82112  
       
 82113 +#if defined(POWERPC_DARWIN64)
       
 82114 +  /* Space to image the FPR registers, if needed - which includes when they might be
       
 82115 +     used in a struct return.  */
       
 82116 +  if (fparg_count != 0 
       
 82117 +      || ((flags & FLAG_RETURNS_STRUCT)
       
 82118 +	   && (flags & FLAG_RETURNS_FP)))
       
 82119 +    bytes += NUM_FPR_ARG_REGISTERS * sizeof(double);
       
 82120 +#else
       
 82121    /* Space for the FPR registers, if needed.  */
       
 82122    if (fparg_count != 0)
       
 82123      bytes += NUM_FPR_ARG_REGISTERS * sizeof(double);
       
 82124 +#endif
       
 82125  
       
 82126    /* Stack space.  */
       
 82127  #ifdef POWERPC64
       
 82128    if ((intarg_count + fparg_count) > NUM_GPR_ARG_REGISTERS)
       
 82129      bytes += (intarg_count + fparg_count) * sizeof(long);
       
 82130  #else
       
 82131    if ((intarg_count + 2 * fparg_count) > NUM_GPR_ARG_REGISTERS)
       
 82132      bytes += (intarg_count + 2 * fparg_count) * sizeof(long);
       
 82133  #endif
       
 82134    else
       
 82135      bytes += NUM_GPR_ARG_REGISTERS * sizeof(long);
       
 82136  
       
 82137    /* The stack space allocated needs to be a multiple of 16 bytes.  */
       
 82138 -  bytes = (bytes + 15) & ~0xF;
       
 82139 +  bytes = ALIGN(bytes, 16) ;
       
 82140  
       
 82141    cif->flags = flags;
       
 82142    cif->bytes = bytes;
       
 82143  
       
 82144    return FFI_OK;
       
 82145  }
       
 82146  
       
 82147  extern void ffi_call_AIX(extended_cif *, long, unsigned, unsigned *,
       
 82148  			 void (*fn)(void), void (*fn2)(void));
       
 82149 +
       
 82150  extern void ffi_call_DARWIN(extended_cif *, long, unsigned, unsigned *,
       
 82151 -			    void (*fn)(void), void (*fn2)(void));
       
 82152 +			    void (*fn)(void), void (*fn2)(void), ffi_type*);
       
 82153  
       
 82154  void
       
 82155  ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 82156  {
       
 82157    extended_cif ecif;
       
 82158  
       
 82159    ecif.cif = cif;
       
 82160    ecif.avalue = avalue;
       
 82161 @@ -541,17 +933,17 @@ ffi_call (ffi_cif *cif, void (*fn)(void)
       
 82162    switch (cif->abi)
       
 82163      {
       
 82164      case FFI_AIX:
       
 82165        ffi_call_AIX(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn,
       
 82166  		   FFI_FN(ffi_prep_args));
       
 82167        break;
       
 82168      case FFI_DARWIN:
       
 82169        ffi_call_DARWIN(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn,
       
 82170 -		      FFI_FN(ffi_prep_args));
       
 82171 +		      FFI_FN(ffi_prep_args), cif->rtype);
       
 82172        break;
       
 82173      default:
       
 82174        FFI_ASSERT(0);
       
 82175        break;
       
 82176      }
       
 82177  }
       
 82178  
       
 82179  static void flush_icache(char *);
       
 82180 @@ -561,123 +953,127 @@ static void flush_range(char *, int);
       
 82181     points to one of these.  */
       
 82182  
       
 82183  typedef struct aix_fd_struct {
       
 82184    void *code_pointer;
       
 82185    void *toc;
       
 82186  } aix_fd;
       
 82187  
       
 82188  /* here I'd like to add the stack frame layout we use in darwin_closure.S
       
 82189 -   and aix_clsoure.S
       
 82190 +   and aix_closure.S
       
 82191  
       
 82192 -   SP previous -> +---------------------------------------+ <--- child frame
       
 82193 -		  | back chain to caller 4                |
       
 82194 -		  +---------------------------------------+ 4
       
 82195 -		  | saved CR 4                            |
       
 82196 -		  +---------------------------------------+ 8
       
 82197 -		  | saved LR 4                            |
       
 82198 -		  +---------------------------------------+ 12
       
 82199 -		  | reserved for compilers 4              |
       
 82200 -		  +---------------------------------------+ 16
       
 82201 -		  | reserved for binders 4                |
       
 82202 -		  +---------------------------------------+ 20
       
 82203 -		  | saved TOC pointer 4                   |
       
 82204 -		  +---------------------------------------+ 24
       
 82205 -		  | always reserved 8*4=32 (previous GPRs)|
       
 82206 -		  | according to the linkage convention   |
       
 82207 -		  | from AIX                              |
       
 82208 -		  +---------------------------------------+ 56
       
 82209 -		  | our FPR area 13*8=104                 |
       
 82210 -		  | f1                                    |
       
 82211 -		  | .                                     |
       
 82212 -		  | f13                                   |
       
 82213 -		  +---------------------------------------+ 160
       
 82214 -		  | result area 8                         |
       
 82215 -		  +---------------------------------------+ 168
       
 82216 -		  | alignement to the next multiple of 16 |
       
 82217 -SP current -->    +---------------------------------------+ 176 <- parent frame
       
 82218 -		  | back chain to caller 4                |
       
 82219 -		  +---------------------------------------+ 180
       
 82220 -		  | saved CR 4                            |
       
 82221 -		  +---------------------------------------+ 184
       
 82222 -		  | saved LR 4                            |
       
 82223 -		  +---------------------------------------+ 188
       
 82224 -		  | reserved for compilers 4              |
       
 82225 -		  +---------------------------------------+ 192
       
 82226 -		  | reserved for binders 4                |
       
 82227 -		  +---------------------------------------+ 196
       
 82228 -		  | saved TOC pointer 4                   |
       
 82229 -		  +---------------------------------------+ 200
       
 82230 -		  | always reserved 8*4=32  we store our  |
       
 82231 -		  | GPRs here                             |
       
 82232 -		  | r3                                    |
       
 82233 -		  | .                                     |
       
 82234 -		  | r10                                   |
       
 82235 -		  +---------------------------------------+ 232
       
 82236 -		  | overflow part                         |
       
 82237 -		  +---------------------------------------+ xxx
       
 82238 -		  | ????                                  |
       
 82239 -		  +---------------------------------------+ xxx
       
 82240 +   m32/m64
       
 82241 +
       
 82242 +   The stack layout looks like this:
       
 82243 +
       
 82244 +   |   Additional params...			| |     Higher address
       
 82245 +   ~						~ ~
       
 82246 +   |   Parameters      (at least 8*4/8=32/64)	| | NUM_GPR_ARG_REGISTERS
       
 82247 +   |--------------------------------------------| |
       
 82248 +   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
       
 82249 +   |--------------------------------------------| |
       
 82250 +   |   Reserved                       2*4/8	| |
       
 82251 +   |--------------------------------------------| |
       
 82252 +   |   Space for callee's LR		4/8	| |
       
 82253 +   |--------------------------------------------| |
       
 82254 +   |   Saved CR [low word for m64]      4/8	| |
       
 82255 +   |--------------------------------------------| |
       
 82256 +   |   Current backchain pointer	4/8	|-/ Parent's frame.
       
 82257 +   |--------------------------------------------| <+ <<< on entry to ffi_closure_ASM
       
 82258 +   |   Result Bytes			16	| |
       
 82259 +   |--------------------------------------------| |
       
 82260 +   ~   padding to 16-byte alignment		~ ~
       
 82261 +   |--------------------------------------------| |
       
 82262 +   |   NUM_FPR_ARG_REGISTERS slots		| |
       
 82263 +   |   here fp13 .. fp1		       13*8	| |
       
 82264 +   |--------------------------------------------| |
       
 82265 +   |   R3..R10			  8*4/8=32/64	| | NUM_GPR_ARG_REGISTERS
       
 82266 +   |--------------------------------------------| |
       
 82267 +   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
       
 82268 +   |--------------------------------------------| |	stack	|
       
 82269 +   |   Reserved [compiler,binder]     2*4/8	| |	grows	|
       
 82270 +   |--------------------------------------------| |	down	V
       
 82271 +   |   Space for callee's LR		4/8	| |
       
 82272 +   |--------------------------------------------| |	lower addresses
       
 82273 +   |   Saved CR [low word for m64]      4/8	| |
       
 82274 +   |--------------------------------------------| |     stack pointer here
       
 82275 +   |   Current backchain pointer	4/8	|-/	during
       
 82276 +   |--------------------------------------------|   <<<	ffi_closure_ASM.
       
 82277  
       
 82278  */
       
 82279 +
       
 82280  ffi_status
       
 82281  ffi_prep_closure_loc (ffi_closure* closure,
       
 82282  		      ffi_cif* cif,
       
 82283  		      void (*fun)(ffi_cif*, void*, void**, void*),
       
 82284  		      void *user_data,
       
 82285  		      void *codeloc)
       
 82286  {
       
 82287    unsigned int *tramp;
       
 82288    struct ffi_aix_trampoline_struct *tramp_aix;
       
 82289    aix_fd *fd;
       
 82290  
       
 82291    switch (cif->abi)
       
 82292      {
       
 82293 -    case FFI_DARWIN:
       
 82294 +      case FFI_DARWIN:
       
 82295  
       
 82296 -      FFI_ASSERT (cif->abi == FFI_DARWIN);
       
 82297 +	FFI_ASSERT (cif->abi == FFI_DARWIN);
       
 82298  
       
 82299 -      tramp = (unsigned int *) &closure->tramp[0];
       
 82300 -      tramp[0] = 0x7c0802a6;  /*   mflr    r0  */
       
 82301 -      tramp[1] = 0x429f000d;  /*   bcl-    20,4*cr7+so,0x10  */
       
 82302 -      tramp[4] = 0x7d6802a6;  /*   mflr    r11  */
       
 82303 -      tramp[5] = 0x818b0000;  /*   lwz     r12,0(r11) function address  */
       
 82304 -      tramp[6] = 0x7c0803a6;  /*   mtlr    r0   */
       
 82305 -      tramp[7] = 0x7d8903a6;  /*   mtctr   r12  */
       
 82306 -      tramp[8] = 0x816b0004;  /*   lwz     r11,4(r11) static chain  */
       
 82307 -      tramp[9] = 0x4e800420;  /*   bctr  */
       
 82308 -      tramp[2] = (unsigned long) ffi_closure_ASM; /* function  */
       
 82309 -      tramp[3] = (unsigned long) codeloc; /* context  */
       
 82310 +	tramp = (unsigned int *) &closure->tramp[0];
       
 82311 +#if defined(POWERPC_DARWIN64)
       
 82312 +	tramp[0] = 0x7c0802a6;  /*   mflr    r0  */
       
 82313 +	tramp[1] = 0x429f0015;  /*   bcl-    20,4*cr7+so,  +0x18 (L1)  */
       
 82314 +	/* We put the addresses here.  */
       
 82315 +	tramp[6] = 0x7d6802a6;  /*L1:   mflr    r11  */
       
 82316 +	tramp[7] = 0xe98b0000;  /*   ld     r12,0(r11) function address  */
       
 82317 +	tramp[8] = 0x7c0803a6;  /*   mtlr    r0   */
       
 82318 +	tramp[9] = 0x7d8903a6;  /*   mtctr   r12  */
       
 82319 +	tramp[10] = 0xe96b0008;  /*   lwz     r11,8(r11) static chain  */
       
 82320 +	tramp[11] = 0x4e800420;  /*   bctr  */
       
 82321  
       
 82322 -      closure->cif = cif;
       
 82323 -      closure->fun = fun;
       
 82324 -      closure->user_data = user_data;
       
 82325 +	*((unsigned long *)&tramp[2]) = (unsigned long) ffi_closure_ASM; /* function  */
       
 82326 +	*((unsigned long *)&tramp[4]) = (unsigned long) codeloc; /* context  */
       
 82327 +#else
       
 82328 +	tramp[0] = 0x7c0802a6;  /*   mflr    r0  */
       
 82329 +	tramp[1] = 0x429f000d;  /*   bcl-    20,4*cr7+so,0x10  */
       
 82330 +	tramp[4] = 0x7d6802a6;  /*   mflr    r11  */
       
 82331 +	tramp[5] = 0x818b0000;  /*   lwz     r12,0(r11) function address  */
       
 82332 +	tramp[6] = 0x7c0803a6;  /*   mtlr    r0   */
       
 82333 +	tramp[7] = 0x7d8903a6;  /*   mtctr   r12  */
       
 82334 +	tramp[8] = 0x816b0004;  /*   lwz     r11,4(r11) static chain  */
       
 82335 +	tramp[9] = 0x4e800420;  /*   bctr  */
       
 82336 +	tramp[2] = (unsigned long) ffi_closure_ASM; /* function  */
       
 82337 +	tramp[3] = (unsigned long) codeloc; /* context  */
       
 82338 +#endif
       
 82339 +	closure->cif = cif;
       
 82340 +	closure->fun = fun;
       
 82341 +	closure->user_data = user_data;
       
 82342  
       
 82343 -      /* Flush the icache. Only necessary on Darwin.  */
       
 82344 -      flush_range(codeloc, FFI_TRAMPOLINE_SIZE);
       
 82345 +	/* Flush the icache. Only necessary on Darwin.  */
       
 82346 +	flush_range(codeloc, FFI_TRAMPOLINE_SIZE);
       
 82347  
       
 82348 -      break;
       
 82349 +	break;
       
 82350  
       
 82351      case FFI_AIX:
       
 82352  
       
 82353        tramp_aix = (struct ffi_aix_trampoline_struct *) (closure->tramp);
       
 82354        fd = (aix_fd *)(void *)ffi_closure_ASM;
       
 82355  
       
 82356        FFI_ASSERT (cif->abi == FFI_AIX);
       
 82357  
       
 82358        tramp_aix->code_pointer = fd->code_pointer;
       
 82359        tramp_aix->toc = fd->toc;
       
 82360        tramp_aix->static_chain = codeloc;
       
 82361        closure->cif = cif;
       
 82362        closure->fun = fun;
       
 82363        closure->user_data = user_data;
       
 82364 +      break;
       
 82365  
       
 82366      default:
       
 82367 -
       
 82368 -      FFI_ASSERT(0);
       
 82369 +      return FFI_BAD_ABI;
       
 82370        break;
       
 82371      }
       
 82372    return FFI_OK;
       
 82373  }
       
 82374  
       
 82375  static void
       
 82376  flush_icache(char *addr)
       
 82377  {
       
 82378 @@ -703,28 +1099,28 @@ flush_range(char * addr1, int size)
       
 82379  }
       
 82380  
       
 82381  typedef union
       
 82382  {
       
 82383    float f;
       
 82384    double d;
       
 82385  } ffi_dblfl;
       
 82386  
       
 82387 -int
       
 82388 +ffi_type *
       
 82389  ffi_closure_helper_DARWIN (ffi_closure *, void *,
       
 82390  			   unsigned long *, ffi_dblfl *);
       
 82391  
       
 82392  /* Basically the trampoline invokes ffi_closure_ASM, and on
       
 82393     entry, r11 holds the address of the closure.
       
 82394     After storing the registers that could possibly contain
       
 82395     parameters to be passed into the stack frame and setting
       
 82396     up space for a return value, ffi_closure_ASM invokes the
       
 82397     following helper function to do most of the work.  */
       
 82398  
       
 82399 -int
       
 82400 +ffi_type *
       
 82401  ffi_closure_helper_DARWIN (ffi_closure *closure, void *rvalue,
       
 82402  			   unsigned long *pgr, ffi_dblfl *pfr)
       
 82403  {
       
 82404    /* rvalue is the pointer to space for return value in closure assembly
       
 82405       pgr is the pointer to where r3-r10 are stored in ffi_closure_ASM
       
 82406       pfr is the pointer to where f1-f13 are stored in ffi_closure_ASM.  */
       
 82407  
       
 82408    typedef double ldbits[2];
       
 82409 @@ -736,97 +1132,132 @@ ffi_closure_helper_DARWIN (ffi_closure *
       
 82410    };
       
 82411  
       
 82412    void **          avalue;
       
 82413    ffi_type **      arg_types;
       
 82414    long             i, avn;
       
 82415    ffi_cif *        cif;
       
 82416    ffi_dblfl *      end_pfr = pfr + NUM_FPR_ARG_REGISTERS;
       
 82417    unsigned         size_al;
       
 82418 +#if defined(POWERPC_DARWIN64)
       
 82419 +  unsigned 	   fpsused = 0;
       
 82420 +#endif
       
 82421  
       
 82422    cif = closure->cif;
       
 82423    avalue = alloca (cif->nargs * sizeof(void *));
       
 82424  
       
 82425 -  /* Copy the caller's structure return value address so that the closure
       
 82426 -     returns the data directly to the caller.  */
       
 82427    if (cif->rtype->type == FFI_TYPE_STRUCT)
       
 82428      {
       
 82429 +#if defined(POWERPC_DARWIN64)
       
 82430 +      if (!darwin64_struct_ret_by_value_p (cif->rtype))
       
 82431 +	{
       
 82432 +    	  /* Won't fit into the regs - return by ref.  */
       
 82433 +	  rvalue = (void *) *pgr;
       
 82434 +	  pgr++;
       
 82435 +	}
       
 82436 +#elif defined(DARWIN_PPC)
       
 82437 +      if (cif->rtype->size > 4)
       
 82438 +	{
       
 82439 +	  rvalue = (void *) *pgr;
       
 82440 +	  pgr++;
       
 82441 +	}
       
 82442 +#else /* assume we return by ref.  */
       
 82443        rvalue = (void *) *pgr;
       
 82444        pgr++;
       
 82445 +#endif
       
 82446      }
       
 82447  
       
 82448    i = 0;
       
 82449    avn = cif->nargs;
       
 82450    arg_types = cif->arg_types;
       
 82451  
       
 82452    /* Grab the addresses of the arguments from the stack frame.  */
       
 82453    while (i < avn)
       
 82454      {
       
 82455        switch (arg_types[i]->type)
       
 82456  	{
       
 82457  	case FFI_TYPE_SINT8:
       
 82458  	case FFI_TYPE_UINT8:
       
 82459 -#ifdef POWERPC64
       
 82460 +#if  defined(POWERPC64)
       
 82461  	  avalue[i] = (char *) pgr + 7;
       
 82462  #else
       
 82463  	  avalue[i] = (char *) pgr + 3;
       
 82464  #endif
       
 82465  	  pgr++;
       
 82466  	  break;
       
 82467  
       
 82468  	case FFI_TYPE_SINT16:
       
 82469  	case FFI_TYPE_UINT16:
       
 82470 -#ifdef POWERPC64
       
 82471 +#if  defined(POWERPC64)
       
 82472  	  avalue[i] = (char *) pgr + 6;
       
 82473  #else
       
 82474  	  avalue[i] = (char *) pgr + 2;
       
 82475  #endif
       
 82476  	  pgr++;
       
 82477  	  break;
       
 82478  
       
 82479  	case FFI_TYPE_SINT32:
       
 82480  	case FFI_TYPE_UINT32:
       
 82481 -#ifdef POWERPC64
       
 82482 +#if  defined(POWERPC64)
       
 82483  	  avalue[i] = (char *) pgr + 4;
       
 82484  #else
       
 82485  	case FFI_TYPE_POINTER:
       
 82486  	  avalue[i] = pgr;
       
 82487  #endif
       
 82488  	  pgr++;
       
 82489  	  break;
       
 82490  
       
 82491  	case FFI_TYPE_STRUCT:
       
 82492 -#ifdef POWERPC64
       
 82493  	  size_al = arg_types[i]->size;
       
 82494 -	  if (arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE)
       
 82495 -	    size_al = ALIGN (arg_types[i]->size, 8);
       
 82496 -	  if (size_al < 3 && cif->abi == FFI_DARWIN)
       
 82497 -	    avalue[i] = (char *) pgr + 8 - size_al;
       
 82498 -	  else
       
 82499 -	    avalue[i] = pgr;
       
 82500 +#if defined(POWERPC_DARWIN64)
       
 82501 +	  pgr = (unsigned long *)ALIGN((char *)pgr, arg_types[i]->alignment);
       
 82502 +	  if (size_al < 3 || size_al == 4)
       
 82503 +	    {
       
 82504 +	      avalue[i] = ((char *)pgr)+8-size_al;
       
 82505 +	      if (arg_types[i]->elements[0]->type == FFI_TYPE_FLOAT
       
 82506 +		  && fpsused < NUM_FPR_ARG_REGISTERS)
       
 82507 +		{
       
 82508 +		  *(float *)pgr = (float) *(double *)pfr;
       
 82509 +		  pfr++;
       
 82510 +		  fpsused++;
       
 82511 +		}
       
 82512 +	    }
       
 82513 +	  else 
       
 82514 +	    {
       
 82515 +	      if (size_al != 16)
       
 82516 +		pfr = (ffi_dblfl *) 
       
 82517 +		    darwin64_struct_floats_to_mem (arg_types[i], (char *)pgr,
       
 82518 +						   (double *)pfr, &fpsused);
       
 82519 +	      avalue[i] = pgr;
       
 82520 +	    }
       
 82521  	  pgr += (size_al + 7) / 8;
       
 82522  #else
       
 82523 -	  /* Structures that match the basic modes (QI 1 byte, HI 2 bytes,
       
 82524 -	     SI 4 bytes) are aligned as if they were those modes.  */
       
 82525 -	  size_al = arg_types[i]->size;
       
 82526  	  /* If the first member of the struct is a double, then align
       
 82527  	     the struct to double-word.  */
       
 82528  	  if (arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE)
       
 82529  	    size_al = ALIGN(arg_types[i]->size, 8);
       
 82530 +#  if defined(POWERPC64)
       
 82531 +	  FFI_ASSERT (cif->abi != FFI_DARWIN);
       
 82532 +	  avalue[i] = pgr;
       
 82533 +	  pgr += (size_al + 7) / 8;
       
 82534 +#  else
       
 82535 +	  /* Structures that match the basic modes (QI 1 byte, HI 2 bytes,
       
 82536 +	     SI 4 bytes) are aligned as if they were those modes.  */
       
 82537  	  if (size_al < 3 && cif->abi == FFI_DARWIN)
       
 82538  	    avalue[i] = (char*) pgr + 4 - size_al;
       
 82539  	  else
       
 82540  	    avalue[i] = pgr;
       
 82541  	  pgr += (size_al + 3) / 4;
       
 82542 +#  endif
       
 82543  #endif
       
 82544  	  break;
       
 82545  
       
 82546  	case FFI_TYPE_SINT64:
       
 82547  	case FFI_TYPE_UINT64:
       
 82548 -#ifdef POWERPC64
       
 82549 +#if  defined(POWERPC64)
       
 82550  	case FFI_TYPE_POINTER:
       
 82551  	  avalue[i] = pgr;
       
 82552  	  pgr++;
       
 82553  	  break;
       
 82554  #else
       
 82555  	  /* Long long ints are passed in two gpr's.  */
       
 82556  	  avalue[i] = pgr;
       
 82557  	  pgr += 2;
       
 82558 @@ -919,10 +1350,10 @@ ffi_closure_helper_DARWIN (ffi_closure *
       
 82559  	  FFI_ASSERT(0);
       
 82560  	}
       
 82561        i++;
       
 82562      }
       
 82563  
       
 82564    (closure->fun) (cif, rvalue, avalue, closure->user_data);
       
 82565  
       
 82566    /* Tell ffi_closure_ASM to perform return type promotions.  */
       
 82567 -  return cif->rtype->type;
       
 82568 +  return cif->rtype;
       
 82569  }
       
 82570 diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_linux64.c b/js/src/ctypes/libffi/src/powerpc/ffi_linux64.c
       
 82571 new file mode 100644
       
 82572 --- /dev/null
       
 82573 +++ b/js/src/ctypes/libffi/src/powerpc/ffi_linux64.c
       
 82574 @@ -0,0 +1,943 @@
       
 82575 +/* -----------------------------------------------------------------------
       
 82576 +   ffi_linux64.c - Copyright (C) 2013 IBM
       
 82577 +                   Copyright (C) 2011 Anthony Green
       
 82578 +                   Copyright (C) 2011 Kyle Moffett
       
 82579 +                   Copyright (C) 2008 Red Hat, Inc
       
 82580 +                   Copyright (C) 2007, 2008 Free Software Foundation, Inc
       
 82581 +                   Copyright (c) 1998 Geoffrey Keating
       
 82582 +
       
 82583 +   PowerPC Foreign Function Interface
       
 82584 +
       
 82585 +   Permission is hereby granted, free of charge, to any person obtaining
       
 82586 +   a copy of this software and associated documentation files (the
       
 82587 +   ``Software''), to deal in the Software without restriction, including
       
 82588 +   without limitation the rights to use, copy, modify, merge, publish,
       
 82589 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 82590 +   permit persons to whom the Software is furnished to do so, subject to
       
 82591 +   the following conditions:
       
 82592 +
       
 82593 +   The above copyright notice and this permission notice shall be included
       
 82594 +   in all copies or substantial portions of the Software.
       
 82595 +
       
 82596 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
       
 82597 +   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 82598 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 82599 +   IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
 82600 +   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
 82601 +   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 82602 +   OTHER DEALINGS IN THE SOFTWARE.
       
 82603 +   ----------------------------------------------------------------------- */
       
 82604 +
       
 82605 +#include "ffi.h"
       
 82606 +
       
 82607 +#ifdef POWERPC64
       
 82608 +#include "ffi_common.h"
       
 82609 +#include "ffi_powerpc.h"
       
 82610 +
       
 82611 +
       
 82612 +/* About the LINUX64 ABI.  */
       
 82613 +enum {
       
 82614 +  NUM_GPR_ARG_REGISTERS64 = 8,
       
 82615 +  NUM_FPR_ARG_REGISTERS64 = 13
       
 82616 +};
       
 82617 +enum { ASM_NEEDS_REGISTERS64 = 4 };
       
 82618 +
       
 82619 +
       
 82620 +#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 82621 +/* Adjust size of ffi_type_longdouble.  */
       
 82622 +void FFI_HIDDEN
       
 82623 +ffi_prep_types_linux64 (ffi_abi abi)
       
 82624 +{
       
 82625 +  if ((abi & (FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128)) == FFI_LINUX)
       
 82626 +    {
       
 82627 +      ffi_type_longdouble.size = 8;
       
 82628 +      ffi_type_longdouble.alignment = 8;
       
 82629 +    }
       
 82630 +  else
       
 82631 +    {
       
 82632 +      ffi_type_longdouble.size = 16;
       
 82633 +      ffi_type_longdouble.alignment = 16;
       
 82634 +    }
       
 82635 +}
       
 82636 +#endif
       
 82637 +
       
 82638 +
       
 82639 +#if _CALL_ELF == 2
       
 82640 +static unsigned int
       
 82641 +discover_homogeneous_aggregate (const ffi_type *t, unsigned int *elnum)
       
 82642 +{
       
 82643 +  switch (t->type)
       
 82644 +    {
       
 82645 +    case FFI_TYPE_FLOAT:
       
 82646 +    case FFI_TYPE_DOUBLE:
       
 82647 +      *elnum = 1;
       
 82648 +      return (int) t->type;
       
 82649 +
       
 82650 +    case FFI_TYPE_STRUCT:;
       
 82651 +      {
       
 82652 +	unsigned int base_elt = 0, total_elnum = 0;
       
 82653 +	ffi_type **el = t->elements;
       
 82654 +	while (*el)
       
 82655 +	  {
       
 82656 +	    unsigned int el_elt, el_elnum = 0;
       
 82657 +	    el_elt = discover_homogeneous_aggregate (*el, &el_elnum);
       
 82658 +	    if (el_elt == 0
       
 82659 +		|| (base_elt && base_elt != el_elt))
       
 82660 +	      return 0;
       
 82661 +	    base_elt = el_elt;
       
 82662 +	    total_elnum += el_elnum;
       
 82663 +	    if (total_elnum > 8)
       
 82664 +	      return 0;
       
 82665 +	    el++;
       
 82666 +	  }
       
 82667 +	*elnum = total_elnum;
       
 82668 +	return base_elt;
       
 82669 +      }
       
 82670 +
       
 82671 +    default:
       
 82672 +      return 0;
       
 82673 +    }
       
 82674 +}
       
 82675 +#endif
       
 82676 +
       
 82677 +
       
 82678 +/* Perform machine dependent cif processing */
       
 82679 +static ffi_status
       
 82680 +ffi_prep_cif_linux64_core (ffi_cif *cif)
       
 82681 +{
       
 82682 +  ffi_type **ptr;
       
 82683 +  unsigned bytes;
       
 82684 +  unsigned i, fparg_count = 0, intarg_count = 0;
       
 82685 +  unsigned flags = cif->flags;
       
 82686 +#if _CALL_ELF == 2
       
 82687 +  unsigned int elt, elnum;
       
 82688 +#endif
       
 82689 +
       
 82690 +#if FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE
       
 82691 +  /* If compiled without long double support..  */
       
 82692 +  if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
       
 82693 +    return FFI_BAD_ABI;
       
 82694 +#endif
       
 82695 +
       
 82696 +  /* The machine-independent calculation of cif->bytes doesn't work
       
 82697 +     for us.  Redo the calculation.  */
       
 82698 +#if _CALL_ELF == 2
       
 82699 +  /* Space for backchain, CR, LR, TOC and the asm's temp regs.  */
       
 82700 +  bytes = (4 + ASM_NEEDS_REGISTERS64) * sizeof (long);
       
 82701 +
       
 82702 +  /* Space for the general registers.  */
       
 82703 +  bytes += NUM_GPR_ARG_REGISTERS64 * sizeof (long);
       
 82704 +#else
       
 82705 +  /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp
       
 82706 +     regs.  */
       
 82707 +  bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long);
       
 82708 +
       
 82709 +  /* Space for the mandatory parm save area and general registers.  */
       
 82710 +  bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long);
       
 82711 +#endif
       
 82712 +
       
 82713 +  /* Return value handling.  */
       
 82714 +  switch (cif->rtype->type)
       
 82715 +    {
       
 82716 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 82717 +    case FFI_TYPE_LONGDOUBLE:
       
 82718 +      if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
       
 82719 +	flags |= FLAG_RETURNS_128BITS;
       
 82720 +      /* Fall through.  */
       
 82721 +#endif
       
 82722 +    case FFI_TYPE_DOUBLE:
       
 82723 +      flags |= FLAG_RETURNS_64BITS;
       
 82724 +      /* Fall through.  */
       
 82725 +    case FFI_TYPE_FLOAT:
       
 82726 +      flags |= FLAG_RETURNS_FP;
       
 82727 +      break;
       
 82728 +
       
 82729 +    case FFI_TYPE_UINT128:
       
 82730 +      flags |= FLAG_RETURNS_128BITS;
       
 82731 +      /* Fall through.  */
       
 82732 +    case FFI_TYPE_UINT64:
       
 82733 +    case FFI_TYPE_SINT64:
       
 82734 +      flags |= FLAG_RETURNS_64BITS;
       
 82735 +      break;
       
 82736 +
       
 82737 +    case FFI_TYPE_STRUCT:
       
 82738 +#if _CALL_ELF == 2
       
 82739 +      elt = discover_homogeneous_aggregate (cif->rtype, &elnum);
       
 82740 +      if (elt)
       
 82741 +	{
       
 82742 +	  if (elt == FFI_TYPE_DOUBLE)
       
 82743 +	    flags |= FLAG_RETURNS_64BITS;
       
 82744 +	  flags |= FLAG_RETURNS_FP | FLAG_RETURNS_SMST;
       
 82745 +	  break;
       
 82746 +	}
       
 82747 +      if (cif->rtype->size <= 16)
       
 82748 +	{
       
 82749 +	  flags |= FLAG_RETURNS_SMST;
       
 82750 +	  break;
       
 82751 +	}
       
 82752 +#endif
       
 82753 +      intarg_count++;
       
 82754 +      flags |= FLAG_RETVAL_REFERENCE;
       
 82755 +      /* Fall through.  */
       
 82756 +    case FFI_TYPE_VOID:
       
 82757 +      flags |= FLAG_RETURNS_NOTHING;
       
 82758 +      break;
       
 82759 +
       
 82760 +    default:
       
 82761 +      /* Returns 32-bit integer, or similar.  Nothing to do here.  */
       
 82762 +      break;
       
 82763 +    }
       
 82764 +
       
 82765 +  for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
       
 82766 +    {
       
 82767 +      unsigned int align;
       
 82768 +
       
 82769 +      switch ((*ptr)->type)
       
 82770 +	{
       
 82771 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 82772 +	case FFI_TYPE_LONGDOUBLE:
       
 82773 +	  if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
       
 82774 +	    {
       
 82775 +	      fparg_count++;
       
 82776 +	      intarg_count++;
       
 82777 +	    }
       
 82778 +	  /* Fall through.  */
       
 82779 +#endif
       
 82780 +	case FFI_TYPE_DOUBLE:
       
 82781 +	case FFI_TYPE_FLOAT:
       
 82782 +	  fparg_count++;
       
 82783 +	  intarg_count++;
       
 82784 +	  if (fparg_count > NUM_FPR_ARG_REGISTERS64)
       
 82785 +	    flags |= FLAG_ARG_NEEDS_PSAVE;
       
 82786 +	  break;
       
 82787 +
       
 82788 +	case FFI_TYPE_STRUCT:
       
 82789 +	  if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0)
       
 82790 +	    {
       
 82791 +	      align = (*ptr)->alignment;
       
 82792 +	      if (align > 16)
       
 82793 +		align = 16;
       
 82794 +	      align = align / 8;
       
 82795 +	      if (align > 1)
       
 82796 +		intarg_count = ALIGN (intarg_count, align);
       
 82797 +	    }
       
 82798 +	  intarg_count += ((*ptr)->size + 7) / 8;
       
 82799 +#if _CALL_ELF == 2
       
 82800 +	  elt = discover_homogeneous_aggregate (*ptr, &elnum);
       
 82801 +	  if (elt)
       
 82802 +	    {
       
 82803 +	      fparg_count += elnum;
       
 82804 +	      if (fparg_count > NUM_FPR_ARG_REGISTERS64)
       
 82805 +		flags |= FLAG_ARG_NEEDS_PSAVE;
       
 82806 +	    }
       
 82807 +	  else
       
 82808 +#endif
       
 82809 +	    {
       
 82810 +	      if (intarg_count > NUM_GPR_ARG_REGISTERS64)
       
 82811 +		flags |= FLAG_ARG_NEEDS_PSAVE;
       
 82812 +	    }
       
 82813 +	  break;
       
 82814 +
       
 82815 +	case FFI_TYPE_POINTER:
       
 82816 +	case FFI_TYPE_UINT64:
       
 82817 +	case FFI_TYPE_SINT64:
       
 82818 +	case FFI_TYPE_INT:
       
 82819 +	case FFI_TYPE_UINT32:
       
 82820 +	case FFI_TYPE_SINT32:
       
 82821 +	case FFI_TYPE_UINT16:
       
 82822 +	case FFI_TYPE_SINT16:
       
 82823 +	case FFI_TYPE_UINT8:
       
 82824 +	case FFI_TYPE_SINT8:
       
 82825 +	  /* Everything else is passed as a 8-byte word in a GPR, either
       
 82826 +	     the object itself or a pointer to it.  */
       
 82827 +	  intarg_count++;
       
 82828 +	  if (intarg_count > NUM_GPR_ARG_REGISTERS64)
       
 82829 +	    flags |= FLAG_ARG_NEEDS_PSAVE;
       
 82830 +	  break;
       
 82831 +	default:
       
 82832 +	  FFI_ASSERT (0);
       
 82833 +	}
       
 82834 +    }
       
 82835 +
       
 82836 +  if (fparg_count != 0)
       
 82837 +    flags |= FLAG_FP_ARGUMENTS;
       
 82838 +  if (intarg_count > 4)
       
 82839 +    flags |= FLAG_4_GPR_ARGUMENTS;
       
 82840 +
       
 82841 +  /* Space for the FPR registers, if needed.  */
       
 82842 +  if (fparg_count != 0)
       
 82843 +    bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double);
       
 82844 +
       
 82845 +  /* Stack space.  */
       
 82846 +#if _CALL_ELF == 2
       
 82847 +  if ((flags & FLAG_ARG_NEEDS_PSAVE) != 0)
       
 82848 +    bytes += intarg_count * sizeof (long);
       
 82849 +#else
       
 82850 +  if (intarg_count > NUM_GPR_ARG_REGISTERS64)
       
 82851 +    bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long);
       
 82852 +#endif
       
 82853 +
       
 82854 +  /* The stack space allocated needs to be a multiple of 16 bytes.  */
       
 82855 +  bytes = (bytes + 15) & ~0xF;
       
 82856 +
       
 82857 +  cif->flags = flags;
       
 82858 +  cif->bytes = bytes;
       
 82859 +
       
 82860 +  return FFI_OK;
       
 82861 +}
       
 82862 +
       
 82863 +ffi_status FFI_HIDDEN
       
 82864 +ffi_prep_cif_linux64 (ffi_cif *cif)
       
 82865 +{
       
 82866 +  if ((cif->abi & FFI_LINUX) != 0)
       
 82867 +    cif->nfixedargs = cif->nargs;
       
 82868 +#if _CALL_ELF != 2
       
 82869 +  else if (cif->abi == FFI_COMPAT_LINUX64)
       
 82870 +    {
       
 82871 +      /* This call is from old code.  Don't touch cif->nfixedargs
       
 82872 +	 since old code will be using a smaller cif.  */
       
 82873 +      cif->flags |= FLAG_COMPAT;
       
 82874 +      /* Translate to new abi value.  */
       
 82875 +      cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128;
       
 82876 +    }
       
 82877 +#endif
       
 82878 +  else
       
 82879 +    return FFI_BAD_ABI;
       
 82880 +  return ffi_prep_cif_linux64_core (cif);
       
 82881 +}
       
 82882 +
       
 82883 +ffi_status FFI_HIDDEN
       
 82884 +ffi_prep_cif_linux64_var (ffi_cif *cif,
       
 82885 +			  unsigned int nfixedargs,
       
 82886 +			  unsigned int ntotalargs MAYBE_UNUSED)
       
 82887 +{
       
 82888 +  if ((cif->abi & FFI_LINUX) != 0)
       
 82889 +    cif->nfixedargs = nfixedargs;
       
 82890 +#if _CALL_ELF != 2
       
 82891 +  else if (cif->abi == FFI_COMPAT_LINUX64)
       
 82892 +    {
       
 82893 +      /* This call is from old code.  Don't touch cif->nfixedargs
       
 82894 +	 since old code will be using a smaller cif.  */
       
 82895 +      cif->flags |= FLAG_COMPAT;
       
 82896 +      /* Translate to new abi value.  */
       
 82897 +      cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128;
       
 82898 +    }
       
 82899 +#endif
       
 82900 +  else
       
 82901 +    return FFI_BAD_ABI;
       
 82902 +#if _CALL_ELF == 2
       
 82903 +  cif->flags |= FLAG_ARG_NEEDS_PSAVE;
       
 82904 +#endif
       
 82905 +  return ffi_prep_cif_linux64_core (cif);
       
 82906 +}
       
 82907 +
       
 82908 +
       
 82909 +/* ffi_prep_args64 is called by the assembly routine once stack space
       
 82910 +   has been allocated for the function's arguments.
       
 82911 +
       
 82912 +   The stack layout we want looks like this:
       
 82913 +
       
 82914 +   |   Ret addr from ffi_call_LINUX64	8bytes	|	higher addresses
       
 82915 +   |--------------------------------------------|
       
 82916 +   |   CR save area			8bytes	|
       
 82917 +   |--------------------------------------------|
       
 82918 +   |   Previous backchain pointer	8	|	stack pointer here
       
 82919 +   |--------------------------------------------|<+ <<<	on entry to
       
 82920 +   |   Saved r28-r31			4*8	| |	ffi_call_LINUX64
       
 82921 +   |--------------------------------------------| |
       
 82922 +   |   GPR registers r3-r10		8*8	| |
       
 82923 +   |--------------------------------------------| |
       
 82924 +   |   FPR registers f1-f13 (optional)	13*8	| |
       
 82925 +   |--------------------------------------------| |
       
 82926 +   |   Parameter save area		        | |
       
 82927 +   |--------------------------------------------| |
       
 82928 +   |   TOC save area			8	| |
       
 82929 +   |--------------------------------------------| |	stack	|
       
 82930 +   |   Linker doubleword		8	| |	grows	|
       
 82931 +   |--------------------------------------------| |	down	V
       
 82932 +   |   Compiler doubleword		8	| |
       
 82933 +   |--------------------------------------------| |	lower addresses
       
 82934 +   |   Space for callee's LR		8	| |
       
 82935 +   |--------------------------------------------| |
       
 82936 +   |   CR save area			8	| |
       
 82937 +   |--------------------------------------------| |	stack pointer here
       
 82938 +   |   Current backchain pointer	8	|-/	during
       
 82939 +   |--------------------------------------------|   <<<	ffi_call_LINUX64
       
 82940 +
       
 82941 +*/
       
 82942 +
       
 82943 +void FFI_HIDDEN
       
 82944 +ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
       
 82945 +{
       
 82946 +  const unsigned long bytes = ecif->cif->bytes;
       
 82947 +  const unsigned long flags = ecif->cif->flags;
       
 82948 +
       
 82949 +  typedef union
       
 82950 +  {
       
 82951 +    char *c;
       
 82952 +    unsigned long *ul;
       
 82953 +    float *f;
       
 82954 +    double *d;
       
 82955 +    size_t p;
       
 82956 +  } valp;
       
 82957 +
       
 82958 +  /* 'stacktop' points at the previous backchain pointer.  */
       
 82959 +  valp stacktop;
       
 82960 +
       
 82961 +  /* 'next_arg' points at the space for gpr3, and grows upwards as
       
 82962 +     we use GPR registers, then continues at rest.  */
       
 82963 +  valp gpr_base;
       
 82964 +  valp gpr_end;
       
 82965 +  valp rest;
       
 82966 +  valp next_arg;
       
 82967 +
       
 82968 +  /* 'fpr_base' points at the space for fpr3, and grows upwards as
       
 82969 +     we use FPR registers.  */
       
 82970 +  valp fpr_base;
       
 82971 +  unsigned int fparg_count;
       
 82972 +
       
 82973 +  unsigned int i, words, nargs, nfixedargs;
       
 82974 +  ffi_type **ptr;
       
 82975 +  double double_tmp;
       
 82976 +  union
       
 82977 +  {
       
 82978 +    void **v;
       
 82979 +    char **c;
       
 82980 +    signed char **sc;
       
 82981 +    unsigned char **uc;
       
 82982 +    signed short **ss;
       
 82983 +    unsigned short **us;
       
 82984 +    signed int **si;
       
 82985 +    unsigned int **ui;
       
 82986 +    unsigned long **ul;
       
 82987 +    float **f;
       
 82988 +    double **d;
       
 82989 +  } p_argv;
       
 82990 +  unsigned long gprvalue;
       
 82991 +  unsigned long align;
       
 82992 +
       
 82993 +  stacktop.c = (char *) stack + bytes;
       
 82994 +  gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64;
       
 82995 +  gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64;
       
 82996 +#if _CALL_ELF == 2
       
 82997 +  rest.ul = stack + 4 + NUM_GPR_ARG_REGISTERS64;
       
 82998 +#else
       
 82999 +  rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64;
       
 83000 +#endif
       
 83001 +  fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64;
       
 83002 +  fparg_count = 0;
       
 83003 +  next_arg.ul = gpr_base.ul;
       
 83004 +
       
 83005 +  /* Check that everything starts aligned properly.  */
       
 83006 +  FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
       
 83007 +  FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
       
 83008 +  FFI_ASSERT ((bytes & 0xF) == 0);
       
 83009 +
       
 83010 +  /* Deal with return values that are actually pass-by-reference.  */
       
 83011 +  if (flags & FLAG_RETVAL_REFERENCE)
       
 83012 +    *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue;
       
 83013 +
       
 83014 +  /* Now for the arguments.  */
       
 83015 +  p_argv.v = ecif->avalue;
       
 83016 +  nargs = ecif->cif->nargs;
       
 83017 +#if _CALL_ELF != 2
       
 83018 +  nfixedargs = (unsigned) -1;
       
 83019 +  if ((flags & FLAG_COMPAT) == 0)
       
 83020 +#endif
       
 83021 +    nfixedargs = ecif->cif->nfixedargs;
       
 83022 +  for (ptr = ecif->cif->arg_types, i = 0;
       
 83023 +       i < nargs;
       
 83024 +       i++, ptr++, p_argv.v++)
       
 83025 +    {
       
 83026 +#if _CALL_ELF == 2
       
 83027 +      unsigned int elt, elnum;
       
 83028 +#endif
       
 83029 +
       
 83030 +      switch ((*ptr)->type)
       
 83031 +	{
       
 83032 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 83033 +	case FFI_TYPE_LONGDOUBLE:
       
 83034 +	  if ((ecif->cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
       
 83035 +	    {
       
 83036 +	      double_tmp = (*p_argv.d)[0];
       
 83037 +	      if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 83038 +		{
       
 83039 +		  *fpr_base.d++ = double_tmp;
       
 83040 +# if _CALL_ELF != 2
       
 83041 +		  if ((flags & FLAG_COMPAT) != 0)
       
 83042 +		    *next_arg.d = double_tmp;
       
 83043 +# endif
       
 83044 +		}
       
 83045 +	      else
       
 83046 +		*next_arg.d = double_tmp;
       
 83047 +	      if (++next_arg.ul == gpr_end.ul)
       
 83048 +		next_arg.ul = rest.ul;
       
 83049 +	      fparg_count++;
       
 83050 +	      double_tmp = (*p_argv.d)[1];
       
 83051 +	      if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 83052 +		{
       
 83053 +		  *fpr_base.d++ = double_tmp;
       
 83054 +# if _CALL_ELF != 2
       
 83055 +		  if ((flags & FLAG_COMPAT) != 0)
       
 83056 +		    *next_arg.d = double_tmp;
       
 83057 +# endif
       
 83058 +		}
       
 83059 +	      else
       
 83060 +		*next_arg.d = double_tmp;
       
 83061 +	      if (++next_arg.ul == gpr_end.ul)
       
 83062 +		next_arg.ul = rest.ul;
       
 83063 +	      fparg_count++;
       
 83064 +	      FFI_ASSERT (__LDBL_MANT_DIG__ == 106);
       
 83065 +	      FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 83066 +	      break;
       
 83067 +	    }
       
 83068 +	  /* Fall through.  */
       
 83069 +#endif
       
 83070 +	case FFI_TYPE_DOUBLE:
       
 83071 +	  double_tmp = **p_argv.d;
       
 83072 +	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 83073 +	    {
       
 83074 +	      *fpr_base.d++ = double_tmp;
       
 83075 +#if _CALL_ELF != 2
       
 83076 +	      if ((flags & FLAG_COMPAT) != 0)
       
 83077 +		*next_arg.d = double_tmp;
       
 83078 +#endif
       
 83079 +	    }
       
 83080 +	  else
       
 83081 +	    *next_arg.d = double_tmp;
       
 83082 +	  if (++next_arg.ul == gpr_end.ul)
       
 83083 +	    next_arg.ul = rest.ul;
       
 83084 +	  fparg_count++;
       
 83085 +	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 83086 +	  break;
       
 83087 +
       
 83088 +	case FFI_TYPE_FLOAT:
       
 83089 +	  double_tmp = **p_argv.f;
       
 83090 +	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 83091 +	    {
       
 83092 +	      *fpr_base.d++ = double_tmp;
       
 83093 +#if _CALL_ELF != 2
       
 83094 +	      if ((flags & FLAG_COMPAT) != 0)
       
 83095 +		*next_arg.f = (float) double_tmp;
       
 83096 +#endif
       
 83097 +	    }
       
 83098 +	  else
       
 83099 +	    *next_arg.f = (float) double_tmp;
       
 83100 +	  if (++next_arg.ul == gpr_end.ul)
       
 83101 +	    next_arg.ul = rest.ul;
       
 83102 +	  fparg_count++;
       
 83103 +	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 83104 +	  break;
       
 83105 +
       
 83106 +	case FFI_TYPE_STRUCT:
       
 83107 +	  if ((ecif->cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0)
       
 83108 +	    {
       
 83109 +	      align = (*ptr)->alignment;
       
 83110 +	      if (align > 16)
       
 83111 +		align = 16;
       
 83112 +	      if (align > 1)
       
 83113 +		next_arg.p = ALIGN (next_arg.p, align);
       
 83114 +	    }
       
 83115 +#if _CALL_ELF == 2
       
 83116 +	  elt = discover_homogeneous_aggregate (*ptr, &elnum);
       
 83117 +	  if (elt)
       
 83118 +	    {
       
 83119 +	      union {
       
 83120 +		void *v;
       
 83121 +		float *f;
       
 83122 +		double *d;
       
 83123 +	      } arg;
       
 83124 +
       
 83125 +	      arg.v = *p_argv.v;
       
 83126 +	      if (elt == FFI_TYPE_FLOAT)
       
 83127 +		{
       
 83128 +		  do
       
 83129 +		    {
       
 83130 +		      double_tmp = *arg.f++;
       
 83131 +		      if (fparg_count < NUM_FPR_ARG_REGISTERS64
       
 83132 +			  && i < nfixedargs)
       
 83133 +			*fpr_base.d++ = double_tmp;
       
 83134 +		      else
       
 83135 +			*next_arg.f = (float) double_tmp;
       
 83136 +		      if (++next_arg.f == gpr_end.f)
       
 83137 +			next_arg.f = rest.f;
       
 83138 +		      fparg_count++;
       
 83139 +		    }
       
 83140 +		  while (--elnum != 0);
       
 83141 +		  if ((next_arg.p & 3) != 0)
       
 83142 +		    {
       
 83143 +		      if (++next_arg.f == gpr_end.f)
       
 83144 +			next_arg.f = rest.f;
       
 83145 +		    }
       
 83146 +		}
       
 83147 +	      else
       
 83148 +		do
       
 83149 +		  {
       
 83150 +		    double_tmp = *arg.d++;
       
 83151 +		    if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
       
 83152 +		      *fpr_base.d++ = double_tmp;
       
 83153 +		    else
       
 83154 +		      *next_arg.d = double_tmp;
       
 83155 +		    if (++next_arg.d == gpr_end.d)
       
 83156 +		      next_arg.d = rest.d;
       
 83157 +		    fparg_count++;
       
 83158 +		  }
       
 83159 +		while (--elnum != 0);
       
 83160 +	    }
       
 83161 +	  else
       
 83162 +#endif
       
 83163 +	    {
       
 83164 +	      words = ((*ptr)->size + 7) / 8;
       
 83165 +	      if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul)
       
 83166 +		{
       
 83167 +		  size_t first = gpr_end.c - next_arg.c;
       
 83168 +		  memcpy (next_arg.c, *p_argv.c, first);
       
 83169 +		  memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first);
       
 83170 +		  next_arg.c = rest.c + words * 8 - first;
       
 83171 +		}
       
 83172 +	      else
       
 83173 +		{
       
 83174 +		  char *where = next_arg.c;
       
 83175 +
       
 83176 +#ifndef __LITTLE_ENDIAN__
       
 83177 +		  /* Structures with size less than eight bytes are passed
       
 83178 +		     left-padded.  */
       
 83179 +		  if ((*ptr)->size < 8)
       
 83180 +		    where += 8 - (*ptr)->size;
       
 83181 +#endif
       
 83182 +		  memcpy (where, *p_argv.c, (*ptr)->size);
       
 83183 +		  next_arg.ul += words;
       
 83184 +		  if (next_arg.ul == gpr_end.ul)
       
 83185 +		    next_arg.ul = rest.ul;
       
 83186 +		}
       
 83187 +	    }
       
 83188 +	  break;
       
 83189 +
       
 83190 +	case FFI_TYPE_UINT8:
       
 83191 +	  gprvalue = **p_argv.uc;
       
 83192 +	  goto putgpr;
       
 83193 +	case FFI_TYPE_SINT8:
       
 83194 +	  gprvalue = **p_argv.sc;
       
 83195 +	  goto putgpr;
       
 83196 +	case FFI_TYPE_UINT16:
       
 83197 +	  gprvalue = **p_argv.us;
       
 83198 +	  goto putgpr;
       
 83199 +	case FFI_TYPE_SINT16:
       
 83200 +	  gprvalue = **p_argv.ss;
       
 83201 +	  goto putgpr;
       
 83202 +	case FFI_TYPE_UINT32:
       
 83203 +	  gprvalue = **p_argv.ui;
       
 83204 +	  goto putgpr;
       
 83205 +	case FFI_TYPE_INT:
       
 83206 +	case FFI_TYPE_SINT32:
       
 83207 +	  gprvalue = **p_argv.si;
       
 83208 +	  goto putgpr;
       
 83209 +
       
 83210 +	case FFI_TYPE_UINT64:
       
 83211 +	case FFI_TYPE_SINT64:
       
 83212 +	case FFI_TYPE_POINTER:
       
 83213 +	  gprvalue = **p_argv.ul;
       
 83214 +	putgpr:
       
 83215 +	  *next_arg.ul++ = gprvalue;
       
 83216 +	  if (next_arg.ul == gpr_end.ul)
       
 83217 +	    next_arg.ul = rest.ul;
       
 83218 +	  break;
       
 83219 +	}
       
 83220 +    }
       
 83221 +
       
 83222 +  FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS
       
 83223 +	      || (next_arg.ul >= gpr_base.ul
       
 83224 +		  && next_arg.ul <= gpr_base.ul + 4));
       
 83225 +}
       
 83226 +
       
 83227 +
       
 83228 +#if _CALL_ELF == 2
       
 83229 +#define MIN_CACHE_LINE_SIZE 8
       
 83230 +
       
 83231 +static void
       
 83232 +flush_icache (char *wraddr, char *xaddr, int size)
       
 83233 +{
       
 83234 +  int i;
       
 83235 +  for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE)
       
 83236 +    __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
       
 83237 +		      : : "r" (xaddr + i), "r" (wraddr + i) : "memory");
       
 83238 +  __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;"
       
 83239 +		    : : "r"(xaddr + size - 1), "r"(wraddr + size - 1)
       
 83240 +		    : "memory");
       
 83241 +}
       
 83242 +#endif
       
 83243 +
       
 83244 +ffi_status
       
 83245 +ffi_prep_closure_loc_linux64 (ffi_closure *closure,
       
 83246 +			      ffi_cif *cif,
       
 83247 +			      void (*fun) (ffi_cif *, void *, void **, void *),
       
 83248 +			      void *user_data,
       
 83249 +			      void *codeloc)
       
 83250 +{
       
 83251 +#if _CALL_ELF == 2
       
 83252 +  unsigned int *tramp = (unsigned int *) &closure->tramp[0];
       
 83253 +
       
 83254 +  if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI)
       
 83255 +    return FFI_BAD_ABI;
       
 83256 +
       
 83257 +  tramp[0] = 0xe96c0018;	/* 0:	ld	11,2f-0b(12)	*/
       
 83258 +  tramp[1] = 0xe98c0010;	/*	ld	12,1f-0b(12)	*/
       
 83259 +  tramp[2] = 0x7d8903a6;	/*	mtctr	12		*/
       
 83260 +  tramp[3] = 0x4e800420;	/*	bctr			*/
       
 83261 +				/* 1:	.quad	function_addr	*/
       
 83262 +				/* 2:	.quad	context		*/
       
 83263 +  *(void **) &tramp[4] = (void *) ffi_closure_LINUX64;
       
 83264 +  *(void **) &tramp[6] = codeloc;
       
 83265 +  flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
       
 83266 +#else
       
 83267 +  void **tramp = (void **) &closure->tramp[0];
       
 83268 +
       
 83269 +  if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI)
       
 83270 +    return FFI_BAD_ABI;
       
 83271 +
       
 83272 +  /* Copy function address and TOC from ffi_closure_LINUX64.  */
       
 83273 +  memcpy (tramp, (char *) ffi_closure_LINUX64, 16);
       
 83274 +  tramp[2] = tramp[1];
       
 83275 +  tramp[1] = codeloc;
       
 83276 +#endif
       
 83277 +
       
 83278 +  closure->cif = cif;
       
 83279 +  closure->fun = fun;
       
 83280 +  closure->user_data = user_data;
       
 83281 +
       
 83282 +  return FFI_OK;
       
 83283 +}
       
 83284 +
       
 83285 +
       
 83286 +int FFI_HIDDEN
       
 83287 +ffi_closure_helper_LINUX64 (ffi_closure *closure, void *rvalue,
       
 83288 +			    unsigned long *pst, ffi_dblfl *pfr)
       
 83289 +{
       
 83290 +  /* rvalue is the pointer to space for return value in closure assembly */
       
 83291 +  /* pst is the pointer to parameter save area
       
 83292 +     (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */
       
 83293 +  /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */
       
 83294 +
       
 83295 +  void **avalue;
       
 83296 +  ffi_type **arg_types;
       
 83297 +  unsigned long i, avn, nfixedargs;
       
 83298 +  ffi_cif *cif;
       
 83299 +  ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64;
       
 83300 +  unsigned long align;
       
 83301 +
       
 83302 +  cif = closure->cif;
       
 83303 +  avalue = alloca (cif->nargs * sizeof (void *));
       
 83304 +
       
 83305 +  /* Copy the caller's structure return value address so that the
       
 83306 +     closure returns the data directly to the caller.  */
       
 83307 +  if (cif->rtype->type == FFI_TYPE_STRUCT
       
 83308 +      && (cif->flags & FLAG_RETURNS_SMST) == 0)
       
 83309 +    {
       
 83310 +      rvalue = (void *) *pst;
       
 83311 +      pst++;
       
 83312 +    }
       
 83313 +
       
 83314 +  i = 0;
       
 83315 +  avn = cif->nargs;
       
 83316 +#if _CALL_ELF != 2
       
 83317 +  nfixedargs = (unsigned) -1;
       
 83318 +  if ((cif->flags & FLAG_COMPAT) == 0)
       
 83319 +#endif
       
 83320 +    nfixedargs = cif->nfixedargs;
       
 83321 +  arg_types = cif->arg_types;
       
 83322 +
       
 83323 +  /* Grab the addresses of the arguments from the stack frame.  */
       
 83324 +  while (i < avn)
       
 83325 +    {
       
 83326 +      unsigned int elt, elnum;
       
 83327 +
       
 83328 +      switch (arg_types[i]->type)
       
 83329 +	{
       
 83330 +	case FFI_TYPE_SINT8:
       
 83331 +	case FFI_TYPE_UINT8:
       
 83332 +#ifndef __LITTLE_ENDIAN__
       
 83333 +	  avalue[i] = (char *) pst + 7;
       
 83334 +	  pst++;
       
 83335 +	  break;
       
 83336 +#endif
       
 83337 +
       
 83338 +	case FFI_TYPE_SINT16:
       
 83339 +	case FFI_TYPE_UINT16:
       
 83340 +#ifndef __LITTLE_ENDIAN__
       
 83341 +	  avalue[i] = (char *) pst + 6;
       
 83342 +	  pst++;
       
 83343 +	  break;
       
 83344 +#endif
       
 83345 +
       
 83346 +	case FFI_TYPE_SINT32:
       
 83347 +	case FFI_TYPE_UINT32:
       
 83348 +#ifndef __LITTLE_ENDIAN__
       
 83349 +	  avalue[i] = (char *) pst + 4;
       
 83350 +	  pst++;
       
 83351 +	  break;
       
 83352 +#endif
       
 83353 +
       
 83354 +	case FFI_TYPE_SINT64:
       
 83355 +	case FFI_TYPE_UINT64:
       
 83356 +	case FFI_TYPE_POINTER:
       
 83357 +	  avalue[i] = pst;
       
 83358 +	  pst++;
       
 83359 +	  break;
       
 83360 +
       
 83361 +	case FFI_TYPE_STRUCT:
       
 83362 +	  if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0)
       
 83363 +	    {
       
 83364 +	      align = arg_types[i]->alignment;
       
 83365 +	      if (align > 16)
       
 83366 +		align = 16;
       
 83367 +	      if (align > 1)
       
 83368 +		pst = (unsigned long *) ALIGN ((size_t) pst, align);
       
 83369 +	    }
       
 83370 +	  elt = 0;
       
 83371 +#if _CALL_ELF == 2
       
 83372 +	  elt = discover_homogeneous_aggregate (arg_types[i], &elnum);
       
 83373 +#endif
       
 83374 +	  if (elt)
       
 83375 +	    {
       
 83376 +	      union {
       
 83377 +		void *v;
       
 83378 +		unsigned long *ul;
       
 83379 +		float *f;
       
 83380 +		double *d;
       
 83381 +		size_t p;
       
 83382 +	      } to, from;
       
 83383 +
       
 83384 +	      /* Repackage the aggregate from its parts.  The
       
 83385 +		 aggregate size is not greater than the space taken by
       
 83386 +		 the registers so store back to the register/parameter
       
 83387 +		 save arrays.  */
       
 83388 +	      if (pfr + elnum <= end_pfr)
       
 83389 +		to.v = pfr;
       
 83390 +	      else
       
 83391 +		to.v = pst;
       
 83392 +
       
 83393 +	      avalue[i] = to.v;
       
 83394 +	      from.ul = pst;
       
 83395 +	      if (elt == FFI_TYPE_FLOAT)
       
 83396 +		{
       
 83397 +		  do
       
 83398 +		    {
       
 83399 +		      if (pfr < end_pfr && i < nfixedargs)
       
 83400 +			{
       
 83401 +			  *to.f = (float) pfr->d;
       
 83402 +			  pfr++;
       
 83403 +			}
       
 83404 +		      else
       
 83405 +			*to.f = *from.f;
       
 83406 +		      to.f++;
       
 83407 +		      from.f++;
       
 83408 +		    }
       
 83409 +		  while (--elnum != 0);
       
 83410 +		}
       
 83411 +	      else
       
 83412 +		{
       
 83413 +		  do
       
 83414 +		    {
       
 83415 +		      if (pfr < end_pfr && i < nfixedargs)
       
 83416 +			{
       
 83417 +			  *to.d = pfr->d;
       
 83418 +			  pfr++;
       
 83419 +			}
       
 83420 +		      else
       
 83421 +			*to.d = *from.d;
       
 83422 +		      to.d++;
       
 83423 +		      from.d++;
       
 83424 +		    }
       
 83425 +		  while (--elnum != 0);
       
 83426 +		}
       
 83427 +	    }
       
 83428 +	  else
       
 83429 +	    {
       
 83430 +#ifndef __LITTLE_ENDIAN__
       
 83431 +	      /* Structures with size less than eight bytes are passed
       
 83432 +		 left-padded.  */
       
 83433 +	      if (arg_types[i]->size < 8)
       
 83434 +		avalue[i] = (char *) pst + 8 - arg_types[i]->size;
       
 83435 +	      else
       
 83436 +#endif
       
 83437 +		avalue[i] = pst;
       
 83438 +	    }
       
 83439 +	  pst += (arg_types[i]->size + 7) / 8;
       
 83440 +	  break;
       
 83441 +
       
 83442 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 83443 +	case FFI_TYPE_LONGDOUBLE:
       
 83444 +	  if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
       
 83445 +	    {
       
 83446 +	      if (pfr + 1 < end_pfr && i + 1 < nfixedargs)
       
 83447 +		{
       
 83448 +		  avalue[i] = pfr;
       
 83449 +		  pfr += 2;
       
 83450 +		}
       
 83451 +	      else
       
 83452 +		{
       
 83453 +		  if (pfr < end_pfr && i < nfixedargs)
       
 83454 +		    {
       
 83455 +		      /* Passed partly in f13 and partly on the stack.
       
 83456 +			 Move it all to the stack.  */
       
 83457 +		      *pst = *(unsigned long *) pfr;
       
 83458 +		      pfr++;
       
 83459 +		    }
       
 83460 +		  avalue[i] = pst;
       
 83461 +		}
       
 83462 +	      pst += 2;
       
 83463 +	      break;
       
 83464 +	    }
       
 83465 +	  /* Fall through.  */
       
 83466 +#endif
       
 83467 +	case FFI_TYPE_DOUBLE:
       
 83468 +	  /* On the outgoing stack all values are aligned to 8 */
       
 83469 +	  /* there are 13 64bit floating point registers */
       
 83470 +
       
 83471 +	  if (pfr < end_pfr && i < nfixedargs)
       
 83472 +	    {
       
 83473 +	      avalue[i] = pfr;
       
 83474 +	      pfr++;
       
 83475 +	    }
       
 83476 +	  else
       
 83477 +	    avalue[i] = pst;
       
 83478 +	  pst++;
       
 83479 +	  break;
       
 83480 +
       
 83481 +	case FFI_TYPE_FLOAT:
       
 83482 +	  if (pfr < end_pfr && i < nfixedargs)
       
 83483 +	    {
       
 83484 +	      /* Float values are stored as doubles in the
       
 83485 +		 ffi_closure_LINUX64 code.  Fix them here.  */
       
 83486 +	      pfr->f = (float) pfr->d;
       
 83487 +	      avalue[i] = pfr;
       
 83488 +	      pfr++;
       
 83489 +	    }
       
 83490 +	  else
       
 83491 +	    avalue[i] = pst;
       
 83492 +	  pst++;
       
 83493 +	  break;
       
 83494 +
       
 83495 +	default:
       
 83496 +	  FFI_ASSERT (0);
       
 83497 +	}
       
 83498 +
       
 83499 +      i++;
       
 83500 +    }
       
 83501 +
       
 83502 +
       
 83503 +  (closure->fun) (cif, rvalue, avalue, closure->user_data);
       
 83504 +
       
 83505 +  /* Tell ffi_closure_LINUX64 how to perform return type promotions.  */
       
 83506 +  if ((cif->flags & FLAG_RETURNS_SMST) != 0)
       
 83507 +    {
       
 83508 +      if ((cif->flags & FLAG_RETURNS_FP) == 0)
       
 83509 +	return FFI_V2_TYPE_SMALL_STRUCT + cif->rtype->size - 1;
       
 83510 +      else if ((cif->flags & FLAG_RETURNS_64BITS) != 0)
       
 83511 +	return FFI_V2_TYPE_DOUBLE_HOMOG;
       
 83512 +      else
       
 83513 +	return FFI_V2_TYPE_FLOAT_HOMOG;
       
 83514 +    }
       
 83515 +  return cif->rtype->type;
       
 83516 +}
       
 83517 +#endif
       
 83518 diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_powerpc.h b/js/src/ctypes/libffi/src/powerpc/ffi_powerpc.h
       
 83519 new file mode 100644
       
 83520 --- /dev/null
       
 83521 +++ b/js/src/ctypes/libffi/src/powerpc/ffi_powerpc.h
       
 83522 @@ -0,0 +1,77 @@
       
 83523 +/* -----------------------------------------------------------------------
       
 83524 +   ffi_powerpc.h - Copyright (C) 2013 IBM
       
 83525 +                   Copyright (C) 2011 Anthony Green
       
 83526 +                   Copyright (C) 2011 Kyle Moffett
       
 83527 +                   Copyright (C) 2008 Red Hat, Inc
       
 83528 +                   Copyright (C) 2007, 2008 Free Software Foundation, Inc
       
 83529 +                   Copyright (c) 1998 Geoffrey Keating
       
 83530 +
       
 83531 +   PowerPC Foreign Function Interface
       
 83532 +
       
 83533 +   Permission is hereby granted, free of charge, to any person obtaining
       
 83534 +   a copy of this software and associated documentation files (the
       
 83535 +   ``Software''), to deal in the Software without restriction, including
       
 83536 +   without limitation the rights to use, copy, modify, merge, publish,
       
 83537 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 83538 +   permit persons to whom the Software is furnished to do so, subject to
       
 83539 +   the following conditions:
       
 83540 +
       
 83541 +   The above copyright notice and this permission notice shall be included
       
 83542 +   in all copies or substantial portions of the Software.
       
 83543 +
       
 83544 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
       
 83545 +   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 83546 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 83547 +   IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
 83548 +   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
 83549 +   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 83550 +   OTHER DEALINGS IN THE SOFTWARE.
       
 83551 +   ----------------------------------------------------------------------- */
       
 83552 +
       
 83553 +enum {
       
 83554 +  /* The assembly depends on these exact flags.  */
       
 83555 +  /* These go in cr7 */
       
 83556 +  FLAG_RETURNS_SMST	= 1 << (31-31), /* Used for FFI_SYSV small structs.  */
       
 83557 +  FLAG_RETURNS_NOTHING  = 1 << (31-30),
       
 83558 +  FLAG_RETURNS_FP       = 1 << (31-29),
       
 83559 +  FLAG_RETURNS_64BITS   = 1 << (31-28),
       
 83560 +
       
 83561 +  /* This goes in cr6 */
       
 83562 +  FLAG_RETURNS_128BITS  = 1 << (31-27),
       
 83563 +
       
 83564 +  FLAG_COMPAT		= 1 << (31- 8), /* Not used by assembly */
       
 83565 +
       
 83566 +  /* These go in cr1 */
       
 83567 +  FLAG_ARG_NEEDS_COPY   = 1 << (31- 7), /* Used by sysv code */
       
 83568 +  FLAG_ARG_NEEDS_PSAVE  = FLAG_ARG_NEEDS_COPY, /* Used by linux64 code */
       
 83569 +  FLAG_FP_ARGUMENTS     = 1 << (31- 6), /* cr1.eq; specified by ABI */
       
 83570 +  FLAG_4_GPR_ARGUMENTS  = 1 << (31- 5),
       
 83571 +  FLAG_RETVAL_REFERENCE = 1 << (31- 4)
       
 83572 +};
       
 83573 +
       
 83574 +typedef union
       
 83575 +{
       
 83576 +  float f;
       
 83577 +  double d;
       
 83578 +} ffi_dblfl;
       
 83579 +
       
 83580 +void FFI_HIDDEN ffi_closure_SYSV (void);
       
 83581 +void FFI_HIDDEN ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *,
       
 83582 +			      void (*)(void));
       
 83583 +
       
 83584 +void FFI_HIDDEN ffi_prep_types_sysv (ffi_abi);
       
 83585 +ffi_status FFI_HIDDEN ffi_prep_cif_sysv (ffi_cif *);
       
 83586 +int FFI_HIDDEN ffi_closure_helper_SYSV (ffi_closure *, void *, unsigned long *,
       
 83587 +					ffi_dblfl *, unsigned long *);
       
 83588 +
       
 83589 +void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long, unsigned long,
       
 83590 +				 unsigned long *, void (*)(void));
       
 83591 +void FFI_HIDDEN ffi_closure_LINUX64 (void);
       
 83592 +
       
 83593 +void FFI_HIDDEN ffi_prep_types_linux64 (ffi_abi);
       
 83594 +ffi_status FFI_HIDDEN ffi_prep_cif_linux64 (ffi_cif *);
       
 83595 +ffi_status FFI_HIDDEN ffi_prep_cif_linux64_var (ffi_cif *, unsigned int,
       
 83596 +						unsigned int);
       
 83597 +void FFI_HIDDEN ffi_prep_args64 (extended_cif *, unsigned long *const);
       
 83598 +int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *,
       
 83599 +					   unsigned long *, ffi_dblfl *);
       
 83600 diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_sysv.c b/js/src/ctypes/libffi/src/powerpc/ffi_sysv.c
       
 83601 new file mode 100644
       
 83602 --- /dev/null
       
 83603 +++ b/js/src/ctypes/libffi/src/powerpc/ffi_sysv.c
       
 83604 @@ -0,0 +1,931 @@
       
 83605 +/* -----------------------------------------------------------------------
       
 83606 +   ffi_sysv.c - Copyright (C) 2013 IBM
       
 83607 +                Copyright (C) 2011 Anthony Green
       
 83608 +                Copyright (C) 2011 Kyle Moffett
       
 83609 +                Copyright (C) 2008 Red Hat, Inc
       
 83610 +                Copyright (C) 2007, 2008 Free Software Foundation, Inc
       
 83611 +                Copyright (c) 1998 Geoffrey Keating
       
 83612 +
       
 83613 +   PowerPC Foreign Function Interface
       
 83614 +
       
 83615 +   Permission is hereby granted, free of charge, to any person obtaining
       
 83616 +   a copy of this software and associated documentation files (the
       
 83617 +   ``Software''), to deal in the Software without restriction, including
       
 83618 +   without limitation the rights to use, copy, modify, merge, publish,
       
 83619 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 83620 +   permit persons to whom the Software is furnished to do so, subject to
       
 83621 +   the following conditions:
       
 83622 +
       
 83623 +   The above copyright notice and this permission notice shall be included
       
 83624 +   in all copies or substantial portions of the Software.
       
 83625 +
       
 83626 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
       
 83627 +   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 83628 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 83629 +   IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
 83630 +   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
 83631 +   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
 83632 +   OTHER DEALINGS IN THE SOFTWARE.
       
 83633 +   ----------------------------------------------------------------------- */
       
 83634 +
       
 83635 +#include "ffi.h"
       
 83636 +
       
 83637 +#ifndef POWERPC64
       
 83638 +#include "ffi_common.h"
       
 83639 +#include "ffi_powerpc.h"
       
 83640 +
       
 83641 +
       
 83642 +/* About the SYSV ABI.  */
       
 83643 +#define ASM_NEEDS_REGISTERS 4
       
 83644 +#define NUM_GPR_ARG_REGISTERS 8
       
 83645 +#define NUM_FPR_ARG_REGISTERS 8
       
 83646 +
       
 83647 +
       
 83648 +#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 83649 +/* Adjust size of ffi_type_longdouble.  */
       
 83650 +void FFI_HIDDEN
       
 83651 +ffi_prep_types_sysv (ffi_abi abi)
       
 83652 +{
       
 83653 +  if ((abi & (FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128)) == FFI_SYSV)
       
 83654 +    {
       
 83655 +      ffi_type_longdouble.size = 8;
       
 83656 +      ffi_type_longdouble.alignment = 8;
       
 83657 +    }
       
 83658 +  else
       
 83659 +    {
       
 83660 +      ffi_type_longdouble.size = 16;
       
 83661 +      ffi_type_longdouble.alignment = 16;
       
 83662 +    }
       
 83663 +}
       
 83664 +#endif
       
 83665 +
       
 83666 +/* Transform long double, double and float to other types as per abi.  */
       
 83667 +static int
       
 83668 +translate_float (int abi, int type)
       
 83669 +{
       
 83670 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 83671 +  if (type == FFI_TYPE_LONGDOUBLE
       
 83672 +      && (abi & FFI_SYSV_LONG_DOUBLE_128) == 0)
       
 83673 +    type = FFI_TYPE_DOUBLE;
       
 83674 +#endif
       
 83675 +  if ((abi & FFI_SYSV_SOFT_FLOAT) != 0)
       
 83676 +    {
       
 83677 +      if (type == FFI_TYPE_FLOAT)
       
 83678 +	type = FFI_TYPE_UINT32;
       
 83679 +      else if (type == FFI_TYPE_DOUBLE)
       
 83680 +	type = FFI_TYPE_UINT64;
       
 83681 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 83682 +      else if (type == FFI_TYPE_LONGDOUBLE)
       
 83683 +	type = FFI_TYPE_UINT128;
       
 83684 +    }
       
 83685 +  else if ((abi & FFI_SYSV_IBM_LONG_DOUBLE) == 0)
       
 83686 +    {
       
 83687 +      if (type == FFI_TYPE_LONGDOUBLE)
       
 83688 +	type = FFI_TYPE_STRUCT;
       
 83689 +#endif
       
 83690 +    }
       
 83691 +  return type;
       
 83692 +}
       
 83693 +
       
 83694 +/* Perform machine dependent cif processing */
       
 83695 +static ffi_status
       
 83696 +ffi_prep_cif_sysv_core (ffi_cif *cif)
       
 83697 +{
       
 83698 +  ffi_type **ptr;
       
 83699 +  unsigned bytes;
       
 83700 +  unsigned i, fparg_count = 0, intarg_count = 0;
       
 83701 +  unsigned flags = cif->flags;
       
 83702 +  unsigned struct_copy_size = 0;
       
 83703 +  unsigned type = cif->rtype->type;
       
 83704 +  unsigned size = cif->rtype->size;
       
 83705 +
       
 83706 +  /* The machine-independent calculation of cif->bytes doesn't work
       
 83707 +     for us.  Redo the calculation.  */
       
 83708 +
       
 83709 +  /* Space for the frame pointer, callee's LR, and the asm's temp regs.  */
       
 83710 +  bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int);
       
 83711 +
       
 83712 +  /* Space for the GPR registers.  */
       
 83713 +  bytes += NUM_GPR_ARG_REGISTERS * sizeof (int);
       
 83714 +
       
 83715 +  /* Return value handling.  The rules for SYSV are as follows:
       
 83716 +     - 32-bit (or less) integer values are returned in gpr3;
       
 83717 +     - Structures of size <= 4 bytes also returned in gpr3;
       
 83718 +     - 64-bit integer values and structures between 5 and 8 bytes are returned
       
 83719 +     in gpr3 and gpr4;
       
 83720 +     - Larger structures are allocated space and a pointer is passed as
       
 83721 +     the first argument.
       
 83722 +     - Single/double FP values are returned in fpr1;
       
 83723 +     - long doubles (if not equivalent to double) are returned in
       
 83724 +     fpr1,fpr2 for Linux and as for large structs for SysV.  */
       
 83725 +
       
 83726 +  type = translate_float (cif->abi, type);
       
 83727 +
       
 83728 +  switch (type)
       
 83729 +    {
       
 83730 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 83731 +    case FFI_TYPE_LONGDOUBLE:
       
 83732 +      flags |= FLAG_RETURNS_128BITS;
       
 83733 +      /* Fall through.  */
       
 83734 +#endif
       
 83735 +    case FFI_TYPE_DOUBLE:
       
 83736 +      flags |= FLAG_RETURNS_64BITS;
       
 83737 +      /* Fall through.  */
       
 83738 +    case FFI_TYPE_FLOAT:
       
 83739 +      flags |= FLAG_RETURNS_FP;
       
 83740 +#ifdef __NO_FPRS__
       
 83741 +      return FFI_BAD_ABI;
       
 83742 +#endif
       
 83743 +      break;
       
 83744 +
       
 83745 +    case FFI_TYPE_UINT128:
       
 83746 +      flags |= FLAG_RETURNS_128BITS;
       
 83747 +      /* Fall through.  */
       
 83748 +    case FFI_TYPE_UINT64:
       
 83749 +    case FFI_TYPE_SINT64:
       
 83750 +      flags |= FLAG_RETURNS_64BITS;
       
 83751 +      break;
       
 83752 +
       
 83753 +    case FFI_TYPE_STRUCT:
       
 83754 +      /* The final SYSV ABI says that structures smaller or equal 8 bytes
       
 83755 +	 are returned in r3/r4.  A draft ABI used by linux instead
       
 83756 +	 returns them in memory.  */
       
 83757 +      if ((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8)
       
 83758 +	{
       
 83759 +	  flags |= FLAG_RETURNS_SMST;
       
 83760 +	  break;
       
 83761 +	}
       
 83762 +      intarg_count++;
       
 83763 +      flags |= FLAG_RETVAL_REFERENCE;
       
 83764 +      /* Fall through.  */
       
 83765 +    case FFI_TYPE_VOID:
       
 83766 +      flags |= FLAG_RETURNS_NOTHING;
       
 83767 +      break;
       
 83768 +
       
 83769 +    default:
       
 83770 +      /* Returns 32-bit integer, or similar.  Nothing to do here.  */
       
 83771 +      break;
       
 83772 +    }
       
 83773 +
       
 83774 +  /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the
       
 83775 +     first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest
       
 83776 +     goes on the stack.  Structures and long doubles (if not equivalent
       
 83777 +     to double) are passed as a pointer to a copy of the structure.
       
 83778 +     Stuff on the stack needs to keep proper alignment.  */
       
 83779 +  for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
       
 83780 +    {
       
 83781 +      unsigned short typenum = (*ptr)->type;
       
 83782 +
       
 83783 +      typenum = translate_float (cif->abi, typenum);
       
 83784 +
       
 83785 +      switch (typenum)
       
 83786 +	{
       
 83787 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 83788 +	case FFI_TYPE_LONGDOUBLE:
       
 83789 +	  fparg_count++;
       
 83790 +	  /* Fall thru */
       
 83791 +#endif
       
 83792 +	case FFI_TYPE_DOUBLE:
       
 83793 +	  fparg_count++;
       
 83794 +	  /* If this FP arg is going on the stack, it must be
       
 83795 +	     8-byte-aligned.  */
       
 83796 +	  if (fparg_count > NUM_FPR_ARG_REGISTERS
       
 83797 +	      && intarg_count >= NUM_GPR_ARG_REGISTERS
       
 83798 +	      && intarg_count % 2 != 0)
       
 83799 +	    intarg_count++;
       
 83800 +#ifdef __NO_FPRS__
       
 83801 +	  return FFI_BAD_ABI;
       
 83802 +#endif
       
 83803 +	  break;
       
 83804 +
       
 83805 +	case FFI_TYPE_FLOAT:
       
 83806 +	  fparg_count++;
       
 83807 +#ifdef __NO_FPRS__
       
 83808 +	  return FFI_BAD_ABI;
       
 83809 +#endif
       
 83810 +	  break;
       
 83811 +
       
 83812 +	case FFI_TYPE_UINT128:
       
 83813 +	  /* A long double in FFI_LINUX_SOFT_FLOAT can use only a set
       
 83814 +	     of four consecutive gprs. If we do not have enough, we
       
 83815 +	     have to adjust the intarg_count value.  */
       
 83816 +	  if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3
       
 83817 +	      && intarg_count < NUM_GPR_ARG_REGISTERS)
       
 83818 +	    intarg_count = NUM_GPR_ARG_REGISTERS;
       
 83819 +	  intarg_count += 4;
       
 83820 +	  break;
       
 83821 +
       
 83822 +	case FFI_TYPE_UINT64:
       
 83823 +	case FFI_TYPE_SINT64:
       
 83824 +	  /* 'long long' arguments are passed as two words, but
       
 83825 +	     either both words must fit in registers or both go
       
 83826 +	     on the stack.  If they go on the stack, they must
       
 83827 +	     be 8-byte-aligned.
       
 83828 +
       
 83829 +	     Also, only certain register pairs can be used for
       
 83830 +	     passing long long int -- specifically (r3,r4), (r5,r6),
       
 83831 +	     (r7,r8), (r9,r10).  */
       
 83832 +	  if (intarg_count == NUM_GPR_ARG_REGISTERS-1
       
 83833 +	      || intarg_count % 2 != 0)
       
 83834 +	    intarg_count++;
       
 83835 +	  intarg_count += 2;
       
 83836 +	  break;
       
 83837 +
       
 83838 +	case FFI_TYPE_STRUCT:
       
 83839 +	  /* We must allocate space for a copy of these to enforce
       
 83840 +	     pass-by-value.  Pad the space up to a multiple of 16
       
 83841 +	     bytes (the maximum alignment required for anything under
       
 83842 +	     the SYSV ABI).  */
       
 83843 +	  struct_copy_size += ((*ptr)->size + 15) & ~0xF;
       
 83844 +	  /* Fall through (allocate space for the pointer).  */
       
 83845 +
       
 83846 +	case FFI_TYPE_POINTER:
       
 83847 +	case FFI_TYPE_INT:
       
 83848 +	case FFI_TYPE_UINT32:
       
 83849 +	case FFI_TYPE_SINT32:
       
 83850 +	case FFI_TYPE_UINT16:
       
 83851 +	case FFI_TYPE_SINT16:
       
 83852 +	case FFI_TYPE_UINT8:
       
 83853 +	case FFI_TYPE_SINT8:
       
 83854 +	  /* Everything else is passed as a 4-byte word in a GPR, either
       
 83855 +	     the object itself or a pointer to it.  */
       
 83856 +	  intarg_count++;
       
 83857 +	  break;
       
 83858 +
       
 83859 +	default:
       
 83860 +	  FFI_ASSERT (0);
       
 83861 +	}
       
 83862 +    }
       
 83863 +
       
 83864 +  if (fparg_count != 0)
       
 83865 +    flags |= FLAG_FP_ARGUMENTS;
       
 83866 +  if (intarg_count > 4)
       
 83867 +    flags |= FLAG_4_GPR_ARGUMENTS;
       
 83868 +  if (struct_copy_size != 0)
       
 83869 +    flags |= FLAG_ARG_NEEDS_COPY;
       
 83870 +
       
 83871 +  /* Space for the FPR registers, if needed.  */
       
 83872 +  if (fparg_count != 0)
       
 83873 +    bytes += NUM_FPR_ARG_REGISTERS * sizeof (double);
       
 83874 +
       
 83875 +  /* Stack space.  */
       
 83876 +  if (intarg_count > NUM_GPR_ARG_REGISTERS)
       
 83877 +    bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int);
       
 83878 +  if (fparg_count > NUM_FPR_ARG_REGISTERS)
       
 83879 +    bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double);
       
 83880 +
       
 83881 +  /* The stack space allocated needs to be a multiple of 16 bytes.  */
       
 83882 +  bytes = (bytes + 15) & ~0xF;
       
 83883 +
       
 83884 +  /* Add in the space for the copied structures.  */
       
 83885 +  bytes += struct_copy_size;
       
 83886 +
       
 83887 +  cif->flags = flags;
       
 83888 +  cif->bytes = bytes;
       
 83889 +
       
 83890 +  return FFI_OK;
       
 83891 +}
       
 83892 +
       
 83893 +ffi_status FFI_HIDDEN
       
 83894 +ffi_prep_cif_sysv (ffi_cif *cif)
       
 83895 +{
       
 83896 +  if ((cif->abi & FFI_SYSV) == 0)
       
 83897 +    {
       
 83898 +      /* This call is from old code.  Translate to new ABI values.  */
       
 83899 +      cif->flags |= FLAG_COMPAT;
       
 83900 +      switch (cif->abi)
       
 83901 +	{
       
 83902 +	default:
       
 83903 +	  return FFI_BAD_ABI;
       
 83904 +
       
 83905 +	case FFI_COMPAT_SYSV:
       
 83906 +	  cif->abi = FFI_SYSV | FFI_SYSV_STRUCT_RET | FFI_SYSV_LONG_DOUBLE_128;
       
 83907 +	  break;
       
 83908 +
       
 83909 +	case FFI_COMPAT_GCC_SYSV:
       
 83910 +	  cif->abi = FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128;
       
 83911 +	  break;
       
 83912 +
       
 83913 +	case FFI_COMPAT_LINUX:
       
 83914 +	  cif->abi = (FFI_SYSV | FFI_SYSV_IBM_LONG_DOUBLE
       
 83915 +		      | FFI_SYSV_LONG_DOUBLE_128);
       
 83916 +	  break;
       
 83917 +
       
 83918 +	case FFI_COMPAT_LINUX_SOFT_FLOAT:
       
 83919 +	  cif->abi = (FFI_SYSV | FFI_SYSV_SOFT_FLOAT | FFI_SYSV_IBM_LONG_DOUBLE
       
 83920 +		      | FFI_SYSV_LONG_DOUBLE_128);
       
 83921 +	  break;
       
 83922 +	}
       
 83923 +    }
       
 83924 +  return ffi_prep_cif_sysv_core (cif);
       
 83925 +}
       
 83926 +
       
 83927 +/* ffi_prep_args_SYSV is called by the assembly routine once stack space
       
 83928 +   has been allocated for the function's arguments.
       
 83929 +
       
 83930 +   The stack layout we want looks like this:
       
 83931 +
       
 83932 +   |   Return address from ffi_call_SYSV 4bytes	|	higher addresses
       
 83933 +   |--------------------------------------------|
       
 83934 +   |   Previous backchain pointer	4	|       stack pointer here
       
 83935 +   |--------------------------------------------|<+ <<<	on entry to
       
 83936 +   |   Saved r28-r31			4*4	| |	ffi_call_SYSV
       
 83937 +   |--------------------------------------------| |
       
 83938 +   |   GPR registers r3-r10		8*4	| |	ffi_call_SYSV
       
 83939 +   |--------------------------------------------| |
       
 83940 +   |   FPR registers f1-f8 (optional)	8*8	| |
       
 83941 +   |--------------------------------------------| |	stack	|
       
 83942 +   |   Space for copied structures		| |	grows	|
       
 83943 +   |--------------------------------------------| |	down    V
       
 83944 +   |   Parameters that didn't fit in registers  | |
       
 83945 +   |--------------------------------------------| |	lower addresses
       
 83946 +   |   Space for callee's LR		4	| |
       
 83947 +   |--------------------------------------------| |	stack pointer here
       
 83948 +   |   Current backchain pointer	4	|-/	during
       
 83949 +   |--------------------------------------------|   <<<	ffi_call_SYSV
       
 83950 +
       
 83951 +*/
       
 83952 +
       
 83953 +void FFI_HIDDEN
       
 83954 +ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
       
 83955 +{
       
 83956 +  const unsigned bytes = ecif->cif->bytes;
       
 83957 +  const unsigned flags = ecif->cif->flags;
       
 83958 +
       
 83959 +  typedef union
       
 83960 +  {
       
 83961 +    char *c;
       
 83962 +    unsigned *u;
       
 83963 +    long long *ll;
       
 83964 +    float *f;
       
 83965 +    double *d;
       
 83966 +  } valp;
       
 83967 +
       
 83968 +  /* 'stacktop' points at the previous backchain pointer.  */
       
 83969 +  valp stacktop;
       
 83970 +
       
 83971 +  /* 'gpr_base' points at the space for gpr3, and grows upwards as
       
 83972 +     we use GPR registers.  */
       
 83973 +  valp gpr_base;
       
 83974 +  int intarg_count;
       
 83975 +
       
 83976 +#ifndef __NO_FPRS__
       
 83977 +  /* 'fpr_base' points at the space for fpr1, and grows upwards as
       
 83978 +     we use FPR registers.  */
       
 83979 +  valp fpr_base;
       
 83980 +  int fparg_count;
       
 83981 +#endif
       
 83982 +
       
 83983 +  /* 'copy_space' grows down as we put structures in it.  It should
       
 83984 +     stay 16-byte aligned.  */
       
 83985 +  valp copy_space;
       
 83986 +
       
 83987 +  /* 'next_arg' grows up as we put parameters in it.  */
       
 83988 +  valp next_arg;
       
 83989 +
       
 83990 +  int i;
       
 83991 +  ffi_type **ptr;
       
 83992 +#ifndef __NO_FPRS__
       
 83993 +  double double_tmp;
       
 83994 +#endif
       
 83995 +  union
       
 83996 +  {
       
 83997 +    void **v;
       
 83998 +    char **c;
       
 83999 +    signed char **sc;
       
 84000 +    unsigned char **uc;
       
 84001 +    signed short **ss;
       
 84002 +    unsigned short **us;
       
 84003 +    unsigned int **ui;
       
 84004 +    long long **ll;
       
 84005 +    float **f;
       
 84006 +    double **d;
       
 84007 +  } p_argv;
       
 84008 +  size_t struct_copy_size;
       
 84009 +  unsigned gprvalue;
       
 84010 +
       
 84011 +  stacktop.c = (char *) stack + bytes;
       
 84012 +  gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS;
       
 84013 +  intarg_count = 0;
       
 84014 +#ifndef __NO_FPRS__
       
 84015 +  fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS;
       
 84016 +  fparg_count = 0;
       
 84017 +  copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c);
       
 84018 +#else
       
 84019 +  copy_space.c = gpr_base.c;
       
 84020 +#endif
       
 84021 +  next_arg.u = stack + 2;
       
 84022 +
       
 84023 +  /* Check that everything starts aligned properly.  */
       
 84024 +  FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
       
 84025 +  FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0);
       
 84026 +  FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
       
 84027 +  FFI_ASSERT ((bytes & 0xF) == 0);
       
 84028 +  FFI_ASSERT (copy_space.c >= next_arg.c);
       
 84029 +
       
 84030 +  /* Deal with return values that are actually pass-by-reference.  */
       
 84031 +  if (flags & FLAG_RETVAL_REFERENCE)
       
 84032 +    {
       
 84033 +      *gpr_base.u++ = (unsigned long) (char *) ecif->rvalue;
       
 84034 +      intarg_count++;
       
 84035 +    }
       
 84036 +
       
 84037 +  /* Now for the arguments.  */
       
 84038 +  p_argv.v = ecif->avalue;
       
 84039 +  for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
       
 84040 +       i > 0;
       
 84041 +       i--, ptr++, p_argv.v++)
       
 84042 +    {
       
 84043 +      unsigned int typenum = (*ptr)->type;
       
 84044 +
       
 84045 +      typenum = translate_float (ecif->cif->abi, typenum);
       
 84046 +
       
 84047 +      /* Now test the translated value */
       
 84048 +      switch (typenum)
       
 84049 +	{
       
 84050 +#ifndef __NO_FPRS__
       
 84051 +# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 84052 +	case FFI_TYPE_LONGDOUBLE:
       
 84053 +	  double_tmp = (*p_argv.d)[0];
       
 84054 +
       
 84055 +	  if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1)
       
 84056 +	    {
       
 84057 +	      if (intarg_count >= NUM_GPR_ARG_REGISTERS
       
 84058 +		  && intarg_count % 2 != 0)
       
 84059 +		{
       
 84060 +		  intarg_count++;
       
 84061 +		  next_arg.u++;
       
 84062 +		}
       
 84063 +	      *next_arg.d = double_tmp;
       
 84064 +	      next_arg.u += 2;
       
 84065 +	      double_tmp = (*p_argv.d)[1];
       
 84066 +	      *next_arg.d = double_tmp;
       
 84067 +	      next_arg.u += 2;
       
 84068 +	    }
       
 84069 +	  else
       
 84070 +	    {
       
 84071 +	      *fpr_base.d++ = double_tmp;
       
 84072 +	      double_tmp = (*p_argv.d)[1];
       
 84073 +	      *fpr_base.d++ = double_tmp;
       
 84074 +	    }
       
 84075 +
       
 84076 +	  fparg_count += 2;
       
 84077 +	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 84078 +	  break;
       
 84079 +# endif
       
 84080 +	case FFI_TYPE_DOUBLE:
       
 84081 +	  double_tmp = **p_argv.d;
       
 84082 +
       
 84083 +	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
       
 84084 +	    {
       
 84085 +	      if (intarg_count >= NUM_GPR_ARG_REGISTERS
       
 84086 +		  && intarg_count % 2 != 0)
       
 84087 +		{
       
 84088 +		  intarg_count++;
       
 84089 +		  next_arg.u++;
       
 84090 +		}
       
 84091 +	      *next_arg.d = double_tmp;
       
 84092 +	      next_arg.u += 2;
       
 84093 +	    }
       
 84094 +	  else
       
 84095 +	    *fpr_base.d++ = double_tmp;
       
 84096 +	  fparg_count++;
       
 84097 +	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 84098 +	  break;
       
 84099 +
       
 84100 +	case FFI_TYPE_FLOAT:
       
 84101 +	  double_tmp = **p_argv.f;
       
 84102 +	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
       
 84103 +	    {
       
 84104 +	      *next_arg.f = (float) double_tmp;
       
 84105 +	      next_arg.u += 1;
       
 84106 +	      intarg_count++;
       
 84107 +	    }
       
 84108 +	  else
       
 84109 +	    *fpr_base.d++ = double_tmp;
       
 84110 +	  fparg_count++;
       
 84111 +	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
       
 84112 +	  break;
       
 84113 +#endif /* have FPRs */
       
 84114 +
       
 84115 +	case FFI_TYPE_UINT128:
       
 84116 +	  /* The soft float ABI for long doubles works like this, a long double
       
 84117 +	     is passed in four consecutive GPRs if available.  A maximum of 2
       
 84118 +	     long doubles can be passed in gprs.  If we do not have 4 GPRs
       
 84119 +	     left, the long double is passed on the stack, 4-byte aligned.  */
       
 84120 +	  {
       
 84121 +	    unsigned int int_tmp;
       
 84122 +	    unsigned int ii;
       
 84123 +	    if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3)
       
 84124 +	      {
       
 84125 +		if (intarg_count < NUM_GPR_ARG_REGISTERS)
       
 84126 +		  intarg_count = NUM_GPR_ARG_REGISTERS;
       
 84127 +		for (ii = 0; ii < 4; ii++)
       
 84128 +		  {
       
 84129 +		    int_tmp = (*p_argv.ui)[ii];
       
 84130 +		    *next_arg.u++ = int_tmp;
       
 84131 +		  }
       
 84132 +	      }
       
 84133 +	    else
       
 84134 +	      {
       
 84135 +		for (ii = 0; ii < 4; ii++)
       
 84136 +		  {
       
 84137 +		    int_tmp = (*p_argv.ui)[ii];
       
 84138 +		    *gpr_base.u++ = int_tmp;
       
 84139 +		  }
       
 84140 +	      }
       
 84141 +	    intarg_count += 4;
       
 84142 +	    break;
       
 84143 +	  }
       
 84144 +
       
 84145 +	case FFI_TYPE_UINT64:
       
 84146 +	case FFI_TYPE_SINT64:
       
 84147 +	  if (intarg_count == NUM_GPR_ARG_REGISTERS-1)
       
 84148 +	    intarg_count++;
       
 84149 +	  if (intarg_count >= NUM_GPR_ARG_REGISTERS)
       
 84150 +	    {
       
 84151 +	      if (intarg_count % 2 != 0)
       
 84152 +		{
       
 84153 +		  intarg_count++;
       
 84154 +		  next_arg.u++;
       
 84155 +		}
       
 84156 +	      *next_arg.ll = **p_argv.ll;
       
 84157 +	      next_arg.u += 2;
       
 84158 +	    }
       
 84159 +	  else
       
 84160 +	    {
       
 84161 +	      /* The abi states only certain register pairs can be
       
 84162 +		 used for passing long long int specifically (r3,r4),
       
 84163 +		 (r5,r6), (r7,r8), (r9,r10).  If next arg is long long
       
 84164 +		 but not correct starting register of pair then skip
       
 84165 +		 until the proper starting register.  */
       
 84166 +	      if (intarg_count % 2 != 0)
       
 84167 +		{
       
 84168 +		  intarg_count ++;
       
 84169 +		  gpr_base.u++;
       
 84170 +		}
       
 84171 +	      *gpr_base.ll++ = **p_argv.ll;
       
 84172 +	    }
       
 84173 +	  intarg_count += 2;
       
 84174 +	  break;
       
 84175 +
       
 84176 +	case FFI_TYPE_STRUCT:
       
 84177 +	  struct_copy_size = ((*ptr)->size + 15) & ~0xF;
       
 84178 +	  copy_space.c -= struct_copy_size;
       
 84179 +	  memcpy (copy_space.c, *p_argv.c, (*ptr)->size);
       
 84180 +
       
 84181 +	  gprvalue = (unsigned long) copy_space.c;
       
 84182 +
       
 84183 +	  FFI_ASSERT (copy_space.c > next_arg.c);
       
 84184 +	  FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY);
       
 84185 +	  goto putgpr;
       
 84186 +
       
 84187 +	case FFI_TYPE_UINT8:
       
 84188 +	  gprvalue = **p_argv.uc;
       
 84189 +	  goto putgpr;
       
 84190 +	case FFI_TYPE_SINT8:
       
 84191 +	  gprvalue = **p_argv.sc;
       
 84192 +	  goto putgpr;
       
 84193 +	case FFI_TYPE_UINT16:
       
 84194 +	  gprvalue = **p_argv.us;
       
 84195 +	  goto putgpr;
       
 84196 +	case FFI_TYPE_SINT16:
       
 84197 +	  gprvalue = **p_argv.ss;
       
 84198 +	  goto putgpr;
       
 84199 +
       
 84200 +	case FFI_TYPE_INT:
       
 84201 +	case FFI_TYPE_UINT32:
       
 84202 +	case FFI_TYPE_SINT32:
       
 84203 +	case FFI_TYPE_POINTER:
       
 84204 +
       
 84205 +	  gprvalue = **p_argv.ui;
       
 84206 +
       
 84207 +	putgpr:
       
 84208 +	  if (intarg_count >= NUM_GPR_ARG_REGISTERS)
       
 84209 +	    *next_arg.u++ = gprvalue;
       
 84210 +	  else
       
 84211 +	    *gpr_base.u++ = gprvalue;
       
 84212 +	  intarg_count++;
       
 84213 +	  break;
       
 84214 +	}
       
 84215 +    }
       
 84216 +
       
 84217 +  /* Check that we didn't overrun the stack...  */
       
 84218 +  FFI_ASSERT (copy_space.c >= next_arg.c);
       
 84219 +  FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS);
       
 84220 +  /* The assert below is testing that the number of integer arguments agrees
       
 84221 +     with the number found in ffi_prep_cif_machdep().  However, intarg_count
       
 84222 +     is incremented whenever we place an FP arg on the stack, so account for
       
 84223 +     that before our assert test.  */
       
 84224 +#ifndef __NO_FPRS__
       
 84225 +  if (fparg_count > NUM_FPR_ARG_REGISTERS)
       
 84226 +    intarg_count -= fparg_count - NUM_FPR_ARG_REGISTERS;
       
 84227 +  FFI_ASSERT (fpr_base.u
       
 84228 +	      <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
       
 84229 +#endif
       
 84230 +  FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);
       
 84231 +}
       
 84232 +
       
 84233 +#define MIN_CACHE_LINE_SIZE 8
       
 84234 +
       
 84235 +static void
       
 84236 +flush_icache (char *wraddr, char *xaddr, int size)
       
 84237 +{
       
 84238 +  int i;
       
 84239 +  for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE)
       
 84240 +    __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
       
 84241 +		      : : "r" (xaddr + i), "r" (wraddr + i) : "memory");
       
 84242 +  __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;"
       
 84243 +		    : : "r"(xaddr + size - 1), "r"(wraddr + size - 1)
       
 84244 +		    : "memory");
       
 84245 +}
       
 84246 +
       
 84247 +ffi_status FFI_HIDDEN
       
 84248 +ffi_prep_closure_loc_sysv (ffi_closure *closure,
       
 84249 +			   ffi_cif *cif,
       
 84250 +			   void (*fun) (ffi_cif *, void *, void **, void *),
       
 84251 +			   void *user_data,
       
 84252 +			   void *codeloc)
       
 84253 +{
       
 84254 +  unsigned int *tramp;
       
 84255 +
       
 84256 +  if (cif->abi < FFI_SYSV || cif->abi >= FFI_LAST_ABI)
       
 84257 +    return FFI_BAD_ABI;
       
 84258 +
       
 84259 +  tramp = (unsigned int *) &closure->tramp[0];
       
 84260 +  tramp[0] = 0x7c0802a6;  /*   mflr    r0 */
       
 84261 +  tramp[1] = 0x4800000d;  /*   bl      10 <trampoline_initial+0x10> */
       
 84262 +  tramp[4] = 0x7d6802a6;  /*   mflr    r11 */
       
 84263 +  tramp[5] = 0x7c0803a6;  /*   mtlr    r0 */
       
 84264 +  tramp[6] = 0x800b0000;  /*   lwz     r0,0(r11) */
       
 84265 +  tramp[7] = 0x816b0004;  /*   lwz     r11,4(r11) */
       
 84266 +  tramp[8] = 0x7c0903a6;  /*   mtctr   r0 */
       
 84267 +  tramp[9] = 0x4e800420;  /*   bctr */
       
 84268 +  *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */
       
 84269 +  *(void **) &tramp[3] = codeloc;                   /* context */
       
 84270 +
       
 84271 +  /* Flush the icache.  */
       
 84272 +  flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
       
 84273 +
       
 84274 +  closure->cif = cif;
       
 84275 +  closure->fun = fun;
       
 84276 +  closure->user_data = user_data;
       
 84277 +
       
 84278 +  return FFI_OK;
       
 84279 +}
       
 84280 +
       
 84281 +/* Basically the trampoline invokes ffi_closure_SYSV, and on
       
 84282 +   entry, r11 holds the address of the closure.
       
 84283 +   After storing the registers that could possibly contain
       
 84284 +   parameters to be passed into the stack frame and setting
       
 84285 +   up space for a return value, ffi_closure_SYSV invokes the
       
 84286 +   following helper function to do most of the work.  */
       
 84287 +
       
 84288 +int
       
 84289 +ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
       
 84290 +			 unsigned long *pgr, ffi_dblfl *pfr,
       
 84291 +			 unsigned long *pst)
       
 84292 +{
       
 84293 +  /* rvalue is the pointer to space for return value in closure assembly */
       
 84294 +  /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */
       
 84295 +  /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV  */
       
 84296 +  /* pst is the pointer to outgoing parameter stack in original caller */
       
 84297 +
       
 84298 +  void **          avalue;
       
 84299 +  ffi_type **      arg_types;
       
 84300 +  long             i, avn;
       
 84301 +#ifndef __NO_FPRS__
       
 84302 +  long             nf = 0;   /* number of floating registers already used */
       
 84303 +#endif
       
 84304 +  long             ng = 0;   /* number of general registers already used */
       
 84305 +
       
 84306 +  ffi_cif *cif = closure->cif;
       
 84307 +  unsigned       size     = cif->rtype->size;
       
 84308 +  unsigned short rtypenum = cif->rtype->type;
       
 84309 +
       
 84310 +  avalue = alloca (cif->nargs * sizeof (void *));
       
 84311 +
       
 84312 +  /* First translate for softfloat/nonlinux */
       
 84313 +  rtypenum = translate_float (cif->abi, rtypenum);
       
 84314 +
       
 84315 +  /* Copy the caller's structure return value address so that the closure
       
 84316 +     returns the data directly to the caller.
       
 84317 +     For FFI_SYSV the result is passed in r3/r4 if the struct size is less
       
 84318 +     or equal 8 bytes.  */
       
 84319 +  if (rtypenum == FFI_TYPE_STRUCT
       
 84320 +      && !((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8))
       
 84321 +    {
       
 84322 +      rvalue = (void *) *pgr;
       
 84323 +      ng++;
       
 84324 +      pgr++;
       
 84325 +    }
       
 84326 +
       
 84327 +  i = 0;
       
 84328 +  avn = cif->nargs;
       
 84329 +  arg_types = cif->arg_types;
       
 84330 +
       
 84331 +  /* Grab the addresses of the arguments from the stack frame.  */
       
 84332 +  while (i < avn) {
       
 84333 +    unsigned short typenum = arg_types[i]->type;
       
 84334 +
       
 84335 +    /* We may need to handle some values depending on ABI.  */
       
 84336 +    typenum = translate_float (cif->abi, typenum);
       
 84337 +
       
 84338 +    switch (typenum)
       
 84339 +      {
       
 84340 +#ifndef __NO_FPRS__
       
 84341 +      case FFI_TYPE_FLOAT:
       
 84342 +	/* Unfortunately float values are stored as doubles
       
 84343 +	   in the ffi_closure_SYSV code (since we don't check
       
 84344 +	   the type in that routine).  */
       
 84345 +	if (nf < NUM_FPR_ARG_REGISTERS)
       
 84346 +	  {
       
 84347 +	    /* FIXME? here we are really changing the values
       
 84348 +	       stored in the original calling routines outgoing
       
 84349 +	       parameter stack.  This is probably a really
       
 84350 +	       naughty thing to do but...  */
       
 84351 +	    double temp = pfr->d;
       
 84352 +	    pfr->f = (float) temp;
       
 84353 +	    avalue[i] = pfr;
       
 84354 +	    nf++;
       
 84355 +	    pfr++;
       
 84356 +	  }
       
 84357 +	else
       
 84358 +	  {
       
 84359 +	    avalue[i] = pst;
       
 84360 +	    pst += 1;
       
 84361 +	  }
       
 84362 +	break;
       
 84363 +
       
 84364 +      case FFI_TYPE_DOUBLE:
       
 84365 +	if (nf < NUM_FPR_ARG_REGISTERS)
       
 84366 +	  {
       
 84367 +	    avalue[i] = pfr;
       
 84368 +	    nf++;
       
 84369 +	    pfr++;
       
 84370 +	  }
       
 84371 +	else
       
 84372 +	  {
       
 84373 +	    if (((long) pst) & 4)
       
 84374 +	      pst++;
       
 84375 +	    avalue[i] = pst;
       
 84376 +	    pst += 2;
       
 84377 +	  }
       
 84378 +	break;
       
 84379 +
       
 84380 +# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 84381 +      case FFI_TYPE_LONGDOUBLE:
       
 84382 +	if (nf < NUM_FPR_ARG_REGISTERS - 1)
       
 84383 +	  {
       
 84384 +	    avalue[i] = pfr;
       
 84385 +	    pfr += 2;
       
 84386 +	    nf += 2;
       
 84387 +	  }
       
 84388 +	else
       
 84389 +	  {
       
 84390 +	    if (((long) pst) & 4)
       
 84391 +	      pst++;
       
 84392 +	    avalue[i] = pst;
       
 84393 +	    pst += 4;
       
 84394 +	    nf = 8;
       
 84395 +	  }
       
 84396 +	break;
       
 84397 +# endif
       
 84398 +#endif
       
 84399 +
       
 84400 +      case FFI_TYPE_UINT128:
       
 84401 +	/* Test if for the whole long double, 4 gprs are available.
       
 84402 +	   otherwise the stuff ends up on the stack.  */
       
 84403 +	if (ng < NUM_GPR_ARG_REGISTERS - 3)
       
 84404 +	  {
       
 84405 +	    avalue[i] = pgr;
       
 84406 +	    pgr += 4;
       
 84407 +	    ng += 4;
       
 84408 +	  }
       
 84409 +	else
       
 84410 +	  {
       
 84411 +	    avalue[i] = pst;
       
 84412 +	    pst += 4;
       
 84413 +	    ng = 8+4;
       
 84414 +	  }
       
 84415 +	break;
       
 84416 +
       
 84417 +      case FFI_TYPE_SINT8:
       
 84418 +      case FFI_TYPE_UINT8:
       
 84419 +#ifndef __LITTLE_ENDIAN__
       
 84420 +	if (ng < NUM_GPR_ARG_REGISTERS)
       
 84421 +	  {
       
 84422 +	    avalue[i] = (char *) pgr + 3;
       
 84423 +	    ng++;
       
 84424 +	    pgr++;
       
 84425 +	  }
       
 84426 +	else
       
 84427 +	  {
       
 84428 +	    avalue[i] = (char *) pst + 3;
       
 84429 +	    pst++;
       
 84430 +	  }
       
 84431 +	break;
       
 84432 +#endif
       
 84433 +
       
 84434 +      case FFI_TYPE_SINT16:
       
 84435 +      case FFI_TYPE_UINT16:
       
 84436 +#ifndef __LITTLE_ENDIAN__
       
 84437 +	if (ng < NUM_GPR_ARG_REGISTERS)
       
 84438 +	  {
       
 84439 +	    avalue[i] = (char *) pgr + 2;
       
 84440 +	    ng++;
       
 84441 +	    pgr++;
       
 84442 +	  }
       
 84443 +	else
       
 84444 +	  {
       
 84445 +	    avalue[i] = (char *) pst + 2;
       
 84446 +	    pst++;
       
 84447 +	  }
       
 84448 +	break;
       
 84449 +#endif
       
 84450 +
       
 84451 +      case FFI_TYPE_SINT32:
       
 84452 +      case FFI_TYPE_UINT32:
       
 84453 +      case FFI_TYPE_POINTER:
       
 84454 +	if (ng < NUM_GPR_ARG_REGISTERS)
       
 84455 +	  {
       
 84456 +	    avalue[i] = pgr;
       
 84457 +	    ng++;
       
 84458 +	    pgr++;
       
 84459 +	  }
       
 84460 +	else
       
 84461 +	  {
       
 84462 +	    avalue[i] = pst;
       
 84463 +	    pst++;
       
 84464 +	  }
       
 84465 +	break;
       
 84466 +
       
 84467 +      case FFI_TYPE_STRUCT:
       
 84468 +	/* Structs are passed by reference. The address will appear in a
       
 84469 +	   gpr if it is one of the first 8 arguments.  */
       
 84470 +	if (ng < NUM_GPR_ARG_REGISTERS)
       
 84471 +	  {
       
 84472 +	    avalue[i] = (void *) *pgr;
       
 84473 +	    ng++;
       
 84474 +	    pgr++;
       
 84475 +	  }
       
 84476 +	else
       
 84477 +	  {
       
 84478 +	    avalue[i] = (void *) *pst;
       
 84479 +	    pst++;
       
 84480 +	  }
       
 84481 +	break;
       
 84482 +
       
 84483 +      case FFI_TYPE_SINT64:
       
 84484 +      case FFI_TYPE_UINT64:
       
 84485 +	/* Passing long long ints are complex, they must
       
 84486 +	   be passed in suitable register pairs such as
       
 84487 +	   (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10)
       
 84488 +	   and if the entire pair aren't available then the outgoing
       
 84489 +	   parameter stack is used for both but an alignment of 8
       
 84490 +	   must will be kept.  So we must either look in pgr
       
 84491 +	   or pst to find the correct address for this type
       
 84492 +	   of parameter.  */
       
 84493 +	if (ng < NUM_GPR_ARG_REGISTERS - 1)
       
 84494 +	  {
       
 84495 +	    if (ng & 1)
       
 84496 +	      {
       
 84497 +		/* skip r4, r6, r8 as starting points */
       
 84498 +		ng++;
       
 84499 +		pgr++;
       
 84500 +	      }
       
 84501 +	    avalue[i] = pgr;
       
 84502 +	    ng += 2;
       
 84503 +	    pgr += 2;
       
 84504 +	  }
       
 84505 +	else
       
 84506 +	  {
       
 84507 +	    if (((long) pst) & 4)
       
 84508 +	      pst++;
       
 84509 +	    avalue[i] = pst;
       
 84510 +	    pst += 2;
       
 84511 +	    ng = NUM_GPR_ARG_REGISTERS;
       
 84512 +	  }
       
 84513 +	break;
       
 84514 +
       
 84515 +      default:
       
 84516 +	FFI_ASSERT (0);
       
 84517 +      }
       
 84518 +
       
 84519 +    i++;
       
 84520 +  }
       
 84521 +
       
 84522 +  (closure->fun) (cif, rvalue, avalue, closure->user_data);
       
 84523 +
       
 84524 +  /* Tell ffi_closure_SYSV how to perform return type promotions.
       
 84525 +     Because the FFI_SYSV ABI returns the structures <= 8 bytes in
       
 84526 +     r3/r4 we have to tell ffi_closure_SYSV how to treat them.  We
       
 84527 +     combine the base type FFI_SYSV_TYPE_SMALL_STRUCT with the size of
       
 84528 +     the struct less one.  We never have a struct with size zero.
       
 84529 +     See the comment in ffitarget.h about ordering.  */
       
 84530 +  if (rtypenum == FFI_TYPE_STRUCT
       
 84531 +      && (cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8)
       
 84532 +    return FFI_SYSV_TYPE_SMALL_STRUCT - 1 + size;
       
 84533 +  return rtypenum;
       
 84534 +}
       
 84535 +#endif
       
 84536 diff --git a/js/src/ctypes/libffi/src/powerpc/ffitarget.h b/js/src/ctypes/libffi/src/powerpc/ffitarget.h
       
 84537 --- a/js/src/ctypes/libffi/src/powerpc/ffitarget.h
       
 84538 +++ b/js/src/ctypes/libffi/src/powerpc/ffitarget.h
       
 84539 @@ -35,72 +35,106 @@
       
 84540  #endif
       
 84541  
       
 84542  /* ---- System specific configurations ----------------------------------- */
       
 84543  
       
 84544  #if defined (POWERPC) && defined (__powerpc64__)	/* linux64 */
       
 84545  #ifndef POWERPC64
       
 84546  #define POWERPC64
       
 84547  #endif
       
 84548 -#elif defined (POWERPC_DARWIN) && defined (__ppc64__)	/* Darwin */
       
 84549 +#elif defined (POWERPC_DARWIN) && defined (__ppc64__)	/* Darwin64 */
       
 84550  #ifndef POWERPC64
       
 84551  #define POWERPC64
       
 84552  #endif
       
 84553 +#ifndef POWERPC_DARWIN64
       
 84554 +#define POWERPC_DARWIN64
       
 84555 +#endif
       
 84556  #elif defined (POWERPC_AIX) && defined (__64BIT__)	/* AIX64 */
       
 84557  #ifndef POWERPC64
       
 84558  #define POWERPC64
       
 84559  #endif
       
 84560  #endif
       
 84561  
       
 84562  #ifndef LIBFFI_ASM
       
 84563  typedef unsigned long          ffi_arg;
       
 84564  typedef signed long            ffi_sarg;
       
 84565  
       
 84566  typedef enum ffi_abi {
       
 84567    FFI_FIRST_ABI = 0,
       
 84568  
       
 84569 -#ifdef POWERPC
       
 84570 -  FFI_SYSV,
       
 84571 -  FFI_GCC_SYSV,
       
 84572 -  FFI_LINUX64,
       
 84573 -  FFI_LINUX,
       
 84574 -  FFI_LINUX_SOFT_FLOAT,
       
 84575 -# if defined(POWERPC64)
       
 84576 -  FFI_DEFAULT_ABI = FFI_LINUX64,
       
 84577 -# elif defined(__NO_FPRS__)
       
 84578 -  FFI_DEFAULT_ABI = FFI_LINUX_SOFT_FLOAT,
       
 84579 -# elif (__LDBL_MANT_DIG__ == 106)
       
 84580 -  FFI_DEFAULT_ABI = FFI_LINUX,
       
 84581 +#if defined (POWERPC_AIX)
       
 84582 +  FFI_AIX,
       
 84583 +  FFI_DARWIN,
       
 84584 +  FFI_DEFAULT_ABI = FFI_AIX,
       
 84585 +  FFI_LAST_ABI
       
 84586 +
       
 84587 +#elif defined (POWERPC_DARWIN)
       
 84588 +  FFI_AIX,
       
 84589 +  FFI_DARWIN,
       
 84590 +  FFI_DEFAULT_ABI = FFI_DARWIN,
       
 84591 +  FFI_LAST_ABI
       
 84592 +
       
 84593 +#else
       
 84594 +  /* The FFI_COMPAT values are used by old code.  Since libffi may be
       
 84595 +     a shared library we have to support old values for backwards
       
 84596 +     compatibility.  */
       
 84597 +  FFI_COMPAT_SYSV,
       
 84598 +  FFI_COMPAT_GCC_SYSV,
       
 84599 +  FFI_COMPAT_LINUX64,
       
 84600 +  FFI_COMPAT_LINUX,
       
 84601 +  FFI_COMPAT_LINUX_SOFT_FLOAT,
       
 84602 +
       
 84603 +# if defined (POWERPC64)
       
 84604 +  /* This bit, always set in new code, must not be set in any of the
       
 84605 +     old FFI_COMPAT values that might be used for 64-bit linux.  We
       
 84606 +     only need worry about FFI_COMPAT_LINUX64, but to be safe avoid
       
 84607 +     all old values.  */
       
 84608 +  FFI_LINUX = 8,
       
 84609 +  /* This and following bits can reuse FFI_COMPAT values.  */
       
 84610 +  FFI_LINUX_STRUCT_ALIGN = 1,
       
 84611 +  FFI_LINUX_LONG_DOUBLE_128 = 2,
       
 84612 +  FFI_DEFAULT_ABI = (FFI_LINUX
       
 84613 +#  ifdef __STRUCT_PARM_ALIGN__
       
 84614 +		     | FFI_LINUX_STRUCT_ALIGN
       
 84615 +#  endif
       
 84616 +#  ifdef __LONG_DOUBLE_128__
       
 84617 +		     | FFI_LINUX_LONG_DOUBLE_128
       
 84618 +#  endif
       
 84619 +		     ),
       
 84620 +  FFI_LAST_ABI = 12
       
 84621 +
       
 84622  # else
       
 84623 -  FFI_DEFAULT_ABI = FFI_GCC_SYSV,
       
 84624 +  /* This bit, always set in new code, must not be set in any of the
       
 84625 +     old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd.  */
       
 84626 +  FFI_SYSV = 8,
       
 84627 +  /* This and following bits can reuse FFI_COMPAT values.  */
       
 84628 +  FFI_SYSV_SOFT_FLOAT = 1,
       
 84629 +  FFI_SYSV_STRUCT_RET = 2,
       
 84630 +  FFI_SYSV_IBM_LONG_DOUBLE = 4,
       
 84631 +  FFI_SYSV_LONG_DOUBLE_128 = 16,
       
 84632 +
       
 84633 +  FFI_DEFAULT_ABI = (FFI_SYSV
       
 84634 +#  ifdef __NO_FPRS__
       
 84635 +		     | FFI_SYSV_SOFT_FLOAT
       
 84636 +#  endif
       
 84637 +#  if (defined (__SVR4_STRUCT_RETURN)					\
       
 84638 +       || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN))
       
 84639 +		     | FFI_SYSV_STRUCT_RET
       
 84640 +#  endif
       
 84641 +#  if __LDBL_MANT_DIG__ == 106
       
 84642 +		     | FFI_SYSV_IBM_LONG_DOUBLE
       
 84643 +#  endif
       
 84644 +#  ifdef __LONG_DOUBLE_128__
       
 84645 +		     | FFI_SYSV_LONG_DOUBLE_128
       
 84646 +#  endif
       
 84647 +		     ),
       
 84648 +  FFI_LAST_ABI = 32
       
 84649  # endif
       
 84650  #endif
       
 84651  
       
 84652 -#ifdef POWERPC_AIX
       
 84653 -  FFI_AIX,
       
 84654 -  FFI_DARWIN,
       
 84655 -  FFI_DEFAULT_ABI = FFI_AIX,
       
 84656 -#endif
       
 84657 -
       
 84658 -#ifdef POWERPC_DARWIN
       
 84659 -  FFI_AIX,
       
 84660 -  FFI_DARWIN,
       
 84661 -  FFI_DEFAULT_ABI = FFI_DARWIN,
       
 84662 -#endif
       
 84663 -
       
 84664 -#ifdef POWERPC_FREEBSD
       
 84665 -  FFI_SYSV,
       
 84666 -  FFI_GCC_SYSV,
       
 84667 -  FFI_LINUX64,
       
 84668 -  FFI_LINUX,
       
 84669 -  FFI_LINUX_SOFT_FLOAT,
       
 84670 -  FFI_DEFAULT_ABI = FFI_SYSV,
       
 84671 -#endif
       
 84672 -
       
 84673 -  FFI_LAST_ABI
       
 84674  } ffi_abi;
       
 84675  #endif
       
 84676  
       
 84677  /* ---- Definitions for closures ----------------------------------------- */
       
 84678  
       
 84679  #define FFI_CLOSURES 1
       
 84680  #define FFI_NATIVE_RAW_API 0
       
 84681  #if defined (POWERPC) || defined (POWERPC_FREEBSD)
       
 84682 @@ -109,31 +143,33 @@ typedef enum ffi_abi {
       
 84683  #endif
       
 84684  
       
 84685  /* For additional types like the below, take care about the order in
       
 84686     ppc_closures.S. They must follow after the FFI_TYPE_LAST.  */
       
 84687  
       
 84688  /* Needed for soft-float long-double-128 support.  */
       
 84689  #define FFI_TYPE_UINT128 (FFI_TYPE_LAST + 1)
       
 84690  
       
 84691 -/* Needed for FFI_SYSV small structure returns.
       
 84692 -   We use two flag bits, (FLAG_SYSV_SMST_R3, FLAG_SYSV_SMST_R4) which are
       
 84693 -   defined in ffi.c, to determine the exact return type and its size.  */
       
 84694 +/* Needed for FFI_SYSV small structure returns.  */
       
 84695  #define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 2)
       
 84696  
       
 84697  /* Used by ELFv2 for homogenous structure returns.  */
       
 84698  #define FFI_V2_TYPE_FLOAT_HOMOG		(FFI_TYPE_LAST + 1)
       
 84699  #define FFI_V2_TYPE_DOUBLE_HOMOG	(FFI_TYPE_LAST + 2)
       
 84700  #define FFI_V2_TYPE_SMALL_STRUCT	(FFI_TYPE_LAST + 3)
       
 84701  
       
 84702  #if _CALL_ELF == 2
       
 84703  # define FFI_TRAMPOLINE_SIZE 32
       
 84704  #else
       
 84705  # if defined(POWERPC64) || defined(POWERPC_AIX)
       
 84706 -#  define FFI_TRAMPOLINE_SIZE 24
       
 84707 +#  if defined(POWERPC_DARWIN64)
       
 84708 +#    define FFI_TRAMPOLINE_SIZE 48
       
 84709 +#  else
       
 84710 +#    define FFI_TRAMPOLINE_SIZE 24
       
 84711 +#  endif
       
 84712  # else /* POWERPC || POWERPC_AIX */
       
 84713  #  define FFI_TRAMPOLINE_SIZE 40
       
 84714  # endif
       
 84715  #endif
       
 84716  
       
 84717  #ifndef LIBFFI_ASM
       
 84718  #if defined(POWERPC_DARWIN) || defined(POWERPC_AIX)
       
 84719  struct ffi_aix_trampoline_struct {
       
 84720 diff --git a/js/src/ctypes/libffi/src/powerpc/linux64.S b/js/src/ctypes/libffi/src/powerpc/linux64.S
       
 84721 --- a/js/src/ctypes/libffi/src/powerpc/linux64.S
       
 84722 +++ b/js/src/ctypes/libffi/src/powerpc/linux64.S
       
 84723 @@ -24,17 +24,17 @@
       
 84724     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 84725     DEALINGS IN THE SOFTWARE.
       
 84726     ----------------------------------------------------------------------- */
       
 84727  
       
 84728  #define LIBFFI_ASM
       
 84729  #include <fficonfig.h>
       
 84730  #include <ffi.h>
       
 84731  
       
 84732 -#ifdef __powerpc64__
       
 84733 +#ifdef POWERPC64
       
 84734  	.hidden	ffi_call_LINUX64
       
 84735  	.globl	ffi_call_LINUX64
       
 84736  # if _CALL_ELF == 2
       
 84737  	.text
       
 84738  ffi_call_LINUX64:
       
 84739  	addis	%r2, %r12, .TOC.-ffi_call_LINUX64@ha
       
 84740  	addi	%r2, %r2, .TOC.-ffi_call_LINUX64@l
       
 84741  	.localentry ffi_call_LINUX64, . - ffi_call_LINUX64
       
 84742 diff --git a/js/src/ctypes/libffi/src/powerpc/linux64_closure.S b/js/src/ctypes/libffi/src/powerpc/linux64_closure.S
       
 84743 --- a/js/src/ctypes/libffi/src/powerpc/linux64_closure.S
       
 84744 +++ b/js/src/ctypes/libffi/src/powerpc/linux64_closure.S
       
 84745 @@ -25,17 +25,17 @@
       
 84746     DEALINGS IN THE SOFTWARE.
       
 84747     ----------------------------------------------------------------------- */
       
 84748  #define LIBFFI_ASM
       
 84749  #include <fficonfig.h>
       
 84750  #include <ffi.h>
       
 84751  
       
 84752  	.file	"linux64_closure.S"
       
 84753  
       
 84754 -#ifdef __powerpc64__
       
 84755 +#ifdef POWERPC64
       
 84756  	FFI_HIDDEN (ffi_closure_LINUX64)
       
 84757  	.globl  ffi_closure_LINUX64
       
 84758  # if _CALL_ELF == 2
       
 84759  	.text
       
 84760  ffi_closure_LINUX64:
       
 84761  	addis	%r2, %r12, .TOC.-ffi_closure_LINUX64@ha
       
 84762  	addi	%r2, %r2, .TOC.-ffi_closure_LINUX64@l
       
 84763  	.localentry ffi_closure_LINUX64, . - ffi_closure_LINUX64
       
 84764 @@ -95,16 +95,20 @@ ffi_closure_LINUX64:
       
 84765  	std	%r7, 32(%r12)
       
 84766  	std	%r8, 40(%r12)
       
 84767  	std	%r9, 48(%r12)
       
 84768  	std	%r10, 56(%r12)
       
 84769  
       
 84770  	# load up the pointer to the parm save area
       
 84771  	mr	%r5, %r12
       
 84772  # else
       
 84773 +	# copy r2 to r11 and load TOC into r2
       
 84774 +	mr	%r11, %r2
       
 84775 +	ld	%r2, 16(%r11)
       
 84776 +
       
 84777  	mflr	%r0
       
 84778  	# Save general regs into parm save area
       
 84779  	# This is the parameter save area set up by our caller.
       
 84780  	std	%r3, PARMSAVE+0(%r1)
       
 84781  	std	%r4, PARMSAVE+8(%r1)
       
 84782  	std	%r5, PARMSAVE+16(%r1)
       
 84783  	std	%r6, PARMSAVE+24(%r1)
       
 84784  	std	%r7, PARMSAVE+32(%r1)
       
 84785 diff --git a/js/src/ctypes/libffi/src/powerpc/ppc_closure.S b/js/src/ctypes/libffi/src/powerpc/ppc_closure.S
       
 84786 --- a/js/src/ctypes/libffi/src/powerpc/ppc_closure.S
       
 84787 +++ b/js/src/ctypes/libffi/src/powerpc/ppc_closure.S
       
 84788 @@ -26,17 +26,17 @@
       
 84789     ----------------------------------------------------------------------- */
       
 84790  #define LIBFFI_ASM
       
 84791  #include <fficonfig.h>
       
 84792  #include <ffi.h>
       
 84793  #include <powerpc/asm.h>
       
 84794  
       
 84795  	.file   "ppc_closure.S"
       
 84796  
       
 84797 -#ifndef __powerpc64__
       
 84798 +#ifndef POWERPC64
       
 84799  
       
 84800  ENTRY(ffi_closure_SYSV)
       
 84801  .LFB1:
       
 84802  	stwu %r1,-144(%r1)
       
 84803  .LCFI0:
       
 84804  	mflr %r0
       
 84805  .LCFI1:
       
 84806  	stw %r0,148(%r1)
       
 84807 @@ -322,17 +322,17 @@ ENTRY(ffi_closure_SYSV)
       
 84808  	blr
       
 84809  #endif
       
 84810  
       
 84811  .Luint128:
       
 84812  	lwz %r6,112+12(%r1)
       
 84813  	mtlr %r0
       
 84814  	addi %r1,%r1,144
       
 84815  	blr
       
 84816 -
       
 84817 +	
       
 84818  END(ffi_closure_SYSV)
       
 84819  
       
 84820  	.section	".eh_frame",EH_FRAME_FLAGS,@progbits
       
 84821  .Lframe1:
       
 84822  	.4byte	.LECIE1-.LSCIE1	 # Length of Common Information Entry
       
 84823  .LSCIE1:
       
 84824  	.4byte	0x0	 # CIE Identifier Tag
       
 84825  	.byte	0x1	 # CIE Version
       
 84826 @@ -373,13 +373,12 @@ END(ffi_closure_SYSV)
       
 84827  	.byte	0x4	 # DW_CFA_advance_loc4
       
 84828  	.4byte	.LCFI1-.LCFI0
       
 84829  	.byte	0x11	 # DW_CFA_offset_extended_sf
       
 84830  	.uleb128 0x41
       
 84831  	.sleb128 -1
       
 84832  	.align 2
       
 84833  .LEFDE1:
       
 84834  
       
 84835 -#endif
       
 84836 -
       
 84837  #if defined __ELF__ && defined __linux__
       
 84838  	.section	.note.GNU-stack,"",@progbits
       
 84839  #endif
       
 84840 +#endif
       
 84841 diff --git a/js/src/ctypes/libffi/src/powerpc/sysv.S b/js/src/ctypes/libffi/src/powerpc/sysv.S
       
 84842 --- a/js/src/ctypes/libffi/src/powerpc/sysv.S
       
 84843 +++ b/js/src/ctypes/libffi/src/powerpc/sysv.S
       
 84844 @@ -25,17 +25,17 @@
       
 84845     DEALINGS IN THE SOFTWARE.
       
 84846     ----------------------------------------------------------------------- */
       
 84847  
       
 84848  #define LIBFFI_ASM
       
 84849  #include <fficonfig.h>
       
 84850  #include <ffi.h>
       
 84851  #include <powerpc/asm.h>
       
 84852  
       
 84853 -#ifndef __powerpc64__
       
 84854 +#ifndef POWERPC64
       
 84855  	.globl ffi_prep_args_SYSV
       
 84856  ENTRY(ffi_call_SYSV)
       
 84857  .LFB1:
       
 84858  	/* Save the old stack pointer as AP.  */
       
 84859  	mr	%r8,%r1
       
 84860  
       
 84861  .LCFI0:
       
 84862  	/* Allocate the stack space we need.  */
       
 84863 @@ -208,13 +208,13 @@ END(ffi_call_SYSV)
       
 84864        .byte     0x9c     /*  DW_CFA_offset, column 0x1c */
       
 84865        .uleb128  0x4
       
 84866        .byte     0x4      /*  DW_CFA_advance_loc4 */
       
 84867        .4byte    .LCFI6-.LCFI5
       
 84868        .byte     0xd      /*  DW_CFA_def_cfa_register */
       
 84869        .uleb128  0x1c
       
 84870        .align 2
       
 84871  .LEFDE1:
       
 84872 -#endif
       
 84873  
       
 84874  #if defined __ELF__ && defined __linux__
       
 84875  	.section	.note.GNU-stack,"",@progbits
       
 84876  #endif
       
 84877 +#endif
       
 84878 diff --git a/js/src/ctypes/libffi/src/prep_cif.c b/js/src/ctypes/libffi/src/prep_cif.c
       
 84879 --- a/js/src/ctypes/libffi/src/prep_cif.c
       
 84880 +++ b/js/src/ctypes/libffi/src/prep_cif.c
       
 84881 @@ -1,10 +1,11 @@
       
 84882  /* -----------------------------------------------------------------------
       
 84883 -   prep_cif.c - Copyright (c) 1996, 1998, 2007  Red Hat, Inc.
       
 84884 +   prep_cif.c - Copyright (c) 2011, 2012  Anthony Green
       
 84885 +                Copyright (c) 1996, 1998, 2007  Red Hat, Inc.
       
 84886  
       
 84887     Permission is hereby granted, free of charge, to any person obtaining
       
 84888     a copy of this software and associated documentation files (the
       
 84889     ``Software''), to deal in the Software without restriction, including
       
 84890     without limitation the rights to use, copy, modify, merge, publish,
       
 84891     distribute, sublicense, and/or sell copies of the Software, and to
       
 84892     permit persons to whom the Software is furnished to do so, subject to
       
 84893     the following conditions:
       
 84894 @@ -32,27 +33,31 @@
       
 84895  
       
 84896  /* Perform machine independent initialization of aggregate type
       
 84897     specifications. */
       
 84898  
       
 84899  static ffi_status initialize_aggregate(ffi_type *arg)
       
 84900  {
       
 84901    ffi_type **ptr;
       
 84902  
       
 84903 -  FFI_ASSERT(arg != NULL);
       
 84904 +  if (UNLIKELY(arg == NULL || arg->elements == NULL))
       
 84905 +    return FFI_BAD_TYPEDEF;
       
 84906  
       
 84907 -  FFI_ASSERT(arg->elements != NULL);
       
 84908 -  FFI_ASSERT(arg->size == 0);
       
 84909 -  FFI_ASSERT(arg->alignment == 0);
       
 84910 +  arg->size = 0;
       
 84911 +  arg->alignment = 0;
       
 84912  
       
 84913    ptr = &(arg->elements[0]);
       
 84914  
       
 84915 +  if (UNLIKELY(ptr == 0))
       
 84916 +    return FFI_BAD_TYPEDEF;
       
 84917 +
       
 84918    while ((*ptr) != NULL)
       
 84919      {
       
 84920 -      if (((*ptr)->size == 0) && (initialize_aggregate((*ptr)) != FFI_OK))
       
 84921 +      if (UNLIKELY(((*ptr)->size == 0)
       
 84922 +		    && (initialize_aggregate((*ptr)) != FFI_OK)))
       
 84923  	return FFI_BAD_TYPEDEF;
       
 84924  
       
 84925        /* Perform a sanity check on the argument type */
       
 84926        FFI_ASSERT_VALID_TYPE(*ptr);
       
 84927  
       
 84928        arg->size = ALIGN(arg->size, (*ptr)->alignment);
       
 84929        arg->size += (*ptr)->size;
       
 84930  
       
 84931 @@ -66,61 +71,95 @@ static ffi_status initialize_aggregate(f
       
 84932       structures that fit in one register on ABIs like the PowerPC64
       
 84933       Linux ABI that right justify small structs in a register.
       
 84934       It's also needed for nested structure layout, for example
       
 84935       struct A { long a; char b; }; struct B { struct A x; char y; };
       
 84936       should find y at an offset of 2*sizeof(long) and result in a
       
 84937       total size of 3*sizeof(long).  */
       
 84938    arg->size = ALIGN (arg->size, arg->alignment);
       
 84939  
       
 84940 +  /* On some targets, the ABI defines that structures have an additional
       
 84941 +     alignment beyond the "natural" one based on their elements.  */
       
 84942 +#ifdef FFI_AGGREGATE_ALIGNMENT
       
 84943 +  if (FFI_AGGREGATE_ALIGNMENT > arg->alignment)
       
 84944 +    arg->alignment = FFI_AGGREGATE_ALIGNMENT;
       
 84945 +#endif
       
 84946 +
       
 84947    if (arg->size == 0)
       
 84948      return FFI_BAD_TYPEDEF;
       
 84949    else
       
 84950      return FFI_OK;
       
 84951  }
       
 84952  
       
 84953  #ifndef __CRIS__
       
 84954  /* The CRIS ABI specifies structure elements to have byte
       
 84955     alignment only, so it completely overrides this functions,
       
 84956     which assumes "natural" alignment and padding.  */
       
 84957  
       
 84958  /* Perform machine independent ffi_cif preparation, then call
       
 84959     machine dependent routine. */
       
 84960  
       
 84961 -ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
       
 84962 -			ffi_type *rtype, ffi_type **atypes)
       
 84963 +/* For non variadic functions isvariadic should be 0 and
       
 84964 +   nfixedargs==ntotalargs.
       
 84965 +
       
 84966 +   For variadic calls, isvariadic should be 1 and nfixedargs
       
 84967 +   and ntotalargs set as appropriate. nfixedargs must always be >=1 */
       
 84968 +
       
 84969 +
       
 84970 +ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi,
       
 84971 +			     unsigned int isvariadic,
       
 84972 +                             unsigned int nfixedargs,
       
 84973 +                             unsigned int ntotalargs,
       
 84974 +			     ffi_type *rtype, ffi_type **atypes)
       
 84975  {
       
 84976    unsigned bytes = 0;
       
 84977    unsigned int i;
       
 84978    ffi_type **ptr;
       
 84979  
       
 84980    FFI_ASSERT(cif != NULL);
       
 84981 -  FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
       
 84982 +  FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
       
 84983 +  FFI_ASSERT(nfixedargs <= ntotalargs);
       
 84984 +
       
 84985 +  if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
       
 84986 +    return FFI_BAD_ABI;
       
 84987  
       
 84988    cif->abi = abi;
       
 84989    cif->arg_types = atypes;
       
 84990 -  cif->nargs = nargs;
       
 84991 +  cif->nargs = ntotalargs;
       
 84992    cif->rtype = rtype;
       
 84993  
       
 84994    cif->flags = 0;
       
 84995  
       
 84996 +#if HAVE_LONG_DOUBLE_VARIANT
       
 84997 +  ffi_prep_types (abi);
       
 84998 +#endif
       
 84999 +
       
 85000    /* Initialize the return type if necessary */
       
 85001    if ((cif->rtype->size == 0) && (initialize_aggregate(cif->rtype) != FFI_OK))
       
 85002      return FFI_BAD_TYPEDEF;
       
 85003  
       
 85004    /* Perform a sanity check on the return type */
       
 85005    FFI_ASSERT_VALID_TYPE(cif->rtype);
       
 85006  
       
 85007    /* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */
       
 85008  #if !defined M68K && !defined X86_ANY && !defined S390 && !defined PA
       
 85009    /* Make space for the return structure pointer */
       
 85010    if (cif->rtype->type == FFI_TYPE_STRUCT
       
 85011  #ifdef SPARC
       
 85012        && (cif->abi != FFI_V9 || cif->rtype->size > 32)
       
 85013  #endif
       
 85014 +#ifdef TILE
       
 85015 +      && (cif->rtype->size > 10 * FFI_SIZEOF_ARG)
       
 85016 +#endif
       
 85017 +#ifdef XTENSA
       
 85018 +      && (cif->rtype->size > 16)
       
 85019 +#endif
       
 85020 +#ifdef NIOS2
       
 85021 +      && (cif->rtype->size > 8)
       
 85022 +#endif
       
 85023       )
       
 85024      bytes = STACK_ARG_SIZE(sizeof(void*));
       
 85025  #endif
       
 85026  
       
 85027    for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
       
 85028      {
       
 85029  
       
 85030        /* Initialize any uninitialized aggregate type definitions */
       
 85031 @@ -138,30 +177,65 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
       
 85032  	  || ((*ptr)->type == FFI_TYPE_LONGDOUBLE
       
 85033  	      && cif->abi != FFI_V9))
       
 85034  	bytes += sizeof(void*);
       
 85035        else
       
 85036  #endif
       
 85037  	{
       
 85038  	  /* Add any padding if necessary */
       
 85039  	  if (((*ptr)->alignment - 1) & bytes)
       
 85040 -	    bytes = ALIGN(bytes, (*ptr)->alignment);
       
 85041 +	    bytes = (unsigned)ALIGN(bytes, (*ptr)->alignment);
       
 85042 +
       
 85043 +#ifdef TILE
       
 85044 +	  if (bytes < 10 * FFI_SIZEOF_ARG &&
       
 85045 +	      bytes + STACK_ARG_SIZE((*ptr)->size) > 10 * FFI_SIZEOF_ARG)
       
 85046 +	    {
       
 85047 +	      /* An argument is never split between the 10 parameter
       
 85048 +		 registers and the stack.  */
       
 85049 +	      bytes = 10 * FFI_SIZEOF_ARG;
       
 85050 +	    }
       
 85051 +#endif
       
 85052 +#ifdef XTENSA
       
 85053 +	  if (bytes <= 6*4 && bytes + STACK_ARG_SIZE((*ptr)->size) > 6*4)
       
 85054 +	    bytes = 6*4;
       
 85055 +#endif
       
 85056  
       
 85057  	  bytes += STACK_ARG_SIZE((*ptr)->size);
       
 85058  	}
       
 85059  #endif
       
 85060      }
       
 85061  
       
 85062    cif->bytes = bytes;
       
 85063  
       
 85064    /* Perform machine dependent cif processing */
       
 85065 +#ifdef FFI_TARGET_SPECIFIC_VARIADIC
       
 85066 +  if (isvariadic)
       
 85067 +	return ffi_prep_cif_machdep_var(cif, nfixedargs, ntotalargs);
       
 85068 +#endif
       
 85069 +
       
 85070    return ffi_prep_cif_machdep(cif);
       
 85071  }
       
 85072  #endif /* not __CRIS__ */
       
 85073  
       
 85074 +ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
       
 85075 +			     ffi_type *rtype, ffi_type **atypes)
       
 85076 +{
       
 85077 +  return ffi_prep_cif_core(cif, abi, 0, nargs, nargs, rtype, atypes);
       
 85078 +}
       
 85079 +
       
 85080 +ffi_status ffi_prep_cif_var(ffi_cif *cif,
       
 85081 +                            ffi_abi abi,
       
 85082 +                            unsigned int nfixedargs,
       
 85083 +                            unsigned int ntotalargs,
       
 85084 +                            ffi_type *rtype,
       
 85085 +                            ffi_type **atypes)
       
 85086 +{
       
 85087 +  return ffi_prep_cif_core(cif, abi, 1, nfixedargs, ntotalargs, rtype, atypes);
       
 85088 +}
       
 85089 +
       
 85090  #if FFI_CLOSURES
       
 85091  
       
 85092  ffi_status
       
 85093  ffi_prep_closure (ffi_closure* closure,
       
 85094  		  ffi_cif* cif,
       
 85095  		  void (*fun)(ffi_cif*,void*,void**,void*),
       
 85096  		  void *user_data)
       
 85097  {
       
 85098 diff --git a/js/src/ctypes/libffi/src/s390/ffi.c b/js/src/ctypes/libffi/src/s390/ffi.c
       
 85099 --- a/js/src/ctypes/libffi/src/s390/ffi.c
       
 85100 +++ b/js/src/ctypes/libffi/src/s390/ffi.c
       
 85101 @@ -745,17 +745,18 @@ ffi_closure_helper_SYSV (ffi_closure *cl
       
 85102   
       
 85103  ffi_status
       
 85104  ffi_prep_closure_loc (ffi_closure *closure,
       
 85105  		      ffi_cif *cif,
       
 85106  		      void (*fun) (ffi_cif *, void *, void **, void *),
       
 85107  		      void *user_data,
       
 85108  		      void *codeloc)
       
 85109  {
       
 85110 -  FFI_ASSERT (cif->abi == FFI_SYSV);
       
 85111 +  if (cif->abi != FFI_SYSV)
       
 85112 +    return FFI_BAD_ABI;
       
 85113  
       
 85114  #ifndef __s390x__
       
 85115    *(short *)&closure->tramp [0] = 0x0d10;   /* basr %r1,0 */
       
 85116    *(short *)&closure->tramp [2] = 0x9801;   /* lm %r0,%r1,6(%r1) */
       
 85117    *(short *)&closure->tramp [4] = 0x1006;
       
 85118    *(short *)&closure->tramp [6] = 0x07f1;   /* br %r1 */
       
 85119    *(long  *)&closure->tramp [8] = (long)codeloc;
       
 85120    *(long  *)&closure->tramp[12] = (long)&ffi_closure_SYSV;
       
 85121 diff --git a/js/src/ctypes/libffi/src/s390/ffitarget.h b/js/src/ctypes/libffi/src/s390/ffitarget.h
       
 85122 --- a/js/src/ctypes/libffi/src/s390/ffitarget.h
       
 85123 +++ b/js/src/ctypes/libffi/src/s390/ffitarget.h
       
 85124 @@ -1,10 +1,11 @@
       
 85125  /* -----------------------------------------------------------------*-C-*-
       
 85126 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 85127 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 85128 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 85129     Target configuration macros for S390.
       
 85130  
       
 85131     Permission is hereby granted, free of charge, to any person obtaining
       
 85132     a copy of this software and associated documentation files (the
       
 85133     ``Software''), to deal in the Software without restriction, including
       
 85134     without limitation the rights to use, copy, modify, merge, publish,
       
 85135     distribute, sublicense, and/or sell copies of the Software, and to
       
 85136     permit persons to whom the Software is furnished to do so, subject to
       
 85137 @@ -22,16 +23,20 @@
       
 85138     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 85139     DEALINGS IN THE SOFTWARE.
       
 85140  
       
 85141     ----------------------------------------------------------------------- */
       
 85142  
       
 85143  #ifndef LIBFFI_TARGET_H
       
 85144  #define LIBFFI_TARGET_H
       
 85145  
       
 85146 +#ifndef LIBFFI_H
       
 85147 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 85148 +#endif
       
 85149 +
       
 85150  #if defined (__s390x__)
       
 85151  #ifndef S390X
       
 85152  #define S390X
       
 85153  #endif
       
 85154  #endif
       
 85155  
       
 85156  /* ---- System specific configurations ----------------------------------- */
       
 85157  
       
 85158 diff --git a/js/src/ctypes/libffi/src/sh/ffi.c b/js/src/ctypes/libffi/src/sh/ffi.c
       
 85159 --- a/js/src/ctypes/libffi/src/sh/ffi.c
       
 85160 +++ b/js/src/ctypes/libffi/src/sh/ffi.c
       
 85161 @@ -1,10 +1,10 @@
       
 85162  /* -----------------------------------------------------------------------
       
 85163 -   ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Kaz Kojima
       
 85164 +   ffi.c - Copyright (c) 2002-2008, 2012 Kaz Kojima
       
 85165             Copyright (c) 2008 Red Hat, Inc.
       
 85166     
       
 85167     SuperH Foreign Function Interface 
       
 85168  
       
 85169     Permission is hereby granted, free of charge, to any person obtaining
       
 85170     a copy of this software and associated documentation files (the
       
 85171     ``Software''), to deal in the Software without restriction, including
       
 85172     without limitation the rights to use, copy, modify, merge, publish,
       
 85173 @@ -36,17 +36,17 @@
       
 85174  #endif
       
 85175  
       
 85176  #if defined(__HITACHI__)
       
 85177  #define STRUCT_VALUE_ADDRESS_WITH_ARG 1
       
 85178  #else
       
 85179  #define STRUCT_VALUE_ADDRESS_WITH_ARG 0
       
 85180  #endif
       
 85181  
       
 85182 -/* If the structure has essentialy an unique element, return its type.  */
       
 85183 +/* If the structure has essentially an unique element, return its type.  */
       
 85184  static int
       
 85185  simple_type (ffi_type *arg)
       
 85186  {
       
 85187    if (arg->type != FFI_TYPE_STRUCT)
       
 85188      return arg->type;
       
 85189    else if (arg->elements[1])
       
 85190      return FFI_TYPE_STRUCT;
       
 85191  
       
 85192 @@ -458,17 +458,18 @@ ffi_prep_closure_loc (ffi_closure* closu
       
 85193  		      ffi_cif* cif,
       
 85194  		      void (*fun)(ffi_cif*, void*, void**, void*),
       
 85195  		      void *user_data,
       
 85196  		      void *codeloc)
       
 85197  {
       
 85198    unsigned int *tramp;
       
 85199    unsigned int insn;
       
 85200  
       
 85201 -  FFI_ASSERT (cif->abi == FFI_GCC_SYSV);
       
 85202 +  if (cif->abi != FFI_SYSV)
       
 85203 +    return FFI_BAD_ABI;
       
 85204  
       
 85205    tramp = (unsigned int *) &closure->tramp[0];
       
 85206    /* Set T bit if the function returns a struct pointed with R2.  */
       
 85207    insn = (return_type (cif->rtype) == FFI_TYPE_STRUCT
       
 85208  	  ? 0x0018 /* sett */
       
 85209  	  : 0x0008 /* clrt */);
       
 85210  
       
 85211  #ifdef __LITTLE_ENDIAN__
       
 85212 diff --git a/js/src/ctypes/libffi/src/sh/ffitarget.h b/js/src/ctypes/libffi/src/sh/ffitarget.h
       
 85213 --- a/js/src/ctypes/libffi/src/sh/ffitarget.h
       
 85214 +++ b/js/src/ctypes/libffi/src/sh/ffitarget.h
       
 85215 @@ -1,10 +1,11 @@
       
 85216  /* -----------------------------------------------------------------*-C-*-
       
 85217 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 85218 +   ffitarget.h - Copyright (c) 2012 Anthony Green
       
 85219 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 85220     Target configuration macros for SuperH.
       
 85221  
       
 85222     Permission is hereby granted, free of charge, to any person obtaining
       
 85223     a copy of this software and associated documentation files (the
       
 85224     ``Software''), to deal in the Software without restriction, including
       
 85225     without limitation the rights to use, copy, modify, merge, publish,
       
 85226     distribute, sublicense, and/or sell copies of the Software, and to
       
 85227     permit persons to whom the Software is furnished to do so, subject to
       
 85228 @@ -22,16 +23,20 @@
       
 85229     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 85230     DEALINGS IN THE SOFTWARE.
       
 85231  
       
 85232     ----------------------------------------------------------------------- */
       
 85233  
       
 85234  #ifndef LIBFFI_TARGET_H
       
 85235  #define LIBFFI_TARGET_H
       
 85236  
       
 85237 +#ifndef LIBFFI_H
       
 85238 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 85239 +#endif
       
 85240 +
       
 85241  /* ---- Generic type definitions ----------------------------------------- */
       
 85242  
       
 85243  #ifndef LIBFFI_ASM
       
 85244  typedef unsigned long          ffi_arg;
       
 85245  typedef signed long            ffi_sarg;
       
 85246  
       
 85247  typedef enum ffi_abi {
       
 85248    FFI_FIRST_ABI = 0,
       
 85249 diff --git a/js/src/ctypes/libffi/src/sh64/ffi.c b/js/src/ctypes/libffi/src/sh64/ffi.c
       
 85250 --- a/js/src/ctypes/libffi/src/sh64/ffi.c
       
 85251 +++ b/js/src/ctypes/libffi/src/sh64/ffi.c
       
 85252 @@ -1,10 +1,10 @@
       
 85253  /* -----------------------------------------------------------------------
       
 85254 -   ffi.c - Copyright (c) 2003, 2004, 2006, 2007 Kaz Kojima
       
 85255 +   ffi.c - Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima
       
 85256             Copyright (c) 2008 Anthony Green
       
 85257     
       
 85258     SuperH SHmedia Foreign Function Interface 
       
 85259  
       
 85260     Permission is hereby granted, free of charge, to any person obtaining
       
 85261     a copy of this software and associated documentation files (the
       
 85262     ``Software''), to deal in the Software without restriction, including
       
 85263     without limitation the rights to use, copy, modify, merge, publish,
       
 85264 @@ -297,17 +297,18 @@ ffi_status
       
 85265  ffi_prep_closure_loc (ffi_closure *closure,
       
 85266  		      ffi_cif *cif,
       
 85267  		      void (*fun)(ffi_cif*, void*, void**, void*),
       
 85268  		      void *user_data,
       
 85269  		      void *codeloc)
       
 85270  {
       
 85271    unsigned int *tramp;
       
 85272  
       
 85273 -  FFI_ASSERT (cif->abi == FFI_GCC_SYSV);
       
 85274 +  if (cif->abi != FFI_SYSV)
       
 85275 +    return FFI_BAD_ABI;
       
 85276  
       
 85277    tramp = (unsigned int *) &closure->tramp[0];
       
 85278    /* Since ffi_closure is an aligned object, the ffi trampoline is
       
 85279       called as an SHcompact code.  Sigh.
       
 85280       SHcompact part:
       
 85281       mova @(1,pc),r0; add #1,r0; jmp @r0; nop;
       
 85282       SHmedia part:
       
 85283       movi fnaddr >> 16,r1; shori fnaddr,r1; ptabs/l r1,tr0
       
 85284 diff --git a/js/src/ctypes/libffi/src/sh64/ffitarget.h b/js/src/ctypes/libffi/src/sh64/ffitarget.h
       
 85285 --- a/js/src/ctypes/libffi/src/sh64/ffitarget.h
       
 85286 +++ b/js/src/ctypes/libffi/src/sh64/ffitarget.h
       
 85287 @@ -1,10 +1,11 @@
       
 85288  /* -----------------------------------------------------------------*-C-*-
       
 85289 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 85290 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 85291 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 85292     Target configuration macros for SuperH - SHmedia.
       
 85293  
       
 85294     Permission is hereby granted, free of charge, to any person obtaining
       
 85295     a copy of this software and associated documentation files (the
       
 85296     ``Software''), to deal in the Software without restriction, including
       
 85297     without limitation the rights to use, copy, modify, merge, publish,
       
 85298     distribute, sublicense, and/or sell copies of the Software, and to
       
 85299     permit persons to whom the Software is furnished to do so, subject to
       
 85300 @@ -22,16 +23,20 @@
       
 85301     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 85302     DEALINGS IN THE SOFTWARE.
       
 85303  
       
 85304     ----------------------------------------------------------------------- */
       
 85305  
       
 85306  #ifndef LIBFFI_TARGET_H
       
 85307  #define LIBFFI_TARGET_H
       
 85308  
       
 85309 +#ifndef LIBFFI_H
       
 85310 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 85311 +#endif
       
 85312 +
       
 85313  /* ---- Generic type definitions ----------------------------------------- */
       
 85314  
       
 85315  #ifndef LIBFFI_ASM
       
 85316  typedef unsigned long          ffi_arg;
       
 85317  typedef signed long            ffi_sarg;
       
 85318  
       
 85319  typedef enum ffi_abi {
       
 85320    FFI_FIRST_ABI = 0,
       
 85321 diff --git a/js/src/ctypes/libffi/src/sparc/ffi.c b/js/src/ctypes/libffi/src/sparc/ffi.c
       
 85322 --- a/js/src/ctypes/libffi/src/sparc/ffi.c
       
 85323 +++ b/js/src/ctypes/libffi/src/sparc/ffi.c
       
 85324 @@ -1,10 +1,11 @@
       
 85325  /* -----------------------------------------------------------------------
       
 85326 -   ffi.c - Copyright (c) 1996, 2003, 2004, 2007, 2008 Red Hat, Inc.
       
 85327 +   ffi.c - Copyright (c) 2011, 2013 Anthony Green
       
 85328 +           Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc.
       
 85329     
       
 85330     SPARC Foreign Function Interface 
       
 85331  
       
 85332     Permission is hereby granted, free of charge, to any person obtaining
       
 85333     a copy of this software and associated documentation files (the
       
 85334     ``Software''), to deal in the Software without restriction, including
       
 85335     without limitation the rights to use, copy, modify, merge, publish,
       
 85336     distribute, sublicense, and/or sell copies of the Software, and to
       
 85337 @@ -370,16 +371,20 @@ int ffi_v9_layout_struct(ffi_type *arg, 
       
 85338  #ifdef SPARC64
       
 85339  extern int ffi_call_v9(void *, extended_cif *, unsigned, 
       
 85340  		       unsigned, unsigned *, void (*fn)(void));
       
 85341  #else
       
 85342  extern int ffi_call_v8(void *, extended_cif *, unsigned, 
       
 85343  		       unsigned, unsigned *, void (*fn)(void));
       
 85344  #endif
       
 85345  
       
 85346 +#ifndef __GNUC__
       
 85347 +void ffi_flush_icache (void *, size_t);
       
 85348 +#endif
       
 85349 +
       
 85350  void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 85351  {
       
 85352    extended_cif ecif;
       
 85353    void *rval = rvalue;
       
 85354  
       
 85355    ecif.cif = cif;
       
 85356    ecif.avalue = avalue;
       
 85357  
       
 85358 @@ -401,18 +406,64 @@ void ffi_call(ffi_cif *cif, void (*fn)(v
       
 85359  
       
 85360    switch (cif->abi) 
       
 85361      {
       
 85362      case FFI_V8:
       
 85363  #ifdef SPARC64
       
 85364        /* We don't yet support calling 32bit code from 64bit */
       
 85365        FFI_ASSERT(0);
       
 85366  #else
       
 85367 -      ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, 
       
 85368 -		  cif->flags, rvalue, fn);
       
 85369 +      if (rvalue && (cif->rtype->type == FFI_TYPE_STRUCT
       
 85370 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 85371 +	  || cif->flags == FFI_TYPE_LONGDOUBLE
       
 85372 +#endif
       
 85373 +	  ))
       
 85374 +	{
       
 85375 +	  /* For v8, we need an "unimp" with size of returning struct */
       
 85376 +	  /* behind "call", so we alloc some executable space for it. */
       
 85377 +	  /* l7 is used, we need to make sure v8.S doesn't use %l7.   */
       
 85378 +	  unsigned int *call_struct = NULL;
       
 85379 +	  ffi_closure_alloc(32, (void **)&call_struct);
       
 85380 +	  if (call_struct)
       
 85381 +	    {
       
 85382 +	      unsigned long f = (unsigned long)fn;
       
 85383 +	      call_struct[0] = 0xae10001f;		 /* mov   %i7, %l7	 */
       
 85384 +	      call_struct[1] = 0xbe10000f;		 /* mov   %o7, %i7	 */
       
 85385 +	      call_struct[2] = 0x03000000 | f >> 10;     /* sethi %hi(fn), %g1	 */
       
 85386 +	      call_struct[3] = 0x9fc06000 | (f & 0x3ff); /* jmp %g1+%lo(fn), %o7 */
       
 85387 +	      call_struct[4] = 0x01000000;		 /* nop			 */
       
 85388 +	      if (cif->rtype->size < 0x7f)
       
 85389 +		call_struct[5] = cif->rtype->size;	 /* unimp		 */
       
 85390 +	      else
       
 85391 +		call_struct[5] = 0x01000000;	     	 /* nop			 */
       
 85392 +	      call_struct[6] = 0x81c7e008;		 /* ret			 */
       
 85393 +	      call_struct[7] = 0xbe100017;		 /* mov   %l7, %i7	 */
       
 85394 +#ifdef __GNUC__
       
 85395 +	      asm volatile ("iflush %0; iflush %0+8; iflush %0+16; iflush %0+24" : :
       
 85396 +			    "r" (call_struct) : "memory");
       
 85397 +	      /* SPARC v8 requires 5 instructions for flush to be visible */
       
 85398 +	      asm volatile ("nop; nop; nop; nop; nop");
       
 85399 +#else
       
 85400 +	      ffi_flush_icache (call_struct, 32);
       
 85401 +#endif
       
 85402 +	      ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes,
       
 85403 +			  cif->flags, rvalue, call_struct);
       
 85404 +	      ffi_closure_free(call_struct);
       
 85405 +	    }
       
 85406 +	  else
       
 85407 +	    {
       
 85408 +	      ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes,
       
 85409 +			  cif->flags, rvalue, fn);
       
 85410 +	    }
       
 85411 +	}
       
 85412 +      else
       
 85413 +	{
       
 85414 +	  ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes,
       
 85415 +		      cif->flags, rvalue, fn);
       
 85416 +	}
       
 85417  #endif
       
 85418        break;
       
 85419      case FFI_V9:
       
 85420  #ifdef SPARC64
       
 85421        ffi_call_v9(ffi_prep_args_v9, &ecif, cif->bytes,
       
 85422  		  cif->flags, rval, fn);
       
 85423        if (rvalue && rval && cif->rtype->type == FFI_TYPE_STRUCT)
       
 85424  	ffi_v9_layout_struct(cif->rtype, 0, (char *)rvalue, (char *)rval, ((char *)rval)+32);
       
 85425 @@ -420,17 +471,16 @@ void ffi_call(ffi_cif *cif, void (*fn)(v
       
 85426        /* And vice versa */
       
 85427        FFI_ASSERT(0);
       
 85428  #endif
       
 85429        break;
       
 85430      default:
       
 85431        FFI_ASSERT(0);
       
 85432        break;
       
 85433      }
       
 85434 -
       
 85435  }
       
 85436  
       
 85437  
       
 85438  #ifdef SPARC64
       
 85439  extern void ffi_closure_v9(void);
       
 85440  #else
       
 85441  extern void ffi_closure_v8(void);
       
 85442  #endif
       
 85443 @@ -442,44 +492,50 @@ ffi_prep_closure_loc (ffi_closure* closu
       
 85444  		      void *user_data,
       
 85445  		      void *codeloc)
       
 85446  {
       
 85447    unsigned int *tramp = (unsigned int *) &closure->tramp[0];
       
 85448    unsigned long fn;
       
 85449  #ifdef SPARC64
       
 85450    /* Trampoline address is equal to the closure address.  We take advantage
       
 85451       of that to reduce the trampoline size by 8 bytes. */
       
 85452 -  FFI_ASSERT (cif->abi == FFI_V9);
       
 85453 +  if (cif->abi != FFI_V9)
       
 85454 +    return FFI_BAD_ABI;
       
 85455    fn = (unsigned long) ffi_closure_v9;
       
 85456    tramp[0] = 0x83414000;	/* rd	%pc, %g1	*/
       
 85457    tramp[1] = 0xca586010;	/* ldx	[%g1+16], %g5	*/
       
 85458    tramp[2] = 0x81c14000;	/* jmp	%g5		*/
       
 85459    tramp[3] = 0x01000000;	/* nop			*/
       
 85460    *((unsigned long *) &tramp[4]) = fn;
       
 85461  #else
       
 85462    unsigned long ctx = (unsigned long) codeloc;
       
 85463 -  FFI_ASSERT (cif->abi == FFI_V8);
       
 85464 +  if (cif->abi != FFI_V8)
       
 85465 +    return FFI_BAD_ABI;
       
 85466    fn = (unsigned long) ffi_closure_v8;
       
 85467    tramp[0] = 0x03000000 | fn >> 10;	/* sethi %hi(fn), %g1	*/
       
 85468    tramp[1] = 0x05000000 | ctx >> 10;	/* sethi %hi(ctx), %g2	*/
       
 85469    tramp[2] = 0x81c06000 | (fn & 0x3ff);	/* jmp   %g1+%lo(fn)	*/
       
 85470    tramp[3] = 0x8410a000 | (ctx & 0x3ff);/* or    %g2, %lo(ctx)	*/
       
 85471  #endif
       
 85472  
       
 85473    closure->cif = cif;
       
 85474    closure->fun = fun;
       
 85475    closure->user_data = user_data;
       
 85476  
       
 85477 -  /* Flush the Icache.  FIXME: alignment isn't certain, assume 8 bytes */
       
 85478 +  /* Flush the Icache.  closure is 8 bytes aligned.  */
       
 85479 +#ifdef __GNUC__
       
 85480  #ifdef SPARC64
       
 85481 -  asm volatile ("flush	%0" : : "r" (closure) : "memory");
       
 85482 -  asm volatile ("flush	%0" : : "r" (((char *) closure) + 8) : "memory");
       
 85483 +  asm volatile ("flush	%0; flush %0+8" : : "r" (closure) : "memory");
       
 85484  #else
       
 85485 -  asm volatile ("iflush	%0" : : "r" (closure) : "memory");
       
 85486 -  asm volatile ("iflush	%0" : : "r" (((char *) closure) + 8) : "memory");
       
 85487 +  asm volatile ("iflush	%0; iflush %0+8" : : "r" (closure) : "memory");
       
 85488 +  /* SPARC v8 requires 5 instructions for flush to be visible */
       
 85489 +  asm volatile ("nop; nop; nop; nop; nop");
       
 85490 +#endif
       
 85491 +#else
       
 85492 +  ffi_flush_icache (closure, 16);
       
 85493  #endif
       
 85494  
       
 85495    return FFI_OK;
       
 85496  }
       
 85497  
       
 85498  int
       
 85499  ffi_closure_sparc_inner_v8(ffi_closure *closure,
       
 85500    void *rvalue, unsigned long *gpr, unsigned long *scratch)
       
 85501 diff --git a/js/src/ctypes/libffi/src/sparc/ffitarget.h b/js/src/ctypes/libffi/src/sparc/ffitarget.h
       
 85502 --- a/js/src/ctypes/libffi/src/sparc/ffitarget.h
       
 85503 +++ b/js/src/ctypes/libffi/src/sparc/ffitarget.h
       
 85504 @@ -1,10 +1,11 @@
       
 85505  /* -----------------------------------------------------------------*-C-*-
       
 85506 -   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
       
 85507 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 85508 +                 Copyright (c) 1996-2003  Red Hat, Inc.
       
 85509     Target configuration macros for SPARC.
       
 85510  
       
 85511     Permission is hereby granted, free of charge, to any person obtaining
       
 85512     a copy of this software and associated documentation files (the
       
 85513     ``Software''), to deal in the Software without restriction, including
       
 85514     without limitation the rights to use, copy, modify, merge, publish,
       
 85515     distribute, sublicense, and/or sell copies of the Software, and to
       
 85516     permit persons to whom the Software is furnished to do so, subject to
       
 85517 @@ -22,16 +23,20 @@
       
 85518     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 85519     DEALINGS IN THE SOFTWARE.
       
 85520  
       
 85521     ----------------------------------------------------------------------- */
       
 85522  
       
 85523  #ifndef LIBFFI_TARGET_H
       
 85524  #define LIBFFI_TARGET_H
       
 85525  
       
 85526 +#ifndef LIBFFI_H
       
 85527 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 85528 +#endif
       
 85529 +
       
 85530  /* ---- System specific configurations ----------------------------------- */
       
 85531  
       
 85532  #if defined(__arch64__) || defined(__sparcv9)
       
 85533  #ifndef SPARC64
       
 85534  #define SPARC64
       
 85535  #endif
       
 85536  #endif
       
 85537  
       
 85538 diff --git a/js/src/ctypes/libffi/src/sparc/v8.S b/js/src/ctypes/libffi/src/sparc/v8.S
       
 85539 --- a/js/src/ctypes/libffi/src/sparc/v8.S
       
 85540 +++ b/js/src/ctypes/libffi/src/sparc/v8.S
       
 85541 @@ -1,10 +1,11 @@
       
 85542  /* -----------------------------------------------------------------------
       
 85543 -   v8.S - Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc.
       
 85544 +   v8.S - Copyright (c) 2013  The Written Word, Inc.
       
 85545 +	  Copyright (c) 1996, 1997, 2003, 2004, 2008  Red Hat, Inc.
       
 85546     
       
 85547     SPARC Foreign Function Interface 
       
 85548  
       
 85549     Permission is hereby granted, free of charge, to any person obtaining
       
 85550     a copy of this software and associated documentation files (the
       
 85551     ``Software''), to deal in the Software without restriction, including
       
 85552     without limitation the rights to use, copy, modify, merge, publish,
       
 85553     distribute, sublicense, and/or sell copies of the Software, and to
       
 85554 @@ -26,21 +27,49 @@
       
 85555  
       
 85556  #define LIBFFI_ASM	
       
 85557  #include <fficonfig.h>
       
 85558  #include <ffi.h>
       
 85559  
       
 85560  #define STACKFRAME 96		/* Minimum stack framesize for SPARC */
       
 85561  #define ARGS (64+4)		/* Offset of register area in frame */
       
 85562  
       
 85563 -.text
       
 85564 +#ifndef __GNUC__	
       
 85565 +	.text
       
 85566 +        .align 8
       
 85567 +.globl ffi_flush_icache
       
 85568 +.globl _ffi_flush_icache
       
 85569 +
       
 85570 +ffi_flush_icache:
       
 85571 +_ffi_flush_icache:	
       
 85572 +        add %o0, %o1, %o2
       
 85573 +#ifdef SPARC64	
       
 85574 +1:	flush %o0
       
 85575 +#else	
       
 85576 +1:	iflush %o0
       
 85577 +#endif
       
 85578 +	add %o0, 8, %o0
       
 85579 +	cmp %o0, %o2
       
 85580 +	blt 1b
       
 85581 +	nop
       
 85582 +	nop
       
 85583 +	nop
       
 85584 +	nop
       
 85585 +	nop
       
 85586 +	retl
       
 85587 +	nop
       
 85588 +.ffi_flush_icache_end:
       
 85589 +	.size	ffi_flush_icache,.ffi_flush_icache_end-ffi_flush_icache
       
 85590 +#endif
       
 85591 +
       
 85592 +	.text
       
 85593          .align 8
       
 85594  .globl ffi_call_v8
       
 85595  .globl _ffi_call_v8
       
 85596 -
       
 85597 +	
       
 85598  ffi_call_v8:
       
 85599  _ffi_call_v8:
       
 85600  .LLFB1:
       
 85601  	save	%sp, -STACKFRAME, %sp
       
 85602  .LLCFI0:
       
 85603  	
       
 85604  	sub	%sp, %i2, %sp	! alloca() space in stack for frame to set up
       
 85605  	add	%sp, STACKFRAME, %l0	! %l0 has start of 
       
 85606 @@ -208,16 +237,20 @@ ffi_closure_v8:
       
 85607  
       
 85608  	cmp	%o0, FFI_TYPE_STRUCT
       
 85609  	be	done2
       
 85610  
       
 85611  	cmp	%o0, FFI_TYPE_SINT64
       
 85612  	be,a	done1
       
 85613  	 ldd	[%fp-8], %i0
       
 85614  
       
 85615 +	cmp	%o0, FFI_TYPE_UINT64
       
 85616 +	be,a	done1
       
 85617 +	 ldd	[%fp-8], %i0
       
 85618 +
       
 85619  	ld	[%fp-8], %i0
       
 85620  done1:
       
 85621  	jmp	%i7+8
       
 85622  	 restore
       
 85623  done2:
       
 85624  	! Skip 'unimp'.
       
 85625  	jmp	%i7+12
       
 85626  	 restore
       
 85627 diff --git a/js/src/ctypes/libffi/src/sparc/v9.S b/js/src/ctypes/libffi/src/sparc/v9.S
       
 85628 --- a/js/src/ctypes/libffi/src/sparc/v9.S
       
 85629 +++ b/js/src/ctypes/libffi/src/sparc/v9.S
       
 85630 @@ -27,17 +27,17 @@
       
 85631  #define LIBFFI_ASM	
       
 85632  #include <fficonfig.h>
       
 85633  #include <ffi.h>
       
 85634  
       
 85635  #ifdef SPARC64
       
 85636  /* Only compile this in for 64bit builds, because otherwise the object file
       
 85637     will have inproper architecture due to used instructions.  */
       
 85638  
       
 85639 -#define STACKFRAME 128		/* Minimum stack framesize for SPARC */
       
 85640 +#define STACKFRAME 176		/* Minimum stack framesize for SPARC 64-bit */
       
 85641  #define STACK_BIAS 2047
       
 85642  #define ARGS (128)		/* Offset of register area in frame */
       
 85643  
       
 85644  .text
       
 85645          .align 8
       
 85646  .globl ffi_call_v9
       
 85647  .globl _ffi_call_v9
       
 85648  
       
 85649 diff --git a/js/src/ctypes/libffi/src/tile/ffi.c b/js/src/ctypes/libffi/src/tile/ffi.c
       
 85650 new file mode 100644
       
 85651 --- /dev/null
       
 85652 +++ b/js/src/ctypes/libffi/src/tile/ffi.c
       
 85653 @@ -0,0 +1,355 @@
       
 85654 +/* -----------------------------------------------------------------------
       
 85655 +   ffi.c - Copyright (c) 2012 Tilera Corp.
       
 85656 +
       
 85657 +   TILE Foreign Function Interface
       
 85658 +
       
 85659 +   Permission is hereby granted, free of charge, to any person obtaining
       
 85660 +   a copy of this software and associated documentation files (the
       
 85661 +   ``Software''), to deal in the Software without restriction, including
       
 85662 +   without limitation the rights to use, copy, modify, merge, publish,
       
 85663 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 85664 +   permit persons to whom the Software is furnished to do so, subject to
       
 85665 +   the following conditions:
       
 85666 +
       
 85667 +   The above copyright notice and this permission notice shall be included
       
 85668 +   in all copies or substantial portions of the Software.
       
 85669 +
       
 85670 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 85671 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 85672 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 85673 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 85674 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 85675 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 85676 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 85677 +   DEALINGS IN THE SOFTWARE.
       
 85678 +   ----------------------------------------------------------------------- */
       
 85679 +
       
 85680 +#include <ffi.h>
       
 85681 +#include <ffi_common.h>
       
 85682 +#include <stdlib.h>
       
 85683 +#include <stdint.h>
       
 85684 +#include <unistd.h>
       
 85685 +#include <arch/abi.h>
       
 85686 +#include <arch/icache.h>
       
 85687 +#include <arch/opcode.h>
       
 85688 +
       
 85689 +
       
 85690 +/* The first 10 registers are used to pass arguments and return values. */
       
 85691 +#define NUM_ARG_REGS 10
       
 85692 +
       
 85693 +/* Performs a raw function call with the given NUM_ARG_REGS register arguments
       
 85694 +   and the specified additional stack arguments (if any). */
       
 85695 +extern void ffi_call_tile(ffi_sarg reg_args[NUM_ARG_REGS],
       
 85696 +                          const ffi_sarg *stack_args,
       
 85697 +                          size_t stack_args_bytes,
       
 85698 +                          void (*fnaddr)(void))
       
 85699 +  FFI_HIDDEN;
       
 85700 +
       
 85701 +/* This handles the raw call from the closure stub, cleaning up the
       
 85702 +   parameters and delegating to ffi_closure_tile_inner. */
       
 85703 +extern void ffi_closure_tile(void) FFI_HIDDEN;
       
 85704 +
       
 85705 +
       
 85706 +ffi_status
       
 85707 +ffi_prep_cif_machdep(ffi_cif *cif)
       
 85708 +{
       
 85709 +  /* We always allocate room for all registers. Even if we don't
       
 85710 +     use them as parameters, they get returned in the same array
       
 85711 +     as struct return values so we need to make room. */
       
 85712 +  if (cif->bytes < NUM_ARG_REGS * FFI_SIZEOF_ARG)
       
 85713 +    cif->bytes = NUM_ARG_REGS * FFI_SIZEOF_ARG;
       
 85714 +
       
 85715 +  if (cif->rtype->size > NUM_ARG_REGS * FFI_SIZEOF_ARG)
       
 85716 +    cif->flags = FFI_TYPE_STRUCT;
       
 85717 +  else
       
 85718 +    cif->flags = FFI_TYPE_INT;
       
 85719 +
       
 85720 +  /* Nothing to do. */
       
 85721 +  return FFI_OK;
       
 85722 +}
       
 85723 +
       
 85724 +
       
 85725 +static long
       
 85726 +assign_to_ffi_arg(ffi_sarg *out, void *in, const ffi_type *type,
       
 85727 +                  int write_to_reg)
       
 85728 +{
       
 85729 +  switch (type->type)
       
 85730 +    {
       
 85731 +    case FFI_TYPE_SINT8:
       
 85732 +      *out = *(SINT8 *)in;
       
 85733 +      return 1;
       
 85734 +
       
 85735 +    case FFI_TYPE_UINT8:
       
 85736 +      *out = *(UINT8 *)in;
       
 85737 +      return 1;
       
 85738 +
       
 85739 +    case FFI_TYPE_SINT16:
       
 85740 +      *out = *(SINT16 *)in;
       
 85741 +      return 1;
       
 85742 +
       
 85743 +    case FFI_TYPE_UINT16:
       
 85744 +      *out = *(UINT16 *)in;
       
 85745 +      return 1;
       
 85746 +
       
 85747 +    case FFI_TYPE_SINT32:
       
 85748 +    case FFI_TYPE_UINT32:
       
 85749 +#ifndef __LP64__
       
 85750 +    case FFI_TYPE_POINTER:
       
 85751 +#endif
       
 85752 +      /* Note that even unsigned 32-bit quantities are sign extended
       
 85753 +         on tilegx when stored in a register.  */
       
 85754 +      *out = *(SINT32 *)in;
       
 85755 +      return 1;
       
 85756 +
       
 85757 +    case FFI_TYPE_FLOAT:
       
 85758 +#ifdef __tilegx__
       
 85759 +      if (write_to_reg)
       
 85760 +        {
       
 85761 +          /* Properly sign extend the value.  */
       
 85762 +          union { float f; SINT32 s32; } val;
       
 85763 +          val.f = *(float *)in;
       
 85764 +          *out = val.s32;
       
 85765 +        }
       
 85766 +      else
       
 85767 +#endif
       
 85768 +        {
       
 85769 +          *(float *)out = *(float *)in;
       
 85770 +        }
       
 85771 +      return 1;
       
 85772 +
       
 85773 +    case FFI_TYPE_SINT64:
       
 85774 +    case FFI_TYPE_UINT64:
       
 85775 +    case FFI_TYPE_DOUBLE:
       
 85776 +#ifdef __LP64__
       
 85777 +    case FFI_TYPE_POINTER:
       
 85778 +#endif
       
 85779 +      *(UINT64 *)out = *(UINT64 *)in;
       
 85780 +      return sizeof(UINT64) / FFI_SIZEOF_ARG;
       
 85781 +
       
 85782 +    case FFI_TYPE_STRUCT:
       
 85783 +      memcpy(out, in, type->size);
       
 85784 +      return (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG;
       
 85785 +
       
 85786 +    case FFI_TYPE_VOID:
       
 85787 +      /* Must be a return type. Nothing to do. */
       
 85788 +      return 0;
       
 85789 +
       
 85790 +    default:
       
 85791 +      FFI_ASSERT(0);
       
 85792 +      return -1;
       
 85793 +    }
       
 85794 +}
       
 85795 +
       
 85796 +
       
 85797 +void
       
 85798 +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 85799 +{
       
 85800 +  ffi_sarg * const arg_mem = alloca(cif->bytes);
       
 85801 +  ffi_sarg * const reg_args = arg_mem;
       
 85802 +  ffi_sarg * const stack_args = &reg_args[NUM_ARG_REGS];
       
 85803 +  ffi_sarg *argp = arg_mem;
       
 85804 +  ffi_type ** const arg_types = cif->arg_types;
       
 85805 +  const long num_args = cif->nargs;
       
 85806 +  long i;
       
 85807 +
       
 85808 +  if (cif->flags == FFI_TYPE_STRUCT)
       
 85809 +    {
       
 85810 +      /* Pass a hidden pointer to the return value. We make sure there
       
 85811 +         is scratch space for the callee to store the return value even if
       
 85812 +         our caller doesn't care about it. */
       
 85813 +      *argp++ = (intptr_t)(rvalue ? rvalue : alloca(cif->rtype->size));
       
 85814 +
       
 85815 +      /* No more work needed to return anything. */
       
 85816 +      rvalue = NULL;
       
 85817 +    }
       
 85818 +
       
 85819 +  for (i = 0; i < num_args; i++)
       
 85820 +    {
       
 85821 +      ffi_type *type = arg_types[i];
       
 85822 +      void * const arg_in = avalue[i];
       
 85823 +      ptrdiff_t arg_word = argp - arg_mem;
       
 85824 +
       
 85825 +#ifndef __tilegx__
       
 85826 +      /* Doubleword-aligned values are always in an even-number register
       
 85827 +         pair, or doubleword-aligned stack slot if out of registers. */
       
 85828 +      long align = arg_word & (type->alignment > FFI_SIZEOF_ARG);
       
 85829 +      argp += align;
       
 85830 +      arg_word += align;
       
 85831 +#endif
       
 85832 +
       
 85833 +      if (type->type == FFI_TYPE_STRUCT)
       
 85834 +        {
       
 85835 +          const size_t arg_size_in_words =
       
 85836 +            (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG;
       
 85837 +
       
 85838 +          if (arg_word < NUM_ARG_REGS &&
       
 85839 +              arg_word + arg_size_in_words > NUM_ARG_REGS)
       
 85840 +            {
       
 85841 +              /* Args are not allowed to span registers and the stack. */
       
 85842 +              argp = stack_args;
       
 85843 +            }
       
 85844 +
       
 85845 +          memcpy(argp, arg_in, type->size);
       
 85846 +          argp += arg_size_in_words;
       
 85847 +        }
       
 85848 +      else
       
 85849 +        {
       
 85850 +          argp += assign_to_ffi_arg(argp, arg_in, arg_types[i], 1);
       
 85851 +        }
       
 85852 +    }
       
 85853 +
       
 85854 +  /* Actually do the call. */
       
 85855 +  ffi_call_tile(reg_args, stack_args,
       
 85856 +                cif->bytes - (NUM_ARG_REGS * FFI_SIZEOF_ARG), fn);
       
 85857 +
       
 85858 +  if (rvalue != NULL)
       
 85859 +    assign_to_ffi_arg(rvalue, reg_args, cif->rtype, 0);
       
 85860 +}
       
 85861 +
       
 85862 +
       
 85863 +/* Template code for closure. */
       
 85864 +extern const UINT64 ffi_template_tramp_tile[] FFI_HIDDEN;
       
 85865 +
       
 85866 +
       
 85867 +ffi_status
       
 85868 +ffi_prep_closure_loc (ffi_closure *closure,
       
 85869 +                      ffi_cif *cif,
       
 85870 +                      void (*fun)(ffi_cif*, void*, void**, void*),
       
 85871 +                      void *user_data,
       
 85872 +                      void *codeloc)
       
 85873 +{
       
 85874 +#ifdef __tilegx__
       
 85875 +  /* TILE-Gx */
       
 85876 +  SINT64 c;
       
 85877 +  SINT64 h;
       
 85878 +  int s;
       
 85879 +  UINT64 *out;
       
 85880 +
       
 85881 +  if (cif->abi != FFI_UNIX)
       
 85882 +    return FFI_BAD_ABI;
       
 85883 +
       
 85884 +  out = (UINT64 *)closure->tramp;
       
 85885 +
       
 85886 +  c = (intptr_t)closure;
       
 85887 +  h = (intptr_t)ffi_closure_tile;
       
 85888 +  s = 0;
       
 85889 +
       
 85890 +  /* Find the smallest shift count that doesn't lose information
       
 85891 +     (i.e. no need to explicitly insert high bits of the address that
       
 85892 +     are just the sign extension of the low bits). */
       
 85893 +  while ((c >> s) != (SINT16)(c >> s) || (h >> s) != (SINT16)(h >> s))
       
 85894 +    s += 16;
       
 85895 +
       
 85896 +#define OPS(a, b, shift) \
       
 85897 +  (create_Imm16_X0((a) >> (shift)) | create_Imm16_X1((b) >> (shift)))
       
 85898 +
       
 85899 +  /* Emit the moveli. */
       
 85900 +  *out++ = ffi_template_tramp_tile[0] | OPS(c, h, s);
       
 85901 +  for (s -= 16; s >= 0; s -= 16)
       
 85902 +    *out++ = ffi_template_tramp_tile[1] | OPS(c, h, s);
       
 85903 +
       
 85904 +#undef OPS
       
 85905 +
       
 85906 +  *out++ = ffi_template_tramp_tile[2];
       
 85907 +
       
 85908 +#else
       
 85909 +  /* TILEPro */
       
 85910 +  UINT64 *out;
       
 85911 +  intptr_t delta;
       
 85912 +
       
 85913 +  if (cif->abi != FFI_UNIX)
       
 85914 +    return FFI_BAD_ABI;
       
 85915 +
       
 85916 +  out = (UINT64 *)closure->tramp;
       
 85917 +  delta = (intptr_t)ffi_closure_tile - (intptr_t)codeloc;
       
 85918 +
       
 85919 +  *out++ = ffi_template_tramp_tile[0] | create_JOffLong_X1(delta >> 3);
       
 85920 +#endif
       
 85921 +
       
 85922 +  closure->cif = cif;
       
 85923 +  closure->fun = fun;
       
 85924 +  closure->user_data = user_data;
       
 85925 +
       
 85926 +  invalidate_icache(closure->tramp, (char *)out - closure->tramp,
       
 85927 +                    getpagesize());
       
 85928 +
       
 85929 +  return FFI_OK;
       
 85930 +}
       
 85931 +
       
 85932 +
       
 85933 +/* This is called by the assembly wrapper for closures. This does
       
 85934 +   all of the work. On entry reg_args[0] holds the values the registers
       
 85935 +   had when the closure was invoked. On return reg_args[1] holds the register
       
 85936 +   values to be returned to the caller (many of which may be garbage). */
       
 85937 +void FFI_HIDDEN
       
 85938 +ffi_closure_tile_inner(ffi_closure *closure,
       
 85939 +                       ffi_sarg reg_args[2][NUM_ARG_REGS],
       
 85940 +                       ffi_sarg *stack_args)
       
 85941 +{
       
 85942 +  ffi_cif * const cif = closure->cif;
       
 85943 +  void ** const avalue = alloca(cif->nargs * sizeof(void *));
       
 85944 +  void *rvalue;
       
 85945 +  ffi_type ** const arg_types = cif->arg_types;
       
 85946 +  ffi_sarg * const reg_args_in = reg_args[0];
       
 85947 +  ffi_sarg * const reg_args_out = reg_args[1];
       
 85948 +  ffi_sarg * argp;
       
 85949 +  long i, arg_word, nargs = cif->nargs;
       
 85950 +  /* Use a union to guarantee proper alignment for double. */
       
 85951 +  union { ffi_sarg arg[NUM_ARG_REGS]; double d; UINT64 u64; } closure_ret;
       
 85952 +
       
 85953 +  /* Start out reading register arguments. */
       
 85954 +  argp = reg_args_in;
       
 85955 +
       
 85956 +  /* Copy the caller's structure return address to that the closure
       
 85957 +     returns the data directly to the caller.  */
       
 85958 +  if (cif->flags == FFI_TYPE_STRUCT)
       
 85959 +    {
       
 85960 +      /* Return by reference via hidden pointer. */
       
 85961 +      rvalue = (void *)(intptr_t)*argp++;
       
 85962 +      arg_word = 1;
       
 85963 +    }
       
 85964 +  else
       
 85965 +    {
       
 85966 +      /* Return the value in registers. */
       
 85967 +      rvalue = &closure_ret;
       
 85968 +      arg_word = 0;
       
 85969 +    }
       
 85970 +
       
 85971 +  /* Grab the addresses of the arguments. */
       
 85972 +  for (i = 0; i < nargs; i++)
       
 85973 +    {
       
 85974 +      ffi_type * const type = arg_types[i];
       
 85975 +      const size_t arg_size_in_words =
       
 85976 +        (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG;
       
 85977 +
       
 85978 +#ifndef __tilegx__
       
 85979 +      /* Doubleword-aligned values are always in an even-number register
       
 85980 +         pair, or doubleword-aligned stack slot if out of registers. */
       
 85981 +      long align = arg_word & (type->alignment > FFI_SIZEOF_ARG);
       
 85982 +      argp += align;
       
 85983 +      arg_word += align;
       
 85984 +#endif
       
 85985 +
       
 85986 +      if (arg_word == NUM_ARG_REGS ||
       
 85987 +          (arg_word < NUM_ARG_REGS &&
       
 85988 +           arg_word + arg_size_in_words > NUM_ARG_REGS))
       
 85989 +        {
       
 85990 +          /* Switch to reading arguments from the stack. */
       
 85991 +          argp = stack_args;
       
 85992 +          arg_word = NUM_ARG_REGS;
       
 85993 +        }
       
 85994 +
       
 85995 +      avalue[i] = argp;
       
 85996 +      argp += arg_size_in_words;
       
 85997 +      arg_word += arg_size_in_words;
       
 85998 +    }
       
 85999 +
       
 86000 +  /* Invoke the closure.  */
       
 86001 +  closure->fun(cif, rvalue, avalue, closure->user_data);
       
 86002 +
       
 86003 +  if (cif->flags != FFI_TYPE_STRUCT)
       
 86004 +    {
       
 86005 +      /* Canonicalize for register representation. */
       
 86006 +      assign_to_ffi_arg(reg_args_out, &closure_ret, cif->rtype, 1);
       
 86007 +    }
       
 86008 +}
       
 86009 diff --git a/js/src/ctypes/libffi/src/tile/ffitarget.h b/js/src/ctypes/libffi/src/tile/ffitarget.h
       
 86010 new file mode 100644
       
 86011 --- /dev/null
       
 86012 +++ b/js/src/ctypes/libffi/src/tile/ffitarget.h
       
 86013 @@ -0,0 +1,65 @@
       
 86014 +/* -----------------------------------------------------------------*-C-*-
       
 86015 +   ffitarget.h - Copyright (c) 2012 Tilera Corp.
       
 86016 +   Target configuration macros for TILE.
       
 86017 +
       
 86018 +   Permission is hereby granted, free of charge, to any person obtaining
       
 86019 +   a copy of this software and associated documentation files (the
       
 86020 +   ``Software''), to deal in the Software without restriction, including
       
 86021 +   without limitation the rights to use, copy, modify, merge, publish,
       
 86022 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 86023 +   permit persons to whom the Software is furnished to do so, subject to
       
 86024 +   the following conditions:
       
 86025 +
       
 86026 +   The above copyright notice and this permission notice shall be included
       
 86027 +   in all copies or substantial portions of the Software.
       
 86028 +
       
 86029 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 86030 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 86031 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 86032 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 86033 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 86034 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 86035 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 86036 +   DEALINGS IN THE SOFTWARE.
       
 86037 +   ----------------------------------------------------------------------- */
       
 86038 +
       
 86039 +#ifndef LIBFFI_TARGET_H
       
 86040 +#define LIBFFI_TARGET_H
       
 86041 +
       
 86042 +#ifndef LIBFFI_H
       
 86043 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 86044 +#endif
       
 86045 +
       
 86046 +#ifndef LIBFFI_ASM
       
 86047 +
       
 86048 +#include <arch/abi.h>
       
 86049 +
       
 86050 +typedef uint_reg_t ffi_arg;
       
 86051 +typedef int_reg_t  ffi_sarg;
       
 86052 +
       
 86053 +typedef enum ffi_abi {
       
 86054 +  FFI_FIRST_ABI = 0,
       
 86055 +  FFI_UNIX,
       
 86056 +  FFI_LAST_ABI,
       
 86057 +  FFI_DEFAULT_ABI = FFI_UNIX
       
 86058 +} ffi_abi;
       
 86059 +#endif
       
 86060 +
       
 86061 +/* ---- Definitions for closures ----------------------------------------- */
       
 86062 +#define FFI_CLOSURES 1
       
 86063 +
       
 86064 +#ifdef __tilegx__
       
 86065 +/* We always pass 8-byte values, even in -m32 mode. */
       
 86066 +# define FFI_SIZEOF_ARG 8
       
 86067 +# ifdef __LP64__
       
 86068 +#  define FFI_TRAMPOLINE_SIZE (8 * 5)  /* 5 bundles */
       
 86069 +# else
       
 86070 +#  define FFI_TRAMPOLINE_SIZE (8 * 3)  /* 3 bundles */
       
 86071 +# endif
       
 86072 +#else
       
 86073 +# define FFI_SIZEOF_ARG 4
       
 86074 +# define FFI_TRAMPOLINE_SIZE 8 /* 1 bundle */
       
 86075 +#endif
       
 86076 +#define FFI_NATIVE_RAW_API 0
       
 86077 +
       
 86078 +#endif
       
 86079 diff --git a/js/src/ctypes/libffi/src/tile/tile.S b/js/src/ctypes/libffi/src/tile/tile.S
       
 86080 new file mode 100644
       
 86081 --- /dev/null
       
 86082 +++ b/js/src/ctypes/libffi/src/tile/tile.S
       
 86083 @@ -0,0 +1,360 @@
       
 86084 +/* -----------------------------------------------------------------------
       
 86085 +   tile.S - Copyright (c) 2011 Tilera Corp.
       
 86086 +
       
 86087 +   Tilera TILEPro and TILE-Gx Foreign Function Interface
       
 86088 +
       
 86089 +   Permission is hereby granted, free of charge, to any person obtaining
       
 86090 +   a copy of this software and associated documentation files (the
       
 86091 +   ``Software''), to deal in the Software without restriction, including
       
 86092 +   without limitation the rights to use, copy, modify, merge, publish,
       
 86093 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 86094 +   permit persons to whom the Software is furnished to do so, subject to
       
 86095 +   the following conditions:
       
 86096 +
       
 86097 +   The above copyright notice and this permission notice shall be included
       
 86098 +   in all copies or substantial portions of the Software.
       
 86099 +
       
 86100 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 86101 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 86102 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 86103 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 86104 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 86105 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 86106 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 86107 +   DEALINGS IN THE SOFTWARE.
       
 86108 +   ----------------------------------------------------------------------- */
       
 86109 +
       
 86110 +#define LIBFFI_ASM
       
 86111 +#include <fficonfig.h>
       
 86112 +#include <ffi.h>
       
 86113 +
       
 86114 +/* Number of bytes in a register. */
       
 86115 +#define REG_SIZE FFI_SIZEOF_ARG
       
 86116 +
       
 86117 +/* Number of bytes in stack linkage area for backtracing.
       
 86118 +
       
 86119 +   A note about the ABI: on entry to a procedure, sp points to a stack
       
 86120 +   slot where it must spill the return address if it's not a leaf.
       
 86121 +   REG_SIZE bytes beyond that is a slot owned by the caller which
       
 86122 +   contains the sp value that the caller had when it was originally
       
 86123 +   entered (i.e. the caller's frame pointer). */
       
 86124 +#define LINKAGE_SIZE (2 * REG_SIZE)
       
 86125 +
       
 86126 +/* The first 10 registers are used to pass arguments and return values. */
       
 86127 +#define NUM_ARG_REGS 10
       
 86128 +
       
 86129 +#ifdef __tilegx__
       
 86130 +#define SW st
       
 86131 +#define LW ld
       
 86132 +#define BGZT bgtzt
       
 86133 +#else
       
 86134 +#define SW sw
       
 86135 +#define LW lw
       
 86136 +#define BGZT bgzt
       
 86137 +#endif
       
 86138 +
       
 86139 +
       
 86140 +/* void ffi_call_tile (int_reg_t reg_args[NUM_ARG_REGS],
       
 86141 +                       const int_reg_t *stack_args,
       
 86142 +                       unsigned long stack_args_bytes,
       
 86143 +                       void (*fnaddr)(void));
       
 86144 +
       
 86145 +        On entry, REG_ARGS contain the outgoing register values,
       
 86146 +        and STACK_ARGS contains STACK_ARG_BYTES of additional values
       
 86147 +        to be passed on the stack. If STACK_ARG_BYTES is zero, then
       
 86148 +        STACK_ARGS is ignored.
       
 86149 +
       
 86150 +        When the invoked function returns, the values of r0-r9 are
       
 86151 +        blindly stored back into REG_ARGS for the caller to examine. */
       
 86152 +
       
 86153 +        .section .text.ffi_call_tile, "ax", @progbits
       
 86154 +        .align  8
       
 86155 +        .globl  ffi_call_tile
       
 86156 +        FFI_HIDDEN(ffi_call_tile)
       
 86157 +ffi_call_tile:
       
 86158 +
       
 86159 +/* Incoming arguments. */
       
 86160 +#define REG_ARGS                r0
       
 86161 +#define INCOMING_STACK_ARGS     r1
       
 86162 +#define STACK_ARG_BYTES         r2
       
 86163 +#define ORIG_FNADDR             r3
       
 86164 +
       
 86165 +/* Temporary values. */
       
 86166 +#define FRAME_SIZE              r10
       
 86167 +#define TMP                     r11
       
 86168 +#define TMP2                    r12
       
 86169 +#define OUTGOING_STACK_ARGS     r13
       
 86170 +#define REG_ADDR_PTR            r14
       
 86171 +#define RETURN_REG_ADDR         r15
       
 86172 +#define FNADDR                  r16
       
 86173 +
       
 86174 +        .cfi_startproc
       
 86175 +        {
       
 86176 +         /* Save return address. */
       
 86177 +         SW     sp, lr
       
 86178 +         .cfi_offset lr, 0
       
 86179 +         /* Prepare to spill incoming r52. */
       
 86180 +         addi   TMP, sp, -REG_SIZE
       
 86181 +         /* Increase frame size to have room to spill r52 and REG_ARGS.
       
 86182 +            The +7 is to round up mod 8. */
       
 86183 +         addi   FRAME_SIZE, STACK_ARG_BYTES, \
       
 86184 +                REG_SIZE + REG_SIZE + LINKAGE_SIZE + 7
       
 86185 +        }
       
 86186 +        {
       
 86187 +         /* Round stack frame size to a multiple of 8 to satisfy ABI. */
       
 86188 +         andi   FRAME_SIZE, FRAME_SIZE, -8
       
 86189 +         /* Compute where to spill REG_ARGS value. */
       
 86190 +         addi   TMP2, sp, -(REG_SIZE * 2)
       
 86191 +        }
       
 86192 +        {
       
 86193 +         /* Spill incoming r52. */
       
 86194 +         SW     TMP, r52
       
 86195 +         .cfi_offset r52, -REG_SIZE
       
 86196 +         /* Set up our frame pointer. */
       
 86197 +         move   r52, sp
       
 86198 +         .cfi_def_cfa_register r52
       
 86199 +         /* Push stack frame. */
       
 86200 +         sub    sp, sp, FRAME_SIZE
       
 86201 +        }
       
 86202 +        {
       
 86203 +         /* Prepare to set up stack linkage. */
       
 86204 +         addi   TMP, sp, REG_SIZE
       
 86205 +         /* Prepare to memcpy stack args. */
       
 86206 +         addi   OUTGOING_STACK_ARGS, sp, LINKAGE_SIZE
       
 86207 +         /* Save REG_ARGS which we will need after we call the subroutine. */
       
 86208 +         SW     TMP2, REG_ARGS
       
 86209 +        }
       
 86210 +        {
       
 86211 +         /* Set up linkage info to hold incoming stack pointer. */
       
 86212 +         SW     TMP, r52
       
 86213 +        }
       
 86214 +        {
       
 86215 +         /* Skip stack args memcpy if we don't have any stack args (common). */
       
 86216 +         blezt  STACK_ARG_BYTES, .Ldone_stack_args_memcpy
       
 86217 +        }
       
 86218 +
       
 86219 +.Lmemcpy_stack_args:
       
 86220 +        {
       
 86221 +         /* Load incoming argument from stack_args. */
       
 86222 +         LW     TMP, INCOMING_STACK_ARGS
       
 86223 +         addi   INCOMING_STACK_ARGS, INCOMING_STACK_ARGS, REG_SIZE
       
 86224 +        }
       
 86225 +        {
       
 86226 +         /* Store stack argument into outgoing stack argument area. */
       
 86227 +         SW     OUTGOING_STACK_ARGS, TMP
       
 86228 +         addi   OUTGOING_STACK_ARGS, OUTGOING_STACK_ARGS, REG_SIZE
       
 86229 +         addi   STACK_ARG_BYTES, STACK_ARG_BYTES, -REG_SIZE
       
 86230 +        }
       
 86231 +        {
       
 86232 +         BGZT   STACK_ARG_BYTES, .Lmemcpy_stack_args
       
 86233 +        }
       
 86234 +.Ldone_stack_args_memcpy:
       
 86235 +
       
 86236 +        {
       
 86237 +         /* Copy aside ORIG_FNADDR so we can overwrite its register. */
       
 86238 +         move   FNADDR, ORIG_FNADDR
       
 86239 +         /* Prepare to load argument registers. */
       
 86240 +         addi   REG_ADDR_PTR, r0, REG_SIZE
       
 86241 +         /* Load outgoing r0. */
       
 86242 +         LW     r0, r0
       
 86243 +        }
       
 86244 +
       
 86245 +        /* Load up argument registers from the REG_ARGS array. */
       
 86246 +#define LOAD_REG(REG, PTR) \
       
 86247 +        { \
       
 86248 +         LW     REG, PTR ; \
       
 86249 +         addi   PTR, PTR, REG_SIZE \
       
 86250 +        }
       
 86251 +
       
 86252 +        LOAD_REG(r1, REG_ADDR_PTR)
       
 86253 +        LOAD_REG(r2, REG_ADDR_PTR)
       
 86254 +        LOAD_REG(r3, REG_ADDR_PTR)
       
 86255 +        LOAD_REG(r4, REG_ADDR_PTR)
       
 86256 +        LOAD_REG(r5, REG_ADDR_PTR)
       
 86257 +        LOAD_REG(r6, REG_ADDR_PTR)
       
 86258 +        LOAD_REG(r7, REG_ADDR_PTR)
       
 86259 +        LOAD_REG(r8, REG_ADDR_PTR)
       
 86260 +        LOAD_REG(r9, REG_ADDR_PTR)
       
 86261 +
       
 86262 +        {
       
 86263 +         /* Call the subroutine. */
       
 86264 +         jalr   FNADDR
       
 86265 +        }
       
 86266 +
       
 86267 +        {
       
 86268 +         /* Restore original lr. */
       
 86269 +         LW     lr, r52
       
 86270 +         /* Prepare to recover ARGS, which we spilled earlier. */
       
 86271 +         addi   TMP, r52, -(2 * REG_SIZE)
       
 86272 +        }
       
 86273 +        {
       
 86274 +         /* Restore ARGS, so we can fill it in with the return regs r0-r9. */
       
 86275 +         LW     RETURN_REG_ADDR, TMP
       
 86276 +         /* Prepare to restore original r52. */
       
 86277 +         addi   TMP, r52, -REG_SIZE
       
 86278 +        }
       
 86279 +
       
 86280 +        {
       
 86281 +         /* Pop stack frame. */
       
 86282 +         move   sp, r52
       
 86283 +         /* Restore original r52. */
       
 86284 +         LW     r52, TMP
       
 86285 +        }
       
 86286 +
       
 86287 +#define STORE_REG(REG, PTR) \
       
 86288 +        { \
       
 86289 +         SW     PTR, REG ; \
       
 86290 +         addi   PTR, PTR, REG_SIZE \
       
 86291 +        }
       
 86292 +
       
 86293 +        /* Return all register values by reference. */
       
 86294 +        STORE_REG(r0, RETURN_REG_ADDR)
       
 86295 +        STORE_REG(r1, RETURN_REG_ADDR)
       
 86296 +        STORE_REG(r2, RETURN_REG_ADDR)
       
 86297 +        STORE_REG(r3, RETURN_REG_ADDR)
       
 86298 +        STORE_REG(r4, RETURN_REG_ADDR)
       
 86299 +        STORE_REG(r5, RETURN_REG_ADDR)
       
 86300 +        STORE_REG(r6, RETURN_REG_ADDR)
       
 86301 +        STORE_REG(r7, RETURN_REG_ADDR)
       
 86302 +        STORE_REG(r8, RETURN_REG_ADDR)
       
 86303 +        STORE_REG(r9, RETURN_REG_ADDR)
       
 86304 +
       
 86305 +        {
       
 86306 +         jrp    lr
       
 86307 +        }
       
 86308 +
       
 86309 +        .cfi_endproc
       
 86310 +        .size ffi_call_tile, .-ffi_call_tile
       
 86311 +
       
 86312 +/* ffi_closure_tile(...)
       
 86313 +
       
 86314 +   On entry, lr points to the closure plus 8 bytes, and r10
       
 86315 +   contains the actual return address.
       
 86316 +
       
 86317 +   This function simply dumps all register parameters into a stack array
       
 86318 +   and passes the closure, the registers array, and the stack arguments
       
 86319 +   to C code that does all of the actual closure processing. */
       
 86320 +
       
 86321 +        .section .text.ffi_closure_tile, "ax", @progbits
       
 86322 +        .align  8
       
 86323 +        .globl  ffi_closure_tile
       
 86324 +        FFI_HIDDEN(ffi_closure_tile)
       
 86325 +
       
 86326 +        .cfi_startproc
       
 86327 +/* Room to spill all NUM_ARG_REGS incoming registers, plus frame linkage. */
       
 86328 +#define CLOSURE_FRAME_SIZE (((NUM_ARG_REGS * REG_SIZE * 2 + LINKAGE_SIZE) + 7) & -8)
       
 86329 +ffi_closure_tile:
       
 86330 +        {
       
 86331 +#ifdef __tilegx__
       
 86332 +         st     sp, lr
       
 86333 +         .cfi_offset lr, 0
       
 86334 +#else
       
 86335 +         /* Save return address (in r10 due to closure stub wrapper). */
       
 86336 +         SW     sp, r10
       
 86337 +         .cfi_return_column r10
       
 86338 +         .cfi_offset r10, 0
       
 86339 +#endif
       
 86340 +         /* Compute address for stack frame linkage. */
       
 86341 +         addli   r10, sp, -(CLOSURE_FRAME_SIZE - REG_SIZE)
       
 86342 +        }
       
 86343 +        {
       
 86344 +         /* Save incoming stack pointer in linkage area. */
       
 86345 +         SW     r10, sp
       
 86346 +         .cfi_offset sp, -(CLOSURE_FRAME_SIZE - REG_SIZE)
       
 86347 +         /* Push a new stack frame. */
       
 86348 +         addli   sp, sp, -CLOSURE_FRAME_SIZE
       
 86349 +         .cfi_adjust_cfa_offset CLOSURE_FRAME_SIZE
       
 86350 +        }
       
 86351 +
       
 86352 +        {
       
 86353 +         /* Create pointer to where to start spilling registers. */
       
 86354 +         addi   r10, sp, LINKAGE_SIZE
       
 86355 +        }
       
 86356 +
       
 86357 +        /* Spill all the incoming registers. */
       
 86358 +        STORE_REG(r0, r10)
       
 86359 +        STORE_REG(r1, r10)
       
 86360 +        STORE_REG(r2, r10)
       
 86361 +        STORE_REG(r3, r10)
       
 86362 +        STORE_REG(r4, r10)
       
 86363 +        STORE_REG(r5, r10)
       
 86364 +        STORE_REG(r6, r10)
       
 86365 +        STORE_REG(r7, r10)
       
 86366 +        STORE_REG(r8, r10)
       
 86367 +        {
       
 86368 +         /* Save r9. */
       
 86369 +         SW     r10, r9
       
 86370 +#ifdef __tilegx__
       
 86371 +         /* Pointer to closure is passed in r11. */
       
 86372 +         move  r0, r11
       
 86373 +#else
       
 86374 +         /* Compute pointer to the closure object. Because the closure
       
 86375 +            starts with a "jal ffi_closure_tile", we can just take the
       
 86376 +            value of lr (a phony return address pointing into the closure)
       
 86377 +            and subtract 8. */
       
 86378 +         addi   r0, lr, -8
       
 86379 +#endif
       
 86380 +         /* Compute a pointer to the register arguments we just spilled. */
       
 86381 +         addi   r1, sp, LINKAGE_SIZE
       
 86382 +        }
       
 86383 +        {
       
 86384 +         /* Compute a pointer to the extra stack arguments (if any). */
       
 86385 +         addli   r2, sp, CLOSURE_FRAME_SIZE + LINKAGE_SIZE
       
 86386 +         /* Call C code to deal with all of the grotty details. */
       
 86387 +         jal    ffi_closure_tile_inner
       
 86388 +        }
       
 86389 +        {
       
 86390 +         addli   r10, sp, CLOSURE_FRAME_SIZE
       
 86391 +        }
       
 86392 +        {
       
 86393 +         /* Restore the return address. */
       
 86394 +         LW     lr, r10
       
 86395 +         /* Compute pointer to registers array. */
       
 86396 +         addli   r10, sp, LINKAGE_SIZE + (NUM_ARG_REGS * REG_SIZE)
       
 86397 +        }
       
 86398 +        /* Return all the register values, which C code may have set. */
       
 86399 +        LOAD_REG(r0, r10)
       
 86400 +        LOAD_REG(r1, r10)
       
 86401 +        LOAD_REG(r2, r10)
       
 86402 +        LOAD_REG(r3, r10)
       
 86403 +        LOAD_REG(r4, r10)
       
 86404 +        LOAD_REG(r5, r10)
       
 86405 +        LOAD_REG(r6, r10)
       
 86406 +        LOAD_REG(r7, r10)
       
 86407 +        LOAD_REG(r8, r10)
       
 86408 +        LOAD_REG(r9, r10)
       
 86409 +        {
       
 86410 +         /* Pop the frame. */
       
 86411 +         addli   sp, sp, CLOSURE_FRAME_SIZE
       
 86412 +         jrp    lr
       
 86413 +        }
       
 86414 +
       
 86415 +        .cfi_endproc
       
 86416 +        .size   ffi_closure_tile, . - ffi_closure_tile
       
 86417 +
       
 86418 +
       
 86419 +/* What follows are code template instructions that get copied to the
       
 86420 +   closure trampoline by ffi_prep_closure_loc.  The zeroed operands
       
 86421 +   get replaced by their proper values at runtime. */
       
 86422 +
       
 86423 +        .section .text.ffi_template_tramp_tile, "ax", @progbits
       
 86424 +        .align  8
       
 86425 +        .globl  ffi_template_tramp_tile
       
 86426 +        FFI_HIDDEN(ffi_template_tramp_tile)
       
 86427 +ffi_template_tramp_tile:
       
 86428 +#ifdef __tilegx__
       
 86429 +        {
       
 86430 +          moveli r11, 0 /* backpatched to address of containing closure. */
       
 86431 +          moveli r10, 0 /* backpatched to ffi_closure_tile. */
       
 86432 +        }
       
 86433 +        /* Note: the following bundle gets generated multiple times
       
 86434 +           depending on the pointer value (esp. useful for -m32 mode). */
       
 86435 +        { shl16insli r11, r11, 0 ; shl16insli r10, r10, 0 }
       
 86436 +        { info 2+8 /* for backtracer: -> pc in lr, frame size 0 */ ; jr r10 }
       
 86437 +#else
       
 86438 +        /* 'jal .' yields a PC-relative offset of zero so we can OR in the
       
 86439 +           right offset at runtime. */
       
 86440 +        { move r10, lr ; jal . /* ffi_closure_tile */ }
       
 86441 +#endif
       
 86442 +
       
 86443 +        .size   ffi_template_tramp_tile, . - ffi_template_tramp_tile
       
 86444 diff --git a/js/src/ctypes/libffi/src/types.c b/js/src/ctypes/libffi/src/types.c
       
 86445 --- a/js/src/ctypes/libffi/src/types.c
       
 86446 +++ b/js/src/ctypes/libffi/src/types.c
       
 86447 @@ -39,16 +39,27 @@ struct struct_align_##name {			\
       
 86448    type x;					\
       
 86449  };						\
       
 86450  const ffi_type ffi_type_##name = {		\
       
 86451    sizeof(type),					\
       
 86452    offsetof(struct struct_align_##name, x),	\
       
 86453    id, NULL					\
       
 86454  }
       
 86455  
       
 86456 +#define FFI_NONCONST_TYPEDEF(name, type, id)	\
       
 86457 +struct struct_align_##name {			\
       
 86458 +  char c;					\
       
 86459 +  type x;					\
       
 86460 +};						\
       
 86461 +ffi_type ffi_type_##name = {			\
       
 86462 +  sizeof(type),					\
       
 86463 +  offsetof(struct struct_align_##name, x),	\
       
 86464 +  id, NULL					\
       
 86465 +}
       
 86466 +
       
 86467  /* Size and alignment are fake here. They must not be 0. */
       
 86468  const ffi_type ffi_type_void = {
       
 86469    1, 1, FFI_TYPE_VOID, NULL
       
 86470  };
       
 86471  
       
 86472  FFI_TYPEDEF(uint8, UINT8, FFI_TYPE_UINT8);
       
 86473  FFI_TYPEDEF(sint8, SINT8, FFI_TYPE_SINT8);
       
 86474  FFI_TYPEDEF(uint16, UINT16, FFI_TYPE_UINT16);
       
 86475 @@ -68,10 +79,14 @@ FFI_TYPEDEF(double, double, FFI_TYPE_DOU
       
 86476     maintain binary compatibility, as -mlong-double-128 can be used
       
 86477     at any time.  */
       
 86478  /* Validate the hard-coded number below.  */
       
 86479  # if defined(__LONG_DOUBLE_128__) && FFI_TYPE_LONGDOUBLE != 4
       
 86480  #  error FFI_TYPE_LONGDOUBLE out of date
       
 86481  # endif
       
 86482  const ffi_type ffi_type_longdouble = { 16, 16, 4, NULL };
       
 86483  #elif FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 86484 +# if HAVE_LONG_DOUBLE_VARIANT
       
 86485 +FFI_NONCONST_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE);
       
 86486 +# else
       
 86487  FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE);
       
 86488 +# endif
       
 86489  #endif
       
 86490 diff --git a/js/src/ctypes/libffi/src/vax/elfbsd.S b/js/src/ctypes/libffi/src/vax/elfbsd.S
       
 86491 new file mode 100644
       
 86492 --- /dev/null
       
 86493 +++ b/js/src/ctypes/libffi/src/vax/elfbsd.S
       
 86494 @@ -0,0 +1,195 @@
       
 86495 +/*
       
 86496 + * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
       
 86497 + *
       
 86498 + * Permission is hereby granted, free of charge, to any person obtaining
       
 86499 + * a copy of this software and associated documentation files (the
       
 86500 + * ``Software''), to deal in the Software without restriction, including
       
 86501 + * without limitation the rights to use, copy, modify, merge, publish,
       
 86502 + * distribute, sublicense, and/or sell copies of the Software, and to
       
 86503 + * permit persons to whom the Software is furnished to do so, subject to
       
 86504 + * the following conditions:
       
 86505 + * 
       
 86506 + * The above copyright notice and this permission notice shall be included
       
 86507 + * in all copies or substantial portions of the Software.
       
 86508 + * 
       
 86509 + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 86510 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 86511 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 86512 + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 86513 + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 86514 + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 86515 + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
 86516 + */
       
 86517 +
       
 86518 +/*
       
 86519 + * vax Foreign Function Interface
       
 86520 + */
       
 86521 +
       
 86522 +#define LIBFFI_ASM	
       
 86523 +#include <fficonfig.h>
       
 86524 +#include <ffi.h>
       
 86525 +
       
 86526 +	.text
       
 86527 +
       
 86528 +/*
       
 86529 + * void *					%r0
       
 86530 + * ffi_call_elfbsd(extended_cif *ecif,		4(%ap)
       
 86531 + *		   unsigned bytes,		8(%ap)
       
 86532 + *		   unsigned flags,		12(%ap)
       
 86533 + *		   void *rvalue,		16(%ap)
       
 86534 + *		   void (*fn)());		20(%ap)
       
 86535 + */
       
 86536 +	.globl	ffi_call_elfbsd
       
 86537 +	.type	ffi_call_elfbsd,@function
       
 86538 +	.align	2
       
 86539 +ffi_call_elfbsd:
       
 86540 +	.word	0x00c		# save R2 and R3
       
 86541 +
       
 86542 +	# Allocate stack space for the args
       
 86543 +	subl2	8(%ap), %sp
       
 86544 +
       
 86545 +	# Call ffi_prep_args
       
 86546 +	pushl	%sp
       
 86547 +	pushl	4(%ap)
       
 86548 +	calls	$2, ffi_prep_args
       
 86549 +
       
 86550 +	# Get function pointer
       
 86551 +	movl	20(%ap), %r1
       
 86552 +
       
 86553 +	# Build a CALLS frame
       
 86554 +	ashl	$-2, 8(%ap), %r0
       
 86555 +	pushl	%r0		# argument stack usage
       
 86556 +	movl	%sp, %r0	# future %ap
       
 86557 +	# saved registers
       
 86558 +	bbc	$11, 0(%r1), 1f
       
 86559 +	pushl	%r11
       
 86560 +1:	bbc	$10, 0(%r1), 1f
       
 86561 +	pushl	%r10
       
 86562 +1:	bbc	$9, 0(%r1), 1f
       
 86563 +	pushl	%r9
       
 86564 +1:	bbc	$8, 0(%r1), 1f
       
 86565 +	pushl	%r8
       
 86566 +1:	bbc	$7, 0(%r1), 1f
       
 86567 +	pushl	%r7
       
 86568 +1:	bbc	$6, 0(%r1), 1f
       
 86569 +	pushl	%r6
       
 86570 +1:	bbc	$5, 0(%r1), 1f
       
 86571 +	pushl	%r5
       
 86572 +1:	bbc	$4, 0(%r1), 1f
       
 86573 +	pushl	%r4
       
 86574 +1:	bbc	$3, 0(%r1), 1f
       
 86575 +	pushl	%r3
       
 86576 +1:	bbc	$2, 0(%r1), 1f
       
 86577 +	pushl	%r2
       
 86578 +1:	
       
 86579 +	pushal	9f
       
 86580 +	pushl	%fp
       
 86581 +	pushl	%ap
       
 86582 +	movl	16(%ap), %r3	# struct return address, if needed
       
 86583 +	movl	%r0, %ap
       
 86584 +	movzwl	4(%fp), %r0	# previous PSW, without the saved registers mask
       
 86585 +	bisl2	$0x20000000, %r0 # calls frame
       
 86586 +	movzwl	0(%r1), %r2
       
 86587 +	bicw2	$0xf003, %r2	# only keep R11-R2
       
 86588 +	ashl	$16, %r2, %r2
       
 86589 +	bisl2	%r2, %r0	# saved register mask of the called function
       
 86590 +	pushl	%r0	
       
 86591 +	pushl	$0
       
 86592 +	movl	%sp, %fp
       
 86593 +
       
 86594 +	# Invoke the function
       
 86595 +	pushal	2(%r1)		# skip procedure entry mask
       
 86596 +	movl	%r3, %r1
       
 86597 +	bicpsw	$0x000f
       
 86598 +	rsb
       
 86599 +
       
 86600 +9:
       
 86601 +	# Copy return value if necessary
       
 86602 +	tstl	16(%ap)
       
 86603 +	jeql	9f
       
 86604 +	movl	16(%ap), %r2
       
 86605 +
       
 86606 +	bbc	$0, 12(%ap), 1f	# CIF_FLAGS_CHAR
       
 86607 +	movb	%r0, 0(%r2)
       
 86608 +	brb	9f
       
 86609 +1:
       
 86610 +	bbc	$1, 12(%ap), 1f	# CIF_FLAGS_SHORT
       
 86611 +	movw	%r0, 0(%r2)
       
 86612 +	brb	9f
       
 86613 +1:
       
 86614 +	bbc	$2, 12(%ap), 1f	# CIF_FLAGS_INT
       
 86615 +	movl	%r0, 0(%r2)
       
 86616 +	brb	9f
       
 86617 +1:
       
 86618 +	bbc	$3, 12(%ap), 1f	# CIF_FLAGS_DINT
       
 86619 +	movq	%r0, 0(%r2)
       
 86620 +	brb	9f
       
 86621 +1:
       
 86622 +	movl	%r1, %r0	# might have been a struct
       
 86623 +	#brb	9f
       
 86624 +
       
 86625 +9:
       
 86626 +	ret
       
 86627 +
       
 86628 +/*
       
 86629 + * ffi_closure_elfbsd(void);
       
 86630 + * invoked with	%r0: ffi_closure *closure
       
 86631 + */
       
 86632 +	.globl	ffi_closure_elfbsd
       
 86633 +	.type	ffi_closure_elfbsd, @function
       
 86634 +	.align	2
       
 86635 +ffi_closure_elfbsd:
       
 86636 +	.word	0
       
 86637 +
       
 86638 +	# Allocate room on stack for return value
       
 86639 +	subl2	$8, %sp
       
 86640 +
       
 86641 +	# Invoke the closure function
       
 86642 +	pushal	4(%ap)		# calling stack
       
 86643 +	pushal	4(%sp)		# return value
       
 86644 +	pushl	%r0		# closure
       
 86645 +	calls	$3, ffi_closure_elfbsd_inner
       
 86646 +
       
 86647 +	# Copy return value if necessary
       
 86648 +	bitb	$1, %r0		# CIF_FLAGS_CHAR
       
 86649 +	beql	1f
       
 86650 +	movb	0(%sp), %r0
       
 86651 +	brb	9f
       
 86652 +1:
       
 86653 +	bitb	$2, %r0		# CIF_FLAGS_SHORT
       
 86654 +	beql	1f
       
 86655 +	movw	0(%sp), %r0
       
 86656 +	brb	9f
       
 86657 +1:
       
 86658 +	bitb	$4, %r0		# CIF_FLAGS_INT
       
 86659 +	beql	1f
       
 86660 +	movl	0(%sp), %r0
       
 86661 +	brb	9f
       
 86662 +1:
       
 86663 +	bitb	$8, %r0		# CIF_FLAGS_DINT
       
 86664 +	beql	1f
       
 86665 +	movq	0(%sp), %r0
       
 86666 +	#brb	9f
       
 86667 +1:
       
 86668 +
       
 86669 +9:
       
 86670 +	ret
       
 86671 +
       
 86672 +/*
       
 86673 + * ffi_closure_struct_elfbsd(void);
       
 86674 + * invoked with	%r0: ffi_closure *closure
       
 86675 + *		%r1: struct return address
       
 86676 + */
       
 86677 +	.globl	ffi_closure_struct_elfbsd
       
 86678 +	.type	ffi_closure_struct_elfbsd, @function
       
 86679 +	.align	2
       
 86680 +ffi_closure_struct_elfbsd:
       
 86681 +	.word	0
       
 86682 +
       
 86683 +	# Invoke the closure function
       
 86684 +	pushal	4(%ap)		# calling stack
       
 86685 +	pushl	%r1		# return value
       
 86686 +	pushl	%r0		# closure
       
 86687 +	calls	$3, ffi_closure_elfbsd_inner
       
 86688 +
       
 86689 +	ret
       
 86690 diff --git a/js/src/ctypes/libffi/src/vax/ffi.c b/js/src/ctypes/libffi/src/vax/ffi.c
       
 86691 new file mode 100644
       
 86692 --- /dev/null
       
 86693 +++ b/js/src/ctypes/libffi/src/vax/ffi.c
       
 86694 @@ -0,0 +1,276 @@
       
 86695 +/*
       
 86696 + * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
       
 86697 + *
       
 86698 + * Permission is hereby granted, free of charge, to any person obtaining
       
 86699 + * a copy of this software and associated documentation files (the
       
 86700 + * ``Software''), to deal in the Software without restriction, including
       
 86701 + * without limitation the rights to use, copy, modify, merge, publish,
       
 86702 + * distribute, sublicense, and/or sell copies of the Software, and to
       
 86703 + * permit persons to whom the Software is furnished to do so, subject to
       
 86704 + * the following conditions:
       
 86705 + * 
       
 86706 + * The above copyright notice and this permission notice shall be included
       
 86707 + * in all copies or substantial portions of the Software.
       
 86708 + * 
       
 86709 + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 86710 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 86711 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 86712 + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 86713 + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 86714 + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 86715 + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
 86716 + */
       
 86717 +
       
 86718 +/*
       
 86719 + * vax Foreign Function Interface
       
 86720 + *
       
 86721 + * This file attempts to provide all the FFI entry points which can reliably
       
 86722 + * be implemented in C.
       
 86723 + */
       
 86724 +
       
 86725 +#include <ffi.h>
       
 86726 +#include <ffi_common.h>
       
 86727 +
       
 86728 +#include <stdlib.h>
       
 86729 +#include <unistd.h>
       
 86730 +
       
 86731 +#define CIF_FLAGS_CHAR		1	/* for struct only */
       
 86732 +#define CIF_FLAGS_SHORT		2	/* for struct only */
       
 86733 +#define CIF_FLAGS_INT		4
       
 86734 +#define CIF_FLAGS_DINT		8
       
 86735 +
       
 86736 +/*
       
 86737 + * Foreign Function Interface API
       
 86738 + */
       
 86739 +
       
 86740 +void ffi_call_elfbsd (extended_cif *, unsigned, unsigned, void *,
       
 86741 +		       void (*) ());
       
 86742 +void *ffi_prep_args (extended_cif *ecif, void *stack);
       
 86743 +
       
 86744 +void *
       
 86745 +ffi_prep_args (extended_cif *ecif, void *stack)
       
 86746 +{
       
 86747 +  unsigned int i;
       
 86748 +  void **p_argv;
       
 86749 +  char *argp;
       
 86750 +  ffi_type **p_arg;
       
 86751 +  void *struct_value_ptr;
       
 86752 +
       
 86753 +  argp = stack;
       
 86754 +
       
 86755 +  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
       
 86756 +      && !ecif->cif->flags)
       
 86757 +    struct_value_ptr = ecif->rvalue;
       
 86758 +  else
       
 86759 +    struct_value_ptr = NULL;
       
 86760 +
       
 86761 +  p_argv = ecif->avalue;
       
 86762 +
       
 86763 +  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
       
 86764 +       i != 0;
       
 86765 +       i--, p_arg++)
       
 86766 +    {
       
 86767 +      size_t z;
       
 86768 +
       
 86769 +      z = (*p_arg)->size;
       
 86770 +      if (z < sizeof (int))
       
 86771 +	{
       
 86772 +	  switch ((*p_arg)->type)
       
 86773 +	    {
       
 86774 +	    case FFI_TYPE_SINT8:
       
 86775 +	      *(signed int *) argp = (signed int) *(SINT8 *) *p_argv;
       
 86776 +	      break;
       
 86777 +
       
 86778 +	    case FFI_TYPE_UINT8:
       
 86779 +	      *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv;
       
 86780 +	      break;
       
 86781 +
       
 86782 +	    case FFI_TYPE_SINT16:
       
 86783 +	      *(signed int *) argp = (signed int) *(SINT16 *) *p_argv;
       
 86784 +	      break;
       
 86785 +
       
 86786 +	    case FFI_TYPE_UINT16:
       
 86787 +	      *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv;
       
 86788 +	      break;
       
 86789 +
       
 86790 +	    case FFI_TYPE_STRUCT:
       
 86791 +	      memcpy (argp, *p_argv, z);
       
 86792 +	      break;
       
 86793 +
       
 86794 +	    default:
       
 86795 +	      FFI_ASSERT (0);
       
 86796 +	    }
       
 86797 +	  z = sizeof (int);
       
 86798 +	}
       
 86799 +      else
       
 86800 +	{
       
 86801 +	  memcpy (argp, *p_argv, z);
       
 86802 +
       
 86803 +	  /* Align if necessary.  */
       
 86804 +	  if ((sizeof(int) - 1) & z)
       
 86805 +	    z = ALIGN(z, sizeof(int));
       
 86806 +	}
       
 86807 +
       
 86808 +      p_argv++;
       
 86809 +      argp += z;
       
 86810 +    }
       
 86811 +
       
 86812 +  return struct_value_ptr;
       
 86813 +}
       
 86814 +
       
 86815 +ffi_status
       
 86816 +ffi_prep_cif_machdep (ffi_cif *cif)
       
 86817 +{
       
 86818 +  /* Set the return type flag */
       
 86819 +  switch (cif->rtype->type)
       
 86820 +    {
       
 86821 +    case FFI_TYPE_VOID:
       
 86822 +      cif->flags = 0;
       
 86823 +      break;
       
 86824 +
       
 86825 +    case FFI_TYPE_STRUCT:
       
 86826 +      if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT &&
       
 86827 +	  cif->rtype->elements[1])
       
 86828 +	{
       
 86829 +	  cif->flags = 0;
       
 86830 +	  break;
       
 86831 +	}
       
 86832 +
       
 86833 +      if (cif->rtype->size == sizeof (char))
       
 86834 +	cif->flags = CIF_FLAGS_CHAR;
       
 86835 +      else if (cif->rtype->size == sizeof (short))
       
 86836 +	cif->flags = CIF_FLAGS_SHORT;
       
 86837 +      else if (cif->rtype->size == sizeof (int))
       
 86838 +	cif->flags = CIF_FLAGS_INT;
       
 86839 +      else if (cif->rtype->size == 2 * sizeof (int))
       
 86840 +	cif->flags = CIF_FLAGS_DINT;
       
 86841 +      else
       
 86842 +	cif->flags = 0;
       
 86843 +      break;
       
 86844 +
       
 86845 +    default:
       
 86846 +      if (cif->rtype->size <= sizeof (int))
       
 86847 +	cif->flags = CIF_FLAGS_INT;
       
 86848 +      else
       
 86849 +	cif->flags = CIF_FLAGS_DINT;
       
 86850 +      break;
       
 86851 +    }
       
 86852 +
       
 86853 +  return FFI_OK;
       
 86854 +}
       
 86855 +
       
 86856 +void
       
 86857 +ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue)
       
 86858 +{
       
 86859 +  extended_cif ecif;
       
 86860 +
       
 86861 +  ecif.cif = cif;
       
 86862 +  ecif.avalue = avalue;
       
 86863 +
       
 86864 +  /* If the return value is a struct and we don't have a return value
       
 86865 +     address then we need to make one.  */
       
 86866 +
       
 86867 +  if (rvalue == NULL
       
 86868 +      && cif->rtype->type == FFI_TYPE_STRUCT
       
 86869 +      && cif->flags == 0)
       
 86870 +    ecif.rvalue = alloca (cif->rtype->size);
       
 86871 +  else
       
 86872 +    ecif.rvalue = rvalue;
       
 86873 +
       
 86874 +  switch (cif->abi)
       
 86875 +    {
       
 86876 +    case FFI_ELFBSD:
       
 86877 +      ffi_call_elfbsd (&ecif, cif->bytes, cif->flags, ecif.rvalue, fn);
       
 86878 +      break;
       
 86879 +
       
 86880 +    default:
       
 86881 +      FFI_ASSERT (0);
       
 86882 +      break;
       
 86883 +    }
       
 86884 +}
       
 86885 +
       
 86886 +/*
       
 86887 + * Closure API
       
 86888 + */
       
 86889 +
       
 86890 +void ffi_closure_elfbsd (void);
       
 86891 +void ffi_closure_struct_elfbsd (void);
       
 86892 +unsigned int ffi_closure_elfbsd_inner (ffi_closure *, void *, char *);
       
 86893 +
       
 86894 +static void
       
 86895 +ffi_prep_closure_elfbsd (ffi_cif *cif, void **avalue, char *stackp)
       
 86896 +{
       
 86897 +  unsigned int i;
       
 86898 +  void **p_argv;
       
 86899 +  ffi_type **p_arg;
       
 86900 +
       
 86901 +  p_argv = avalue;
       
 86902 +
       
 86903 +  for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++)
       
 86904 +    {
       
 86905 +      size_t z;
       
 86906 +
       
 86907 +      z = (*p_arg)->size;
       
 86908 +      *p_argv = stackp;
       
 86909 +
       
 86910 +      /* Align if necessary */
       
 86911 +      if ((sizeof (int) - 1) & z)
       
 86912 +	z = ALIGN(z, sizeof (int));
       
 86913 +
       
 86914 +      p_argv++;
       
 86915 +      stackp += z;
       
 86916 +    }
       
 86917 +}
       
 86918 +
       
 86919 +unsigned int
       
 86920 +ffi_closure_elfbsd_inner (ffi_closure *closure, void *resp, char *stack)
       
 86921 +{
       
 86922 +  ffi_cif *cif;
       
 86923 +  void **arg_area;
       
 86924 +
       
 86925 +  cif = closure->cif;
       
 86926 +  arg_area = (void **) alloca (cif->nargs * sizeof (void *));
       
 86927 +
       
 86928 +  ffi_prep_closure_elfbsd (cif, arg_area, stack);
       
 86929 +
       
 86930 +  (closure->fun) (cif, resp, arg_area, closure->user_data);
       
 86931 +
       
 86932 +  return cif->flags;
       
 86933 +}
       
 86934 +
       
 86935 +ffi_status
       
 86936 +ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif,
       
 86937 +		      void (*fun)(ffi_cif *, void *, void **, void *),
       
 86938 +		      void *user_data, void *codeloc)
       
 86939 +{
       
 86940 +  char *tramp = (char *) codeloc;
       
 86941 +  void *fn;
       
 86942 +
       
 86943 +  FFI_ASSERT (cif->abi == FFI_ELFBSD);
       
 86944 +
       
 86945 +  /* entry mask */
       
 86946 +  *(unsigned short *)(tramp + 0) = 0x0000;
       
 86947 +  /* movl #closure, r0 */
       
 86948 +  tramp[2] = 0xd0;
       
 86949 +  tramp[3] = 0x8f;
       
 86950 +  *(unsigned int *)(tramp + 4) = (unsigned int) closure;
       
 86951 +  tramp[8] = 0x50;
       
 86952 +
       
 86953 +  if (cif->rtype->type == FFI_TYPE_STRUCT
       
 86954 +      && !cif->flags)
       
 86955 +    fn = &ffi_closure_struct_elfbsd;
       
 86956 +  else
       
 86957 +    fn = &ffi_closure_elfbsd;
       
 86958 +
       
 86959 +  /* jmpl #fn */
       
 86960 +  tramp[9] = 0x17;
       
 86961 +  tramp[10] = 0xef;
       
 86962 +  *(unsigned int *)(tramp + 11) = (unsigned int)fn + 2 -
       
 86963 +				  (unsigned int)tramp - 9 - 6;
       
 86964 +
       
 86965 +  closure->cif = cif;
       
 86966 +  closure->user_data = user_data;
       
 86967 +  closure->fun = fun;
       
 86968 +
       
 86969 +  return FFI_OK;
       
 86970 +}
       
 86971 diff --git a/js/src/ctypes/libffi/src/vax/ffitarget.h b/js/src/ctypes/libffi/src/vax/ffitarget.h
       
 86972 new file mode 100644
       
 86973 --- /dev/null
       
 86974 +++ b/js/src/ctypes/libffi/src/vax/ffitarget.h
       
 86975 @@ -0,0 +1,49 @@
       
 86976 +/*
       
 86977 + * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
       
 86978 + *
       
 86979 + * Permission is hereby granted, free of charge, to any person obtaining
       
 86980 + * a copy of this software and associated documentation files (the
       
 86981 + * ``Software''), to deal in the Software without restriction, including
       
 86982 + * without limitation the rights to use, copy, modify, merge, publish,
       
 86983 + * distribute, sublicense, and/or sell copies of the Software, and to
       
 86984 + * permit persons to whom the Software is furnished to do so, subject to
       
 86985 + * the following conditions:
       
 86986 + * 
       
 86987 + * The above copyright notice and this permission notice shall be included
       
 86988 + * in all copies or substantial portions of the Software.
       
 86989 + * 
       
 86990 + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 86991 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 86992 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
 86993 + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       
 86994 + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
 86995 + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
 86996 + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
 86997 + */
       
 86998 +
       
 86999 +/*
       
 87000 + * vax Foreign Function Interface
       
 87001 + */
       
 87002 +
       
 87003 +#ifndef LIBFFI_TARGET_H
       
 87004 +#define LIBFFI_TARGET_H
       
 87005 +
       
 87006 +#ifndef LIBFFI_ASM
       
 87007 +typedef unsigned long ffi_arg;
       
 87008 +typedef signed long ffi_sarg;
       
 87009 +
       
 87010 +typedef enum ffi_abi {
       
 87011 +  FFI_FIRST_ABI = 0,
       
 87012 +  FFI_ELFBSD,
       
 87013 +  FFI_DEFAULT_ABI = FFI_ELFBSD,
       
 87014 +  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1
       
 87015 +} ffi_abi;
       
 87016 +#endif
       
 87017 +
       
 87018 +/* ---- Definitions for closures ----------------------------------------- */
       
 87019 +
       
 87020 +#define FFI_CLOSURES 1
       
 87021 +#define FFI_TRAMPOLINE_SIZE 15
       
 87022 +#define FFI_NATIVE_RAW_API 0
       
 87023 +
       
 87024 +#endif
       
 87025 diff --git a/js/src/ctypes/libffi/src/x86/ffi.c b/js/src/ctypes/libffi/src/x86/ffi.c
       
 87026 --- a/js/src/ctypes/libffi/src/x86/ffi.c
       
 87027 +++ b/js/src/ctypes/libffi/src/x86/ffi.c
       
 87028 @@ -1,14 +1,14 @@
       
 87029  /* -----------------------------------------------------------------------
       
 87030     ffi.c - Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008  Red Hat, Inc.
       
 87031             Copyright (c) 2002  Ranjit Mathew
       
 87032             Copyright (c) 2002  Bo Thorsen
       
 87033             Copyright (c) 2002  Roger Sayle
       
 87034 -           Copyright (C) 2008  Free Software Foundation, Inc.
       
 87035 +           Copyright (C) 2008, 2010  Free Software Foundation, Inc.
       
 87036  
       
 87037     x86 Foreign Function Interface
       
 87038  
       
 87039     Permission is hereby granted, free of charge, to any person obtaining
       
 87040     a copy of this software and associated documentation files (the
       
 87041     ``Software''), to deal in the Software without restriction, including
       
 87042     without limitation the rights to use, copy, modify, merge, publish,
       
 87043     distribute, sublicense, and/or sell copies of the Software, and to
       
 87044 @@ -34,36 +34,56 @@
       
 87045  #include <windows.h>
       
 87046  #endif
       
 87047  
       
 87048  #include <ffi.h>
       
 87049  #include <ffi_common.h>
       
 87050  
       
 87051  #include <stdlib.h>
       
 87052  
       
 87053 +
       
 87054  /* ffi_prep_args is called by the assembly routine once stack space
       
 87055     has been allocated for the function's arguments */
       
 87056  
       
 87057 +void ffi_prep_args(char *stack, extended_cif *ecif);
       
 87058  void ffi_prep_args(char *stack, extended_cif *ecif)
       
 87059  {
       
 87060    register unsigned int i;
       
 87061    register void **p_argv;
       
 87062    register char *argp;
       
 87063    register ffi_type **p_arg;
       
 87064 +#ifndef X86_WIN64
       
 87065 +  size_t p_stack_args[2];
       
 87066 +  void *p_stack_data[2];
       
 87067 +  char *argp2 = stack;
       
 87068 +  int stack_args_count = 0;
       
 87069 +  int cabi = ecif->cif->abi;
       
 87070 +#endif
       
 87071  
       
 87072    argp = stack;
       
 87073  
       
 87074 -  if (ecif->cif->flags == FFI_TYPE_STRUCT
       
 87075 +  if ((ecif->cif->flags == FFI_TYPE_STRUCT
       
 87076 +       || ecif->cif->flags == FFI_TYPE_MS_STRUCT)
       
 87077  #ifdef X86_WIN64
       
 87078        && (ecif->cif->rtype->size != 1 && ecif->cif->rtype->size != 2
       
 87079            && ecif->cif->rtype->size != 4 && ecif->cif->rtype->size != 8)
       
 87080  #endif
       
 87081        )
       
 87082      {
       
 87083        *(void **) argp = ecif->rvalue;
       
 87084 +#ifndef X86_WIN64
       
 87085 +      /* For fastcall/thiscall this is first register-passed
       
 87086 +         argument.  */
       
 87087 +      if (cabi == FFI_THISCALL || cabi == FFI_FASTCALL)
       
 87088 +	{
       
 87089 +	  p_stack_args[stack_args_count] = sizeof (void*);
       
 87090 +	  p_stack_data[stack_args_count] = argp;
       
 87091 +	  ++stack_args_count;
       
 87092 +	}
       
 87093 +#endif
       
 87094        argp += sizeof(void*);
       
 87095      }
       
 87096  
       
 87097    p_argv = ecif->avalue;
       
 87098  
       
 87099    for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
       
 87100         i != 0;
       
 87101         i--, p_arg++)
       
 87102 @@ -129,24 +149,80 @@ void ffi_prep_args(char *stack, extended
       
 87103              default:
       
 87104                FFI_ASSERT(0);
       
 87105              }
       
 87106          }
       
 87107        else
       
 87108          {
       
 87109            memcpy(argp, *p_argv, z);
       
 87110          }
       
 87111 +
       
 87112 +#ifndef X86_WIN64
       
 87113 +    /* For thiscall/fastcall convention register-passed arguments
       
 87114 +       are the first two none-floating-point arguments with a size
       
 87115 +       smaller or equal to sizeof (void*).  */
       
 87116 +    if ((cabi == FFI_THISCALL && stack_args_count < 1)
       
 87117 +        || (cabi == FFI_FASTCALL && stack_args_count < 2))
       
 87118 +      {
       
 87119 +	if (z <= 4
       
 87120 +	    && ((*p_arg)->type != FFI_TYPE_FLOAT
       
 87121 +	        && (*p_arg)->type != FFI_TYPE_STRUCT))
       
 87122 +	  {
       
 87123 +	    p_stack_args[stack_args_count] = z;
       
 87124 +	    p_stack_data[stack_args_count] = argp;
       
 87125 +	    ++stack_args_count;
       
 87126 +	  }
       
 87127 +      }
       
 87128 +#endif
       
 87129        p_argv++;
       
 87130  #ifdef X86_WIN64
       
 87131        argp += (z + sizeof(void*) - 1) & ~(sizeof(void*) - 1);
       
 87132  #else
       
 87133        argp += z;
       
 87134  #endif
       
 87135      }
       
 87136 -  
       
 87137 +
       
 87138 +#ifndef X86_WIN64
       
 87139 +  /* We need to move the register-passed arguments for thiscall/fastcall
       
 87140 +     on top of stack, so that those can be moved to registers ecx/edx by
       
 87141 +     call-handler.  */
       
 87142 +  if (stack_args_count > 0)
       
 87143 +    {
       
 87144 +      size_t zz = (p_stack_args[0] + 3) & ~3;
       
 87145 +      char *h;
       
 87146 +
       
 87147 +      /* Move first argument to top-stack position.  */
       
 87148 +      if (p_stack_data[0] != argp2)
       
 87149 +	{
       
 87150 +	  h = alloca (zz + 1);
       
 87151 +	  memcpy (h, p_stack_data[0], zz);
       
 87152 +	  memmove (argp2 + zz, argp2,
       
 87153 +	           (size_t) ((char *) p_stack_data[0] - (char*)argp2));
       
 87154 +	  memcpy (argp2, h, zz);
       
 87155 +	}
       
 87156 +
       
 87157 +      argp2 += zz;
       
 87158 +      --stack_args_count;
       
 87159 +      if (zz > 4)
       
 87160 +	stack_args_count = 0;
       
 87161 +
       
 87162 +      /* If we have a second argument, then move it on top
       
 87163 +         after the first one.  */
       
 87164 +      if (stack_args_count > 0 && p_stack_data[1] != argp2)
       
 87165 +	{
       
 87166 +	  zz = p_stack_args[1];
       
 87167 +	  zz = (zz + 3) & ~3;
       
 87168 +	  h = alloca (zz + 1);
       
 87169 +	  h = alloca (zz + 1);
       
 87170 +	  memcpy (h, p_stack_data[1], zz);
       
 87171 +	  memmove (argp2 + zz, argp2, (size_t) ((char*) p_stack_data[1] - (char*)argp2));
       
 87172 +	  memcpy (argp2, h, zz);
       
 87173 +	}
       
 87174 +    }
       
 87175 +#endif
       
 87176    return;
       
 87177  }
       
 87178  
       
 87179  /* Perform machine dependent cif processing */
       
 87180  ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
       
 87181  {
       
 87182    unsigned int i;
       
 87183    ffi_type **ptr;
       
 87184 @@ -201,17 +277,22 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
       
 87185          }
       
 87186        else if (cif->rtype->size == 8)
       
 87187          {
       
 87188            cif->flags = FFI_TYPE_SINT64; /* same as int64 type */
       
 87189          }
       
 87190        else
       
 87191  #endif
       
 87192          {
       
 87193 -          cif->flags = FFI_TYPE_STRUCT;
       
 87194 +#ifdef X86_WIN32
       
 87195 +          if (cif->abi == FFI_MS_CDECL)
       
 87196 +            cif->flags = FFI_TYPE_MS_STRUCT;
       
 87197 +          else
       
 87198 +#endif
       
 87199 +            cif->flags = FFI_TYPE_STRUCT;
       
 87200            /* allocate space for return value pointer */
       
 87201            cif->bytes += ALIGN(sizeof(void*), FFI_SIZEOF_ARG);
       
 87202          }
       
 87203        break;
       
 87204  
       
 87205      default:
       
 87206  #ifdef X86_WIN64
       
 87207        cif->flags = FFI_TYPE_SINT64;
       
 87208 @@ -223,40 +304,42 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
       
 87209  #endif
       
 87210        break;
       
 87211      }
       
 87212  
       
 87213    for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
       
 87214      {
       
 87215        if (((*ptr)->alignment - 1) & cif->bytes)
       
 87216          cif->bytes = ALIGN(cif->bytes, (*ptr)->alignment);
       
 87217 -      cif->bytes += ALIGN((*ptr)->size, FFI_SIZEOF_ARG);
       
 87218 +      cif->bytes += (unsigned)ALIGN((*ptr)->size, FFI_SIZEOF_ARG);
       
 87219      }
       
 87220  
       
 87221  #ifdef X86_WIN64
       
 87222    /* ensure space for storing four registers */
       
 87223    cif->bytes += 4 * sizeof(ffi_arg);
       
 87224  #endif
       
 87225  
       
 87226 -#ifdef X86_DARWIN
       
 87227 -  cif->bytes = (cif->bytes + 15) & ~0xF;
       
 87228 +#ifndef X86_WIN32
       
 87229 +#ifndef X86_WIN64
       
 87230 +  if (cif->abi != FFI_STDCALL && cif->abi != FFI_THISCALL && cif->abi != FFI_FASTCALL)
       
 87231 +#endif
       
 87232 +    cif->bytes = (cif->bytes + 15) & ~0xF;
       
 87233  #endif
       
 87234  
       
 87235    return FFI_OK;
       
 87236  }
       
 87237  
       
 87238  #ifdef X86_WIN64
       
 87239  extern int
       
 87240  ffi_call_win64(void (*)(char *, extended_cif *), extended_cif *,
       
 87241                 unsigned, unsigned, unsigned *, void (*fn)(void));
       
 87242 -#elif defined(X86_WIN32)
       
 87243 +#else
       
 87244  extern void
       
 87245  ffi_call_win32(void (*)(char *, extended_cif *), extended_cif *,
       
 87246 -               unsigned, unsigned, unsigned *, void (*fn)(void));
       
 87247 -#else
       
 87248 +               unsigned, unsigned, unsigned, unsigned *, void (*fn)(void));
       
 87249  extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
       
 87250                            unsigned, unsigned, unsigned *, void (*fn)(void));
       
 87251  #endif
       
 87252  
       
 87253  void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 87254  {
       
 87255    extended_cif ecif;
       
 87256  
       
 87257 @@ -271,68 +354,104 @@ void ffi_call(ffi_cif *cif, void (*fn)(v
       
 87258        && cif->flags == FFI_TYPE_STRUCT
       
 87259        && cif->rtype->size != 1 && cif->rtype->size != 2
       
 87260        && cif->rtype->size != 4 && cif->rtype->size != 8)
       
 87261      {
       
 87262        ecif.rvalue = alloca((cif->rtype->size + 0xF) & ~0xF);
       
 87263      }
       
 87264  #else
       
 87265    if (rvalue == NULL
       
 87266 -      && cif->flags == FFI_TYPE_STRUCT)
       
 87267 +      && (cif->flags == FFI_TYPE_STRUCT
       
 87268 +          || cif->flags == FFI_TYPE_MS_STRUCT))
       
 87269      {
       
 87270        ecif.rvalue = alloca(cif->rtype->size);
       
 87271      }
       
 87272  #endif
       
 87273    else
       
 87274      ecif.rvalue = rvalue;
       
 87275      
       
 87276    
       
 87277    switch (cif->abi) 
       
 87278      {
       
 87279  #ifdef X86_WIN64
       
 87280      case FFI_WIN64:
       
 87281        ffi_call_win64(ffi_prep_args, &ecif, cif->bytes,
       
 87282                       cif->flags, ecif.rvalue, fn);
       
 87283        break;
       
 87284 -#elif defined(X86_WIN32)
       
 87285 +#else
       
 87286 +#ifndef X86_WIN32
       
 87287      case FFI_SYSV:
       
 87288 -    case FFI_STDCALL:
       
 87289 -      ffi_call_win32(ffi_prep_args, &ecif, cif->bytes, cif->flags,
       
 87290 -                     ecif.rvalue, fn);
       
 87291 +      ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue,
       
 87292 +                    fn);
       
 87293        break;
       
 87294  #else
       
 87295      case FFI_SYSV:
       
 87296 -      ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue,
       
 87297 -                    fn);
       
 87298 +    case FFI_MS_CDECL:
       
 87299 +#endif
       
 87300 +    case FFI_STDCALL:
       
 87301 +      ffi_call_win32(ffi_prep_args, &ecif, cif->abi, cif->bytes, cif->flags,
       
 87302 +		     ecif.rvalue, fn);
       
 87303 +      break;
       
 87304 +    case FFI_THISCALL:
       
 87305 +    case FFI_FASTCALL:
       
 87306 +      {
       
 87307 +	unsigned int abi = cif->abi;
       
 87308 +	unsigned int i, passed_regs = 0;
       
 87309 +
       
 87310 +	if (cif->flags == FFI_TYPE_STRUCT)
       
 87311 +	  ++passed_regs;
       
 87312 +
       
 87313 +	for (i=0; i < cif->nargs && passed_regs < 2;i++)
       
 87314 +	  {
       
 87315 +	    size_t sz;
       
 87316 +
       
 87317 +	    if (cif->arg_types[i]->type == FFI_TYPE_FLOAT
       
 87318 +	        || cif->arg_types[i]->type == FFI_TYPE_STRUCT)
       
 87319 +	      continue;
       
 87320 +	    sz = (cif->arg_types[i]->size + 3) & ~3;
       
 87321 +	    if (sz == 0 || sz > 4)
       
 87322 +	      continue;
       
 87323 +	    ++passed_regs;
       
 87324 +	  }
       
 87325 +	if (passed_regs < 2 && abi == FFI_FASTCALL)
       
 87326 +	  abi = FFI_THISCALL;
       
 87327 +	if (passed_regs < 1 && abi == FFI_THISCALL)
       
 87328 +	  abi = FFI_STDCALL;
       
 87329 +        ffi_call_win32(ffi_prep_args, &ecif, abi, cif->bytes, cif->flags,
       
 87330 +                       ecif.rvalue, fn);
       
 87331 +      }
       
 87332        break;
       
 87333  #endif
       
 87334      default:
       
 87335        FFI_ASSERT(0);
       
 87336        break;
       
 87337      }
       
 87338  }
       
 87339  
       
 87340  
       
 87341  /** private members **/
       
 87342  
       
 87343  /* The following __attribute__((regparm(1))) decorations will have no effect
       
 87344 -   on MSVC - standard cdecl convention applies. */
       
 87345 +   on MSVC or SUNPRO_C -- standard conventions apply. */
       
 87346  static void ffi_prep_incoming_args_SYSV (char *stack, void **ret,
       
 87347                                           void** args, ffi_cif* cif);
       
 87348  void FFI_HIDDEN ffi_closure_SYSV (ffi_closure *)
       
 87349       __attribute__ ((regparm(1)));
       
 87350  unsigned int FFI_HIDDEN ffi_closure_SYSV_inner (ffi_closure *, void **, void *)
       
 87351       __attribute__ ((regparm(1)));
       
 87352  void FFI_HIDDEN ffi_closure_raw_SYSV (ffi_raw_closure *)
       
 87353       __attribute__ ((regparm(1)));
       
 87354 -#ifdef X86_WIN32
       
 87355 +#ifndef X86_WIN64
       
 87356 +void FFI_HIDDEN ffi_closure_raw_THISCALL (ffi_raw_closure *)
       
 87357 +     __attribute__ ((regparm(1)));
       
 87358  void FFI_HIDDEN ffi_closure_STDCALL (ffi_closure *)
       
 87359       __attribute__ ((regparm(1)));
       
 87360 -#endif
       
 87361 -#ifdef X86_WIN64
       
 87362 +void FFI_HIDDEN ffi_closure_THISCALL (ffi_closure *)
       
 87363 +     __attribute__ ((regparm(1)));
       
 87364 +#else
       
 87365  void FFI_HIDDEN ffi_closure_win64 (ffi_closure *);
       
 87366  #endif
       
 87367  
       
 87368  /* This function is jumped to by the trampoline */
       
 87369  
       
 87370  #ifdef X86_WIN64
       
 87371  void * FFI_HIDDEN
       
 87372  ffi_closure_win64_inner (ffi_closure *closure, void *args) {
       
 87373 @@ -402,17 +521,18 @@ ffi_prep_incoming_args_SYSV(char *stack,
       
 87374    if (cif->rtype->size > sizeof(ffi_arg)
       
 87375        || (cif->flags == FFI_TYPE_STRUCT
       
 87376            && (cif->rtype->size != 1 && cif->rtype->size != 2
       
 87377                && cif->rtype->size != 4 && cif->rtype->size != 8))) {
       
 87378      *rvalue = *(void **) argp;
       
 87379      argp += sizeof(void *);
       
 87380    }
       
 87381  #else
       
 87382 -  if ( cif->flags == FFI_TYPE_STRUCT ) {
       
 87383 +  if ( cif->flags == FFI_TYPE_STRUCT
       
 87384 +       || cif->flags == FFI_TYPE_MS_STRUCT ) {
       
 87385      *rvalue = *(void **) argp;
       
 87386      argp += sizeof(void *);
       
 87387    }
       
 87388  #endif
       
 87389  
       
 87390    p_argv = avalue;
       
 87391  
       
 87392    for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
       
 87393 @@ -480,16 +600,43 @@ ffi_prep_incoming_args_SYSV(char *stack,
       
 87394     unsigned int  __ctx = (unsigned int)(CTX); \
       
 87395     unsigned int  __dis = __fun - (__ctx + 10);  \
       
 87396     *(unsigned char*) &__tramp[0] = 0xb8; \
       
 87397     *(unsigned int*)  &__tramp[1] = __ctx; /* movl __ctx, %eax */ \
       
 87398     *(unsigned char *)  &__tramp[5] = 0xe9; \
       
 87399     *(unsigned int*)  &__tramp[6] = __dis; /* jmp __fun  */ \
       
 87400   }
       
 87401  
       
 87402 +#define FFI_INIT_TRAMPOLINE_THISCALL(TRAMP,FUN,CTX,SIZE) \
       
 87403 +{ unsigned char *__tramp = (unsigned char*)(TRAMP); \
       
 87404 +   unsigned int  __fun = (unsigned int)(FUN); \
       
 87405 +   unsigned int  __ctx = (unsigned int)(CTX); \
       
 87406 +   unsigned int  __dis = __fun - (__ctx + 49);  \
       
 87407 +   unsigned short __size = (unsigned short)(SIZE); \
       
 87408 +   *(unsigned int *) &__tramp[0] = 0x8324048b;	/* mov (%esp), %eax */ \
       
 87409 +   *(unsigned int *) &__tramp[4] = 0x4c890cec;	/* sub $12, %esp */ \
       
 87410 +   *(unsigned int *) &__tramp[8] = 0x04890424;	/* mov %ecx, 4(%esp) */ \
       
 87411 +   *(unsigned char*) &__tramp[12] = 0x24;	/* mov %eax, (%esp) */ \
       
 87412 +   *(unsigned char*) &__tramp[13] = 0xb8; \
       
 87413 +   *(unsigned int *) &__tramp[14] = __size;	/* mov __size, %eax */ \
       
 87414 +   *(unsigned int *) &__tramp[18] = 0x08244c8d;	/* lea 8(%esp), %ecx */ \
       
 87415 +   *(unsigned int *) &__tramp[22] = 0x4802e8c1; /* shr $2, %eax ; dec %eax */ \
       
 87416 +   *(unsigned short*) &__tramp[26] = 0x0b74;	/* jz 1f */ \
       
 87417 +   *(unsigned int *) &__tramp[28] = 0x8908518b;	/* 2b: mov 8(%ecx), %edx */ \
       
 87418 +   *(unsigned int *) &__tramp[32] = 0x04c18311; /* mov %edx, (%ecx) ; add $4, %ecx */ \
       
 87419 +   *(unsigned char*) &__tramp[36] = 0x48;	/* dec %eax */ \
       
 87420 +   *(unsigned short*) &__tramp[37] = 0xf575;	/* jnz 2b ; 1f: */ \
       
 87421 +   *(unsigned char*) &__tramp[39] = 0xb8; \
       
 87422 +   *(unsigned int*)  &__tramp[40] = __ctx; /* movl __ctx, %eax */ \
       
 87423 +   *(unsigned char *)  &__tramp[44] = 0xe8; \
       
 87424 +   *(unsigned int*)  &__tramp[45] = __dis; /* call __fun  */ \
       
 87425 +   *(unsigned char*)  &__tramp[49] = 0xc2; /* ret  */ \
       
 87426 +   *(unsigned short*)  &__tramp[50] = (__size + 8); /* ret (__size + 8)  */ \
       
 87427 + }
       
 87428 +
       
 87429  #define FFI_INIT_TRAMPOLINE_STDCALL(TRAMP,FUN,CTX,SIZE)  \
       
 87430  { unsigned char *__tramp = (unsigned char*)(TRAMP); \
       
 87431     unsigned int  __fun = (unsigned int)(FUN); \
       
 87432     unsigned int  __ctx = (unsigned int)(CTX); \
       
 87433     unsigned int  __dis = __fun - (__ctx + 10); \
       
 87434     unsigned short __size = (unsigned short)(SIZE); \
       
 87435     *(unsigned char*) &__tramp[0] = 0xb8; \
       
 87436     *(unsigned int*)  &__tramp[1] = __ctx; /* movl __ctx, %eax */ \
       
 87437 @@ -521,23 +668,36 @@ ffi_prep_closure_loc (ffi_closure* closu
       
 87438      }
       
 87439  #else
       
 87440    if (cif->abi == FFI_SYSV)
       
 87441      {
       
 87442        FFI_INIT_TRAMPOLINE (&closure->tramp[0],
       
 87443                             &ffi_closure_SYSV,
       
 87444                             (void*)codeloc);
       
 87445      }
       
 87446 -#ifdef X86_WIN32
       
 87447 +  else if (cif->abi == FFI_THISCALL)
       
 87448 +    {
       
 87449 +      FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0],
       
 87450 +				    &ffi_closure_THISCALL,
       
 87451 +				    (void*)codeloc,
       
 87452 +				    cif->bytes);
       
 87453 +    }
       
 87454    else if (cif->abi == FFI_STDCALL)
       
 87455      {
       
 87456        FFI_INIT_TRAMPOLINE_STDCALL (&closure->tramp[0],
       
 87457                                     &ffi_closure_STDCALL,
       
 87458                                     (void*)codeloc, cif->bytes);
       
 87459      }
       
 87460 +#ifdef X86_WIN32
       
 87461 +  else if (cif->abi == FFI_MS_CDECL)
       
 87462 +    {
       
 87463 +      FFI_INIT_TRAMPOLINE (&closure->tramp[0],
       
 87464 +                           &ffi_closure_SYSV,
       
 87465 +                           (void*)codeloc);
       
 87466 +    }
       
 87467  #endif /* X86_WIN32 */
       
 87468  #endif /* !X86_WIN64 */
       
 87469    else
       
 87470      {
       
 87471        return FFI_BAD_ABI;
       
 87472      }
       
 87473      
       
 87474    closure->cif  = cif;
       
 87475 @@ -555,35 +715,48 @@ ffi_status
       
 87476  ffi_prep_raw_closure_loc (ffi_raw_closure* closure,
       
 87477                            ffi_cif* cif,
       
 87478                            void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
       
 87479                            void *user_data,
       
 87480                            void *codeloc)
       
 87481  {
       
 87482    int i;
       
 87483  
       
 87484 -  if (cif->abi != FFI_SYSV) {
       
 87485 +  if (cif->abi != FFI_SYSV
       
 87486 +#ifndef X86_WIN64
       
 87487 +      && cif->abi != FFI_THISCALL
       
 87488 +#endif
       
 87489 +     )
       
 87490      return FFI_BAD_ABI;
       
 87491 -  }
       
 87492  
       
 87493    /* we currently don't support certain kinds of arguments for raw
       
 87494       closures.  This should be implemented by a separate assembly
       
 87495       language routine, since it would require argument processing,
       
 87496       something we don't do now for performance.  */
       
 87497  
       
 87498    for (i = cif->nargs-1; i >= 0; i--)
       
 87499      {
       
 87500        FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_STRUCT);
       
 87501        FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_LONGDOUBLE);
       
 87502      }
       
 87503    
       
 87504 -
       
 87505 +#ifndef X86_WIN64
       
 87506 +  if (cif->abi == FFI_SYSV)
       
 87507 +    {
       
 87508 +#endif
       
 87509    FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_raw_SYSV,
       
 87510                         codeloc);
       
 87511 -    
       
 87512 +#ifndef X86_WIN64
       
 87513 +    }
       
 87514 +  else if (cif->abi == FFI_THISCALL)
       
 87515 +    {
       
 87516 +      FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0], &ffi_closure_raw_THISCALL,
       
 87517 +				    codeloc, cif->bytes);
       
 87518 +    }
       
 87519 +#endif
       
 87520    closure->cif  = cif;
       
 87521    closure->user_data = user_data;
       
 87522    closure->fun  = fun;
       
 87523  
       
 87524    return FFI_OK;
       
 87525  }
       
 87526  
       
 87527  static void 
       
 87528 @@ -604,37 +777,70 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(vo
       
 87529    void **avalue = (void **)fake_avalue;
       
 87530  
       
 87531    ecif.cif = cif;
       
 87532    ecif.avalue = avalue;
       
 87533    
       
 87534    /* If the return value is a struct and we don't have a return */
       
 87535    /* value address then we need to make one                     */
       
 87536  
       
 87537 -  if ((rvalue == NULL) && 
       
 87538 -      (cif->rtype->type == FFI_TYPE_STRUCT))
       
 87539 +  if (rvalue == NULL
       
 87540 +      && (cif->flags == FFI_TYPE_STRUCT
       
 87541 +          || cif->flags == FFI_TYPE_MS_STRUCT))
       
 87542      {
       
 87543        ecif.rvalue = alloca(cif->rtype->size);
       
 87544      }
       
 87545    else
       
 87546      ecif.rvalue = rvalue;
       
 87547      
       
 87548    
       
 87549    switch (cif->abi) 
       
 87550      {
       
 87551 -#ifdef X86_WIN32
       
 87552 +#ifndef X86_WIN32
       
 87553      case FFI_SYSV:
       
 87554 -    case FFI_STDCALL:
       
 87555 -      ffi_call_win32(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags,
       
 87556 -                     ecif.rvalue, fn);
       
 87557 +      ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags,
       
 87558 +                    ecif.rvalue, fn);
       
 87559        break;
       
 87560  #else
       
 87561      case FFI_SYSV:
       
 87562 -      ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags,
       
 87563 -                    ecif.rvalue, fn);
       
 87564 +    case FFI_MS_CDECL:
       
 87565 +#endif
       
 87566 +#ifndef X86_WIN64
       
 87567 +    case FFI_STDCALL:
       
 87568 +      ffi_call_win32(ffi_prep_args_raw, &ecif, cif->abi, cif->bytes, cif->flags,
       
 87569 +		     ecif.rvalue, fn);
       
 87570 +      break;
       
 87571 +    case FFI_THISCALL:
       
 87572 +    case FFI_FASTCALL:
       
 87573 +      {
       
 87574 +	unsigned int abi = cif->abi;
       
 87575 +	unsigned int i, passed_regs = 0;
       
 87576 +
       
 87577 +	if (cif->flags == FFI_TYPE_STRUCT)
       
 87578 +	  ++passed_regs;
       
 87579 +
       
 87580 +	for (i=0; i < cif->nargs && passed_regs < 2;i++)
       
 87581 +	  {
       
 87582 +	    size_t sz;
       
 87583 +
       
 87584 +	    if (cif->arg_types[i]->type == FFI_TYPE_FLOAT
       
 87585 +	        || cif->arg_types[i]->type == FFI_TYPE_STRUCT)
       
 87586 +	      continue;
       
 87587 +	    sz = (cif->arg_types[i]->size + 3) & ~3;
       
 87588 +	    if (sz == 0 || sz > 4)
       
 87589 +	      continue;
       
 87590 +	    ++passed_regs;
       
 87591 +	  }
       
 87592 +	if (passed_regs < 2 && abi == FFI_FASTCALL)
       
 87593 +	  cif->abi = abi = FFI_THISCALL;
       
 87594 +	if (passed_regs < 1 && abi == FFI_THISCALL)
       
 87595 +	  cif->abi = abi = FFI_STDCALL;
       
 87596 +        ffi_call_win32(ffi_prep_args_raw, &ecif, abi, cif->bytes, cif->flags,
       
 87597 +                       ecif.rvalue, fn);
       
 87598 +      }
       
 87599        break;
       
 87600  #endif
       
 87601      default:
       
 87602        FFI_ASSERT(0);
       
 87603        break;
       
 87604      }
       
 87605  }
       
 87606  
       
 87607 diff --git a/js/src/ctypes/libffi/src/x86/ffi64.c b/js/src/ctypes/libffi/src/x86/ffi64.c
       
 87608 --- a/js/src/ctypes/libffi/src/x86/ffi64.c
       
 87609 +++ b/js/src/ctypes/libffi/src/x86/ffi64.c
       
 87610 @@ -1,13 +1,15 @@
       
 87611  /* -----------------------------------------------------------------------
       
 87612 -   ffi64.c - Copyright (c) 2002, 2007  Bo Thorsen <bo@suse.de>
       
 87613 -             Copyright (c) 2008  Red Hat, Inc.
       
 87614 -   
       
 87615 -   x86-64 Foreign Function Interface 
       
 87616 +   ffi64.c - Copyright (c) 2013  The Written Word, Inc.
       
 87617 +             Copyright (c) 2011  Anthony Green
       
 87618 +             Copyright (c) 2008, 2010  Red Hat, Inc.
       
 87619 +             Copyright (c) 2002, 2007  Bo Thorsen <bo@suse.de>
       
 87620 +
       
 87621 +   x86-64 Foreign Function Interface
       
 87622  
       
 87623     Permission is hereby granted, free of charge, to any person obtaining
       
 87624     a copy of this software and associated documentation files (the
       
 87625     ``Software''), to deal in the Software without restriction, including
       
 87626     without limitation the rights to use, copy, modify, merge, publish,
       
 87627     distribute, sublicense, and/or sell copies of the Software, and to
       
 87628     permit persons to whom the Software is furnished to do so, subject to
       
 87629     the following conditions:
       
 87630 @@ -31,21 +33,40 @@
       
 87631  #include <stdlib.h>
       
 87632  #include <stdarg.h>
       
 87633  
       
 87634  #ifdef __x86_64__
       
 87635  
       
 87636  #define MAX_GPR_REGS 6
       
 87637  #define MAX_SSE_REGS 8
       
 87638  
       
 87639 +#if defined(__INTEL_COMPILER)
       
 87640 +#include "xmmintrin.h"
       
 87641 +#define UINT128 __m128
       
 87642 +#else
       
 87643 +#if defined(__SUNPRO_C)
       
 87644 +#include <sunmedia_types.h>
       
 87645 +#define UINT128 __m128i
       
 87646 +#else
       
 87647 +#define UINT128 __int128_t
       
 87648 +#endif
       
 87649 +#endif
       
 87650 +
       
 87651 +union big_int_union
       
 87652 +{
       
 87653 +  UINT32 i32;
       
 87654 +  UINT64 i64;
       
 87655 +  UINT128 i128;
       
 87656 +};
       
 87657 +
       
 87658  struct register_args
       
 87659  {
       
 87660    /* Registers for argument passing.  */
       
 87661    UINT64 gpr[MAX_GPR_REGS];
       
 87662 -  __int128_t sse[MAX_SSE_REGS];
       
 87663 +  union big_int_union sse[MAX_SSE_REGS];
       
 87664  };
       
 87665  
       
 87666  extern void ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags,
       
 87667  			     void *raddr, void (*fnaddr)(void), unsigned ssecount);
       
 87668  
       
 87669  /* All reference to register classes here is identical to the code in
       
 87670     gcc/config/i386/i386.c. Do *not* change one without the other.  */
       
 87671  
       
 87672 @@ -126,33 +147,33 @@ merge_classes (enum x86_64_reg_class cla
       
 87673  /* Classify the argument of type TYPE and mode MODE.
       
 87674     CLASSES will be filled by the register class used to pass each word
       
 87675     of the operand.  The number of words is returned.  In case the parameter
       
 87676     should be passed in memory, 0 is returned. As a special case for zero
       
 87677     sized containers, classes[0] will be NO_CLASS and 1 is returned.
       
 87678  
       
 87679     See the x86-64 PS ABI for details.
       
 87680  */
       
 87681 -static int
       
 87682 +static size_t
       
 87683  classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
       
 87684  		   size_t byte_offset)
       
 87685  {
       
 87686    switch (type->type)
       
 87687      {
       
 87688      case FFI_TYPE_UINT8:
       
 87689      case FFI_TYPE_SINT8:
       
 87690      case FFI_TYPE_UINT16:
       
 87691      case FFI_TYPE_SINT16:
       
 87692      case FFI_TYPE_UINT32:
       
 87693      case FFI_TYPE_SINT32:
       
 87694      case FFI_TYPE_UINT64:
       
 87695      case FFI_TYPE_SINT64:
       
 87696      case FFI_TYPE_POINTER:
       
 87697        {
       
 87698 -	int size = byte_offset + type->size;
       
 87699 +	size_t size = byte_offset + type->size;
       
 87700  
       
 87701  	if (size <= 4)
       
 87702  	  {
       
 87703  	    classes[0] = X86_64_INTEGERSI_CLASS;
       
 87704  	    return 1;
       
 87705  	  }
       
 87706  	else if (size <= 8)
       
 87707  	  {
       
 87708 @@ -177,25 +198,27 @@ classify_argument (ffi_type *type, enum 
       
 87709        if (!(byte_offset % 8))
       
 87710  	classes[0] = X86_64_SSESF_CLASS;
       
 87711        else
       
 87712  	classes[0] = X86_64_SSE_CLASS;
       
 87713        return 1;
       
 87714      case FFI_TYPE_DOUBLE:
       
 87715        classes[0] = X86_64_SSEDF_CLASS;
       
 87716        return 1;
       
 87717 +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
       
 87718      case FFI_TYPE_LONGDOUBLE:
       
 87719        classes[0] = X86_64_X87_CLASS;
       
 87720        classes[1] = X86_64_X87UP_CLASS;
       
 87721        return 2;
       
 87722 +#endif
       
 87723      case FFI_TYPE_STRUCT:
       
 87724        {
       
 87725 -	const int UNITS_PER_WORD = 8;
       
 87726 -	int words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
       
 87727 -	ffi_type **ptr; 
       
 87728 +	const size_t UNITS_PER_WORD = 8;
       
 87729 +	size_t words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
       
 87730 +	ffi_type **ptr;
       
 87731  	int i;
       
 87732  	enum x86_64_reg_class subclasses[MAX_CLASSES];
       
 87733  
       
 87734  	/* If the struct is larger than 32 bytes, pass it on the stack.  */
       
 87735  	if (type->size > 32)
       
 87736  	  return 0;
       
 87737  
       
 87738  	for (i = 0; i < words; i++)
       
 87739 @@ -207,26 +230,26 @@ classify_argument (ffi_type *type, enum 
       
 87740  	  {
       
 87741  	    classes[0] = X86_64_NO_CLASS;
       
 87742  	    return 1;
       
 87743  	  }
       
 87744  
       
 87745  	/* Merge the fields of structure.  */
       
 87746  	for (ptr = type->elements; *ptr != NULL; ptr++)
       
 87747  	  {
       
 87748 -	    int num;
       
 87749 +	    size_t num;
       
 87750  
       
 87751  	    byte_offset = ALIGN (byte_offset, (*ptr)->alignment);
       
 87752  
       
 87753  	    num = classify_argument (*ptr, subclasses, byte_offset % 8);
       
 87754  	    if (num == 0)
       
 87755  	      return 0;
       
 87756  	    for (i = 0; i < num; i++)
       
 87757  	      {
       
 87758 -		int pos = byte_offset / 8;
       
 87759 +		size_t pos = byte_offset / 8;
       
 87760  		classes[i + pos] =
       
 87761  		  merge_classes (subclasses[i], classes[i + pos]);
       
 87762  	      }
       
 87763  
       
 87764  	    byte_offset += (*ptr)->size;
       
 87765  	  }
       
 87766  
       
 87767  	if (words > 2)
       
 87768 @@ -280,21 +303,22 @@ classify_argument (ffi_type *type, enum 
       
 87769      }
       
 87770    return 0; /* Never reached.  */
       
 87771  }
       
 87772  
       
 87773  /* Examine the argument and return set number of register required in each
       
 87774     class.  Return zero iff parameter should be passed in memory, otherwise
       
 87775     the number of registers.  */
       
 87776  
       
 87777 -static int
       
 87778 +static size_t
       
 87779  examine_argument (ffi_type *type, enum x86_64_reg_class classes[MAX_CLASSES],
       
 87780  		  _Bool in_return, int *pngpr, int *pnsse)
       
 87781  {
       
 87782 -  int i, n, ngpr, nsse;
       
 87783 +  size_t n;
       
 87784 +  int i, ngpr, nsse;
       
 87785  
       
 87786    n = classify_argument (type, classes, 0);
       
 87787    if (n == 0)
       
 87788      return 0;
       
 87789  
       
 87790    ngpr = nsse = 0;
       
 87791    for (i = 0; i < n; ++i)
       
 87792      switch (classes[i])
       
 87793 @@ -325,19 +349,19 @@ examine_argument (ffi_type *type, enum x
       
 87794    return n;
       
 87795  }
       
 87796  
       
 87797  /* Perform machine dependent cif processing.  */
       
 87798  
       
 87799  ffi_status
       
 87800  ffi_prep_cif_machdep (ffi_cif *cif)
       
 87801  {
       
 87802 -  int gprcount, ssecount, i, avn, n, ngpr, nsse, flags;
       
 87803 +  int gprcount, ssecount, i, avn, ngpr, nsse, flags;
       
 87804    enum x86_64_reg_class classes[MAX_CLASSES];
       
 87805 -  size_t bytes;
       
 87806 +  size_t bytes, n;
       
 87807  
       
 87808    gprcount = ssecount = 0;
       
 87809  
       
 87810    flags = cif->rtype->type;
       
 87811    if (flags != FFI_TYPE_VOID)
       
 87812      {
       
 87813        n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
       
 87814        if (n == 0)
       
 87815 @@ -385,17 +409,17 @@ ffi_prep_cif_machdep (ffi_cif *cif)
       
 87816  	{
       
 87817  	  gprcount += ngpr;
       
 87818  	  ssecount += nsse;
       
 87819  	}
       
 87820      }
       
 87821    if (ssecount)
       
 87822      flags |= 1 << 11;
       
 87823    cif->flags = flags;
       
 87824 -  cif->bytes = ALIGN (bytes, 8);
       
 87825 +  cif->bytes = (unsigned)ALIGN (bytes, 8);
       
 87826  
       
 87827    return FFI_OK;
       
 87828  }
       
 87829  
       
 87830  void
       
 87831  ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 87832  {
       
 87833    enum x86_64_reg_class classes[MAX_CLASSES];
       
 87834 @@ -421,25 +445,24 @@ ffi_call (ffi_cif *cif, void (*fn)(void)
       
 87835    reg_args = (struct register_args *) stack;
       
 87836    argp = stack + sizeof (struct register_args);
       
 87837  
       
 87838    gprcount = ssecount = 0;
       
 87839  
       
 87840    /* If the return value is passed in memory, add the pointer as the
       
 87841       first integer argument.  */
       
 87842    if (ret_in_memory)
       
 87843 -    reg_args->gpr[gprcount++] = (long) rvalue;
       
 87844 +    reg_args->gpr[gprcount++] = (unsigned long) rvalue;
       
 87845  
       
 87846    avn = cif->nargs;
       
 87847    arg_types = cif->arg_types;
       
 87848  
       
 87849    for (i = 0; i < avn; ++i)
       
 87850      {
       
 87851 -      size_t size = arg_types[i]->size;
       
 87852 -      int n;
       
 87853 +      size_t n, size = arg_types[i]->size;
       
 87854  
       
 87855        n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse);
       
 87856        if (n == 0
       
 87857  	  || gprcount + ngpr > MAX_GPR_REGS
       
 87858  	  || ssecount + nsse > MAX_SSE_REGS)
       
 87859  	{
       
 87860  	  long align = arg_types[i]->alignment;
       
 87861  
       
 87862 @@ -459,26 +482,43 @@ ffi_call (ffi_cif *cif, void (*fn)(void)
       
 87863  	  int j;
       
 87864  
       
 87865  	  for (j = 0; j < n; j++, a += 8, size -= 8)
       
 87866  	    {
       
 87867  	      switch (classes[j])
       
 87868  		{
       
 87869  		case X86_64_INTEGER_CLASS:
       
 87870  		case X86_64_INTEGERSI_CLASS:
       
 87871 -		  reg_args->gpr[gprcount] = 0;
       
 87872 -		  memcpy (&reg_args->gpr[gprcount], a, size < 8 ? size : 8);
       
 87873 +		  /* Sign-extend integer arguments passed in general
       
 87874 +		     purpose registers, to cope with the fact that
       
 87875 +		     LLVM incorrectly assumes that this will be done
       
 87876 +		     (the x86-64 PS ABI does not specify this). */
       
 87877 +		  switch (arg_types[i]->type)
       
 87878 +		    {
       
 87879 +		    case FFI_TYPE_SINT8:
       
 87880 +		      *(SINT64 *)&reg_args->gpr[gprcount] = (SINT64) *((SINT8 *) a);
       
 87881 +		      break;
       
 87882 +		    case FFI_TYPE_SINT16:
       
 87883 +		      *(SINT64 *)&reg_args->gpr[gprcount] = (SINT64) *((SINT16 *) a);
       
 87884 +		      break;
       
 87885 +		    case FFI_TYPE_SINT32:
       
 87886 +		      *(SINT64 *)&reg_args->gpr[gprcount] = (SINT64) *((SINT32 *) a);
       
 87887 +		      break;
       
 87888 +		    default:
       
 87889 +		      reg_args->gpr[gprcount] = 0;
       
 87890 +		      memcpy (&reg_args->gpr[gprcount], a, size < 8 ? size : 8);
       
 87891 +		    }
       
 87892  		  gprcount++;
       
 87893  		  break;
       
 87894  		case X86_64_SSE_CLASS:
       
 87895  		case X86_64_SSEDF_CLASS:
       
 87896 -		  reg_args->sse[ssecount++] = *(UINT64 *) a;
       
 87897 +		  reg_args->sse[ssecount++].i64 = *(UINT64 *) a;
       
 87898  		  break;
       
 87899  		case X86_64_SSESF_CLASS:
       
 87900 -		  reg_args->sse[ssecount++] = *(UINT32 *) a;
       
 87901 +		  reg_args->sse[ssecount++].i32 = *(UINT32 *) a;
       
 87902  		  break;
       
 87903  		default:
       
 87904  		  abort();
       
 87905  		}
       
 87906  	    }
       
 87907  	}
       
 87908      }
       
 87909  
       
 87910 @@ -493,22 +533,31 @@ ffi_status
       
 87911  ffi_prep_closure_loc (ffi_closure* closure,
       
 87912  		      ffi_cif* cif,
       
 87913  		      void (*fun)(ffi_cif*, void*, void**, void*),
       
 87914  		      void *user_data,
       
 87915  		      void *codeloc)
       
 87916  {
       
 87917    volatile unsigned short *tramp;
       
 87918  
       
 87919 +  /* Sanity check on the cif ABI.  */
       
 87920 +  {
       
 87921 +    int abi = cif->abi;
       
 87922 +    if (UNLIKELY (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI)))
       
 87923 +      return FFI_BAD_ABI;
       
 87924 +  }
       
 87925 +
       
 87926    tramp = (volatile unsigned short *) &closure->tramp[0];
       
 87927  
       
 87928    tramp[0] = 0xbb49;		/* mov <code>, %r11	*/
       
 87929 -  *(void * volatile *) &tramp[1] = ffi_closure_unix64;
       
 87930 +  *((unsigned long long * volatile) &tramp[1])
       
 87931 +    = (unsigned long) ffi_closure_unix64;
       
 87932    tramp[5] = 0xba49;		/* mov <data>, %r10	*/
       
 87933 -  *(void * volatile *) &tramp[6] = codeloc;
       
 87934 +  *((unsigned long long * volatile) &tramp[6])
       
 87935 +    = (unsigned long) codeloc;
       
 87936  
       
 87937    /* Set the carry bit iff the function uses any sse registers.
       
 87938       This is clc or stc, together with the first byte of the jmp.  */
       
 87939    tramp[10] = cif->flags & (1 << 11) ? 0x49f9 : 0x49f8;
       
 87940  
       
 87941    tramp[11] = 0xe3ff;			/* jmp *%r11    */
       
 87942  
       
 87943    closure->cif = cif;
       
 87944 @@ -532,22 +581,22 @@ ffi_closure_unix64_inner(ffi_closure *cl
       
 87945    cif = closure->cif;
       
 87946    avalue = alloca(cif->nargs * sizeof(void *));
       
 87947    gprcount = ssecount = 0;
       
 87948  
       
 87949    ret = cif->rtype->type;
       
 87950    if (ret != FFI_TYPE_VOID)
       
 87951      {
       
 87952        enum x86_64_reg_class classes[MAX_CLASSES];
       
 87953 -      int n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
       
 87954 +      size_t n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
       
 87955        if (n == 0)
       
 87956  	{
       
 87957  	  /* The return value goes in memory.  Arrange for the closure
       
 87958  	     return value to go directly back to the original caller.  */
       
 87959 -	  rvalue = (void *) reg_args->gpr[gprcount++];
       
 87960 +	  rvalue = (void *) (unsigned long) reg_args->gpr[gprcount++];
       
 87961  	  /* We don't have to do anything in asm for the return.  */
       
 87962  	  ret = FFI_TYPE_VOID;
       
 87963  	}
       
 87964        else if (ret == FFI_TYPE_STRUCT && n == 2)
       
 87965  	{
       
 87966  	  /* Mark which register the second word of the structure goes in.  */
       
 87967  	  _Bool sse0 = SSE_CLASS_P (classes[0]);
       
 87968  	  _Bool sse1 = SSE_CLASS_P (classes[1]);
       
 87969 @@ -555,21 +604,21 @@ ffi_closure_unix64_inner(ffi_closure *cl
       
 87970  	    ret |= 1 << 8;
       
 87971  	  else if (sse0 && !sse1)
       
 87972  	    ret |= 1 << 9;
       
 87973  	}
       
 87974      }
       
 87975  
       
 87976    avn = cif->nargs;
       
 87977    arg_types = cif->arg_types;
       
 87978 -  
       
 87979 +
       
 87980    for (i = 0; i < avn; ++i)
       
 87981      {
       
 87982        enum x86_64_reg_class classes[MAX_CLASSES];
       
 87983 -      int n;
       
 87984 +      size_t n;
       
 87985  
       
 87986        n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse);
       
 87987        if (n == 0
       
 87988  	  || gprcount + ngpr > MAX_GPR_REGS
       
 87989  	  || ssecount + nsse > MAX_SSE_REGS)
       
 87990  	{
       
 87991  	  long align = arg_types[i]->alignment;
       
 87992  
       
 87993 diff --git a/js/src/ctypes/libffi/src/x86/ffitarget.h b/js/src/ctypes/libffi/src/x86/ffitarget.h
       
 87994 --- a/js/src/ctypes/libffi/src/x86/ffitarget.h
       
 87995 +++ b/js/src/ctypes/libffi/src/x86/ffitarget.h
       
 87996 @@ -1,11 +1,12 @@
       
 87997  /* -----------------------------------------------------------------*-C-*-
       
 87998 -   ffitarget.h - Copyright (c) 1996-2003, 2010  Red Hat, Inc.
       
 87999 -   Copyright (C) 2008  Free Software Foundation, Inc.
       
 88000 +   ffitarget.h - Copyright (c) 2012  Anthony Green
       
 88001 +                 Copyright (c) 1996-2003, 2010  Red Hat, Inc.
       
 88002 +                 Copyright (C) 2008  Free Software Foundation, Inc.
       
 88003  
       
 88004     Target configuration macros for x86 and x86-64.
       
 88005  
       
 88006     Permission is hereby granted, free of charge, to any person obtaining
       
 88007     a copy of this software and associated documentation files (the
       
 88008     ``Software''), to deal in the Software without restriction, including
       
 88009     without limitation the rights to use, copy, modify, merge, publish,
       
 88010     distribute, sublicense, and/or sell copies of the Software, and to
       
 88011 @@ -24,16 +25,20 @@
       
 88012     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 88013     DEALINGS IN THE SOFTWARE.
       
 88014  
       
 88015     ----------------------------------------------------------------------- */
       
 88016  
       
 88017  #ifndef LIBFFI_TARGET_H
       
 88018  #define LIBFFI_TARGET_H
       
 88019  
       
 88020 +#ifndef LIBFFI_H
       
 88021 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 88022 +#endif
       
 88023 +
       
 88024  /* ---- System specific configurations ----------------------------------- */
       
 88025  
       
 88026  /* For code common to all platforms on x86 and x86_64. */
       
 88027  #define X86_ANY
       
 88028  
       
 88029  #if defined (X86_64) && defined (__i386__)
       
 88030  #undef X86_64
       
 88031  #define X86
       
 88032 @@ -51,71 +56,80 @@
       
 88033  #ifdef _MSC_VER
       
 88034  typedef unsigned __int64       ffi_arg;
       
 88035  typedef __int64                ffi_sarg;
       
 88036  #else
       
 88037  typedef unsigned long long     ffi_arg;
       
 88038  typedef long long              ffi_sarg;
       
 88039  #endif
       
 88040  #else
       
 88041 +#if defined __x86_64__ && defined __ILP32__
       
 88042 +#define FFI_SIZEOF_ARG 8
       
 88043 +#define FFI_SIZEOF_JAVA_RAW  4
       
 88044 +typedef unsigned long long     ffi_arg;
       
 88045 +typedef long long              ffi_sarg;
       
 88046 +#else
       
 88047  typedef unsigned long          ffi_arg;
       
 88048  typedef signed long            ffi_sarg;
       
 88049  #endif
       
 88050 +#endif
       
 88051  
       
 88052  typedef enum ffi_abi {
       
 88053    FFI_FIRST_ABI = 0,
       
 88054  
       
 88055    /* ---- Intel x86 Win32 ---------- */
       
 88056  #ifdef X86_WIN32
       
 88057    FFI_SYSV,
       
 88058    FFI_STDCALL,
       
 88059 +  FFI_THISCALL,
       
 88060 +  FFI_FASTCALL,
       
 88061 +  FFI_MS_CDECL,
       
 88062    FFI_LAST_ABI,
       
 88063 -  /* TODO: Add fastcall support for the sake of completeness */
       
 88064 +#ifdef _MSC_VER
       
 88065 +  FFI_DEFAULT_ABI = FFI_MS_CDECL
       
 88066 +#else
       
 88067    FFI_DEFAULT_ABI = FFI_SYSV
       
 88068 +#endif
       
 88069  
       
 88070  #elif defined(X86_WIN64)
       
 88071    FFI_WIN64,
       
 88072    FFI_LAST_ABI,
       
 88073    FFI_DEFAULT_ABI = FFI_WIN64
       
 88074  
       
 88075  #else
       
 88076    /* ---- Intel x86 and AMD x86-64 - */
       
 88077    FFI_SYSV,
       
 88078    FFI_UNIX64,   /* Unix variants all use the same ABI for x86-64  */
       
 88079 +  FFI_THISCALL,
       
 88080 +  FFI_FASTCALL,
       
 88081 +  FFI_STDCALL,
       
 88082    FFI_LAST_ABI,
       
 88083  #if defined(__i386__) || defined(__i386)
       
 88084    FFI_DEFAULT_ABI = FFI_SYSV
       
 88085  #else
       
 88086    FFI_DEFAULT_ABI = FFI_UNIX64
       
 88087  #endif
       
 88088  #endif
       
 88089  } ffi_abi;
       
 88090  #endif
       
 88091  
       
 88092  /* ---- Definitions for closures ----------------------------------------- */
       
 88093  
       
 88094  #define FFI_CLOSURES 1
       
 88095  #define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
       
 88096  #define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
       
 88097  #define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
       
 88098 +#define FFI_TYPE_MS_STRUCT       (FFI_TYPE_LAST + 4)
       
 88099  
       
 88100  #if defined (X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
       
 88101  #define FFI_TRAMPOLINE_SIZE 24
       
 88102  #define FFI_NATIVE_RAW_API 0
       
 88103 -#else
       
 88104 -#ifdef X86_WIN32
       
 88105 -#define FFI_TRAMPOLINE_SIZE 13
       
 88106 -#else
       
 88107 -#ifdef X86_WIN64
       
 88108 +#elif defined(X86_WIN64)
       
 88109  #define FFI_TRAMPOLINE_SIZE 29
       
 88110  #define FFI_NATIVE_RAW_API 0
       
 88111  #define FFI_NO_RAW_API 1
       
 88112  #else
       
 88113 -#define FFI_TRAMPOLINE_SIZE 10
       
 88114 -#endif
       
 88115 -#endif
       
 88116 -#ifndef X86_WIN64
       
 88117 +#define FFI_TRAMPOLINE_SIZE 52
       
 88118  #define FFI_NATIVE_RAW_API 1	/* x86 has native raw api support */
       
 88119  #endif
       
 88120 -#endif
       
 88121  
       
 88122  #endif
       
 88123  
       
 88124 diff --git a/js/src/ctypes/libffi/src/x86/freebsd.S b/js/src/ctypes/libffi/src/x86/freebsd.S
       
 88125 --- a/js/src/ctypes/libffi/src/x86/freebsd.S
       
 88126 +++ b/js/src/ctypes/libffi/src/x86/freebsd.S
       
 88127 @@ -454,8 +454,10 @@ 0:
       
 88128  	.byte	0x86	/* DW_CFA_offset, column 0x6 */
       
 88129  	.byte	0x3	/* .uleb128 0x3 */
       
 88130  	.align 4
       
 88131  .LEFDE3:
       
 88132  
       
 88133  #endif
       
 88134  
       
 88135  #endif /* ifndef __x86_64__ */
       
 88136 +
       
 88137 +	.section .note.GNU-stack,"",%progbits
       
 88138 diff --git a/js/src/ctypes/libffi/src/x86/sysv.S b/js/src/ctypes/libffi/src/x86/sysv.S
       
 88139 --- a/js/src/ctypes/libffi/src/x86/sysv.S
       
 88140 +++ b/js/src/ctypes/libffi/src/x86/sysv.S
       
 88141 @@ -1,10 +1,11 @@
       
 88142  /* -----------------------------------------------------------------------
       
 88143 -   sysv.S - Copyright (c) 1996, 1998, 2001-2003, 2005, 2008, 2010  Red Hat, Inc.
       
 88144 +   sysv.S - Copyright (c) 2013  The Written Word, Inc.
       
 88145 +	  - Copyright (c) 1996,1998,2001-2003,2005,2008,2010  Red Hat, Inc.
       
 88146     
       
 88147     X86 Foreign Function Interface 
       
 88148  
       
 88149     Permission is hereby granted, free of charge, to any person obtaining
       
 88150     a copy of this software and associated documentation files (the
       
 88151     ``Software''), to deal in the Software without restriction, including
       
 88152     without limitation the rights to use, copy, modify, merge, publish,
       
 88153     distribute, sublicense, and/or sell copies of the Software, and to
       
 88154 @@ -176,19 +177,29 @@ ffi_closure_SYSV:
       
 88155  	pushl	%ebp
       
 88156  .LCFI2:
       
 88157  	movl	%esp, %ebp
       
 88158  .LCFI3:
       
 88159  	subl	$40, %esp
       
 88160  	leal	-24(%ebp), %edx
       
 88161  	movl	%edx, -12(%ebp)	/* resp */
       
 88162  	leal	8(%ebp), %edx
       
 88163 +#ifdef __SUNPRO_C
       
 88164 +	/* The SUNPRO compiler doesn't support GCC's regparm function
       
 88165 +  	   attribute, so we have to pass all three arguments to
       
 88166 +	   ffi_closure_SYSV_inner on the stack.  */
       
 88167 +	movl	%edx, 8(%esp)	/* args = __builtin_dwarf_cfa () */
       
 88168 +	leal	-12(%ebp), %edx
       
 88169 +	movl	%edx, 4(%esp)	/* &resp */
       
 88170 +	movl    %eax, (%esp)    /* closure */
       
 88171 +#else
       
 88172  	movl	%edx, 4(%esp)	/* args = __builtin_dwarf_cfa () */
       
 88173  	leal	-12(%ebp), %edx
       
 88174  	movl	%edx, (%esp)	/* &resp */
       
 88175 +#endif
       
 88176  #if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__
       
 88177  	call	ffi_closure_SYSV_inner
       
 88178  #else
       
 88179  	movl	%ebx, 8(%esp)
       
 88180  .LCFI7:
       
 88181  	call	1f
       
 88182  1:	popl	%ebx
       
 88183  	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
       
 88184 @@ -323,16 +334,38 @@ 0:
       
 88185  .Lrcls_retllong:
       
 88186  	movl	-24(%ebp), %eax
       
 88187  	movl	-20(%ebp), %edx
       
 88188  	jmp	.Lrcls_epilogue
       
 88189  .LFE3:
       
 88190  	.size	ffi_closure_raw_SYSV, .-ffi_closure_raw_SYSV
       
 88191  #endif
       
 88192  
       
 88193 +#if defined __GNUC__
       
 88194 +/* Only emit dwarf unwind info when building with GNU toolchain.  */
       
 88195 +
       
 88196 +#if defined __PIC__
       
 88197 +# if defined __sun__ && defined __svr4__
       
 88198 +/* 32-bit Solaris 2/x86 uses datarel encoding for PIC.  GNU ld before 2.22
       
 88199 +   doesn't correctly sort .eh_frame_hdr with mixed encodings, so match this.  */
       
 88200 +#  define FDE_ENCODING		0x30	/* datarel */
       
 88201 +#  define FDE_ENCODE(X)		X@GOTOFF
       
 88202 +# else
       
 88203 +#  define FDE_ENCODING		0x1b	/* pcrel sdata4 */
       
 88204 +#  if defined HAVE_AS_X86_PCREL
       
 88205 +#   define FDE_ENCODE(X)	X-.
       
 88206 +#  else
       
 88207 +#   define FDE_ENCODE(X)	X@rel
       
 88208 +#  endif
       
 88209 +# endif
       
 88210 +#else
       
 88211 +# define FDE_ENCODING		0	/* absolute */
       
 88212 +# define FDE_ENCODE(X)		X
       
 88213 +#endif
       
 88214 +
       
 88215  	.section	.eh_frame,EH_FRAME_FLAGS,@progbits
       
 88216  .Lframe1:
       
 88217  	.long	.LECIE1-.LSCIE1	/* Length of Common Information Entry */
       
 88218  .LSCIE1:
       
 88219  	.long	0x0	/* CIE Identifier Tag */
       
 88220  	.byte	0x1	/* CIE Version */
       
 88221  #ifdef HAVE_AS_ASCII_PSEUDO_OP
       
 88222  #ifdef __PIC__
       
 88223 @@ -349,37 +382,31 @@ 0:
       
 88224  #else
       
 88225  #error missing .ascii/.string
       
 88226  #endif
       
 88227  	.byte	0x1	/* .uleb128 0x1; CIE Code Alignment Factor */
       
 88228  	.byte	0x7c	/* .sleb128 -4; CIE Data Alignment Factor */
       
 88229  	.byte	0x8	/* CIE RA Column */
       
 88230  #ifdef __PIC__
       
 88231  	.byte	0x1	/* .uleb128 0x1; Augmentation size */
       
 88232 -	.byte	0x1b	/* FDE Encoding (pcrel sdata4) */
       
 88233 +	.byte	FDE_ENCODING
       
 88234  #endif
       
 88235  	.byte	0xc	/* DW_CFA_def_cfa */
       
 88236  	.byte	0x4	/* .uleb128 0x4 */
       
 88237  	.byte	0x4	/* .uleb128 0x4 */
       
 88238  	.byte	0x88	/* DW_CFA_offset, column 0x8 */
       
 88239  	.byte	0x1	/* .uleb128 0x1 */
       
 88240  	.align 4
       
 88241  .LECIE1:
       
 88242  .LSFDE1:
       
 88243  	.long	.LEFDE1-.LASFDE1	/* FDE Length */
       
 88244  .LASFDE1:
       
 88245  	.long	.LASFDE1-.Lframe1	/* FDE CIE offset */
       
 88246 -#if defined __PIC__ && defined HAVE_AS_X86_PCREL
       
 88247 -	.long	.LFB1-.	/* FDE initial location */
       
 88248 -#elif defined __PIC__
       
 88249 -	.long	.LFB1@rel
       
 88250 -#else
       
 88251 -	.long	.LFB1
       
 88252 -#endif
       
 88253 -	.long	.LFE1-.LFB1	/* FDE address range */
       
 88254 +	.long	FDE_ENCODE(.LFB1)	/* FDE initial location */
       
 88255 +	.long	.LFE1-.LFB1		/* FDE address range */
       
 88256  #ifdef __PIC__
       
 88257  	.byte	0x0	/* .uleb128 0x0; Augmentation size */
       
 88258  #endif
       
 88259  	.byte	0x4	/* DW_CFA_advance_loc4 */
       
 88260  	.long	.LCFI0-.LFB1
       
 88261  	.byte	0xe	/* DW_CFA_def_cfa_offset */
       
 88262  	.byte	0x8	/* .uleb128 0x8 */
       
 88263  	.byte	0x85	/* DW_CFA_offset, column 0x5 */
       
 88264 @@ -389,24 +416,18 @@ 0:
       
 88265  	.byte	0xd	/* DW_CFA_def_cfa_register */
       
 88266  	.byte	0x5	/* .uleb128 0x5 */
       
 88267  	.align 4
       
 88268  .LEFDE1:
       
 88269  .LSFDE2:
       
 88270  	.long	.LEFDE2-.LASFDE2	/* FDE Length */
       
 88271  .LASFDE2:
       
 88272  	.long	.LASFDE2-.Lframe1	/* FDE CIE offset */
       
 88273 -#if defined __PIC__ && defined HAVE_AS_X86_PCREL
       
 88274 -	.long	.LFB2-.	/* FDE initial location */
       
 88275 -#elif defined __PIC__
       
 88276 -	.long	.LFB2@rel
       
 88277 -#else
       
 88278 -	.long	.LFB2
       
 88279 -#endif
       
 88280 -	.long	.LFE2-.LFB2	/* FDE address range */
       
 88281 +	.long	FDE_ENCODE(.LFB2)	/* FDE initial location */
       
 88282 +	.long	.LFE2-.LFB2		/* FDE address range */
       
 88283  #ifdef __PIC__
       
 88284  	.byte	0x0	/* .uleb128 0x0; Augmentation size */
       
 88285  #endif
       
 88286  	.byte	0x4	/* DW_CFA_advance_loc4 */
       
 88287  	.long	.LCFI2-.LFB2
       
 88288  	.byte	0xe	/* DW_CFA_def_cfa_offset */
       
 88289  	.byte	0x8	/* .uleb128 0x8 */
       
 88290  	.byte	0x85	/* DW_CFA_offset, column 0x5 */
       
 88291 @@ -425,24 +446,18 @@ 0:
       
 88292  .LEFDE2:
       
 88293  
       
 88294  #if !FFI_NO_RAW_API
       
 88295  
       
 88296  .LSFDE3:
       
 88297  	.long	.LEFDE3-.LASFDE3	/* FDE Length */
       
 88298  .LASFDE3:
       
 88299  	.long	.LASFDE3-.Lframe1	/* FDE CIE offset */
       
 88300 -#if defined __PIC__ && defined HAVE_AS_X86_PCREL
       
 88301 -	.long	.LFB3-.	/* FDE initial location */
       
 88302 -#elif defined __PIC__
       
 88303 -	.long	.LFB3@rel
       
 88304 -#else
       
 88305 -	.long	.LFB3
       
 88306 -#endif
       
 88307 -	.long	.LFE3-.LFB3	/* FDE address range */
       
 88308 +	.long	FDE_ENCODE(.LFB3)	/* FDE initial location */
       
 88309 +	.long	.LFE3-.LFB3		/* FDE address range */
       
 88310  #ifdef __PIC__
       
 88311  	.byte	0x0	/* .uleb128 0x0; Augmentation size */
       
 88312  #endif
       
 88313  	.byte	0x4	/* DW_CFA_advance_loc4 */
       
 88314  	.long	.LCFI4-.LFB3
       
 88315  	.byte	0xe	/* DW_CFA_def_cfa_offset */
       
 88316  	.byte	0x8	/* .uleb128 0x8 */
       
 88317  	.byte	0x85	/* DW_CFA_offset, column 0x5 */
       
 88318 @@ -454,14 +469,15 @@ 0:
       
 88319  	.byte	0x4	/* DW_CFA_advance_loc4 */
       
 88320  	.long	.LCFI6-.LCFI5
       
 88321  	.byte	0x86	/* DW_CFA_offset, column 0x6 */
       
 88322  	.byte	0x3	/* .uleb128 0x3 */
       
 88323  	.align 4
       
 88324  .LEFDE3:
       
 88325  
       
 88326  #endif
       
 88327 +#endif
       
 88328  
       
 88329  #endif /* ifndef __x86_64__ */
       
 88330  
       
 88331  #if defined __ELF__ && defined __linux__
       
 88332  	.section	.note.GNU-stack,"",@progbits
       
 88333  #endif
       
 88334 diff --git a/js/src/ctypes/libffi/src/x86/unix64.S b/js/src/ctypes/libffi/src/x86/unix64.S
       
 88335 --- a/js/src/ctypes/libffi/src/x86/unix64.S
       
 88336 +++ b/js/src/ctypes/libffi/src/x86/unix64.S
       
 88337 @@ -1,11 +1,12 @@
       
 88338  /* -----------------------------------------------------------------------
       
 88339 -   unix64.S - Copyright (c) 2002  Bo Thorsen <bo@suse.de>
       
 88340 -	      Copyright (c) 2008  Red Hat, Inc
       
 88341 +   unix64.S - Copyright (c) 2013  The Written Word, Inc.
       
 88342 +	    - Copyright (c) 2008  Red Hat, Inc
       
 88343 +	    - Copyright (c) 2002  Bo Thorsen <bo@suse.de>
       
 88344  
       
 88345     x86-64 Foreign Function Interface 
       
 88346  
       
 88347     Permission is hereby granted, free of charge, to any person obtaining
       
 88348     a copy of this software and associated documentation files (the
       
 88349     ``Software''), to deal in the Software without restriction, including
       
 88350     without limitation the rights to use, copy, modify, merge, publish,
       
 88351     distribute, sublicense, and/or sell copies of the Software, and to
       
 88352 @@ -319,16 +320,19 @@ ffi_closure_unix64:
       
 88353  	movdqa	%xmm5, 128(%rsp)
       
 88354  	movdqa	%xmm6, 144(%rsp)
       
 88355  	movdqa	%xmm7, 160(%rsp)
       
 88356  	jmp	.Lret_from_save_sse
       
 88357  
       
 88358  .LUW9:
       
 88359  	.size	ffi_closure_unix64,.-ffi_closure_unix64
       
 88360  
       
 88361 +#ifdef __GNUC__
       
 88362 +/* Only emit DWARF unwind info when building with the GNU toolchain.  */
       
 88363 +
       
 88364  #ifdef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
       
 88365  	.section	.eh_frame,"a",@unwind
       
 88366  #else
       
 88367  	.section	.eh_frame,"a",@progbits
       
 88368  #endif
       
 88369  .Lframe1:
       
 88370  	.long	.LECIE1-.LSCIE1		/* CIE Length */
       
 88371  .LSCIE1:
       
 88372 @@ -414,13 +418,15 @@ ffi_closure_unix64:
       
 88373  
       
 88374  	.byte	0x4			/* DW_CFA_advance_loc4 */
       
 88375  	.long	.LUW8-.LUW7
       
 88376  	.byte	0xb			/* DW_CFA_restore_state */
       
 88377  
       
 88378  	.align 8
       
 88379  .LEFDE3:
       
 88380  
       
 88381 +#endif /* __GNUC__ */
       
 88382 +	
       
 88383  #endif /* __x86_64__ */
       
 88384  
       
 88385  #if defined __ELF__ && defined __linux__
       
 88386  	.section	.note.GNU-stack,"",@progbits
       
 88387  #endif
       
 88388 diff --git a/js/src/ctypes/libffi/src/x86/win32.S b/js/src/ctypes/libffi/src/x86/win32.S
       
 88389 --- a/js/src/ctypes/libffi/src/x86/win32.S
       
 88390 +++ b/js/src/ctypes/libffi/src/x86/win32.S
       
 88391 @@ -40,16 +40,17 @@
       
 88392  
       
 88393  EXTRN ffi_closure_SYSV_inner:NEAR
       
 88394  
       
 88395  _TEXT SEGMENT
       
 88396  
       
 88397  ffi_call_win32 PROC NEAR,
       
 88398      ffi_prep_args : NEAR PTR DWORD,
       
 88399      ecif          : NEAR PTR DWORD,
       
 88400 +    cif_abi       : DWORD,
       
 88401      cif_bytes     : DWORD,
       
 88402      cif_flags     : DWORD,
       
 88403      rvalue        : NEAR PTR DWORD,
       
 88404      fn            : NEAR PTR DWORD
       
 88405  
       
 88406          ;; Make room for all of the new args.
       
 88407          mov  ecx, cif_bytes
       
 88408          sub  esp, ecx
       
 88409 @@ -59,16 +60,29 @@ ffi_call_win32 PROC NEAR,
       
 88410          ;; Place all of the ffi_prep_args in position
       
 88411          push ecif
       
 88412          push eax
       
 88413          call ffi_prep_args
       
 88414  
       
 88415          ;; Return stack to previous state and call the function
       
 88416          add  esp, 8
       
 88417  
       
 88418 +	;; Handle thiscall and fastcall
       
 88419 +	cmp cif_abi, 3 ;; FFI_THISCALL
       
 88420 +	jz do_thiscall
       
 88421 +	cmp cif_abi, 4 ;; FFI_FASTCALL
       
 88422 +	jnz do_stdcall
       
 88423 +	mov ecx, DWORD PTR [esp]
       
 88424 +	mov edx, DWORD PTR [esp+4]
       
 88425 +	add esp, 8
       
 88426 +	jmp do_stdcall
       
 88427 +do_thiscall:
       
 88428 +	mov ecx, DWORD PTR [esp]
       
 88429 +	add esp, 4
       
 88430 +do_stdcall:
       
 88431          call fn
       
 88432  
       
 88433          ;; cdecl:   we restore esp in the epilogue, so there's no need to
       
 88434          ;;          remove the space we pushed for the args.
       
 88435          ;; stdcall: the callee has already cleaned the stack.
       
 88436  
       
 88437          ;; Load ecx with the return type code
       
 88438          mov  ecx, cif_flags
       
 88439 @@ -89,41 +103,47 @@ ca_jumptable:
       
 88440          jmp  [ca_jumpdata + 4 * ecx]
       
 88441  ca_jumpdata:
       
 88442          ;; Do not insert anything here between label and jump table.
       
 88443          dd offset ca_epilogue       ;; FFI_TYPE_VOID
       
 88444          dd offset ca_retint         ;; FFI_TYPE_INT
       
 88445          dd offset ca_retfloat       ;; FFI_TYPE_FLOAT
       
 88446          dd offset ca_retdouble      ;; FFI_TYPE_DOUBLE
       
 88447          dd offset ca_retlongdouble  ;; FFI_TYPE_LONGDOUBLE
       
 88448 -        dd offset ca_retint8        ;; FFI_TYPE_UINT8
       
 88449 -        dd offset ca_retint8        ;; FFI_TYPE_SINT8
       
 88450 -        dd offset ca_retint16       ;; FFI_TYPE_UINT16
       
 88451 -        dd offset ca_retint16       ;; FFI_TYPE_SINT16
       
 88452 +        dd offset ca_retuint8       ;; FFI_TYPE_UINT8
       
 88453 +        dd offset ca_retsint8       ;; FFI_TYPE_SINT8
       
 88454 +        dd offset ca_retuint16      ;; FFI_TYPE_UINT16
       
 88455 +        dd offset ca_retsint16      ;; FFI_TYPE_SINT16
       
 88456          dd offset ca_retint         ;; FFI_TYPE_UINT32
       
 88457          dd offset ca_retint         ;; FFI_TYPE_SINT32
       
 88458          dd offset ca_retint64       ;; FFI_TYPE_UINT64
       
 88459          dd offset ca_retint64       ;; FFI_TYPE_SINT64
       
 88460          dd offset ca_epilogue       ;; FFI_TYPE_STRUCT
       
 88461          dd offset ca_retint         ;; FFI_TYPE_POINTER
       
 88462 -        dd offset ca_retint8        ;; FFI_TYPE_SMALL_STRUCT_1B
       
 88463 -        dd offset ca_retint16       ;; FFI_TYPE_SMALL_STRUCT_2B
       
 88464 +        dd offset ca_retstruct1b    ;; FFI_TYPE_SMALL_STRUCT_1B
       
 88465 +        dd offset ca_retstruct2b    ;; FFI_TYPE_SMALL_STRUCT_2B
       
 88466          dd offset ca_retint         ;; FFI_TYPE_SMALL_STRUCT_4B
       
 88467 +        dd offset ca_epilogue       ;; FFI_TYPE_MS_STRUCT
       
 88468  
       
 88469 -ca_retint8:
       
 88470 -        ;; Load %ecx with the pointer to storage for the return value
       
 88471 -        mov   ecx, rvalue
       
 88472 -        mov   [ecx + 0], al
       
 88473 -        jmp   ca_epilogue
       
 88474 +        /* Sign/zero extend as appropriate.  */
       
 88475 +ca_retuint8:
       
 88476 +        movzx eax, al
       
 88477 +        jmp   ca_retint
       
 88478  
       
 88479 -ca_retint16:
       
 88480 -        ;; Load %ecx with the pointer to storage for the return value
       
 88481 -        mov   ecx, rvalue
       
 88482 -        mov   [ecx + 0], ax
       
 88483 -        jmp   ca_epilogue
       
 88484 +ca_retsint8:
       
 88485 +        movsx eax, al
       
 88486 +        jmp   ca_retint
       
 88487 +
       
 88488 +ca_retuint16:
       
 88489 +        movzx eax, ax
       
 88490 +        jmp   ca_retint
       
 88491 +
       
 88492 +ca_retsint16:
       
 88493 +        movsx eax, ax
       
 88494 +        jmp   ca_retint
       
 88495  
       
 88496  ca_retint:
       
 88497          ;; Load %ecx with the pointer to storage for the return value
       
 88498          mov   ecx, rvalue
       
 88499          mov   [ecx + 0], eax
       
 88500          jmp   ca_epilogue
       
 88501  
       
 88502  ca_retint64:
       
 88503 @@ -146,64 +166,94 @@ ca_retdouble:
       
 88504          jmp   ca_epilogue
       
 88505  
       
 88506  ca_retlongdouble:
       
 88507          ;; Load %ecx with the pointer to storage for the return value
       
 88508          mov   ecx, rvalue
       
 88509          fstp  TBYTE PTR [ecx]
       
 88510          jmp   ca_epilogue
       
 88511  
       
 88512 +ca_retstruct1b:
       
 88513 +        ;; Load %ecx with the pointer to storage for the return value
       
 88514 +        mov   ecx, rvalue
       
 88515 +        mov   [ecx + 0], al
       
 88516 +        jmp   ca_epilogue
       
 88517 +
       
 88518 +ca_retstruct2b:
       
 88519 +        ;; Load %ecx with the pointer to storage for the return value
       
 88520 +        mov   ecx, rvalue
       
 88521 +        mov   [ecx + 0], ax
       
 88522 +        jmp   ca_epilogue
       
 88523 +
       
 88524  ca_epilogue:
       
 88525          ;; Epilogue code is autogenerated.
       
 88526          ret
       
 88527  ffi_call_win32 ENDP
       
 88528  
       
 88529 +ffi_closure_THISCALL PROC NEAR FORCEFRAME
       
 88530 +	sub	esp, 40
       
 88531 +	lea	edx, [ebp -24]
       
 88532 +	mov	[ebp - 12], edx	/* resp */
       
 88533 +	lea	edx, [ebp + 12]  /* account for stub return address on stack */
       
 88534 +	jmp	stub
       
 88535 +ffi_closure_THISCALL ENDP
       
 88536 +
       
 88537  ffi_closure_SYSV PROC NEAR FORCEFRAME
       
 88538      ;; the ffi_closure ctx is passed in eax by the trampoline.
       
 88539  
       
 88540          sub  esp, 40
       
 88541          lea  edx, [ebp - 24]
       
 88542          mov  [ebp - 12], edx         ;; resp
       
 88543          lea  edx, [ebp + 8]
       
 88544 +stub::
       
 88545          mov  [esp + 8], edx          ;; args
       
 88546          lea  edx, [ebp - 12]
       
 88547          mov  [esp + 4], edx          ;; &resp
       
 88548          mov  [esp], eax              ;; closure
       
 88549          call ffi_closure_SYSV_inner
       
 88550          mov  ecx, [ebp - 12]
       
 88551  
       
 88552  cs_jumptable:
       
 88553          jmp  [cs_jumpdata + 4 * eax]
       
 88554  cs_jumpdata:
       
 88555          ;; Do not insert anything here between the label and jump table.
       
 88556          dd offset cs_epilogue       ;; FFI_TYPE_VOID
       
 88557          dd offset cs_retint         ;; FFI_TYPE_INT
       
 88558          dd offset cs_retfloat       ;; FFI_TYPE_FLOAT
       
 88559          dd offset cs_retdouble      ;; FFI_TYPE_DOUBLE
       
 88560          dd offset cs_retlongdouble  ;; FFI_TYPE_LONGDOUBLE
       
 88561 -        dd offset cs_retint8        ;; FFI_TYPE_UINT8
       
 88562 -        dd offset cs_retint8        ;; FFI_TYPE_SINT8
       
 88563 -        dd offset cs_retint16       ;; FFI_TYPE_UINT16
       
 88564 -        dd offset cs_retint16       ;; FFI_TYPE_SINT16
       
 88565 +        dd offset cs_retuint8       ;; FFI_TYPE_UINT8
       
 88566 +        dd offset cs_retsint8       ;; FFI_TYPE_SINT8
       
 88567 +        dd offset cs_retuint16      ;; FFI_TYPE_UINT16
       
 88568 +        dd offset cs_retsint16      ;; FFI_TYPE_SINT16
       
 88569          dd offset cs_retint         ;; FFI_TYPE_UINT32
       
 88570          dd offset cs_retint         ;; FFI_TYPE_SINT32
       
 88571          dd offset cs_retint64       ;; FFI_TYPE_UINT64
       
 88572          dd offset cs_retint64       ;; FFI_TYPE_SINT64
       
 88573          dd offset cs_retstruct      ;; FFI_TYPE_STRUCT
       
 88574          dd offset cs_retint         ;; FFI_TYPE_POINTER
       
 88575 -        dd offset cs_retint8        ;; FFI_TYPE_SMALL_STRUCT_1B
       
 88576 -        dd offset cs_retint16       ;; FFI_TYPE_SMALL_STRUCT_2B
       
 88577 +        dd offset cs_retsint8       ;; FFI_TYPE_SMALL_STRUCT_1B
       
 88578 +        dd offset cs_retsint16      ;; FFI_TYPE_SMALL_STRUCT_2B
       
 88579          dd offset cs_retint         ;; FFI_TYPE_SMALL_STRUCT_4B
       
 88580 +        dd offset cs_retmsstruct    ;; FFI_TYPE_MS_STRUCT
       
 88581  
       
 88582 -cs_retint8:
       
 88583 -        mov   al, [ecx]
       
 88584 +cs_retuint8:
       
 88585 +        movzx eax, BYTE PTR [ecx]
       
 88586          jmp   cs_epilogue
       
 88587  
       
 88588 -cs_retint16:
       
 88589 -        mov   ax, [ecx]
       
 88590 +cs_retsint8:
       
 88591 +        movsx eax, BYTE PTR [ecx]
       
 88592 +        jmp   cs_epilogue
       
 88593 +
       
 88594 +cs_retuint16:
       
 88595 +        movzx eax, WORD PTR [ecx]
       
 88596 +        jmp   cs_epilogue
       
 88597 +
       
 88598 +cs_retsint16:
       
 88599 +        movsx eax, WORD PTR [ecx]
       
 88600          jmp   cs_epilogue
       
 88601  
       
 88602  cs_retint:
       
 88603          mov   eax, [ecx]
       
 88604          jmp   cs_epilogue
       
 88605  
       
 88606  cs_retint64:
       
 88607          mov   eax, [ecx + 0]
       
 88608 @@ -222,36 +272,52 @@ cs_retlongdouble:
       
 88609          fld   TBYTE PTR [ecx]
       
 88610          jmp   cs_epilogue
       
 88611  
       
 88612  cs_retstruct:
       
 88613          ;; Caller expects us to pop struct return value pointer hidden arg.
       
 88614          ;; Epilogue code is autogenerated.
       
 88615          ret	4
       
 88616  
       
 88617 +cs_retmsstruct:
       
 88618 +        ;; Caller expects us to return a pointer to the real return value.
       
 88619 +        mov   eax, ecx
       
 88620 +        ;; Caller doesn't expects us to pop struct return value pointer hidden arg.
       
 88621 +        jmp   cs_epilogue
       
 88622 +
       
 88623  cs_epilogue:
       
 88624          ;; Epilogue code is autogenerated.
       
 88625          ret
       
 88626  ffi_closure_SYSV ENDP
       
 88627  
       
 88628  #if !FFI_NO_RAW_API
       
 88629  
       
 88630  #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) AND NOT 3)
       
 88631  #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4)
       
 88632  #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4)
       
 88633  #define CIF_FLAGS_OFFSET 20
       
 88634  
       
 88635 -ffi_closure_raw_SYSV PROC NEAR USES esi
       
 88636 +ffi_closure_raw_THISCALL PROC NEAR USES esi FORCEFRAME
       
 88637 +	sub esp, 36
       
 88638 +	mov  esi, [eax + RAW_CLOSURE_CIF_OFFSET]        ;; closure->cif
       
 88639 +	mov  edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET]  ;; closure->user_data
       
 88640 +	mov [esp + 12], edx
       
 88641 +	lea edx, [ebp + 12]
       
 88642 +	jmp stubraw
       
 88643 +ffi_closure_raw_THISCALL ENDP
       
 88644 +
       
 88645 +ffi_closure_raw_SYSV PROC NEAR USES esi FORCEFRAME
       
 88646      ;; the ffi_closure ctx is passed in eax by the trampoline.
       
 88647  
       
 88648          sub  esp, 40
       
 88649          mov  esi, [eax + RAW_CLOSURE_CIF_OFFSET]        ;; closure->cif
       
 88650          mov  edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET]  ;; closure->user_data
       
 88651          mov  [esp + 12], edx                            ;; user_data
       
 88652          lea  edx, [ebp + 8]
       
 88653 +stubraw::
       
 88654          mov  [esp + 8], edx                             ;; raw_args
       
 88655          lea  edx, [ebp - 24]
       
 88656          mov  [esp + 4], edx                             ;; &res
       
 88657          mov  [esp], esi                                 ;; cif
       
 88658          call DWORD PTR [eax + RAW_CLOSURE_FUN_OFFSET]   ;; closure->fun
       
 88659          mov  eax, [esi + CIF_FLAGS_OFFSET]              ;; cif->flags
       
 88660          lea  ecx, [ebp - 24]
       
 88661  
       
 88662 @@ -259,36 +325,45 @@ cr_jumptable:
       
 88663          jmp  [cr_jumpdata + 4 * eax]
       
 88664  cr_jumpdata:
       
 88665          ;; Do not insert anything here between the label and jump table.
       
 88666          dd offset cr_epilogue       ;; FFI_TYPE_VOID
       
 88667          dd offset cr_retint         ;; FFI_TYPE_INT
       
 88668          dd offset cr_retfloat       ;; FFI_TYPE_FLOAT
       
 88669          dd offset cr_retdouble      ;; FFI_TYPE_DOUBLE
       
 88670          dd offset cr_retlongdouble  ;; FFI_TYPE_LONGDOUBLE
       
 88671 -        dd offset cr_retint8        ;; FFI_TYPE_UINT8
       
 88672 -        dd offset cr_retint8        ;; FFI_TYPE_SINT8
       
 88673 -        dd offset cr_retint16       ;; FFI_TYPE_UINT16
       
 88674 -        dd offset cr_retint16       ;; FFI_TYPE_SINT16
       
 88675 +        dd offset cr_retuint8       ;; FFI_TYPE_UINT8
       
 88676 +        dd offset cr_retsint8       ;; FFI_TYPE_SINT8
       
 88677 +        dd offset cr_retuint16      ;; FFI_TYPE_UINT16
       
 88678 +        dd offset cr_retsint16      ;; FFI_TYPE_SINT16
       
 88679          dd offset cr_retint         ;; FFI_TYPE_UINT32
       
 88680          dd offset cr_retint         ;; FFI_TYPE_SINT32
       
 88681          dd offset cr_retint64       ;; FFI_TYPE_UINT64
       
 88682          dd offset cr_retint64       ;; FFI_TYPE_SINT64
       
 88683          dd offset cr_epilogue       ;; FFI_TYPE_STRUCT
       
 88684          dd offset cr_retint         ;; FFI_TYPE_POINTER
       
 88685 -        dd offset cr_retint8        ;; FFI_TYPE_SMALL_STRUCT_1B
       
 88686 -        dd offset cr_retint16       ;; FFI_TYPE_SMALL_STRUCT_2B
       
 88687 +        dd offset cr_retsint8       ;; FFI_TYPE_SMALL_STRUCT_1B
       
 88688 +        dd offset cr_retsint16      ;; FFI_TYPE_SMALL_STRUCT_2B
       
 88689          dd offset cr_retint         ;; FFI_TYPE_SMALL_STRUCT_4B
       
 88690 +        dd offset cr_epilogue       ;; FFI_TYPE_MS_STRUCT
       
 88691  
       
 88692 -cr_retint8:
       
 88693 -        mov   al, [ecx]
       
 88694 +cr_retuint8:
       
 88695 +        movzx eax, BYTE PTR [ecx]
       
 88696          jmp   cr_epilogue
       
 88697  
       
 88698 -cr_retint16:
       
 88699 -        mov   ax, [ecx]
       
 88700 +cr_retsint8:
       
 88701 +        movsx eax, BYTE PTR [ecx]
       
 88702 +        jmp   cr_epilogue
       
 88703 +
       
 88704 +cr_retuint16:
       
 88705 +        movzx eax, WORD PTR [ecx]
       
 88706 +        jmp   cr_epilogue
       
 88707 +
       
 88708 +cr_retsint16:
       
 88709 +        movsx eax, WORD PTR [ecx]
       
 88710          jmp   cr_epilogue
       
 88711  
       
 88712  cr_retint:
       
 88713          mov   eax, [ecx]
       
 88714          jmp   cr_epilogue
       
 88715  
       
 88716  cr_retint64:
       
 88717          mov   eax, [ecx + 0]
       
 88718 @@ -332,36 +407,44 @@ cd_jumptable:
       
 88719          jmp  [cd_jumpdata + 4 * eax]
       
 88720  cd_jumpdata:
       
 88721          ;; Do not insert anything here between the label and jump table.
       
 88722          dd offset cd_epilogue       ;; FFI_TYPE_VOID
       
 88723          dd offset cd_retint         ;; FFI_TYPE_INT
       
 88724          dd offset cd_retfloat       ;; FFI_TYPE_FLOAT
       
 88725          dd offset cd_retdouble      ;; FFI_TYPE_DOUBLE
       
 88726          dd offset cd_retlongdouble  ;; FFI_TYPE_LONGDOUBLE
       
 88727 -        dd offset cd_retint8        ;; FFI_TYPE_UINT8
       
 88728 -        dd offset cd_retint8        ;; FFI_TYPE_SINT8
       
 88729 -        dd offset cd_retint16       ;; FFI_TYPE_UINT16
       
 88730 -        dd offset cd_retint16       ;; FFI_TYPE_SINT16
       
 88731 +        dd offset cd_retuint8       ;; FFI_TYPE_UINT8
       
 88732 +        dd offset cd_retsint8       ;; FFI_TYPE_SINT8
       
 88733 +        dd offset cd_retuint16      ;; FFI_TYPE_UINT16
       
 88734 +        dd offset cd_retsint16      ;; FFI_TYPE_SINT16
       
 88735          dd offset cd_retint         ;; FFI_TYPE_UINT32
       
 88736          dd offset cd_retint         ;; FFI_TYPE_SINT32
       
 88737          dd offset cd_retint64       ;; FFI_TYPE_UINT64
       
 88738          dd offset cd_retint64       ;; FFI_TYPE_SINT64
       
 88739          dd offset cd_epilogue       ;; FFI_TYPE_STRUCT
       
 88740          dd offset cd_retint         ;; FFI_TYPE_POINTER
       
 88741 -        dd offset cd_retint8        ;; FFI_TYPE_SMALL_STRUCT_1B
       
 88742 -        dd offset cd_retint16       ;; FFI_TYPE_SMALL_STRUCT_2B
       
 88743 +        dd offset cd_retsint8       ;; FFI_TYPE_SMALL_STRUCT_1B
       
 88744 +        dd offset cd_retsint16      ;; FFI_TYPE_SMALL_STRUCT_2B
       
 88745          dd offset cd_retint         ;; FFI_TYPE_SMALL_STRUCT_4B
       
 88746  
       
 88747 -cd_retint8:
       
 88748 -        mov   al, [ecx]
       
 88749 +cd_retuint8:
       
 88750 +        movzx eax, BYTE PTR [ecx]
       
 88751          jmp   cd_epilogue
       
 88752  
       
 88753 -cd_retint16:
       
 88754 -        mov   ax, [ecx]
       
 88755 +cd_retsint8:
       
 88756 +        movsx eax, BYTE PTR [ecx]
       
 88757 +        jmp   cd_epilogue
       
 88758 +
       
 88759 +cd_retuint16:
       
 88760 +        movzx eax, WORD PTR [ecx]
       
 88761 +        jmp   cd_epilogue
       
 88762 +
       
 88763 +cd_retsint16:
       
 88764 +        movsx eax, WORD PTR [ecx]
       
 88765          jmp   cd_epilogue
       
 88766  
       
 88767  cd_retint:
       
 88768          mov   eax, [ecx]
       
 88769          jmp   cd_epilogue
       
 88770  
       
 88771  cd_retint64:
       
 88772          mov   eax, [ecx + 0]
       
 88773 @@ -385,94 +468,117 @@ cd_epilogue:
       
 88774          ret
       
 88775  ffi_closure_STDCALL ENDP
       
 88776  
       
 88777  _TEXT ENDS
       
 88778  END
       
 88779  
       
 88780  #else
       
 88781  
       
 88782 +#if defined(SYMBOL_UNDERSCORE)
       
 88783 +#define USCORE_SYMBOL(x) _##x
       
 88784 +#else
       
 88785 +#define USCORE_SYMBOL(x) x
       
 88786 +#endif
       
 88787  	.text
       
 88788   
       
 88789          # This assumes we are using gas.
       
 88790          .balign 16
       
 88791 -	.globl	_ffi_call_win32
       
 88792 -#ifndef __OS2__
       
 88793 +FFI_HIDDEN(ffi_call_win32)
       
 88794 +	.globl	USCORE_SYMBOL(ffi_call_win32)
       
 88795 +#if defined(X86_WIN32) && !defined(__OS2__)
       
 88796  	.def	_ffi_call_win32;	.scl	2;	.type	32;	.endef
       
 88797  #endif
       
 88798 -_ffi_call_win32:
       
 88799 +USCORE_SYMBOL(ffi_call_win32):
       
 88800  .LFB1:
       
 88801          pushl %ebp
       
 88802  .LCFI0:
       
 88803          movl  %esp,%ebp
       
 88804  .LCFI1:
       
 88805          # Make room for all of the new args.
       
 88806 -        movl  16(%ebp),%ecx                                                     
       
 88807 +        movl  20(%ebp),%ecx                                                     
       
 88808          subl  %ecx,%esp
       
 88809   
       
 88810          movl  %esp,%eax
       
 88811   
       
 88812          # Place all of the ffi_prep_args in position
       
 88813          pushl 12(%ebp)
       
 88814          pushl %eax
       
 88815          call  *8(%ebp)
       
 88816   
       
 88817          # Return stack to previous state and call the function
       
 88818          addl  $8,%esp
       
 88819 - 
       
 88820 +
       
 88821 +	# Handle fastcall and thiscall
       
 88822 +	cmpl $3, 16(%ebp)  # FFI_THISCALL
       
 88823 +	jz .do_thiscall
       
 88824 +	cmpl $4, 16(%ebp) # FFI_FASTCALL
       
 88825 +	jnz .do_fncall
       
 88826 +	movl (%esp), %ecx
       
 88827 +	movl 4(%esp), %edx
       
 88828 +	addl $8, %esp
       
 88829 +	jmp .do_fncall
       
 88830 +.do_thiscall:
       
 88831 +	movl (%esp), %ecx
       
 88832 +	addl $4, %esp
       
 88833 +
       
 88834 +.do_fncall:
       
 88835 +	 
       
 88836          # FIXME: Align the stack to a 128-bit boundary to avoid
       
 88837          # potential performance hits.
       
 88838  
       
 88839 -        call  *28(%ebp)
       
 88840 +        call  *32(%ebp)
       
 88841   
       
 88842          # stdcall functions pop arguments off the stack themselves
       
 88843  
       
 88844          # Load %ecx with the return type code
       
 88845 -        movl  20(%ebp),%ecx
       
 88846 +        movl  24(%ebp),%ecx
       
 88847   
       
 88848          # If the return value pointer is NULL, assume no return value.
       
 88849 -        cmpl  $0,24(%ebp)
       
 88850 +        cmpl  $0,28(%ebp)
       
 88851          jne   0f
       
 88852   
       
 88853          # Even if there is no space for the return value, we are
       
 88854          # obliged to handle floating-point values.
       
 88855          cmpl  $FFI_TYPE_FLOAT,%ecx
       
 88856          jne   .Lnoretval
       
 88857          fstp  %st(0)
       
 88858   
       
 88859          jmp   .Lepilogue
       
 88860  
       
 88861  0:
       
 88862  	call	1f
       
 88863  	# Do not insert anything here between the call and the jump table.
       
 88864  .Lstore_table:
       
 88865 -	.long	.Lnoretval		/* FFI_TYPE_VOID */
       
 88866 -	.long	.Lretint		/* FFI_TYPE_INT */
       
 88867 -	.long	.Lretfloat		/* FFI_TYPE_FLOAT */
       
 88868 -	.long	.Lretdouble		/* FFI_TYPE_DOUBLE */
       
 88869 -	.long	.Lretlongdouble		/* FFI_TYPE_LONGDOUBLE */
       
 88870 -	.long	.Lretuint8		/* FFI_TYPE_UINT8 */
       
 88871 -	.long	.Lretsint8		/* FFI_TYPE_SINT8 */
       
 88872 -	.long	.Lretuint16		/* FFI_TYPE_UINT16 */
       
 88873 -	.long	.Lretsint16		/* FFI_TYPE_SINT16 */
       
 88874 -	.long	.Lretint		/* FFI_TYPE_UINT32 */
       
 88875 -	.long	.Lretint		/* FFI_TYPE_SINT32 */
       
 88876 -	.long	.Lretint64		/* FFI_TYPE_UINT64 */
       
 88877 -	.long	.Lretint64		/* FFI_TYPE_SINT64 */
       
 88878 -	.long	.Lretstruct		/* FFI_TYPE_STRUCT */
       
 88879 -	.long	.Lretint		/* FFI_TYPE_POINTER */
       
 88880 -	.long	.Lretstruct1b		/* FFI_TYPE_SMALL_STRUCT_1B */
       
 88881 -	.long	.Lretstruct2b		/* FFI_TYPE_SMALL_STRUCT_2B */
       
 88882 -	.long	.Lretstruct4b		/* FFI_TYPE_SMALL_STRUCT_4B */
       
 88883 +	.long	.Lnoretval-.Lstore_table	/* FFI_TYPE_VOID */
       
 88884 +	.long	.Lretint-.Lstore_table		/* FFI_TYPE_INT */
       
 88885 +	.long	.Lretfloat-.Lstore_table	/* FFI_TYPE_FLOAT */
       
 88886 +	.long	.Lretdouble-.Lstore_table	/* FFI_TYPE_DOUBLE */
       
 88887 +	.long	.Lretlongdouble-.Lstore_table	/* FFI_TYPE_LONGDOUBLE */
       
 88888 +	.long	.Lretuint8-.Lstore_table	/* FFI_TYPE_UINT8 */
       
 88889 +	.long	.Lretsint8-.Lstore_table	/* FFI_TYPE_SINT8 */
       
 88890 +	.long	.Lretuint16-.Lstore_table	/* FFI_TYPE_UINT16 */
       
 88891 +	.long	.Lretsint16-.Lstore_table	/* FFI_TYPE_SINT16 */
       
 88892 +	.long	.Lretint-.Lstore_table		/* FFI_TYPE_UINT32 */
       
 88893 +	.long	.Lretint-.Lstore_table		/* FFI_TYPE_SINT32 */
       
 88894 +	.long	.Lretint64-.Lstore_table	/* FFI_TYPE_UINT64 */
       
 88895 +	.long	.Lretint64-.Lstore_table	/* FFI_TYPE_SINT64 */
       
 88896 +	.long	.Lretstruct-.Lstore_table	/* FFI_TYPE_STRUCT */
       
 88897 +	.long	.Lretint-.Lstore_table		/* FFI_TYPE_POINTER */
       
 88898 +	.long	.Lretstruct1b-.Lstore_table	/* FFI_TYPE_SMALL_STRUCT_1B */
       
 88899 +	.long	.Lretstruct2b-.Lstore_table	/* FFI_TYPE_SMALL_STRUCT_2B */
       
 88900 +	.long	.Lretstruct4b-.Lstore_table	/* FFI_TYPE_SMALL_STRUCT_4B */
       
 88901 +	.long	.Lretstruct-.Lstore_table	/* FFI_TYPE_MS_STRUCT */
       
 88902  1:
       
 88903 -	add	%ecx, %ecx
       
 88904 -	add	%ecx, %ecx
       
 88905 +	shl	$2, %ecx
       
 88906 +	add	(%esp),%ecx
       
 88907 +	mov	(%ecx),%ecx
       
 88908  	add	(%esp),%ecx
       
 88909  	add	$4, %esp
       
 88910 -	jmp	*(%ecx)
       
 88911 +	jmp	*%ecx
       
 88912  
       
 88913  	/* Sign/zero extend as appropriate.  */
       
 88914  .Lretsint8:
       
 88915  	movsbl	%al, %eax
       
 88916  	jmp	.Lretint
       
 88917  
       
 88918  .Lretsint16:
       
 88919  	movswl	%ax, %eax
       
 88920 @@ -483,125 +589,156 @@ 1:
       
 88921  	jmp	.Lretint
       
 88922  
       
 88923  .Lretuint16:
       
 88924  	movzwl	%ax, %eax
       
 88925  	jmp	.Lretint
       
 88926  
       
 88927  .Lretint:
       
 88928          # Load %ecx with the pointer to storage for the return value
       
 88929 -        movl  24(%ebp),%ecx
       
 88930 +        movl  28(%ebp),%ecx
       
 88931          movl  %eax,0(%ecx)
       
 88932          jmp   .Lepilogue
       
 88933   
       
 88934  .Lretfloat:
       
 88935           # Load %ecx with the pointer to storage for the return value
       
 88936 -        movl  24(%ebp),%ecx
       
 88937 +        movl  28(%ebp),%ecx
       
 88938          fstps (%ecx)
       
 88939          jmp   .Lepilogue
       
 88940   
       
 88941  .Lretdouble:
       
 88942          # Load %ecx with the pointer to storage for the return value
       
 88943 -        movl  24(%ebp),%ecx
       
 88944 +        movl  28(%ebp),%ecx
       
 88945          fstpl (%ecx)
       
 88946          jmp   .Lepilogue
       
 88947   
       
 88948  .Lretlongdouble:
       
 88949          # Load %ecx with the pointer to storage for the return value
       
 88950 -        movl  24(%ebp),%ecx
       
 88951 +        movl  28(%ebp),%ecx
       
 88952          fstpt (%ecx)
       
 88953          jmp   .Lepilogue
       
 88954   
       
 88955  .Lretint64:
       
 88956          # Load %ecx with the pointer to storage for the return value
       
 88957 -        movl  24(%ebp),%ecx
       
 88958 +        movl  28(%ebp),%ecx
       
 88959          movl  %eax,0(%ecx)
       
 88960          movl  %edx,4(%ecx)
       
 88961  	jmp   .Lepilogue
       
 88962  
       
 88963  .Lretstruct1b:
       
 88964          # Load %ecx with the pointer to storage for the return value
       
 88965 -        movl  24(%ebp),%ecx
       
 88966 +        movl  28(%ebp),%ecx
       
 88967          movb  %al,0(%ecx)
       
 88968          jmp   .Lepilogue
       
 88969   
       
 88970  .Lretstruct2b:
       
 88971          # Load %ecx with the pointer to storage for the return value
       
 88972 -        movl  24(%ebp),%ecx
       
 88973 +        movl  28(%ebp),%ecx
       
 88974          movw  %ax,0(%ecx)
       
 88975          jmp   .Lepilogue
       
 88976  
       
 88977  .Lretstruct4b:
       
 88978          # Load %ecx with the pointer to storage for the return value
       
 88979 -        movl  24(%ebp),%ecx
       
 88980 +        movl  28(%ebp),%ecx
       
 88981          movl  %eax,0(%ecx)
       
 88982          jmp   .Lepilogue
       
 88983  
       
 88984  .Lretstruct:
       
 88985          # Nothing to do!
       
 88986   
       
 88987  .Lnoretval:
       
 88988  .Lepilogue:
       
 88989          movl %ebp,%esp
       
 88990          popl %ebp
       
 88991          ret
       
 88992  .ffi_call_win32_end:
       
 88993 +        .balign 16
       
 88994 +FFI_HIDDEN(ffi_closure_THISCALL)
       
 88995 +	.globl	USCORE_SYMBOL(ffi_closure_THISCALL)
       
 88996 +#if defined(X86_WIN32) && !defined(__OS2__)
       
 88997 +	.def	_ffi_closure_THISCALL;	.scl	2;	.type	32;	.endef
       
 88998 +#endif
       
 88999 +USCORE_SYMBOL(ffi_closure_THISCALL):
       
 89000 +	pushl	%ebp
       
 89001 +	movl	%esp, %ebp
       
 89002 +	subl	$40, %esp
       
 89003 +	leal	-24(%ebp), %edx
       
 89004 +	movl	%edx, -12(%ebp)	/* resp */
       
 89005 +	leal	12(%ebp), %edx  /* account for stub return address on stack */
       
 89006 +	jmp	.stub
       
 89007  .LFE1:
       
 89008  
       
 89009          # This assumes we are using gas.
       
 89010          .balign 16
       
 89011 -	.globl	_ffi_closure_SYSV
       
 89012 -#ifndef __OS2__
       
 89013 +FFI_HIDDEN(ffi_closure_SYSV)
       
 89014 +#if defined(X86_WIN32)
       
 89015 +	.globl	USCORE_SYMBOL(ffi_closure_SYSV)
       
 89016 +#if defined(X86_WIN32) && !defined(__OS2__)
       
 89017  	.def	_ffi_closure_SYSV;	.scl	2;	.type	32;	.endef
       
 89018  #endif
       
 89019 -_ffi_closure_SYSV:
       
 89020 +USCORE_SYMBOL(ffi_closure_SYSV):
       
 89021 +#endif
       
 89022  .LFB3:
       
 89023  	pushl	%ebp
       
 89024  .LCFI4:
       
 89025  	movl	%esp, %ebp
       
 89026  .LCFI5:
       
 89027  	subl	$40, %esp
       
 89028  	leal	-24(%ebp), %edx
       
 89029  	movl	%edx, -12(%ebp)	/* resp */
       
 89030  	leal	8(%ebp), %edx
       
 89031 +.stub:
       
 89032  	movl	%edx, 4(%esp)	/* args = __builtin_dwarf_cfa () */
       
 89033  	leal	-12(%ebp), %edx
       
 89034  	movl	%edx, (%esp)	/* &resp */
       
 89035 -	call	_ffi_closure_SYSV_inner
       
 89036 +#if defined(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE) || !defined(__PIC__)
       
 89037 +	call	USCORE_SYMBOL(ffi_closure_SYSV_inner)
       
 89038 +#elif defined(X86_DARWIN)
       
 89039 +	calll	L_ffi_closure_SYSV_inner$stub
       
 89040 +#else
       
 89041 +	movl	%ebx, 8(%esp)
       
 89042 +	call	1f
       
 89043 +1:	popl	%ebx
       
 89044 +	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
       
 89045 +	call	ffi_closure_SYSV_inner@PLT
       
 89046 +	movl	8(%esp), %ebx
       
 89047 +#endif
       
 89048  	movl	-12(%ebp), %ecx
       
 89049  
       
 89050  0:
       
 89051  	call	1f
       
 89052  	# Do not insert anything here between the call and the jump table.
       
 89053  .Lcls_store_table:
       
 89054 -	.long	.Lcls_noretval		/* FFI_TYPE_VOID */
       
 89055 -	.long	.Lcls_retint		/* FFI_TYPE_INT */
       
 89056 -	.long	.Lcls_retfloat		/* FFI_TYPE_FLOAT */
       
 89057 -	.long	.Lcls_retdouble		/* FFI_TYPE_DOUBLE */
       
 89058 -	.long	.Lcls_retldouble	/* FFI_TYPE_LONGDOUBLE */
       
 89059 -	.long	.Lcls_retuint8		/* FFI_TYPE_UINT8 */
       
 89060 -	.long	.Lcls_retsint8		/* FFI_TYPE_SINT8 */
       
 89061 -	.long	.Lcls_retuint16		/* FFI_TYPE_UINT16 */
       
 89062 -	.long	.Lcls_retsint16		/* FFI_TYPE_SINT16 */
       
 89063 -	.long	.Lcls_retint		/* FFI_TYPE_UINT32 */
       
 89064 -	.long	.Lcls_retint		/* FFI_TYPE_SINT32 */
       
 89065 -	.long	.Lcls_retllong		/* FFI_TYPE_UINT64 */
       
 89066 -	.long	.Lcls_retllong		/* FFI_TYPE_SINT64 */
       
 89067 -	.long	.Lcls_retstruct		/* FFI_TYPE_STRUCT */
       
 89068 -	.long	.Lcls_retint		/* FFI_TYPE_POINTER */
       
 89069 -	.long	.Lcls_retstruct1	/* FFI_TYPE_SMALL_STRUCT_1B */
       
 89070 -	.long	.Lcls_retstruct2	/* FFI_TYPE_SMALL_STRUCT_2B */
       
 89071 -	.long	.Lcls_retstruct4	/* FFI_TYPE_SMALL_STRUCT_4B */
       
 89072 +	.long	.Lcls_noretval-.Lcls_store_table	/* FFI_TYPE_VOID */
       
 89073 +	.long	.Lcls_retint-.Lcls_store_table		/* FFI_TYPE_INT */
       
 89074 +	.long	.Lcls_retfloat-.Lcls_store_table	/* FFI_TYPE_FLOAT */
       
 89075 +	.long	.Lcls_retdouble-.Lcls_store_table	/* FFI_TYPE_DOUBLE */
       
 89076 +	.long	.Lcls_retldouble-.Lcls_store_table	/* FFI_TYPE_LONGDOUBLE */
       
 89077 +	.long	.Lcls_retuint8-.Lcls_store_table	/* FFI_TYPE_UINT8 */
       
 89078 +	.long	.Lcls_retsint8-.Lcls_store_table	/* FFI_TYPE_SINT8 */
       
 89079 +	.long	.Lcls_retuint16-.Lcls_store_table	/* FFI_TYPE_UINT16 */
       
 89080 +	.long	.Lcls_retsint16-.Lcls_store_table	/* FFI_TYPE_SINT16 */
       
 89081 +	.long	.Lcls_retint-.Lcls_store_table		/* FFI_TYPE_UINT32 */
       
 89082 +	.long	.Lcls_retint-.Lcls_store_table		/* FFI_TYPE_SINT32 */
       
 89083 +	.long	.Lcls_retllong-.Lcls_store_table	/* FFI_TYPE_UINT64 */
       
 89084 +	.long	.Lcls_retllong-.Lcls_store_table	/* FFI_TYPE_SINT64 */
       
 89085 +	.long	.Lcls_retstruct-.Lcls_store_table	/* FFI_TYPE_STRUCT */
       
 89086 +	.long	.Lcls_retint-.Lcls_store_table		/* FFI_TYPE_POINTER */
       
 89087 +	.long	.Lcls_retstruct1-.Lcls_store_table	/* FFI_TYPE_SMALL_STRUCT_1B */
       
 89088 +	.long	.Lcls_retstruct2-.Lcls_store_table	/* FFI_TYPE_SMALL_STRUCT_2B */
       
 89089 +	.long	.Lcls_retstruct4-.Lcls_store_table	/* FFI_TYPE_SMALL_STRUCT_4B */
       
 89090 +	.long	.Lcls_retmsstruct-.Lcls_store_table	/* FFI_TYPE_MS_STRUCT */
       
 89091  
       
 89092  1:
       
 89093 -	add	%eax, %eax
       
 89094 -	add	%eax, %eax
       
 89095 +	shl	$2, %eax
       
 89096 +	add	(%esp),%eax
       
 89097 +	mov	(%eax),%eax
       
 89098  	add	(%esp),%eax
       
 89099  	add	$4, %esp
       
 89100 -	jmp	*(%eax)
       
 89101 +	jmp	*%eax
       
 89102  
       
 89103  	/* Sign/zero extend as appropriate.  */
       
 89104  .Lcls_retsint8:
       
 89105  	movsbl	(%ecx), %eax
       
 89106  	jmp	.Lcls_epilogue
       
 89107  
       
 89108  .Lcls_retsint16:
       
 89109  	movswl	(%ecx), %eax
       
 89110 @@ -649,84 +786,110 @@ 1:
       
 89111  	jmp	.Lcls_epilogue
       
 89112  
       
 89113  .Lcls_retstruct:
       
 89114          # Caller expects us to pop struct return value pointer hidden arg.
       
 89115  	movl	%ebp, %esp
       
 89116  	popl	%ebp
       
 89117  	ret	$0x4
       
 89118  
       
 89119 +.Lcls_retmsstruct:
       
 89120 +	# Caller expects us to return a pointer to the real return value.
       
 89121 +	mov	%ecx, %eax
       
 89122 +	# Caller doesn't expects us to pop struct return value pointer hidden arg.
       
 89123 +	jmp	.Lcls_epilogue
       
 89124 +
       
 89125  .Lcls_noretval:
       
 89126  .Lcls_epilogue:
       
 89127  	movl	%ebp, %esp
       
 89128  	popl	%ebp
       
 89129  	ret
       
 89130  .ffi_closure_SYSV_end:
       
 89131  .LFE3:
       
 89132  
       
 89133  #if !FFI_NO_RAW_API
       
 89134  
       
 89135  #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3)
       
 89136  #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4)
       
 89137  #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4)
       
 89138  #define CIF_FLAGS_OFFSET 20
       
 89139 -
       
 89140 +        .balign 16
       
 89141 +FFI_HIDDEN(ffi_closure_raw_THISCALL)
       
 89142 +	.globl	USCORE_SYMBOL(ffi_closure_raw_THISCALL)
       
 89143 +#if defined(X86_WIN32) && !defined(__OS2__)
       
 89144 +	.def	_ffi_closure_raw_THISCALL;	.scl	2;	.type	32;	.endef
       
 89145 +#endif
       
 89146 +USCORE_SYMBOL(ffi_closure_raw_THISCALL):
       
 89147 +	pushl	%ebp
       
 89148 +	movl	%esp, %ebp
       
 89149 +	pushl	%esi
       
 89150 +	subl	$36, %esp
       
 89151 +	movl	RAW_CLOSURE_CIF_OFFSET(%eax), %esi	 /* closure->cif */
       
 89152 +	movl	RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */
       
 89153 +	movl	%edx, 12(%esp)	/* user_data */
       
 89154 +	leal	12(%ebp), %edx	/* __builtin_dwarf_cfa () */
       
 89155 +	jmp	.stubraw
       
 89156          # This assumes we are using gas.
       
 89157          .balign 16
       
 89158 -	.globl	_ffi_closure_raw_SYSV
       
 89159 -#ifndef __OS2__
       
 89160 +#if defined(X86_WIN32)
       
 89161 +	.globl	USCORE_SYMBOL(ffi_closure_raw_SYSV)
       
 89162 +#if defined(X86_WIN32) && !defined(__OS2__)
       
 89163  	.def	_ffi_closure_raw_SYSV;	.scl	2;	.type	32;	.endef
       
 89164  #endif
       
 89165 -_ffi_closure_raw_SYSV:
       
 89166 +USCORE_SYMBOL(ffi_closure_raw_SYSV):
       
 89167 +#endif /* defined(X86_WIN32) */
       
 89168  .LFB4:
       
 89169  	pushl	%ebp
       
 89170  .LCFI6:
       
 89171  	movl	%esp, %ebp
       
 89172  .LCFI7:
       
 89173  	pushl	%esi
       
 89174  .LCFI8:
       
 89175  	subl	$36, %esp
       
 89176  	movl	RAW_CLOSURE_CIF_OFFSET(%eax), %esi	 /* closure->cif */
       
 89177  	movl	RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */
       
 89178  	movl	%edx, 12(%esp)	/* user_data */
       
 89179  	leal	8(%ebp), %edx	/* __builtin_dwarf_cfa () */
       
 89180 +.stubraw:
       
 89181  	movl	%edx, 8(%esp)	/* raw_args */
       
 89182  	leal	-24(%ebp), %edx
       
 89183  	movl	%edx, 4(%esp)	/* &res */
       
 89184  	movl	%esi, (%esp)	/* cif */
       
 89185  	call	*RAW_CLOSURE_FUN_OFFSET(%eax)		 /* closure->fun */
       
 89186  	movl	CIF_FLAGS_OFFSET(%esi), %eax		 /* rtype */
       
 89187  0:
       
 89188  	call	1f
       
 89189  	# Do not insert anything here between the call and the jump table.
       
 89190  .Lrcls_store_table:
       
 89191 -	.long	.Lrcls_noretval		/* FFI_TYPE_VOID */
       
 89192 -	.long	.Lrcls_retint		/* FFI_TYPE_INT */
       
 89193 -	.long	.Lrcls_retfloat		/* FFI_TYPE_FLOAT */
       
 89194 -	.long	.Lrcls_retdouble	/* FFI_TYPE_DOUBLE */
       
 89195 -	.long	.Lrcls_retldouble	/* FFI_TYPE_LONGDOUBLE */
       
 89196 -	.long	.Lrcls_retuint8		/* FFI_TYPE_UINT8 */
       
 89197 -	.long	.Lrcls_retsint8		/* FFI_TYPE_SINT8 */
       
 89198 -	.long	.Lrcls_retuint16	/* FFI_TYPE_UINT16 */
       
 89199 -	.long	.Lrcls_retsint16	/* FFI_TYPE_SINT16 */
       
 89200 -	.long	.Lrcls_retint		/* FFI_TYPE_UINT32 */
       
 89201 -	.long	.Lrcls_retint		/* FFI_TYPE_SINT32 */
       
 89202 -	.long	.Lrcls_retllong		/* FFI_TYPE_UINT64 */
       
 89203 -	.long	.Lrcls_retllong		/* FFI_TYPE_SINT64 */
       
 89204 -	.long	.Lrcls_retstruct	/* FFI_TYPE_STRUCT */
       
 89205 -	.long	.Lrcls_retint		/* FFI_TYPE_POINTER */
       
 89206 -	.long	.Lrcls_retstruct1	/* FFI_TYPE_SMALL_STRUCT_1B */
       
 89207 -	.long	.Lrcls_retstruct2	/* FFI_TYPE_SMALL_STRUCT_2B */
       
 89208 -	.long	.Lrcls_retstruct4	/* FFI_TYPE_SMALL_STRUCT_4B */
       
 89209 +	.long	.Lrcls_noretval-.Lrcls_store_table	/* FFI_TYPE_VOID */
       
 89210 +	.long	.Lrcls_retint-.Lrcls_store_table	/* FFI_TYPE_INT */
       
 89211 +	.long	.Lrcls_retfloat-.Lrcls_store_table	/* FFI_TYPE_FLOAT */
       
 89212 +	.long	.Lrcls_retdouble-.Lrcls_store_table	/* FFI_TYPE_DOUBLE */
       
 89213 +	.long	.Lrcls_retldouble-.Lrcls_store_table	/* FFI_TYPE_LONGDOUBLE */
       
 89214 +	.long	.Lrcls_retuint8-.Lrcls_store_table	/* FFI_TYPE_UINT8 */
       
 89215 +	.long	.Lrcls_retsint8-.Lrcls_store_table	/* FFI_TYPE_SINT8 */
       
 89216 +	.long	.Lrcls_retuint16-.Lrcls_store_table	/* FFI_TYPE_UINT16 */
       
 89217 +	.long	.Lrcls_retsint16-.Lrcls_store_table	/* FFI_TYPE_SINT16 */
       
 89218 +	.long	.Lrcls_retint-.Lrcls_store_table	/* FFI_TYPE_UINT32 */
       
 89219 +	.long	.Lrcls_retint-.Lrcls_store_table	/* FFI_TYPE_SINT32 */
       
 89220 +	.long	.Lrcls_retllong-.Lrcls_store_table	/* FFI_TYPE_UINT64 */
       
 89221 +	.long	.Lrcls_retllong-.Lrcls_store_table	/* FFI_TYPE_SINT64 */
       
 89222 +	.long	.Lrcls_retstruct-.Lrcls_store_table	/* FFI_TYPE_STRUCT */
       
 89223 +	.long	.Lrcls_retint-.Lrcls_store_table	/* FFI_TYPE_POINTER */
       
 89224 +	.long	.Lrcls_retstruct1-.Lrcls_store_table	/* FFI_TYPE_SMALL_STRUCT_1B */
       
 89225 +	.long	.Lrcls_retstruct2-.Lrcls_store_table	/* FFI_TYPE_SMALL_STRUCT_2B */
       
 89226 +	.long	.Lrcls_retstruct4-.Lrcls_store_table	/* FFI_TYPE_SMALL_STRUCT_4B */
       
 89227 +	.long	.Lrcls_retstruct-.Lrcls_store_table	/* FFI_TYPE_MS_STRUCT */
       
 89228  1:
       
 89229 -	add	%eax, %eax
       
 89230 -	add	%eax, %eax
       
 89231 +	shl	$2, %eax
       
 89232 +	add	(%esp),%eax
       
 89233 +	mov	(%eax),%eax
       
 89234  	add	(%esp),%eax
       
 89235  	add	$4, %esp
       
 89236 -	jmp	*(%eax)
       
 89237 +	jmp	*%eax
       
 89238  
       
 89239  	/* Sign/zero extend as appropriate.  */
       
 89240  .Lrcls_retsint8:
       
 89241  	movsbl	-24(%ebp), %eax
       
 89242  	jmp	.Lrcls_epilogue
       
 89243  
       
 89244  .Lrcls_retsint16:
       
 89245  	movswl	-24(%ebp), %eax
       
 89246 @@ -784,63 +947,76 @@ 1:
       
 89247  	ret
       
 89248  .ffi_closure_raw_SYSV_end:
       
 89249  .LFE4:
       
 89250  
       
 89251  #endif /* !FFI_NO_RAW_API */
       
 89252  
       
 89253          # This assumes we are using gas.
       
 89254  	.balign	16
       
 89255 -	.globl	_ffi_closure_STDCALL
       
 89256 -#ifndef __OS2__
       
 89257 +FFI_HIDDEN(ffi_closure_STDCALL)
       
 89258 +	.globl	USCORE_SYMBOL(ffi_closure_STDCALL)
       
 89259 +#if defined(X86_WIN32) && !defined(__OS2__)
       
 89260  	.def	_ffi_closure_STDCALL;	.scl	2;	.type	32;	.endef
       
 89261  #endif
       
 89262 -_ffi_closure_STDCALL:
       
 89263 +USCORE_SYMBOL(ffi_closure_STDCALL):
       
 89264  .LFB5:
       
 89265  	pushl	%ebp
       
 89266  .LCFI9:
       
 89267  	movl	%esp, %ebp
       
 89268  .LCFI10:
       
 89269  	subl	$40, %esp
       
 89270  	leal	-24(%ebp), %edx
       
 89271  	movl	%edx, -12(%ebp)	/* resp */
       
 89272  	leal	12(%ebp), %edx  /* account for stub return address on stack */
       
 89273  	movl	%edx, 4(%esp)	/* args */
       
 89274  	leal	-12(%ebp), %edx
       
 89275  	movl	%edx, (%esp)	/* &resp */
       
 89276 -	call	_ffi_closure_SYSV_inner
       
 89277 +#if defined(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE) || !defined(__PIC__)
       
 89278 +	call	USCORE_SYMBOL(ffi_closure_SYSV_inner)
       
 89279 +#elif defined(X86_DARWIN)
       
 89280 +	calll	L_ffi_closure_SYSV_inner$stub
       
 89281 +#else
       
 89282 +	movl	%ebx, 8(%esp)
       
 89283 +	call	1f
       
 89284 +1:	popl	%ebx
       
 89285 +	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
       
 89286 +	call	ffi_closure_SYSV_inner@PLT
       
 89287 +	movl	8(%esp), %ebx
       
 89288 +#endif
       
 89289  	movl	-12(%ebp), %ecx
       
 89290  0:
       
 89291  	call	1f
       
 89292  	# Do not insert anything here between the call and the jump table.
       
 89293  .Lscls_store_table:
       
 89294 -	.long	.Lscls_noretval		/* FFI_TYPE_VOID */
       
 89295 -	.long	.Lscls_retint		/* FFI_TYPE_INT */
       
 89296 -	.long	.Lscls_retfloat		/* FFI_TYPE_FLOAT */
       
 89297 -	.long	.Lscls_retdouble	/* FFI_TYPE_DOUBLE */
       
 89298 -	.long	.Lscls_retldouble	/* FFI_TYPE_LONGDOUBLE */
       
 89299 -	.long	.Lscls_retuint8		/* FFI_TYPE_UINT8 */
       
 89300 -	.long	.Lscls_retsint8		/* FFI_TYPE_SINT8 */
       
 89301 -	.long	.Lscls_retuint16	/* FFI_TYPE_UINT16 */
       
 89302 -	.long	.Lscls_retsint16	/* FFI_TYPE_SINT16 */
       
 89303 -	.long	.Lscls_retint		/* FFI_TYPE_UINT32 */
       
 89304 -	.long	.Lscls_retint		/* FFI_TYPE_SINT32 */
       
 89305 -	.long	.Lscls_retllong		/* FFI_TYPE_UINT64 */
       
 89306 -	.long	.Lscls_retllong		/* FFI_TYPE_SINT64 */
       
 89307 -	.long	.Lscls_retstruct	/* FFI_TYPE_STRUCT */
       
 89308 -	.long	.Lscls_retint		/* FFI_TYPE_POINTER */
       
 89309 -	.long	.Lscls_retstruct1	/* FFI_TYPE_SMALL_STRUCT_1B */
       
 89310 -	.long	.Lscls_retstruct2	/* FFI_TYPE_SMALL_STRUCT_2B */
       
 89311 -	.long	.Lscls_retstruct4	/* FFI_TYPE_SMALL_STRUCT_4B */
       
 89312 +	.long	.Lscls_noretval-.Lscls_store_table	/* FFI_TYPE_VOID */
       
 89313 +	.long	.Lscls_retint-.Lscls_store_table	/* FFI_TYPE_INT */
       
 89314 +	.long	.Lscls_retfloat-.Lscls_store_table	/* FFI_TYPE_FLOAT */
       
 89315 +	.long	.Lscls_retdouble-.Lscls_store_table	/* FFI_TYPE_DOUBLE */
       
 89316 +	.long	.Lscls_retldouble-.Lscls_store_table	/* FFI_TYPE_LONGDOUBLE */
       
 89317 +	.long	.Lscls_retuint8-.Lscls_store_table	/* FFI_TYPE_UINT8 */
       
 89318 +	.long	.Lscls_retsint8-.Lscls_store_table	/* FFI_TYPE_SINT8 */
       
 89319 +	.long	.Lscls_retuint16-.Lscls_store_table	/* FFI_TYPE_UINT16 */
       
 89320 +	.long	.Lscls_retsint16-.Lscls_store_table	/* FFI_TYPE_SINT16 */
       
 89321 +	.long	.Lscls_retint-.Lscls_store_table	/* FFI_TYPE_UINT32 */
       
 89322 +	.long	.Lscls_retint-.Lscls_store_table	/* FFI_TYPE_SINT32 */
       
 89323 +	.long	.Lscls_retllong-.Lscls_store_table	/* FFI_TYPE_UINT64 */
       
 89324 +	.long	.Lscls_retllong-.Lscls_store_table	/* FFI_TYPE_SINT64 */
       
 89325 +	.long	.Lscls_retstruct-.Lscls_store_table	/* FFI_TYPE_STRUCT */
       
 89326 +	.long	.Lscls_retint-.Lscls_store_table	/* FFI_TYPE_POINTER */
       
 89327 +	.long	.Lscls_retstruct1-.Lscls_store_table	/* FFI_TYPE_SMALL_STRUCT_1B */
       
 89328 +	.long	.Lscls_retstruct2-.Lscls_store_table	/* FFI_TYPE_SMALL_STRUCT_2B */
       
 89329 +	.long	.Lscls_retstruct4-.Lscls_store_table	/* FFI_TYPE_SMALL_STRUCT_4B */
       
 89330  1:
       
 89331 -	add	%eax, %eax
       
 89332 -	add	%eax, %eax
       
 89333 +	shl	$2, %eax
       
 89334 +	add	(%esp),%eax
       
 89335 +	mov	(%eax),%eax
       
 89336  	add	(%esp),%eax
       
 89337  	add	$4, %esp
       
 89338 -	jmp	*(%eax)
       
 89339 +	jmp	*%eax
       
 89340  
       
 89341  	/* Sign/zero extend as appropriate.  */
       
 89342  .Lscls_retsint8:
       
 89343  	movsbl	(%ecx), %eax
       
 89344  	jmp	.Lscls_epilogue
       
 89345  
       
 89346  .Lscls_retsint16:
       
 89347  	movswl	(%ecx), %eax
       
 89348 @@ -893,17 +1069,24 @@ 1:
       
 89349  .Lscls_noretval:
       
 89350  .Lscls_epilogue:
       
 89351  	movl	%ebp, %esp
       
 89352  	popl	%ebp
       
 89353  	ret
       
 89354  .ffi_closure_STDCALL_end:
       
 89355  .LFE5:
       
 89356  
       
 89357 -#ifndef __OS2__
       
 89358 +#if defined(X86_DARWIN)
       
 89359 +.section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5
       
 89360 +L_ffi_closure_SYSV_inner$stub:
       
 89361 +	.indirect_symbol _ffi_closure_SYSV_inner
       
 89362 +	hlt ; hlt ; hlt ; hlt ; hlt
       
 89363 +#endif
       
 89364 +
       
 89365 +#if defined(X86_WIN32) && !defined(__OS2__)
       
 89366  	.section	.eh_frame,"w"
       
 89367  #endif
       
 89368  .Lframe1:
       
 89369  .LSCIE1:
       
 89370  	.long	.LECIE1-.LASCIE1  /* Length of Common Information Entry */
       
 89371  .LASCIE1:
       
 89372  	.long	0x0	/* CIE Identifier Tag */
       
 89373  	.byte	0x1	/* CIE Version */
       
 89374 @@ -953,17 +1136,16 @@ 1:
       
 89375  	.long	.LCFI1-.LCFI0
       
 89376  	.byte	0xd	/* DW_CFA_def_cfa_register CFA = r5 = %ebp */
       
 89377  	.byte	0x5	/* .uleb128 0x5 */
       
 89378  
       
 89379  	/* End of DW_CFA_xxx CFI instructions.  */
       
 89380  	.align 4
       
 89381  .LEFDE1:
       
 89382  
       
 89383 -
       
 89384  .LSFDE3:
       
 89385  	.long	.LEFDE3-.LASFDE3	/* FDE Length */
       
 89386  .LASFDE3:
       
 89387  	.long	.LASFDE3-.Lframe1	/* FDE CIE offset */
       
 89388  #if defined __PIC__ && defined HAVE_AS_X86_PCREL
       
 89389  	.long	.LFB3-.	/* FDE initial location */
       
 89390  #else
       
 89391  	.long	.LFB3
       
 89392 diff --git a/js/src/ctypes/libffi/src/xtensa/ffi.c b/js/src/ctypes/libffi/src/xtensa/ffi.c
       
 89393 new file mode 100644
       
 89394 --- /dev/null
       
 89395 +++ b/js/src/ctypes/libffi/src/xtensa/ffi.c
       
 89396 @@ -0,0 +1,298 @@
       
 89397 +/* -----------------------------------------------------------------------
       
 89398 +   ffi.c - Copyright (c) 2013 Tensilica, Inc.
       
 89399 +
       
 89400 +   XTENSA Foreign Function Interface
       
 89401 +
       
 89402 +   Permission is hereby granted, free of charge, to any person obtaining
       
 89403 +   a copy of this software and associated documentation files (the
       
 89404 +   ``Software''), to deal in the Software without restriction, including
       
 89405 +   without limitation the rights to use, copy, modify, merge, publish,
       
 89406 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 89407 +   permit persons to whom the Software is furnished to do so, subject to
       
 89408 +   the following conditions:
       
 89409 +
       
 89410 +   The above copyright notice and this permission notice shall be included
       
 89411 +   in all copies or substantial portions of the Software.
       
 89412 +
       
 89413 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 89414 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 89415 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 89416 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 89417 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 89418 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 89419 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 89420 +   DEALINGS IN THE SOFTWARE.
       
 89421 +   ----------------------------------------------------------------------- */
       
 89422 +
       
 89423 +#include <ffi.h>
       
 89424 +#include <ffi_common.h>
       
 89425 +
       
 89426 +/*
       
 89427 +                                 |----------------------------------------|
       
 89428 +                                 |                                        |
       
 89429 +    on entry to ffi_call ---->   |----------------------------------------|
       
 89430 +                                 | caller stack frame for registers a0-a3 |
       
 89431 +                                 |----------------------------------------|
       
 89432 +                                 |                                        |
       
 89433 +                                 |         additional arguments           |
       
 89434 +    entry of the function --->   |----------------------------------------|
       
 89435 +                                 |    copy of function arguments a2-a7    |
       
 89436 +                                 | -  -  -  -  -  -  -  -  -  -  -  -  -  |
       
 89437 +                                 |                                        |
       
 89438 +
       
 89439 +    The area below the entry line becomes the new stack frame for the function.
       
 89440 +
       
 89441 +*/
       
 89442 +
       
 89443 +
       
 89444 +#define FFI_TYPE_STRUCT_REGS FFI_TYPE_LAST
       
 89445 +
       
 89446 +
       
 89447 +extern void ffi_call_SYSV(void *rvalue, unsigned rsize, unsigned flags,
       
 89448 +			  void(*fn)(void), unsigned nbytes, extended_cif*);
       
 89449 +extern void ffi_closure_SYSV(void) FFI_HIDDEN;
       
 89450 +
       
 89451 +ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
       
 89452 +{
       
 89453 +  switch(cif->rtype->type) {
       
 89454 +    case FFI_TYPE_SINT8:
       
 89455 +    case FFI_TYPE_UINT8:
       
 89456 +    case FFI_TYPE_SINT16:
       
 89457 +    case FFI_TYPE_UINT16:
       
 89458 +      cif->flags = cif->rtype->type;
       
 89459 +      break;
       
 89460 +    case FFI_TYPE_VOID:
       
 89461 +    case FFI_TYPE_FLOAT:
       
 89462 +      cif->flags = FFI_TYPE_UINT32;
       
 89463 +      break;
       
 89464 +    case FFI_TYPE_DOUBLE:
       
 89465 +    case FFI_TYPE_UINT64:
       
 89466 +    case FFI_TYPE_SINT64:
       
 89467 +      cif->flags = FFI_TYPE_UINT64; // cif->rtype->type;
       
 89468 +      break;
       
 89469 +    case FFI_TYPE_STRUCT:
       
 89470 +      cif->flags = FFI_TYPE_STRUCT; //_REGS;
       
 89471 +      /* Up to 16 bytes are returned in registers */
       
 89472 +      if (cif->rtype->size > 4 * 4) {
       
 89473 +        /* returned structure is referenced by a register; use 8 bytes
       
 89474 +           (including 4 bytes for potential additional alignment) */
       
 89475 +        cif->flags = FFI_TYPE_STRUCT;	
       
 89476 +        cif->bytes += 8;
       
 89477 +      }
       
 89478 +      break;
       
 89479 +
       
 89480 +    default:
       
 89481 +      cif->flags = FFI_TYPE_UINT32;
       
 89482 +      break;
       
 89483 +  }
       
 89484 +
       
 89485 +  /* Round the stack up to a full 4 register frame, just in case
       
 89486 +     (we use this size in movsp). This way, it's also a  multiple of
       
 89487 +     8 bytes for 64-bit arguments.  */
       
 89488 +  cif->bytes = ALIGN(cif->bytes, 16);
       
 89489 +
       
 89490 +  return FFI_OK;
       
 89491 +}
       
 89492 +
       
 89493 +void ffi_prep_args(extended_cif *ecif, unsigned char* stack)
       
 89494 +{
       
 89495 +  unsigned int i;
       
 89496 +  unsigned long *addr;
       
 89497 +  ffi_type **ptr;
       
 89498 +
       
 89499 +  union {
       
 89500 +    void **v;
       
 89501 +    char **c;
       
 89502 +    signed char **sc;
       
 89503 +    unsigned char **uc;
       
 89504 +    signed short **ss;
       
 89505 +    unsigned short **us;
       
 89506 +    unsigned int **i;
       
 89507 +    long long **ll;
       
 89508 +    float **f;
       
 89509 +    double **d;
       
 89510 +  } p_argv;
       
 89511 +
       
 89512 +  /* Verify that everything is aligned up properly */
       
 89513 +  FFI_ASSERT (((unsigned long) stack & 0x7) == 0);
       
 89514 +
       
 89515 +  p_argv.v = ecif->avalue;
       
 89516 +  addr = (unsigned long*)stack;
       
 89517 +
       
 89518 +  /* structures with a size greater than 16 bytes are passed in memory */
       
 89519 +  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 16)
       
 89520 +  {
       
 89521 +    *addr++ = (unsigned long)ecif->rvalue;
       
 89522 +  }
       
 89523 +
       
 89524 +  for (i = ecif->cif->nargs, ptr = ecif->cif->arg_types;
       
 89525 +       i > 0;
       
 89526 +       i--, ptr++, p_argv.v++)
       
 89527 +  {
       
 89528 +    switch ((*ptr)->type)
       
 89529 +    {
       
 89530 +      case FFI_TYPE_SINT8:
       
 89531 +        *addr++ = **p_argv.sc;
       
 89532 +        break;
       
 89533 +      case FFI_TYPE_UINT8:
       
 89534 +        *addr++ = **p_argv.uc;
       
 89535 +        break;
       
 89536 +      case FFI_TYPE_SINT16:
       
 89537 +        *addr++ = **p_argv.ss;
       
 89538 +        break;
       
 89539 +      case FFI_TYPE_UINT16:
       
 89540 +        *addr++ = **p_argv.us;
       
 89541 +        break;
       
 89542 +      case FFI_TYPE_FLOAT:
       
 89543 +      case FFI_TYPE_INT:
       
 89544 +      case FFI_TYPE_UINT32:
       
 89545 +      case FFI_TYPE_SINT32:
       
 89546 +      case FFI_TYPE_POINTER:
       
 89547 +        *addr++ = **p_argv.i;
       
 89548 +        break;
       
 89549 +      case FFI_TYPE_DOUBLE:
       
 89550 +      case FFI_TYPE_UINT64:
       
 89551 +      case FFI_TYPE_SINT64:
       
 89552 +        if (((unsigned long)addr & 4) != 0)
       
 89553 +          addr++;
       
 89554 +        *(unsigned long long*)addr = **p_argv.ll;
       
 89555 +	addr += sizeof(unsigned long long) / sizeof (addr);
       
 89556 +        break;
       
 89557 +
       
 89558 +      case FFI_TYPE_STRUCT:
       
 89559 +      {
       
 89560 +        unsigned long offs;
       
 89561 +        unsigned long size;
       
 89562 +
       
 89563 +        if (((unsigned long)addr & 4) != 0 && (*ptr)->alignment > 4)
       
 89564 +          addr++;
       
 89565 +
       
 89566 +        offs = (unsigned long) addr - (unsigned long) stack;
       
 89567 +        size = (*ptr)->size;
       
 89568 +
       
 89569 +        /* Entire structure must fit the argument registers or referenced */
       
 89570 +        if (offs < FFI_REGISTER_NARGS * 4
       
 89571 +            && offs + size > FFI_REGISTER_NARGS * 4)
       
 89572 +          addr = (unsigned long*) (stack + FFI_REGISTER_NARGS * 4);
       
 89573 +
       
 89574 +        memcpy((char*) addr, *p_argv.c, size);
       
 89575 +        addr += (size + 3) / 4;
       
 89576 +        break;
       
 89577 +      }
       
 89578 +
       
 89579 +      default:
       
 89580 +        FFI_ASSERT(0);
       
 89581 +    }
       
 89582 +  }
       
 89583 +}
       
 89584 +
       
 89585 +
       
 89586 +void ffi_call(ffi_cif* cif, void(*fn)(void), void *rvalue, void **avalue)
       
 89587 +{
       
 89588 +  extended_cif ecif;
       
 89589 +  unsigned long rsize = cif->rtype->size;
       
 89590 +  int flags = cif->flags;
       
 89591 +  void *alloc = NULL;
       
 89592 +
       
 89593 +  ecif.cif = cif;
       
 89594 +  ecif.avalue = avalue;
       
 89595 +
       
 89596 +  /* Note that for structures that are returned in registers (size <= 16 bytes)
       
 89597 +     we allocate a temporary buffer and use memcpy to copy it to the final 
       
 89598 +     destination. The reason is that the target address might be misaligned or
       
 89599 +     the length not a multiple of 4 bytes. Handling all those cases would be
       
 89600 +     very complex.  */
       
 89601 +
       
 89602 +  if (flags == FFI_TYPE_STRUCT && (rsize <= 16 || rvalue == NULL))
       
 89603 +  {
       
 89604 +    alloc = alloca(ALIGN(rsize, 4));
       
 89605 +    ecif.rvalue = alloc;
       
 89606 +  }
       
 89607 +  else
       
 89608 +  {
       
 89609 +    ecif.rvalue = rvalue;
       
 89610 +  }
       
 89611 +
       
 89612 +  if (cif->abi != FFI_SYSV)
       
 89613 +    FFI_ASSERT(0);
       
 89614 +
       
 89615 +  ffi_call_SYSV (ecif.rvalue, rsize, cif->flags, fn, cif->bytes, &ecif);
       
 89616 +
       
 89617 +  if (alloc != NULL && rvalue != NULL)
       
 89618 +    memcpy(rvalue, alloc, rsize);
       
 89619 +}
       
 89620 +
       
 89621 +extern void ffi_trampoline();
       
 89622 +extern void ffi_cacheflush(void* start, void* end);
       
 89623 +
       
 89624 +ffi_status
       
 89625 +ffi_prep_closure_loc (ffi_closure* closure,
       
 89626 +                      ffi_cif* cif,
       
 89627 +                      void (*fun)(ffi_cif*, void*, void**, void*),
       
 89628 +                      void *user_data,
       
 89629 +                      void *codeloc)
       
 89630 +{
       
 89631 +  /* copye trampoline to stack and patch 'ffi_closure_SYSV' pointer */
       
 89632 +  memcpy(closure->tramp, ffi_trampoline, FFI_TRAMPOLINE_SIZE);
       
 89633 +  *(unsigned int*)(&closure->tramp[8]) = (unsigned int)ffi_closure_SYSV;
       
 89634 +
       
 89635 +  // Do we have this function?
       
 89636 +  // __builtin___clear_cache(closer->tramp, closer->tramp + FFI_TRAMPOLINE_SIZE)
       
 89637 +  ffi_cacheflush(closure->tramp, closure->tramp + FFI_TRAMPOLINE_SIZE);
       
 89638 +
       
 89639 +  closure->cif = cif;
       
 89640 +  closure->fun = fun;
       
 89641 +  closure->user_data = user_data;
       
 89642 +  return FFI_OK; 
       
 89643 +}
       
 89644 +
       
 89645 +
       
 89646 +long FFI_HIDDEN
       
 89647 +ffi_closure_SYSV_inner(ffi_closure *closure, void **values, void *rvalue)
       
 89648 +{
       
 89649 +  ffi_cif *cif;
       
 89650 +  ffi_type **arg_types;
       
 89651 +  void **avalue;
       
 89652 +  int i, areg;
       
 89653 +
       
 89654 +  cif = closure->cif;
       
 89655 +  if (cif->abi != FFI_SYSV)
       
 89656 +    return FFI_BAD_ABI;
       
 89657 +
       
 89658 +  areg = 0;
       
 89659 +
       
 89660 +  int rtype = cif->rtype->type;
       
 89661 +  if (rtype == FFI_TYPE_STRUCT && cif->rtype->size > 4 * 4)
       
 89662 +  {
       
 89663 +    rvalue = *values;
       
 89664 +    areg++;
       
 89665 +  }
       
 89666 +
       
 89667 +  cif = closure->cif; 
       
 89668 +  arg_types = cif->arg_types;
       
 89669 +  avalue = alloca(cif->nargs * sizeof(void *));
       
 89670 +
       
 89671 +  for (i = 0; i < cif->nargs; i++)
       
 89672 +  {
       
 89673 +    if (arg_types[i]->alignment == 8 && (areg & 1) != 0)
       
 89674 +      areg++;
       
 89675 +
       
 89676 +    // skip the entry 16,a1 framework, add 16 bytes (4 registers)
       
 89677 +    if (areg == FFI_REGISTER_NARGS)
       
 89678 +      areg += 4;
       
 89679 +
       
 89680 +    if (arg_types[i]->type == FFI_TYPE_STRUCT)
       
 89681 +    {
       
 89682 +      int numregs = ((arg_types[i]->size + 3) & ~3) / 4;
       
 89683 +      if (areg < FFI_REGISTER_NARGS && areg + numregs > FFI_REGISTER_NARGS)
       
 89684 +        areg = FFI_REGISTER_NARGS + 4;
       
 89685 +    }
       
 89686 +
       
 89687 +    avalue[i] = &values[areg];
       
 89688 +    areg += (arg_types[i]->size + 3) / 4;
       
 89689 +  }
       
 89690 +
       
 89691 +  (closure->fun)(cif, rvalue, avalue, closure->user_data);
       
 89692 +
       
 89693 +  return rtype;
       
 89694 +}
       
 89695 diff --git a/js/src/ctypes/libffi/src/xtensa/ffitarget.h b/js/src/ctypes/libffi/src/xtensa/ffitarget.h
       
 89696 new file mode 100644
       
 89697 --- /dev/null
       
 89698 +++ b/js/src/ctypes/libffi/src/xtensa/ffitarget.h
       
 89699 @@ -0,0 +1,53 @@
       
 89700 +/* -----------------------------------------------------------------*-C-*-
       
 89701 +   ffitarget.h - Copyright (c) 2013 Tensilica, Inc.
       
 89702 +   Target configuration macros for XTENSA.
       
 89703 +
       
 89704 +   Permission is hereby granted, free of charge, to any person obtaining
       
 89705 +   a copy of this software and associated documentation files (the
       
 89706 +   ``Software''), to deal in the Software without restriction, including
       
 89707 +   without limitation the rights to use, copy, modify, merge, publish,
       
 89708 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 89709 +   permit persons to whom the Software is furnished to do so, subject to
       
 89710 +   the following conditions:
       
 89711 +
       
 89712 +   The above copyright notice and this permission notice shall be included
       
 89713 +   in all copies or substantial portions of the Software.
       
 89714 +
       
 89715 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 89716 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 89717 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 89718 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 89719 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 89720 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 89721 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 89722 +   DEALINGS IN THE SOFTWARE.
       
 89723 +   ----------------------------------------------------------------------- */
       
 89724 +
       
 89725 +#ifndef LIBFFI_TARGET_H
       
 89726 +#define LIBFFI_TARGET_H
       
 89727 +
       
 89728 +#ifndef LIBFFI_H
       
 89729 +#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
       
 89730 +#endif
       
 89731 +
       
 89732 +#ifndef LIBFFI_ASM
       
 89733 +typedef unsigned long	ffi_arg;
       
 89734 +typedef signed long	ffi_sarg;
       
 89735 +
       
 89736 +typedef enum ffi_abi {
       
 89737 +  FFI_FIRST_ABI = 0,
       
 89738 +  FFI_SYSV,
       
 89739 +  FFI_LAST_ABI,
       
 89740 +  FFI_DEFAULT_ABI = FFI_SYSV
       
 89741 +} ffi_abi;
       
 89742 +#endif
       
 89743 +
       
 89744 +#define FFI_REGISTER_NARGS	6
       
 89745 +
       
 89746 +/* ---- Definitions for closures ----------------------------------------- */
       
 89747 +
       
 89748 +#define FFI_CLOSURES 1
       
 89749 +#define FFI_NATIVE_RAW_API 0
       
 89750 +#define FFI_TRAMPOLINE_SIZE 24
       
 89751 +
       
 89752 +#endif
       
 89753 diff --git a/js/src/ctypes/libffi/src/xtensa/sysv.S b/js/src/ctypes/libffi/src/xtensa/sysv.S
       
 89754 new file mode 100644
       
 89755 --- /dev/null
       
 89756 +++ b/js/src/ctypes/libffi/src/xtensa/sysv.S
       
 89757 @@ -0,0 +1,253 @@
       
 89758 +/* -----------------------------------------------------------------------
       
 89759 +   sysv.S - Copyright (c) 2013 Tensilica, Inc.
       
 89760 +   
       
 89761 +   XTENSA Foreign Function Interface 
       
 89762 +
       
 89763 +   Permission is hereby granted, free of charge, to any person obtaining
       
 89764 +   a copy of this software and associated documentation files (the
       
 89765 +   ``Software''), to deal in the Software without restriction, including
       
 89766 +   without limitation the rights to use, copy, modify, merge, publish,
       
 89767 +   distribute, sublicense, and/or sell copies of the Software, and to
       
 89768 +   permit persons to whom the Software is furnished to do so, subject to
       
 89769 +   the following conditions:
       
 89770 +
       
 89771 +   The above copyright notice and this permission notice shall be included
       
 89772 +   in all copies or substantial portions of the Software.
       
 89773 +
       
 89774 +   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
       
 89775 +   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
 89776 +   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       
 89777 +   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       
 89778 +   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       
 89779 +   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
 89780 +   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       
 89781 +   DEALINGS IN THE SOFTWARE.
       
 89782 +   ----------------------------------------------------------------------- */
       
 89783 +
       
 89784 +#define LIBFFI_ASM
       
 89785 +#include <fficonfig.h>
       
 89786 +#include <ffi.h>
       
 89787 +
       
 89788 +#define ENTRY(name) .text; .globl name; .type  name,@function; .align 4; name:
       
 89789 +#define END(name) .size name , . - name
       
 89790 +
       
 89791 +/* Assert that the table below is in sync with ffi.h.  */
       
 89792 +
       
 89793 +#if	   FFI_TYPE_UINT8 != 5          \
       
 89794 +        || FFI_TYPE_SINT8 != 6          \
       
 89795 +        || FFI_TYPE_UINT16 != 7         \
       
 89796 +        || FFI_TYPE_SINT16 != 8         \
       
 89797 +        || FFI_TYPE_UINT32 != 9         \
       
 89798 +        || FFI_TYPE_SINT32 != 10        \
       
 89799 +        || FFI_TYPE_UINT64 != 11
       
 89800 +#error "xtensa/sysv.S out of sync with ffi.h"
       
 89801 +#endif
       
 89802 +
       
 89803 +
       
 89804 +/* ffi_call_SYSV (rvalue, rbytes, flags, (*fnaddr)(), bytes, ecif)
       
 89805 +      void *rvalue;            a2
       
 89806 +      unsigned long rbytes;    a3
       
 89807 +      unsigned flags;          a4
       
 89808 +      void (*fnaddr)();        a5
       
 89809 +      unsigned long bytes;     a6
       
 89810 +      extended_cif* ecif)      a7
       
 89811 +*/
       
 89812 +
       
 89813 +ENTRY(ffi_call_SYSV)
       
 89814 +
       
 89815 +	entry	a1, 32              # 32 byte frame for using call8 below
       
 89816 +
       
 89817 +	mov	a10, a7             # a10(->arg0): ecif
       
 89818 +	sub	a11, a1, a6         # a11(->arg1): stack pointer
       
 89819 +	mov	a7, a1              # fp
       
 89820 +	movsp	a1, a11             # set new sp = old_sp - bytes
       
 89821 +
       
 89822 +	movi	a8, ffi_prep_args
       
 89823 +	callx8	a8                  # ffi_prep_args(ecif, stack)
       
 89824 +
       
 89825 +	# prepare to move stack pointer back up to 6 arguments
       
 89826 +	# note that 'bytes' is already aligned
       
 89827 +
       
 89828 +	movi	a10, 6*4 
       
 89829 +	sub	a11, a6, a10
       
 89830 +	movgez	a6, a10, a11
       
 89831 +	add	a6, a1, a6
       
 89832 +
       
 89833 +	
       
 89834 +	# we can pass up to 6 arguments in registers
       
 89835 +	# for simplicity, just load 6 arguments
       
 89836 +	# (the stack size is at least 32 bytes, so no risk to cross boundaries)
       
 89837 +
       
 89838 +	l32i	a10, a1, 0
       
 89839 +	l32i	a11, a1, 4
       
 89840 +	l32i	a12, a1, 8
       
 89841 +	l32i	a13, a1, 12
       
 89842 +	l32i	a14, a1, 16
       
 89843 +	l32i	a15, a1, 20
       
 89844 +
       
 89845 +	# move stack pointer
       
 89846 +
       
 89847 +	movsp	a1, a6
       
 89848 +
       
 89849 +	callx8	a5                  # (*fn)(args...)
       
 89850 +
       
 89851 +	# Handle return value(s)
       
 89852 +
       
 89853 +	beqz	a2, .Lexit
       
 89854 +
       
 89855 +	movi	a5, FFI_TYPE_STRUCT
       
 89856 +	bne	a4, a5, .Lstore
       
 89857 +	movi	a5, 16
       
 89858 +	blt	a5, a3, .Lexit
       
 89859 +
       
 89860 +	s32i	a10, a2, 0
       
 89861 +	blti	a3, 5, .Lexit
       
 89862 +	addi	a3, a3, -1
       
 89863 +	s32i	a11, a2, 4
       
 89864 +	blti	a3, 8, .Lexit
       
 89865 +	s32i	a12, a2, 8
       
 89866 +	blti	a3, 12, .Lexit
       
 89867 +	s32i	a13, a2, 12
       
 89868 +
       
 89869 +.Lexit:	retw
       
 89870 +
       
 89871 +.Lstore:
       
 89872 +	addi	a4, a4, -FFI_TYPE_UINT8
       
 89873 +	bgei	a4, 7, .Lexit	# should never happen
       
 89874 +	movi	a6, store_calls
       
 89875 +	add	a4, a4, a4
       
 89876 +	addx4	a6, a4, a6	# store_table + idx * 8
       
 89877 +	jx	a6
       
 89878 +
       
 89879 +	.align	8
       
 89880 +store_calls:
       
 89881 +	# UINT8
       
 89882 +	s8i	a10, a2, 0
       
 89883 +	retw
       
 89884 +
       
 89885 +	# SINT8
       
 89886 +	.align	8
       
 89887 +	s8i	a10, a2, 0
       
 89888 +	retw
       
 89889 +
       
 89890 +	# UINT16
       
 89891 +	.align	8
       
 89892 +	s16i	a10, a2, 0
       
 89893 +	retw
       
 89894 +
       
 89895 +	# SINT16
       
 89896 +	.align	8
       
 89897 +	s16i	a10, a2, 0
       
 89898 +	retw
       
 89899 +
       
 89900 +	# UINT32
       
 89901 +	.align	8
       
 89902 +	s32i	a10, a2, 0
       
 89903 +	retw
       
 89904 +
       
 89905 +	# SINT32
       
 89906 +	.align	8
       
 89907 +	s32i	a10, a2, 0
       
 89908 +	retw
       
 89909 +
       
 89910 +	# UINT64
       
 89911 +	.align	8
       
 89912 +	s32i	a10, a2, 0
       
 89913 +	s32i	a11, a2, 4
       
 89914 +	retw
       
 89915 +
       
 89916 +END(ffi_call_SYSV)
       
 89917 +
       
 89918 +
       
 89919 +/*
       
 89920 + * void ffi_cacheflush (unsigned long start, unsigned long end)
       
 89921 + */
       
 89922 +
       
 89923 +#define EXTRA_ARGS_SIZE	24
       
 89924 +
       
 89925 +ENTRY(ffi_cacheflush)
       
 89926 +
       
 89927 +	entry	a1, 16
       
 89928 +
       
 89929 +1:	dhwbi	a2, 0
       
 89930 +	ihi	a2, 0
       
 89931 +	addi	a2, a2, 4
       
 89932 +	blt	a2, a3, 1b
       
 89933 +
       
 89934 +	retw
       
 89935 +
       
 89936 +END(ffi_cacheflush)
       
 89937 +
       
 89938 +/* ffi_trampoline is copied to the stack */
       
 89939 +
       
 89940 +ENTRY(ffi_trampoline)
       
 89941 +
       
 89942 +	entry	a1, 16 + (FFI_REGISTER_NARGS * 4) + (4 * 4)   # [ 0]
       
 89943 +	j	2f                                # [ 3]
       
 89944 +	.align	4                                 # [ 6]
       
 89945 +1:	.long	0                                 # [ 8]
       
 89946 +2:	l32r	a15, 1b                           # [12]
       
 89947 +	_mov 	a14, a0                           # [15]
       
 89948 +	callx0	a15                               # [18]
       
 89949 +                                                  # [21]
       
 89950 +END(ffi_trampoline)
       
 89951 +
       
 89952 +/*
       
 89953 + * ffi_closure()
       
 89954 + *
       
 89955 + * a0:  closure + 21
       
 89956 + * a14: return address (a0)
       
 89957 + */
       
 89958 +
       
 89959 +ENTRY(ffi_closure_SYSV)
       
 89960 +
       
 89961 +	/* intentionally omitting entry here */
       
 89962 +
       
 89963 +	# restore return address (a0) and move pointer to closure to a10
       
 89964 +	addi	a10, a0, -21
       
 89965 +	mov	a0, a14
       
 89966 +
       
 89967 +	# allow up to 4 arguments as return values
       
 89968 +	addi	a11, a1, 4 * 4
       
 89969 +
       
 89970 +	# save up to 6 arguments to stack (allocated by entry below)
       
 89971 +	s32i	a2, a11,  0
       
 89972 +	s32i	a3, a11,  4
       
 89973 +	s32i	a4, a11,  8
       
 89974 +	s32i	a5, a11, 12
       
 89975 +	s32i	a6, a11, 16
       
 89976 +	s32i	a7, a11, 20
       
 89977 +
       
 89978 +	movi	a8, ffi_closure_SYSV_inner
       
 89979 +	mov	a12, a1
       
 89980 +	callx8	a8			# .._inner(*closure, **avalue, *rvalue)
       
 89981 +
       
 89982 +	# load up to four return arguments
       
 89983 +	l32i	a2, a1,  0
       
 89984 +	l32i	a3, a1,  4
       
 89985 +	l32i	a4, a1,  8
       
 89986 +	l32i	a5, a1, 12
       
 89987 +
       
 89988 +	# (sign-)extend return value
       
 89989 +	movi	a11, FFI_TYPE_UINT8
       
 89990 +	bne	a10, a11, 1f
       
 89991 +	extui	a2, a2, 0, 8
       
 89992 +	retw
       
 89993 +
       
 89994 +1:	movi	a11, FFI_TYPE_SINT8
       
 89995 +	bne	a10, a11, 1f
       
 89996 +	sext	a2, a2, 7
       
 89997 +	retw
       
 89998 +
       
 89999 +1:	movi	a11, FFI_TYPE_UINT16
       
 90000 +	bne	a10, a11, 1f
       
 90001 +	extui	a2, a2, 0, 16
       
 90002 +	retw
       
 90003 +
       
 90004 +1:	movi	a11, FFI_TYPE_SINT16
       
 90005 +	bne	a10, a11, 1f
       
 90006 +	sext	a2, a2, 15
       
 90007 +
       
 90008 +1:	retw
       
 90009 +
       
 90010 +END(ffi_closure_SYSV)
       
 90011 diff --git a/js/src/ctypes/libffi/stamp-h.in b/js/src/ctypes/libffi/stamp-h.in
       
 90012 deleted file mode 100644
       
 90013 --- a/js/src/ctypes/libffi/stamp-h.in
       
 90014 +++ /dev/null
       
 90015 @@ -1,1 +0,0 @@
       
 90016 -timestamp
       
 90017 diff --git a/js/src/ctypes/libffi/testsuite/Makefile.am b/js/src/ctypes/libffi/testsuite/Makefile.am
       
 90018 --- a/js/src/ctypes/libffi/testsuite/Makefile.am
       
 90019 +++ b/js/src/ctypes/libffi/testsuite/Makefile.am
       
 90020 @@ -8,73 +8,89 @@ EXPECT = `if [ -f $(top_builddir)/../exp
       
 90021            else echo expect ; fi`
       
 90022  
       
 90023  RUNTEST = `if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \
       
 90024  	       echo $(top_srcdir)/../dejagnu/runtest ; \
       
 90025  	    else echo runtest; fi`
       
 90026  
       
 90027  AM_RUNTESTFLAGS =
       
 90028  
       
 90029 +EXTRA_DEJAGNU_SITE_CONFIG=../local.exp
       
 90030 +
       
 90031  CLEANFILES = *.exe core* *.log *.sum
       
 90032  
       
 90033 -EXTRA_DIST = libffi.special/special.exp	\
       
 90034 -libffi.special/unwindtest_ffi_call.cc libffi.special/unwindtest.cc \
       
 90035 -libffi.special/ffitestcxx.h config/default.exp lib/target-libpath.exp \
       
 90036 -lib/libffi-dg.exp lib/wrapper.exp libffi.call/float.c \
       
 90037 -libffi.call/cls_multi_schar.c libffi.call/float3.c \
       
 90038 -libffi.call/cls_3_1byte.c libffi.call/stret_large2.c \
       
 90039 -libffi.call/cls_5_1_byte.c libffi.call/stret_medium.c \
       
 90040 -libffi.call/promotion.c libffi.call/cls_dbls_struct.c \
       
 90041 -libffi.call/nested_struct.c libffi.call/closure_fn1.c \
       
 90042 -libffi.call/cls_4_1byte.c libffi.call/cls_float.c \
       
 90043 -libffi.call/cls_2byte.c libffi.call/closure_fn4.c \
       
 90044 -libffi.call/return_fl2.c libffi.call/nested_struct7.c \
       
 90045 -libffi.call/cls_uint.c libffi.call/cls_align_sint64.c \
       
 90046 -libffi.call/float1.c libffi.call/cls_19byte.c \
       
 90047 -libffi.call/nested_struct1.c libffi.call/cls_4byte.c \
       
 90048 -libffi.call/return_fl1.c libffi.call/cls_align_pointer.c \
       
 90049 -libffi.call/nested_struct4.c libffi.call/nested_struct3.c \
       
 90050 -libffi.call/struct7.c libffi.call/nested_struct9.c \
       
 90051 -libffi.call/cls_sshort.c libffi.call/cls_ulonglong.c \
       
 90052 -libffi.call/cls_pointer_stack.c libffi.call/cls_multi_uchar.c \
       
 90053 -libffi.call/testclosure.c libffi.call/cls_3byte1.c \
       
 90054 -libffi.call/struct6.c libffi.call/return_uc.c libffi.call/return_ll1.c \
       
 90055 -libffi.call/cls_ushort.c libffi.call/stret_medium2.c \
       
 90056 -libffi.call/cls_multi_ushortchar.c libffi.call/return_dbl2.c \
       
 90057 -libffi.call/closure_loc_fn0.c libffi.call/return_sc.c \
       
 90058 -libffi.call/nested_struct8.c libffi.call/cls_7_1_byte.c	\
       
 90059 -libffi.call/return_ll.c libffi.call/cls_pointer.c \
       
 90060 -libffi.call/err_bad_abi.c libffi.call/return_dbl1.c \
       
 90061 -libffi.call/call.exp libffi.call/ffitest.h libffi.call/strlen.c	\
       
 90062 -libffi.call/return_sl.c libffi.call/cls_1_1byte.c \
       
 90063 -libffi.call/struct1.c libffi.call/cls_64byte.c libffi.call/return_ul.c \
       
 90064 -libffi.call/cls_double.c libffi.call/many_win32.c \
       
 90065 -libffi.call/cls_16byte.c libffi.call/cls_align_double.c	\
       
 90066 -libffi.call/cls_align_uint16.c libffi.call/cls_9byte1.c	\
       
 90067 -libffi.call/cls_multi_sshortchar.c libffi.call/cls_multi_ushort.c \
       
 90068 -libffi.call/closure_stdcall.c libffi.call/return_fl.c \
       
 90069 -libffi.call/strlen_win32.c libffi.call/return_ldl.c \
       
 90070 -libffi.call/cls_align_float.c libffi.call/struct3.c \
       
 90071 -libffi.call/cls_uchar.c libffi.call/cls_sint.c libffi.call/float2.c \
       
 90072 -libffi.call/cls_align_longdouble_split.c \
       
 90073 -libffi.call/cls_longdouble_va.c libffi.call/cls_multi_sshort.c \
       
 90074 -libffi.call/stret_large.c libffi.call/cls_align_sint16.c \
       
 90075 -libffi.call/nested_struct6.c libffi.call/cls_5byte.c \
       
 90076 -libffi.call/return_dbl.c libffi.call/cls_20byte.c \
       
 90077 -libffi.call/cls_8byte.c libffi.call/pyobjc-tc.c	\
       
 90078 -libffi.call/cls_24byte.c libffi.call/cls_align_longdouble_split2.c \
       
 90079 -libffi.call/cls_6_1_byte.c libffi.call/cls_schar.c \
       
 90080 -libffi.call/cls_18byte.c libffi.call/closure_fn3.c \
       
 90081 -libffi.call/err_bad_typedef.c libffi.call/closure_fn2.c	\
       
 90082 -libffi.call/struct2.c libffi.call/cls_3byte2.c \
       
 90083 -libffi.call/cls_align_longdouble.c libffi.call/cls_20byte1.c \
       
 90084 -libffi.call/return_fl3.c libffi.call/cls_align_uint32.c	\
       
 90085 -libffi.call/problem1.c libffi.call/float4.c \
       
 90086 -libffi.call/cls_align_uint64.c libffi.call/struct9.c \
       
 90087 -libffi.call/closure_fn5.c libffi.call/cls_align_sint32.c \
       
 90088 -libffi.call/closure_fn0.c libffi.call/closure_fn6.c \
       
 90089 -libffi.call/struct4.c libffi.call/nested_struct2.c \
       
 90090 -libffi.call/cls_6byte.c libffi.call/cls_7byte.c libffi.call/many.c \
       
 90091 -libffi.call/struct8.c libffi.call/negint.c libffi.call/struct5.c \
       
 90092 -libffi.call/cls_12byte.c libffi.call/cls_double_va.c \
       
 90093 -libffi.call/cls_longdouble.c libffi.call/cls_9byte2.c \
       
 90094 -libffi.call/nested_struct10.c libffi.call/nested_struct5.c \
       
 90095 -libffi.call/huge_struct.c
       
 90096 +EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c		\
       
 90097 +libffi.call/cls_align_longdouble_split.c				\
       
 90098 +libffi.call/closure_loc_fn0.c libffi.call/cls_schar.c			\
       
 90099 +libffi.call/closure_fn1.c \
       
 90100 +libffi.call/return_ul.c libffi.call/cls_align_double.c			\
       
 90101 +libffi.call/return_fl2.c libffi.call/cls_1_1byte.c			\
       
 90102 +libffi.call/cls_64byte.c libffi.call/nested_struct7.c			\
       
 90103 +libffi.call/cls_align_sint32.c libffi.call/nested_struct2.c		\
       
 90104 +libffi.call/ffitest.h libffi.call/nested_struct4.c			\
       
 90105 +libffi.call/cls_multi_ushort.c libffi.call/struct3.c			\
       
 90106 +libffi.call/cls_3byte1.c libffi.call/cls_16byte.c			\
       
 90107 +libffi.call/struct8.c libffi.call/nested_struct8.c			\
       
 90108 +libffi.call/cls_multi_sshort.c libffi.call/cls_3byte2.c			\
       
 90109 +libffi.call/cls_pointer.c			\
       
 90110 +libffi.call/err_bad_typedef.c libffi.call/cls_4_1byte.c			\
       
 90111 +libffi.call/cls_9byte2.c libffi.call/cls_multi_schar.c			\
       
 90112 +libffi.call/stret_medium2.c libffi.call/cls_5_1_byte.c			\
       
 90113 +libffi.call/call.exp libffi.call/cls_double.c				\
       
 90114 +libffi.call/cls_align_sint16.c libffi.call/cls_uint.c			\
       
 90115 +libffi.call/return_ll1.c libffi.call/nested_struct3.c			\
       
 90116 +libffi.call/cls_20byte1.c libffi.call/closure_fn4.c			\
       
 90117 +libffi.call/cls_uchar.c libffi.call/struct2.c libffi.call/cls_7byte.c	\
       
 90118 +libffi.call/strlen.c libffi.call/many.c libffi.call/testclosure.c	\
       
 90119 +libffi.call/return_fl.c libffi.call/struct5.c				\
       
 90120 +libffi.call/cls_12byte.c libffi.call/cls_multi_sshortchar.c		\
       
 90121 +libffi.call/cls_align_longdouble_split2.c libffi.call/return_dbl2.c	\
       
 90122 +libffi.call/return_fl3.c libffi.call/stret_medium.c			\
       
 90123 +libffi.call/nested_struct6.c libffi.call/closure_fn3.c			\
       
 90124 +libffi.call/float3.c libffi.call/many2.c				\
       
 90125 +libffi.call/closure_stdcall.c libffi.call/cls_align_uint16.c		\
       
 90126 +libffi.call/cls_9byte1.c libffi.call/closure_fn6.c			\
       
 90127 +libffi.call/cls_double_va.c libffi.call/cls_align_pointer.c		\
       
 90128 +libffi.call/cls_align_longdouble.c libffi.call/closure_fn2.c		\
       
 90129 +libffi.call/cls_sshort.c \
       
 90130 +libffi.call/nested_struct.c libffi.call/cls_20byte.c			\
       
 90131 +libffi.call/cls_longdouble.c libffi.call/cls_multi_uchar.c		\
       
 90132 +libffi.call/return_uc.c libffi.call/closure_thiscall.c			\
       
 90133 +libffi.call/cls_18byte.c libffi.call/cls_8byte.c			\
       
 90134 +libffi.call/promotion.c \
       
 90135 +libffi.call/return_dbl.c libffi.call/cls_24byte.c			\
       
 90136 +libffi.call/struct4.c libffi.call/cls_6byte.c				\
       
 90137 +libffi.call/cls_align_uint32.c libffi.call/float.c			\
       
 90138 +libffi.call/float1.c libffi.call/float_va.c libffi.call/negint.c	\
       
 90139 +libffi.call/return_dbl1.c libffi.call/cls_3_1byte.c			\
       
 90140 +libffi.call/cls_align_float.c libffi.call/return_fl1.c			\
       
 90141 +libffi.call/nested_struct10.c libffi.call/nested_struct5.c		\
       
 90142 +libffi.call/cls_align_sint64.c		\
       
 90143 +libffi.call/stret_large2.c libffi.call/return_sl.c			\
       
 90144 +libffi.call/closure_fn0.c libffi.call/cls_5byte.c			\
       
 90145 +libffi.call/cls_2byte.c libffi.call/float2.c				\
       
 90146 +libffi.call/cls_dbls_struct.c libffi.call/cls_sint.c			\
       
 90147 +libffi.call/stret_large.c libffi.call/cls_ulonglong.c			\
       
 90148 +libffi.call/cls_ushort.c libffi.call/nested_struct1.c			\
       
 90149 +libffi.call/err_bad_abi.c libffi.call/cls_longdouble_va.c		\
       
 90150 +libffi.call/cls_float.c libffi.call/cls_pointer_stack.c		\
       
 90151 +libffi.call/pyobjc-tc.c libffi.call/cls_multi_ushortchar.c		\
       
 90152 +libffi.call/struct1.c libffi.call/nested_struct9.c			\
       
 90153 +libffi.call/huge_struct.c libffi.call/problem1.c			\
       
 90154 +libffi.call/float4.c \
       
 90155 +libffi.call/return_ldl.c \
       
 90156 +libffi.call/closure_fn5.c \
       
 90157 +libffi.call/struct6.c libffi.call/return_ll.c libffi.call/struct9.c	\
       
 90158 +libffi.call/return_sc.c libffi.call/struct7.c				\
       
 90159 +libffi.call/cls_align_uint64.c libffi.call/cls_4byte.c			\
       
 90160 +libffi.call/cls_6_1_byte.c			\
       
 90161 +libffi.call/cls_7_1_byte.c libffi.call/unwindtest.cc			\
       
 90162 +libffi.call/unwindtest_ffi_call.cc	\
       
 90163 +lib/wrapper.exp lib/target-libpath.exp	\
       
 90164 +lib/libffi.exp libffi.call/cls_struct_va1.c				\
       
 90165 +libffi.call/cls_uchar_va.c libffi.call/cls_uint_va.c			\
       
 90166 +libffi.call/cls_ulong_va.c libffi.call/cls_ushort_va.c			\
       
 90167 +libffi.call/nested_struct11.c libffi.call/uninitialized.c		\
       
 90168 +libffi.call/va_1.c libffi.call/va_struct1.c libffi.call/va_struct2.c	\
       
 90169 +libffi.call/va_struct3.c \
       
 90170 +libffi.call/strlen2.c \
       
 90171 +libffi.call/strlen3.c \
       
 90172 +libffi.call/strlen4.c
       
 90173 diff --git a/js/src/ctypes/libffi/testsuite/Makefile.in b/js/src/ctypes/libffi/testsuite/Makefile.in
       
 90174 --- a/js/src/ctypes/libffi/testsuite/Makefile.in
       
 90175 +++ b/js/src/ctypes/libffi/testsuite/Makefile.in
       
 90176 @@ -1,25 +1,69 @@
       
 90177 -# Makefile.in generated by automake 1.11.1 from Makefile.am.
       
 90178 +# Makefile.in generated by automake 1.13.4 from Makefile.am.
       
 90179  # @configure_input@
       
 90180  
       
 90181 -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
       
 90182 -# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
       
 90183 -# Inc.
       
 90184 +# Copyright (C) 1994-2013 Free Software Foundation, Inc.
       
 90185 +
       
 90186  # This Makefile.in is free software; the Free Software Foundation
       
 90187  # gives unlimited permission to copy and/or distribute it,
       
 90188  # with or without modifications, as long as this notice is preserved.
       
 90189  
       
 90190  # This program is distributed in the hope that it will be useful,
       
 90191  # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
       
 90192  # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
       
 90193  # PARTICULAR PURPOSE.
       
 90194  
       
 90195  @SET_MAKE@
       
 90196  VPATH = @srcdir@
       
 90197 +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
       
 90198 +am__make_running_with_option = \
       
 90199 +  case $${target_option-} in \
       
 90200 +      ?) ;; \
       
 90201 +      *) echo "am__make_running_with_option: internal error: invalid" \
       
 90202 +              "target option '$${target_option-}' specified" >&2; \
       
 90203 +         exit 1;; \
       
 90204 +  esac; \
       
 90205 +  has_opt=no; \
       
 90206 +  sane_makeflags=$$MAKEFLAGS; \
       
 90207 +  if $(am__is_gnu_make); then \
       
 90208 +    sane_makeflags=$$MFLAGS; \
       
 90209 +  else \
       
 90210 +    case $$MAKEFLAGS in \
       
 90211 +      *\\[\ \	]*) \
       
 90212 +        bs=\\; \
       
 90213 +        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
       
 90214 +          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
       
 90215 +    esac; \
       
 90216 +  fi; \
       
 90217 +  skip_next=no; \
       
 90218 +  strip_trailopt () \
       
 90219 +  { \
       
 90220 +    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
       
 90221 +  }; \
       
 90222 +  for flg in $$sane_makeflags; do \
       
 90223 +    test $$skip_next = yes && { skip_next=no; continue; }; \
       
 90224 +    case $$flg in \
       
 90225 +      *=*|--*) continue;; \
       
 90226 +        -*I) strip_trailopt 'I'; skip_next=yes;; \
       
 90227 +      -*I?*) strip_trailopt 'I';; \
       
 90228 +        -*O) strip_trailopt 'O'; skip_next=yes;; \
       
 90229 +      -*O?*) strip_trailopt 'O';; \
       
 90230 +        -*l) strip_trailopt 'l'; skip_next=yes;; \
       
 90231 +      -*l?*) strip_trailopt 'l';; \
       
 90232 +      -[dEDm]) skip_next=yes;; \
       
 90233 +      -[JT]) skip_next=yes;; \
       
 90234 +    esac; \
       
 90235 +    case $$flg in \
       
 90236 +      *$$target_option*) has_opt=yes; break;; \
       
 90237 +    esac; \
       
 90238 +  done; \
       
 90239 +  test $$has_opt = yes
       
 90240 +am__make_dryrun = (target_option=n; $(am__make_running_with_option))
       
 90241 +am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
       
 90242  pkgdatadir = $(datadir)/@PACKAGE@
       
 90243  pkgincludedir = $(includedir)/@PACKAGE@
       
 90244  pkglibdir = $(libdir)/@PACKAGE@
       
 90245  pkglibexecdir = $(libexecdir)/@PACKAGE@
       
 90246  am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
       
 90247  install_sh_DATA = $(install_sh) -c -m 644
       
 90248  install_sh_PROGRAM = $(install_sh) -c
       
 90249  install_sh_SCRIPT = $(install_sh) -c
       
 90250 @@ -30,34 +74,65 @@ PRE_INSTALL = :
       
 90251  POST_INSTALL = :
       
 90252  NORMAL_UNINSTALL = :
       
 90253  PRE_UNINSTALL = :
       
 90254  POST_UNINSTALL = :
       
 90255  build_triplet = @build@
       
 90256  host_triplet = @host@
       
 90257  target_triplet = @target@
       
 90258  subdir = testsuite
       
 90259 -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
       
 90260 +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
       
 90261  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
       
 90262 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
       
 90263 +am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
       
 90264 +	$(top_srcdir)/m4/ax_append_flag.m4 \
       
 90265 +	$(top_srcdir)/m4/ax_cc_maxopt.m4 \
       
 90266 +	$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
       
 90267 +	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
       
 90268 +	$(top_srcdir)/m4/ax_compiler_vendor.m4 \
       
 90269 +	$(top_srcdir)/m4/ax_configure_args.m4 \
       
 90270 +	$(top_srcdir)/m4/ax_enable_builddir.m4 \
       
 90271 +	$(top_srcdir)/m4/ax_gcc_archflag.m4 \
       
 90272 +	$(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
       
 90273 +	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
       
 90274 +	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
       
 90275 +	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
       
 90276  	$(top_srcdir)/configure.ac
       
 90277  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
       
 90278  	$(ACLOCAL_M4)
       
 90279  mkinstalldirs = $(install_sh) -d
       
 90280  CONFIG_HEADER = $(top_builddir)/fficonfig.h
       
 90281  CONFIG_CLEAN_FILES =
       
 90282  CONFIG_CLEAN_VPATH_FILES =
       
 90283 +AM_V_P = $(am__v_P_@AM_V@)
       
 90284 +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
       
 90285 +am__v_P_0 = false
       
 90286 +am__v_P_1 = :
       
 90287 +AM_V_GEN = $(am__v_GEN_@AM_V@)
       
 90288 +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
       
 90289 +am__v_GEN_0 = @echo "  GEN     " $@;
       
 90290 +am__v_GEN_1 = 
       
 90291 +AM_V_at = $(am__v_at_@AM_V@)
       
 90292 +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
       
 90293 +am__v_at_0 = @
       
 90294 +am__v_at_1 = 
       
 90295  SOURCES =
       
 90296  DIST_SOURCES =
       
 90297 +am__can_run_installinfo = \
       
 90298 +  case $$AM_UPDATE_INFO_DIR in \
       
 90299 +    n|no|NO) false;; \
       
 90300 +    *) (install-info --version) >/dev/null 2>&1;; \
       
 90301 +  esac
       
 90302 +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
       
 90303  DEJATOOL = $(PACKAGE)
       
 90304  RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
       
 90305  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
       
 90306  ACLOCAL = @ACLOCAL@
       
 90307  ALLOCA = @ALLOCA@
       
 90308  AMTAR = @AMTAR@
       
 90309 +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
       
 90310  AM_LTLDFLAGS = @AM_LTLDFLAGS@
       
 90311  AM_RUNTESTFLAGS = 
       
 90312  AR = @AR@
       
 90313  AUTOCONF = @AUTOCONF@
       
 90314  AUTOHEADER = @AUTOHEADER@
       
 90315  AUTOMAKE = @AUTOMAKE@
       
 90316  AWK = @AWK@
       
 90317  CC = @CC@
       
 90318 @@ -66,75 +141,82 @@ CCASDEPMODE = @CCASDEPMODE@
       
 90319  CCASFLAGS = @CCASFLAGS@
       
 90320  CCDEPMODE = @CCDEPMODE@
       
 90321  CFLAGS = @CFLAGS@
       
 90322  CPP = @CPP@
       
 90323  CPPFLAGS = @CPPFLAGS@
       
 90324  CYGPATH_W = @CYGPATH_W@
       
 90325  DEFS = @DEFS@
       
 90326  DEPDIR = @DEPDIR@
       
 90327 +DLLTOOL = @DLLTOOL@
       
 90328  DSYMUTIL = @DSYMUTIL@
       
 90329  DUMPBIN = @DUMPBIN@
       
 90330  ECHO_C = @ECHO_C@
       
 90331  ECHO_N = @ECHO_N@
       
 90332  ECHO_T = @ECHO_T@
       
 90333  EGREP = @EGREP@
       
 90334  EXEEXT = @EXEEXT@
       
 90335 +FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
       
 90336  FGREP = @FGREP@
       
 90337  GREP = @GREP@
       
 90338  HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
       
 90339 +HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@
       
 90340  INSTALL = @INSTALL@
       
 90341  INSTALL_DATA = @INSTALL_DATA@
       
 90342  INSTALL_PROGRAM = @INSTALL_PROGRAM@
       
 90343  INSTALL_SCRIPT = @INSTALL_SCRIPT@
       
 90344  INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
       
 90345  LD = @LD@
       
 90346  LDFLAGS = @LDFLAGS@
       
 90347  LIBOBJS = @LIBOBJS@
       
 90348  LIBS = @LIBS@
       
 90349  LIBTOOL = @LIBTOOL@
       
 90350  LIPO = @LIPO@
       
 90351  LN_S = @LN_S@
       
 90352  LTLIBOBJS = @LTLIBOBJS@
       
 90353  MAINT = @MAINT@
       
 90354  MAKEINFO = @MAKEINFO@
       
 90355 +MANIFEST_TOOL = @MANIFEST_TOOL@
       
 90356  MKDIR_P = @MKDIR_P@
       
 90357  NM = @NM@
       
 90358  NMEDIT = @NMEDIT@
       
 90359  OBJDUMP = @OBJDUMP@
       
 90360  OBJEXT = @OBJEXT@
       
 90361  OTOOL = @OTOOL@
       
 90362  OTOOL64 = @OTOOL64@
       
 90363  PACKAGE = @PACKAGE@
       
 90364  PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
       
 90365  PACKAGE_NAME = @PACKAGE_NAME@
       
 90366  PACKAGE_STRING = @PACKAGE_STRING@
       
 90367  PACKAGE_TARNAME = @PACKAGE_TARNAME@
       
 90368  PACKAGE_URL = @PACKAGE_URL@
       
 90369  PACKAGE_VERSION = @PACKAGE_VERSION@
       
 90370  PATH_SEPARATOR = @PATH_SEPARATOR@
       
 90371 +PRTDIAG = @PRTDIAG@
       
 90372  RANLIB = @RANLIB@
       
 90373  SED = @SED@
       
 90374  SET_MAKE = @SET_MAKE@
       
 90375  SHELL = @SHELL@
       
 90376  STRIP = @STRIP@
       
 90377  TARGET = @TARGET@
       
 90378  TARGETDIR = @TARGETDIR@
       
 90379  VERSION = @VERSION@
       
 90380  abs_builddir = @abs_builddir@
       
 90381  abs_srcdir = @abs_srcdir@
       
 90382  abs_top_builddir = @abs_top_builddir@
       
 90383  abs_top_srcdir = @abs_top_srcdir@
       
 90384 +ac_ct_AR = @ac_ct_AR@
       
 90385  ac_ct_CC = @ac_ct_CC@
       
 90386  ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
       
 90387  am__include = @am__include@
       
 90388  am__leading_dot = @am__leading_dot@
       
 90389  am__quote = @am__quote@
       
 90390  am__tar = @am__tar@
       
 90391  am__untar = @am__untar@
       
 90392 +ax_enable_builddir_sed = @ax_enable_builddir_sed@
       
 90393  bindir = @bindir@
       
 90394  build = @build@
       
 90395  build_alias = @build_alias@
       
 90396  build_cpu = @build_cpu@
       
 90397  build_os = @build_os@
       
 90398  build_vendor = @build_vendor@
       
 90399  builddir = @builddir@
       
 90400  datadir = @datadir@
       
 90401 @@ -150,27 +232,27 @@ host_vendor = @host_vendor@
       
 90402  htmldir = @htmldir@
       
 90403  includedir = @includedir@
       
 90404  infodir = @infodir@
       
 90405  install_sh = @install_sh@
       
 90406  libdir = @libdir@
       
 90407  libexecdir = @libexecdir@
       
 90408  localedir = @localedir@
       
 90409  localstatedir = @localstatedir@
       
 90410 -lt_ECHO = @lt_ECHO@
       
 90411  mandir = @mandir@
       
 90412  mkdir_p = @mkdir_p@
       
 90413  oldincludedir = @oldincludedir@
       
 90414  pdfdir = @pdfdir@
       
 90415  prefix = @prefix@
       
 90416  program_transform_name = @program_transform_name@
       
 90417  psdir = @psdir@
       
 90418  sbindir = @sbindir@
       
 90419  sharedstatedir = @sharedstatedir@
       
 90420  srcdir = @srcdir@
       
 90421 +sys_symbol_underscore = @sys_symbol_underscore@
       
 90422  sysconfdir = @sysconfdir@
       
 90423  target = @target@
       
 90424  target_alias = @target_alias@
       
 90425  target_cpu = @target_cpu@
       
 90426  target_os = @target_os@
       
 90427  target_vendor = @target_vendor@
       
 90428  toolexecdir = @toolexecdir@
       
 90429  toolexeclibdir = @toolexeclibdir@
       
 90430 @@ -183,80 +265,95 @@ AUTOMAKE_OPTIONS = foreign dejagnu
       
 90431  EXPECT = `if [ -f $(top_builddir)/../expect/expect ] ; then \
       
 90432              echo $(top_builddir)/../expect/expect ; \
       
 90433            else echo expect ; fi`
       
 90434  
       
 90435  RUNTEST = `if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \
       
 90436  	       echo $(top_srcdir)/../dejagnu/runtest ; \
       
 90437  	    else echo runtest; fi`
       
 90438  
       
 90439 +EXTRA_DEJAGNU_SITE_CONFIG = ../local.exp
       
 90440  CLEANFILES = *.exe core* *.log *.sum
       
 90441 -EXTRA_DIST = libffi.special/special.exp	\
       
 90442 -libffi.special/unwindtest_ffi_call.cc libffi.special/unwindtest.cc \
       
 90443 -libffi.special/ffitestcxx.h config/default.exp lib/target-libpath.exp \
       
 90444 -lib/libffi-dg.exp lib/wrapper.exp libffi.call/float.c \
       
 90445 -libffi.call/cls_multi_schar.c libffi.call/float3.c \
       
 90446 -libffi.call/cls_3_1byte.c libffi.call/stret_large2.c \
       
 90447 -libffi.call/cls_5_1_byte.c libffi.call/stret_medium.c \
       
 90448 -libffi.call/promotion.c libffi.call/cls_dbls_struct.c \
       
 90449 -libffi.call/nested_struct.c libffi.call/closure_fn1.c \
       
 90450 -libffi.call/cls_4_1byte.c libffi.call/cls_float.c \
       
 90451 -libffi.call/cls_2byte.c libffi.call/closure_fn4.c \
       
 90452 -libffi.call/return_fl2.c libffi.call/nested_struct7.c \
       
 90453 -libffi.call/cls_uint.c libffi.call/cls_align_sint64.c \
       
 90454 -libffi.call/float1.c libffi.call/cls_19byte.c \
       
 90455 -libffi.call/nested_struct1.c libffi.call/cls_4byte.c \
       
 90456 -libffi.call/return_fl1.c libffi.call/cls_align_pointer.c \
       
 90457 -libffi.call/nested_struct4.c libffi.call/nested_struct3.c \
       
 90458 -libffi.call/struct7.c libffi.call/nested_struct9.c \
       
 90459 -libffi.call/cls_sshort.c libffi.call/cls_ulonglong.c \
       
 90460 -libffi.call/cls_pointer_stack.c libffi.call/cls_multi_uchar.c \
       
 90461 -libffi.call/testclosure.c libffi.call/cls_3byte1.c \
       
 90462 -libffi.call/struct6.c libffi.call/return_uc.c libffi.call/return_ll1.c \
       
 90463 -libffi.call/cls_ushort.c libffi.call/stret_medium2.c \
       
 90464 -libffi.call/cls_multi_ushortchar.c libffi.call/return_dbl2.c \
       
 90465 -libffi.call/closure_loc_fn0.c libffi.call/return_sc.c \
       
 90466 -libffi.call/nested_struct8.c libffi.call/cls_7_1_byte.c	\
       
 90467 -libffi.call/return_ll.c libffi.call/cls_pointer.c \
       
 90468 -libffi.call/err_bad_abi.c libffi.call/return_dbl1.c \
       
 90469 -libffi.call/call.exp libffi.call/ffitest.h libffi.call/strlen.c	\
       
 90470 -libffi.call/return_sl.c libffi.call/cls_1_1byte.c \
       
 90471 -libffi.call/struct1.c libffi.call/cls_64byte.c libffi.call/return_ul.c \
       
 90472 -libffi.call/cls_double.c libffi.call/many_win32.c \
       
 90473 -libffi.call/cls_16byte.c libffi.call/cls_align_double.c	\
       
 90474 -libffi.call/cls_align_uint16.c libffi.call/cls_9byte1.c	\
       
 90475 -libffi.call/cls_multi_sshortchar.c libffi.call/cls_multi_ushort.c \
       
 90476 -libffi.call/closure_stdcall.c libffi.call/return_fl.c \
       
 90477 -libffi.call/strlen_win32.c libffi.call/return_ldl.c \
       
 90478 -libffi.call/cls_align_float.c libffi.call/struct3.c \
       
 90479 -libffi.call/cls_uchar.c libffi.call/cls_sint.c libffi.call/float2.c \
       
 90480 -libffi.call/cls_align_longdouble_split.c \
       
 90481 -libffi.call/cls_longdouble_va.c libffi.call/cls_multi_sshort.c \
       
 90482 -libffi.call/stret_large.c libffi.call/cls_align_sint16.c \
       
 90483 -libffi.call/nested_struct6.c libffi.call/cls_5byte.c \
       
 90484 -libffi.call/return_dbl.c libffi.call/cls_20byte.c \
       
 90485 -libffi.call/cls_8byte.c libffi.call/pyobjc-tc.c	\
       
 90486 -libffi.call/cls_24byte.c libffi.call/cls_align_longdouble_split2.c \
       
 90487 -libffi.call/cls_6_1_byte.c libffi.call/cls_schar.c \
       
 90488 -libffi.call/cls_18byte.c libffi.call/closure_fn3.c \
       
 90489 -libffi.call/err_bad_typedef.c libffi.call/closure_fn2.c	\
       
 90490 -libffi.call/struct2.c libffi.call/cls_3byte2.c \
       
 90491 -libffi.call/cls_align_longdouble.c libffi.call/cls_20byte1.c \
       
 90492 -libffi.call/return_fl3.c libffi.call/cls_align_uint32.c	\
       
 90493 -libffi.call/problem1.c libffi.call/float4.c \
       
 90494 -libffi.call/cls_align_uint64.c libffi.call/struct9.c \
       
 90495 -libffi.call/closure_fn5.c libffi.call/cls_align_sint32.c \
       
 90496 -libffi.call/closure_fn0.c libffi.call/closure_fn6.c \
       
 90497 -libffi.call/struct4.c libffi.call/nested_struct2.c \
       
 90498 -libffi.call/cls_6byte.c libffi.call/cls_7byte.c libffi.call/many.c \
       
 90499 -libffi.call/struct8.c libffi.call/negint.c libffi.call/struct5.c \
       
 90500 -libffi.call/cls_12byte.c libffi.call/cls_double_va.c \
       
 90501 -libffi.call/cls_longdouble.c libffi.call/cls_9byte2.c \
       
 90502 -libffi.call/nested_struct10.c libffi.call/nested_struct5.c \
       
 90503 -libffi.call/huge_struct.c
       
 90504 +EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c		\
       
 90505 +libffi.call/cls_align_longdouble_split.c				\
       
 90506 +libffi.call/closure_loc_fn0.c libffi.call/cls_schar.c			\
       
 90507 +libffi.call/closure_fn1.c \
       
 90508 +libffi.call/return_ul.c libffi.call/cls_align_double.c			\
       
 90509 +libffi.call/return_fl2.c libffi.call/cls_1_1byte.c			\
       
 90510 +libffi.call/cls_64byte.c libffi.call/nested_struct7.c			\
       
 90511 +libffi.call/cls_align_sint32.c libffi.call/nested_struct2.c		\
       
 90512 +libffi.call/ffitest.h libffi.call/nested_struct4.c			\
       
 90513 +libffi.call/cls_multi_ushort.c libffi.call/struct3.c			\
       
 90514 +libffi.call/cls_3byte1.c libffi.call/cls_16byte.c			\
       
 90515 +libffi.call/struct8.c libffi.call/nested_struct8.c			\
       
 90516 +libffi.call/cls_multi_sshort.c libffi.call/cls_3byte2.c			\
       
 90517 +libffi.call/cls_pointer.c			\
       
 90518 +libffi.call/err_bad_typedef.c libffi.call/cls_4_1byte.c			\
       
 90519 +libffi.call/cls_9byte2.c libffi.call/cls_multi_schar.c			\
       
 90520 +libffi.call/stret_medium2.c libffi.call/cls_5_1_byte.c			\
       
 90521 +libffi.call/call.exp libffi.call/cls_double.c				\
       
 90522 +libffi.call/cls_align_sint16.c libffi.call/cls_uint.c			\
       
 90523 +libffi.call/return_ll1.c libffi.call/nested_struct3.c			\
       
 90524 +libffi.call/cls_20byte1.c libffi.call/closure_fn4.c			\
       
 90525 +libffi.call/cls_uchar.c libffi.call/struct2.c libffi.call/cls_7byte.c	\
       
 90526 +libffi.call/strlen.c libffi.call/many.c libffi.call/testclosure.c	\
       
 90527 +libffi.call/return_fl.c libffi.call/struct5.c				\
       
 90528 +libffi.call/cls_12byte.c libffi.call/cls_multi_sshortchar.c		\
       
 90529 +libffi.call/cls_align_longdouble_split2.c libffi.call/return_dbl2.c	\
       
 90530 +libffi.call/return_fl3.c libffi.call/stret_medium.c			\
       
 90531 +libffi.call/nested_struct6.c libffi.call/closure_fn3.c			\
       
 90532 +libffi.call/float3.c libffi.call/many2.c				\
       
 90533 +libffi.call/closure_stdcall.c libffi.call/cls_align_uint16.c		\
       
 90534 +libffi.call/cls_9byte1.c libffi.call/closure_fn6.c			\
       
 90535 +libffi.call/cls_double_va.c libffi.call/cls_align_pointer.c		\
       
 90536 +libffi.call/cls_align_longdouble.c libffi.call/closure_fn2.c		\
       
 90537 +libffi.call/cls_sshort.c \
       
 90538 +libffi.call/nested_struct.c libffi.call/cls_20byte.c			\
       
 90539 +libffi.call/cls_longdouble.c libffi.call/cls_multi_uchar.c		\
       
 90540 +libffi.call/return_uc.c libffi.call/closure_thiscall.c			\
       
 90541 +libffi.call/cls_18byte.c libffi.call/cls_8byte.c			\
       
 90542 +libffi.call/promotion.c \
       
 90543 +libffi.call/return_dbl.c libffi.call/cls_24byte.c			\
       
 90544 +libffi.call/struct4.c libffi.call/cls_6byte.c				\
       
 90545 +libffi.call/cls_align_uint32.c libffi.call/float.c			\
       
 90546 +libffi.call/float1.c libffi.call/float_va.c libffi.call/negint.c	\
       
 90547 +libffi.call/return_dbl1.c libffi.call/cls_3_1byte.c			\
       
 90548 +libffi.call/cls_align_float.c libffi.call/return_fl1.c			\
       
 90549 +libffi.call/nested_struct10.c libffi.call/nested_struct5.c		\
       
 90550 +libffi.call/cls_align_sint64.c		\
       
 90551 +libffi.call/stret_large2.c libffi.call/return_sl.c			\
       
 90552 +libffi.call/closure_fn0.c libffi.call/cls_5byte.c			\
       
 90553 +libffi.call/cls_2byte.c libffi.call/float2.c				\
       
 90554 +libffi.call/cls_dbls_struct.c libffi.call/cls_sint.c			\
       
 90555 +libffi.call/stret_large.c libffi.call/cls_ulonglong.c			\
       
 90556 +libffi.call/cls_ushort.c libffi.call/nested_struct1.c			\
       
 90557 +libffi.call/err_bad_abi.c libffi.call/cls_longdouble_va.c		\
       
 90558 +libffi.call/cls_float.c libffi.call/cls_pointer_stack.c		\
       
 90559 +libffi.call/pyobjc-tc.c libffi.call/cls_multi_ushortchar.c		\
       
 90560 +libffi.call/struct1.c libffi.call/nested_struct9.c			\
       
 90561 +libffi.call/huge_struct.c libffi.call/problem1.c			\
       
 90562 +libffi.call/float4.c \
       
 90563 +libffi.call/return_ldl.c \
       
 90564 +libffi.call/closure_fn5.c \
       
 90565 +libffi.call/struct6.c libffi.call/return_ll.c libffi.call/struct9.c	\
       
 90566 +libffi.call/return_sc.c libffi.call/struct7.c				\
       
 90567 +libffi.call/cls_align_uint64.c libffi.call/cls_4byte.c			\
       
 90568 +libffi.call/cls_6_1_byte.c			\
       
 90569 +libffi.call/cls_7_1_byte.c libffi.call/unwindtest.cc			\
       
 90570 +libffi.call/unwindtest_ffi_call.cc	\
       
 90571 +lib/wrapper.exp lib/target-libpath.exp	\
       
 90572 +lib/libffi.exp libffi.call/cls_struct_va1.c				\
       
 90573 +libffi.call/cls_uchar_va.c libffi.call/cls_uint_va.c			\
       
 90574 +libffi.call/cls_ulong_va.c libffi.call/cls_ushort_va.c			\
       
 90575 +libffi.call/nested_struct11.c libffi.call/uninitialized.c		\
       
 90576 +libffi.call/va_1.c libffi.call/va_struct1.c libffi.call/va_struct2.c	\
       
 90577 +libffi.call/va_struct3.c \
       
 90578 +libffi.call/strlen2.c \
       
 90579 +libffi.call/strlen3.c \
       
 90580 +libffi.call/strlen4.c
       
 90581  
       
 90582  all: all-am
       
 90583  
       
 90584  .SUFFIXES:
       
 90585  $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
       
 90586  	@for dep in $?; do \
       
 90587  	  case '$(am__configure_deps)' in \
       
 90588  	    *$$dep*) \
       
 90589 @@ -287,51 +384,57 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
       
 90590  	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
       
 90591  $(am__aclocal_m4_deps):
       
 90592  
       
 90593  mostlyclean-libtool:
       
 90594  	-rm -f *.lo
       
 90595  
       
 90596  clean-libtool:
       
 90597  	-rm -rf .libs _libs
       
 90598 -tags: TAGS
       
 90599 -TAGS:
       
 90600 +tags TAGS:
       
 90601  
       
 90602 -ctags: CTAGS
       
 90603 -CTAGS:
       
 90604 +ctags CTAGS:
       
 90605 +
       
 90606 +cscope cscopelist:
       
 90607  
       
 90608  
       
 90609  check-DEJAGNU: site.exp
       
 90610 -	srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
       
 90611 +	srcdir='$(srcdir)'; export srcdir; \
       
 90612  	EXPECT=$(EXPECT); export EXPECT; \
       
 90613 -	runtest=$(RUNTEST); \
       
 90614 -	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
       
 90615 +	if $(SHELL) -c "$(RUNTEST) --version" > /dev/null 2>&1; then \
       
 90616  	  exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \
       
 90617 -	    if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
       
 90618 +	    if $(RUNTEST) $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
       
 90619  	    then :; else exit_status=1; fi; \
       
 90620  	  done; \
       
 90621 -	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
       
 90622 +	else echo "WARNING: could not find '$(RUNTEST)'" 1>&2; :;\
       
 90623  	fi; \
       
 90624  	exit $$exit_status
       
 90625 -site.exp: Makefile
       
 90626 -	@echo 'Making a new site.exp file...'
       
 90627 +site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG)
       
 90628 +	@echo 'Making a new site.exp file ...'
       
 90629  	@echo '## these variables are automatically generated by make ##' >site.tmp
       
 90630  	@echo '# Do not edit here.  If you wish to override these values' >>site.tmp
       
 90631  	@echo '# edit the last section' >>site.tmp
       
 90632 -	@echo 'set srcdir $(srcdir)' >>site.tmp
       
 90633 +	@echo 'set srcdir "$(srcdir)"' >>site.tmp
       
 90634  	@echo "set objdir `pwd`" >>site.tmp
       
 90635  	@echo 'set build_alias "$(build_alias)"' >>site.tmp
       
 90636  	@echo 'set build_triplet $(build_triplet)' >>site.tmp
       
 90637  	@echo 'set host_alias "$(host_alias)"' >>site.tmp
       
 90638  	@echo 'set host_triplet $(host_triplet)' >>site.tmp
       
 90639  	@echo 'set target_alias "$(target_alias)"' >>site.tmp
       
 90640  	@echo 'set target_triplet $(target_triplet)' >>site.tmp
       
 90641 -	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
       
 90642 -	@test ! -f site.exp || \
       
 90643 -	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
       
 90644 +	@list='$(EXTRA_DEJAGNU_SITE_CONFIG)'; for f in $$list; do \
       
 90645 +	  echo "## Begin content included from file $$f.  Do not modify. ##" \
       
 90646 +	   && cat `test -f "$$f" || echo '$(srcdir)/'`$$f \
       
 90647 +	   && echo "## End content included from file $$f. ##" \
       
 90648 +	   || exit 1; \
       
 90649 +	 done >> site.tmp
       
 90650 +	@echo "## End of auto-generated content; you can edit from here. ##" >> site.tmp
       
 90651 +	@if test -f site.exp; then \
       
 90652 +	   sed -e '1,/^## End of auto-generated content.*##/d' site.exp >> site.tmp; \
       
 90653 +	 fi
       
 90654  	@-rm -f site.bak
       
 90655  	@test ! -f site.exp || mv site.exp site.bak
       
 90656  	@mv site.tmp site.exp
       
 90657  
       
 90658  distclean-DEJAGNU:
       
 90659  	-rm -f site.exp site.bak
       
 90660  	-l='$(DEJATOOL)'; for tool in $$l; do \
       
 90661  	  rm -f $$tool.sum $$tool.log; \
       
 90662 @@ -377,20 +480,25 @@ install-exec: install-exec-am
       
 90663  install-data: install-data-am
       
 90664  uninstall: uninstall-am
       
 90665  
       
 90666  install-am: all-am
       
 90667  	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
       
 90668  
       
 90669  installcheck: installcheck-am
       
 90670  install-strip:
       
 90671 -	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 90672 -	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 90673 -	  `test -z '$(STRIP)' || \
       
 90674 -	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
       
 90675 +	if test -z '$(STRIP)'; then \
       
 90676 +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 90677 +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 90678 +	      install; \
       
 90679 +	else \
       
 90680 +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
       
 90681 +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
       
 90682 +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
       
 90683 +	fi
       
 90684  mostlyclean-generic:
       
 90685  
       
 90686  clean-generic:
       
 90687  	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
       
 90688  
       
 90689  distclean-generic:
       
 90690  	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
       
 90691  	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
       
 90692 @@ -462,23 +570,24 @@ ps: ps-am
       
 90693  
       
 90694  ps-am:
       
 90695  
       
 90696  uninstall-am:
       
 90697  
       
 90698  .MAKE: check-am install-am install-strip
       
 90699  
       
 90700  .PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
       
 90701 -	clean-libtool distclean distclean-DEJAGNU distclean-generic \
       
 90702 -	distclean-libtool distdir dvi dvi-am html html-am info info-am \
       
 90703 -	install install-am install-data install-data-am install-dvi \
       
 90704 -	install-dvi-am install-exec install-exec-am install-html \
       
 90705 -	install-html-am install-info install-info-am install-man \
       
 90706 -	install-pdf install-pdf-am install-ps install-ps-am \
       
 90707 -	install-strip installcheck installcheck-am installdirs \
       
 90708 -	maintainer-clean maintainer-clean-generic mostlyclean \
       
 90709 -	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
       
 90710 -	uninstall uninstall-am
       
 90711 +	clean-libtool cscopelist-am ctags-am distclean \
       
 90712 +	distclean-DEJAGNU distclean-generic distclean-libtool distdir \
       
 90713 +	dvi dvi-am html html-am info info-am install install-am \
       
 90714 +	install-data install-data-am install-dvi install-dvi-am \
       
 90715 +	install-exec install-exec-am install-html install-html-am \
       
 90716 +	install-info install-info-am install-man install-pdf \
       
 90717 +	install-pdf-am install-ps install-ps-am install-strip \
       
 90718 +	installcheck installcheck-am installdirs maintainer-clean \
       
 90719 +	maintainer-clean-generic mostlyclean mostlyclean-generic \
       
 90720 +	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
       
 90721 +	uninstall-am
       
 90722  
       
 90723  
       
 90724  # Tell versions [3.59,3.63) of GNU make to not export all variables.
       
 90725  # Otherwise a system limit (for SysV at least) may be exceeded.
       
 90726  .NOEXPORT:
       
 90727 diff --git a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp b/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
       
 90728 deleted file mode 100644
       
 90729 --- a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
       
 90730 +++ /dev/null
       
 90731 @@ -1,350 +0,0 @@
       
 90732 -#   Copyright (C) 2003, 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
       
 90733 -
       
 90734 -# This program is free software; you can redistribute it and/or modify
       
 90735 -# it under the terms of the GNU General Public License as published by
       
 90736 -# the Free Software Foundation; either version 3 of the License, or
       
 90737 -# (at your option) any later version.
       
 90738 -#
       
 90739 -# This program is distributed in the hope that it will be useful,
       
 90740 -# but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 90741 -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 90742 -# GNU General Public License for more details.
       
 90743 -#
       
 90744 -# You should have received a copy of the GNU General Public License
       
 90745 -# along with this program; if not, write to the Free Software
       
 90746 -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
       
 90747 -
       
 90748 -proc load_gcc_lib { filename } {
       
 90749 -    global srcdir
       
 90750 -    load_file $srcdir/lib/$filename
       
 90751 -}
       
 90752 -
       
 90753 -load_lib dg.exp
       
 90754 -load_lib libgloss.exp
       
 90755 -load_gcc_lib target-libpath.exp
       
 90756 -load_gcc_lib wrapper.exp
       
 90757 -
       
 90758 -
       
 90759 -# Define libffi callbacks for dg.exp.
       
 90760 -
       
 90761 -proc libffi-dg-test-1 { target_compile prog do_what extra_tool_flags } {
       
 90762 -
       
 90763 -    # To get all \n in dg-output test strings to match printf output
       
 90764 -    # in a system that outputs it as \015\012 (i.e. not just \012), we
       
 90765 -    # need to change all \n into \r?\n.  As there is no dejagnu flag
       
 90766 -    # or hook to do that, we simply change the text being tested.
       
 90767 -    # Unfortunately, we have to know that the variable is called
       
 90768 -    # dg-output-text and lives in the caller of libffi-dg-test, which
       
 90769 -    # is two calls up.  Overriding proc dg-output would be longer and
       
 90770 -    # would necessarily have the same assumption.
       
 90771 -    upvar 2 dg-output-text output_match
       
 90772 -
       
 90773 -    if { [llength $output_match] > 1 } {
       
 90774 -	regsub -all "\n" [lindex $output_match 1] "\r?\n" x
       
 90775 -	set output_match [lreplace $output_match 1 1 $x]
       
 90776 -    }
       
 90777 -
       
 90778 -    # Set up the compiler flags, based on what we're going to do.
       
 90779 -
       
 90780 -    set options [list]
       
 90781 -    switch $do_what {
       
 90782 -	"compile" {
       
 90783 -	    set compile_type "assembly"
       
 90784 -	    set output_file "[file rootname [file tail $prog]].s"
       
 90785 -	}
       
 90786 -	"link" {
       
 90787 -	    set compile_type "executable"
       
 90788 -	    set output_file "[file rootname [file tail $prog]].exe"
       
 90789 -	    # The following line is needed for targets like the i960 where
       
 90790 -	    # the default output file is b.out.  Sigh.
       
 90791 -	}
       
 90792 -	"run" {
       
 90793 -	    set compile_type "executable"
       
 90794 -	    # FIXME: "./" is to cope with "." not being in $PATH.
       
 90795 -	    # Should this be handled elsewhere?
       
 90796 -	    # YES.
       
 90797 -	    set output_file "./[file rootname [file tail $prog]].exe"
       
 90798 -	    # This is the only place where we care if an executable was
       
 90799 -	    # created or not.  If it was, dg.exp will try to run it.
       
 90800 -	    remote_file build delete $output_file;
       
 90801 -	}
       
 90802 -	default {
       
 90803 -	    perror "$do_what: not a valid dg-do keyword"
       
 90804 -	    return ""
       
 90805 -	}
       
 90806 -    }
       
 90807 -
       
 90808 -    if { $extra_tool_flags != "" } {
       
 90809 -	lappend options "additional_flags=$extra_tool_flags"
       
 90810 -    }
       
 90811 -
       
 90812 -    set comp_output [libffi_target_compile "$prog" "$output_file" "$compile_type" $options];
       
 90813 -
       
 90814 -
       
 90815 -    return [list $comp_output $output_file]
       
 90816 -}
       
 90817 -
       
 90818 -
       
 90819 -proc libffi-dg-test { prog do_what extra_tool_flags } {
       
 90820 -    return [libffi-dg-test-1 target_compile $prog $do_what $extra_tool_flags]
       
 90821 -}
       
 90822 -
       
 90823 -proc libffi-init { args } {
       
 90824 -    global gluefile wrap_flags;
       
 90825 -    global srcdir
       
 90826 -    global blddirffi
       
 90827 -    global objdir
       
 90828 -    global TOOL_OPTIONS
       
 90829 -    global tool
       
 90830 -    global libffi_include
       
 90831 -    global libffi_link_flags
       
 90832 -    global tool_root_dir
       
 90833 -    global ld_library_path
       
 90834 -
       
 90835 -    set blddirffi [pwd]/..
       
 90836 -    verbose "libffi $blddirffi"
       
 90837 -
       
 90838 -    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
       
 90839 -    if {$gccdir != ""} {
       
 90840 -	set gccdir [file dirname $gccdir]
       
 90841 -    }
       
 90842 -    verbose "gccdir $gccdir"
       
 90843 -
       
 90844 -    set ld_library_path "."
       
 90845 -    append ld_library_path ":${gccdir}"
       
 90846 -
       
 90847 -    set compiler "${gccdir}/xgcc"
       
 90848 -    if { [is_remote host] == 0 && [which $compiler] != 0 } {
       
 90849 -	foreach i "[exec $compiler --print-multi-lib]" {
       
 90850 -	    set mldir ""
       
 90851 -	    regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir
       
 90852 -	    set mldir [string trimright $mldir "\;@"]
       
 90853 -	    if { "$mldir" == "." } {
       
 90854 -		continue
       
 90855 -	    }
       
 90856 -	    if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {
       
 90857 -		append ld_library_path ":${gccdir}/${mldir}"
       
 90858 -	    }
       
 90859 -	}
       
 90860 -    }
       
 90861 -    # add the library path for libffi.
       
 90862 -    append ld_library_path ":${blddirffi}/.libs"
       
 90863 -
       
 90864 -    verbose "ld_library_path: $ld_library_path"
       
 90865 -
       
 90866 -    # Point to the Libffi headers in libffi.
       
 90867 -    set libffi_include "${blddirffi}/include"
       
 90868 -    verbose "libffi_include $libffi_include"
       
 90869 -
       
 90870 -    set libffi_dir  "${blddirffi}/.libs"
       
 90871 -    verbose "libffi_dir $libffi_dir"
       
 90872 -    if { $libffi_dir != "" } {
       
 90873 -	set libffi_dir [file dirname ${libffi_dir}]
       
 90874 -	set libffi_link_flags "-L${libffi_dir}/.libs"
       
 90875 -    }
       
 90876 -
       
 90877 -    set_ld_library_path_env_vars
       
 90878 -    libffi_maybe_build_wrapper "${objdir}/testglue.o"
       
 90879 -}
       
 90880 -
       
 90881 -proc libffi_exit { } {
       
 90882 -    global gluefile;
       
 90883 -
       
 90884 -    if [info exists gluefile] {
       
 90885 -	file_on_build delete $gluefile;
       
 90886 -	unset gluefile;
       
 90887 -    }
       
 90888 -}
       
 90889 -
       
 90890 -proc libffi_target_compile { source dest type options } {
       
 90891 -    global gluefile wrap_flags;
       
 90892 -    global srcdir
       
 90893 -    global blddirffi
       
 90894 -    global TOOL_OPTIONS
       
 90895 -    global libffi_link_flags
       
 90896 -    global libffi_include
       
 90897 -    global target_triplet
       
 90898 -
       
 90899 -
       
 90900 -    if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } {
       
 90901 -	lappend options "libs=${gluefile}"
       
 90902 -	lappend options "ldflags=$wrap_flags"
       
 90903 -    }
       
 90904 -
       
 90905 -    # TOOL_OPTIONS must come first, so that it doesn't override testcase
       
 90906 -    # specific options.
       
 90907 -    if [info exists TOOL_OPTIONS] {
       
 90908 -	lappend  options [concat "additional_flags=$TOOL_OPTIONS" $options];
       
 90909 -    }
       
 90910 -
       
 90911 -    # search for ffi_mips.h in srcdir, too
       
 90912 -    lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include  -I${libffi_include}/.."
       
 90913 -    lappend options "additional_flags=${libffi_link_flags}"
       
 90914 -
       
 90915 -    # Darwin needs a stack execution allowed flag.
       
 90916 -
       
 90917 -    if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"]
       
 90918 -	 || [istarget "*-*-darwin2*"] } {
       
 90919 -	lappend options "additional_flags=-Wl,-allow_stack_execute"
       
 90920 -    }
       
 90921 -
       
 90922 -    # If you're building the compiler with --prefix set to a place
       
 90923 -    # where it's not yet installed, then the linker won't be able to
       
 90924 -    # find the libgcc used by libffi.dylib.  We could pass the
       
 90925 -    # -dylib_file option, but that's complicated, and it's much easier
       
 90926 -    # to just make the linker find libgcc using -L options.
       
 90927 -    if { [string match "*-*-darwin*" $target_triplet] } {
       
 90928 -	lappend options "libs= -shared-libgcc"
       
 90929 -    }
       
 90930 -
       
 90931 -    if { [string match "*-*-openbsd*" $target_triplet] } {
       
 90932 -	lappend options "libs= -lpthread"
       
 90933 -    }
       
 90934 -
       
 90935 -    lappend options "libs= -lffi"
       
 90936 -
       
 90937 -    verbose "options: $options"
       
 90938 -    return [target_compile $source $dest $type $options]
       
 90939 -}
       
 90940 -
       
 90941 -# Utility routines.
       
 90942 -
       
 90943 -#
       
 90944 -# search_for -- looks for a string match in a file
       
 90945 -#
       
 90946 -proc search_for { file pattern } {
       
 90947 -    set fd [open $file r]
       
 90948 -    while { [gets $fd cur_line]>=0 } {
       
 90949 -	if [string match "*$pattern*" $cur_line] then {
       
 90950 -	    close $fd
       
 90951 -	    return 1
       
 90952 -	}
       
 90953 -    }
       
 90954 -    close $fd
       
 90955 -    return 0
       
 90956 -}
       
 90957 -
       
 90958 -# Modified dg-runtest that can cycle through a list of optimization options
       
 90959 -# as c-torture does.
       
 90960 -proc libffi-dg-runtest { testcases default-extra-flags } {
       
 90961 -    global runtests
       
 90962 -
       
 90963 -    foreach test $testcases {
       
 90964 -	# If we're only testing specific files and this isn't one of
       
 90965 -	# them, skip it.
       
 90966 -	if ![runtest_file_p $runtests $test] {
       
 90967 -	    continue
       
 90968 -	}
       
 90969 -
       
 90970 -	# Look for a loop within the source code - if we don't find one,
       
 90971 -	# don't pass -funroll[-all]-loops.
       
 90972 -	global torture_with_loops torture_without_loops
       
 90973 -	if [expr [search_for $test "for*("]+[search_for $test "while*("]] {
       
 90974 -	    set option_list $torture_with_loops
       
 90975 -	} else {
       
 90976 -	    set option_list $torture_without_loops
       
 90977 -	}
       
 90978 -
       
 90979 -	set nshort [file tail [file dirname $test]]/[file tail $test]
       
 90980 -
       
 90981 -	foreach flags $option_list {
       
 90982 -	    verbose "Testing $nshort, $flags" 1
       
 90983 -	    dg-test $test $flags ${default-extra-flags}
       
 90984 -	}
       
 90985 -    }
       
 90986 -}
       
 90987 -
       
 90988 -
       
 90989 -# Like check_conditional_xfail, but callable from a dg test.
       
 90990 -
       
 90991 -proc dg-xfail-if { args } {
       
 90992 -    set args [lreplace $args 0 0]
       
 90993 -    set selector "target [join [lindex $args 1]]"
       
 90994 -    if { [dg-process-target $selector] == "S" } {
       
 90995 -	global compiler_conditional_xfail_data
       
 90996 -	set compiler_conditional_xfail_data $args
       
 90997 -    }
       
 90998 -}
       
 90999 -
       
 91000 -proc check-flags { args } {
       
 91001 -
       
 91002 -    # The args are within another list; pull them out.
       
 91003 -    set args [lindex $args 0]
       
 91004 -
       
 91005 -    # The next two arguments are optional.  If they were not specified,
       
 91006 -    # use the defaults.
       
 91007 -    if { [llength $args] == 2 } {
       
 91008 -	lappend $args [list "*"]
       
 91009 -    }
       
 91010 -    if { [llength $args] == 3 } {
       
 91011 -	lappend $args [list ""]
       
 91012 -    }
       
 91013 -
       
 91014 -    # If the option strings are the defaults, or the same as the
       
 91015 -    # defaults, there is no need to call check_conditional_xfail to
       
 91016 -    # compare them to the actual options.
       
 91017 -    if { [string compare [lindex $args 2] "*"] == 0
       
 91018 -	 && [string compare [lindex $args 3] "" ] == 0 } {
       
 91019 -	set result 1    
       
 91020 -    } else {
       
 91021 -	# The target list might be an effective-target keyword, so replace
       
 91022 -	# the original list with "*-*-*", since we already know it matches.
       
 91023 -	set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
       
 91024 -    }
       
 91025 -
       
 91026 -    return $result
       
 91027 -}
       
 91028 -
       
 91029 -proc dg-skip-if { args } {
       
 91030 -    # Verify the number of arguments.  The last two are optional.
       
 91031 -    set args [lreplace $args 0 0]
       
 91032 -    if { [llength $args] < 2 || [llength $args] > 4 } {
       
 91033 -        error "dg-skip-if 2: need 2, 3, or 4 arguments"
       
 91034 -    }
       
 91035 -
       
 91036 -    # Don't bother if we're already skipping the test.
       
 91037 -    upvar dg-do-what dg-do-what
       
 91038 -    if { [lindex ${dg-do-what} 1] == "N" } {
       
 91039 -      return
       
 91040 -    }
       
 91041 -
       
 91042 -    set selector [list target [lindex $args 1]]
       
 91043 -    if { [dg-process-target $selector] == "S" } {
       
 91044 -        if [check-flags $args] {
       
 91045 -            upvar dg-do-what dg-do-what
       
 91046 -            set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
       
 91047 -        }
       
 91048 -    }
       
 91049 -}
       
 91050 -
       
 91051 -# We need to make sure that additional_files and additional_sources
       
 91052 -# are both cleared out after every test.  It is not enough to clear
       
 91053 -# them out *before* the next test run because gcc-target-compile gets
       
 91054 -# run directly from some .exp files (outside of any test).  (Those
       
 91055 -# uses should eventually be eliminated.)
       
 91056 -
       
 91057 -# Because the DG framework doesn't provide a hook that is run at the
       
 91058 -# end of a test, we must replace dg-test with a wrapper.
       
 91059 -
       
 91060 -if { [info procs saved-dg-test] == [list] } {
       
 91061 -    rename dg-test saved-dg-test
       
 91062 -
       
 91063 -    proc dg-test { args } {
       
 91064 -	global additional_files
       
 91065 -	global additional_sources
       
 91066 -	global errorInfo
       
 91067 -
       
 91068 -	if { [ catch { eval saved-dg-test $args } errmsg ] } {
       
 91069 -	    set saved_info $errorInfo
       
 91070 -	    set additional_files ""
       
 91071 -	    set additional_sources ""
       
 91072 -	    error $errmsg $saved_info
       
 91073 -	}
       
 91074 -	set additional_files ""
       
 91075 -	set additional_sources ""
       
 91076 -    }
       
 91077 -}
       
 91078 -
       
 91079 -# Local Variables:
       
 91080 -# tcl-indent-level:4
       
 91081 -# End:
       
 91082 diff --git a/js/src/ctypes/libffi/testsuite/lib/libffi.exp b/js/src/ctypes/libffi/testsuite/lib/libffi.exp
       
 91083 new file mode 100644
       
 91084 --- /dev/null
       
 91085 +++ b/js/src/ctypes/libffi/testsuite/lib/libffi.exp
       
 91086 @@ -0,0 +1,409 @@
       
 91087 +#   Copyright (C) 2003, 2005, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
       
 91088 +
       
 91089 +# This program is free software; you can redistribute it and/or modify
       
 91090 +# it under the terms of the GNU General Public License as published by
       
 91091 +# the Free Software Foundation; either version 3 of the License, or
       
 91092 +# (at your option) any later version.
       
 91093 +#
       
 91094 +# This program is distributed in the hope that it will be useful,
       
 91095 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 91096 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 91097 +# GNU General Public License for more details.
       
 91098 +#
       
 91099 +# You should have received a copy of the GNU General Public License
       
 91100 +# along with this program; see the file COPYING3.  If not see
       
 91101 +# <http://www.gnu.org/licenses/>.
       
 91102 +
       
 91103 +proc load_gcc_lib { filename } {
       
 91104 +    global srcdir
       
 91105 +    load_file $srcdir/lib/$filename
       
 91106 +}
       
 91107 +
       
 91108 +load_lib dg.exp
       
 91109 +load_lib libgloss.exp
       
 91110 +load_gcc_lib target-libpath.exp
       
 91111 +load_gcc_lib wrapper.exp
       
 91112 +
       
 91113 +
       
 91114 +# Define libffi callbacks for dg.exp.
       
 91115 +
       
 91116 +proc libffi-dg-test-1 { target_compile prog do_what extra_tool_flags } {
       
 91117 +
       
 91118 +    # To get all \n in dg-output test strings to match printf output
       
 91119 +    # in a system that outputs it as \015\012 (i.e. not just \012), we
       
 91120 +    # need to change all \n into \r?\n.  As there is no dejagnu flag
       
 91121 +    # or hook to do that, we simply change the text being tested.
       
 91122 +    # Unfortunately, we have to know that the variable is called
       
 91123 +    # dg-output-text and lives in the caller of libffi-dg-test, which
       
 91124 +    # is two calls up.  Overriding proc dg-output would be longer and
       
 91125 +    # would necessarily have the same assumption.
       
 91126 +    upvar 2 dg-output-text output_match
       
 91127 +
       
 91128 +    if { [llength $output_match] > 1 } {
       
 91129 +	regsub -all "\n" [lindex $output_match 1] "\r?\n" x
       
 91130 +	set output_match [lreplace $output_match 1 1 $x]
       
 91131 +    }
       
 91132 +
       
 91133 +    # Set up the compiler flags, based on what we're going to do.
       
 91134 +
       
 91135 +    set options [list]
       
 91136 +    switch $do_what {
       
 91137 +	"compile" {
       
 91138 +	    set compile_type "assembly"
       
 91139 +	    set output_file "[file rootname [file tail $prog]].s"
       
 91140 +	}
       
 91141 +	"link" {
       
 91142 +	    set compile_type "executable"
       
 91143 +	    set output_file "[file rootname [file tail $prog]].exe"
       
 91144 +	    # The following line is needed for targets like the i960 where
       
 91145 +	    # the default output file is b.out.  Sigh.
       
 91146 +	}
       
 91147 +	"run" {
       
 91148 +	    set compile_type "executable"
       
 91149 +	    # FIXME: "./" is to cope with "." not being in $PATH.
       
 91150 +	    # Should this be handled elsewhere?
       
 91151 +	    # YES.
       
 91152 +	    set output_file "./[file rootname [file tail $prog]].exe"
       
 91153 +	    # This is the only place where we care if an executable was
       
 91154 +	    # created or not.  If it was, dg.exp will try to run it.
       
 91155 +	    remote_file build delete $output_file;
       
 91156 +	}
       
 91157 +	default {
       
 91158 +	    perror "$do_what: not a valid dg-do keyword"
       
 91159 +	    return ""
       
 91160 +	}
       
 91161 +    }
       
 91162 +
       
 91163 +    if { $extra_tool_flags != "" } {
       
 91164 +	lappend options "additional_flags=$extra_tool_flags"
       
 91165 +    }
       
 91166 +
       
 91167 +    set comp_output [libffi_target_compile "$prog" "$output_file" "$compile_type" $options];
       
 91168 +
       
 91169 +
       
 91170 +    return [list $comp_output $output_file]
       
 91171 +}
       
 91172 +
       
 91173 +
       
 91174 +proc libffi-dg-test { prog do_what extra_tool_flags } {
       
 91175 +    return [libffi-dg-test-1 target_compile $prog $do_what $extra_tool_flags]
       
 91176 +}
       
 91177 +
       
 91178 +proc libffi-init { args } {
       
 91179 +    global gluefile wrap_flags;
       
 91180 +    global srcdir
       
 91181 +    global blddirffi
       
 91182 +    global objdir
       
 91183 +    global TOOL_OPTIONS
       
 91184 +    global tool
       
 91185 +    global libffi_include
       
 91186 +    global libffi_link_flags
       
 91187 +    global tool_root_dir
       
 91188 +    global ld_library_path
       
 91189 +
       
 91190 +    global using_gcc
       
 91191 +
       
 91192 +    set blddirffi [pwd]/.. 
       
 91193 +    verbose "libffi $blddirffi"
       
 91194 +
       
 91195 +    # Are we building with GCC?
       
 91196 +    set tmp [grep ../config.status "GCC='yes'"]
       
 91197 +    if { [string match $tmp "GCC='yes'"] } {
       
 91198 +
       
 91199 +      set using_gcc "yes"
       
 91200 +
       
 91201 +    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
       
 91202 +    if {$gccdir != ""} {
       
 91203 +	set gccdir [file dirname $gccdir]
       
 91204 +    }
       
 91205 +    verbose "gccdir $gccdir"
       
 91206 +
       
 91207 +    set ld_library_path "."
       
 91208 +    append ld_library_path ":${gccdir}"
       
 91209 +
       
 91210 +    set compiler "${gccdir}/xgcc"
       
 91211 +    if { [is_remote host] == 0 && [which $compiler] != 0 } {
       
 91212 +	foreach i "[exec $compiler --print-multi-lib]" {
       
 91213 +	    set mldir ""
       
 91214 +	    regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir
       
 91215 +	    set mldir [string trimright $mldir "\;@"]
       
 91216 +	    if { "$mldir" == "." } {
       
 91217 +		continue
       
 91218 +	    }
       
 91219 +	    if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {
       
 91220 +		append ld_library_path ":${gccdir}/${mldir}"
       
 91221 +	    }
       
 91222 +	}
       
 91223 +    }
       
 91224 + 
       
 91225 +    } else {
       
 91226 +
       
 91227 +      set using_gcc "no"
       
 91228 +
       
 91229 +    }
       
 91230 +
       
 91231 +    # add the library path for libffi.
       
 91232 +    append ld_library_path ":${blddirffi}/.libs"
       
 91233 +
       
 91234 +    verbose "ld_library_path: $ld_library_path"
       
 91235 +
       
 91236 +    # Point to the Libffi headers in libffi.
       
 91237 +    set libffi_include "${blddirffi}/include"
       
 91238 +    verbose "libffi_include $libffi_include"
       
 91239 +
       
 91240 +    set libffi_dir  "${blddirffi}/.libs"
       
 91241 +    verbose "libffi_dir $libffi_dir"
       
 91242 +    if { $libffi_dir != "" } {
       
 91243 +	set libffi_dir [file dirname ${libffi_dir}]
       
 91244 +	set libffi_link_flags "-L${libffi_dir}/.libs"
       
 91245 +    }
       
 91246 +
       
 91247 +    set_ld_library_path_env_vars
       
 91248 +    libffi_maybe_build_wrapper "${objdir}/testglue.o"
       
 91249 +}
       
 91250 +
       
 91251 +proc libffi_exit { } {
       
 91252 +    global gluefile;
       
 91253 +
       
 91254 +    if [info exists gluefile] {
       
 91255 +	file_on_build delete $gluefile;
       
 91256 +	unset gluefile;
       
 91257 +    }
       
 91258 +}
       
 91259 +
       
 91260 +proc libffi_target_compile { source dest type options } {
       
 91261 +    global gluefile wrap_flags;
       
 91262 +    global srcdir
       
 91263 +    global blddirffi
       
 91264 +    global TOOL_OPTIONS
       
 91265 +    global libffi_link_flags
       
 91266 +    global libffi_include
       
 91267 +    global target_triplet
       
 91268 +
       
 91269 +
       
 91270 +    if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } {
       
 91271 +	lappend options "libs=${gluefile}"
       
 91272 +	lappend options "ldflags=$wrap_flags"
       
 91273 +    }
       
 91274 +
       
 91275 +    # TOOL_OPTIONS must come first, so that it doesn't override testcase
       
 91276 +    # specific options.
       
 91277 +    if [info exists TOOL_OPTIONS] {
       
 91278 +	lappend  options [concat "additional_flags=$TOOL_OPTIONS" $options];
       
 91279 +    }
       
 91280 +
       
 91281 +    # search for ffi_mips.h in srcdir, too
       
 91282 +    lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include  -I${libffi_include}/.."
       
 91283 +    lappend options "additional_flags=${libffi_link_flags}"
       
 91284 +
       
 91285 +    # Darwin needs a stack execution allowed flag.
       
 91286 +
       
 91287 +    if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"]
       
 91288 +	 || [istarget "*-*-darwin2*"] } {
       
 91289 +	lappend options "additional_flags=-Wl,-allow_stack_execute"
       
 91290 +    }
       
 91291 +
       
 91292 +    # If you're building the compiler with --prefix set to a place
       
 91293 +    # where it's not yet installed, then the linker won't be able to
       
 91294 +    # find the libgcc used by libffi.dylib.  We could pass the
       
 91295 +    # -dylib_file option, but that's complicated, and it's much easier
       
 91296 +    # to just make the linker find libgcc using -L options.
       
 91297 +    if { [string match "*-*-darwin*" $target_triplet] } {
       
 91298 +	lappend options "libs= -shared-libgcc"
       
 91299 +    }
       
 91300 +
       
 91301 +    if { [string match "*-*-openbsd*" $target_triplet] } {
       
 91302 +	lappend options "libs= -lpthread"
       
 91303 +    }
       
 91304 +
       
 91305 +    lappend options "libs= -lffi"
       
 91306 +
       
 91307 +    if { [string match "aarch64*-*-linux*" $target_triplet] } {
       
 91308 +	lappend options "libs= -lpthread"
       
 91309 +    }
       
 91310 +
       
 91311 +    verbose "options: $options"
       
 91312 +    return [target_compile $source $dest $type $options]
       
 91313 +}
       
 91314 +
       
 91315 +# Utility routines.
       
 91316 +
       
 91317 +#
       
 91318 +# search_for -- looks for a string match in a file
       
 91319 +#
       
 91320 +proc search_for { file pattern } {
       
 91321 +    set fd [open $file r]
       
 91322 +    while { [gets $fd cur_line]>=0 } {
       
 91323 +	if [string match "*$pattern*" $cur_line] then {
       
 91324 +	    close $fd
       
 91325 +	    return 1
       
 91326 +	}
       
 91327 +    }
       
 91328 +    close $fd
       
 91329 +    return 0
       
 91330 +}
       
 91331 +
       
 91332 +# Modified dg-runtest that can cycle through a list of optimization options
       
 91333 +# as c-torture does.
       
 91334 +proc libffi-dg-runtest { testcases default-extra-flags } {
       
 91335 +    global runtests
       
 91336 +
       
 91337 +    foreach test $testcases {
       
 91338 +	# If we're only testing specific files and this isn't one of
       
 91339 +	# them, skip it.
       
 91340 +	if ![runtest_file_p $runtests $test] {
       
 91341 +	    continue
       
 91342 +	}
       
 91343 +
       
 91344 +	# Look for a loop within the source code - if we don't find one,
       
 91345 +	# don't pass -funroll[-all]-loops.
       
 91346 +	global torture_with_loops torture_without_loops
       
 91347 +	if [expr [search_for $test "for*("]+[search_for $test "while*("]] {
       
 91348 +	    set option_list $torture_with_loops
       
 91349 +	} else {
       
 91350 +	    set option_list $torture_without_loops
       
 91351 +	}
       
 91352 +
       
 91353 +	set nshort [file tail [file dirname $test]]/[file tail $test]
       
 91354 +
       
 91355 +	foreach flags $option_list {
       
 91356 +	    verbose "Testing $nshort, $flags" 1
       
 91357 +	    dg-test $test $flags ${default-extra-flags}
       
 91358 +	}
       
 91359 +    }
       
 91360 +}
       
 91361 +
       
 91362 +proc run-many-tests { testcases extra_flags } {
       
 91363 +    global using_gcc
       
 91364 +    if { [string match $using_gcc "yes"] } {
       
 91365 +        set common "-W -Wall"
       
 91366 +        set optimizations { "-O0" "-O2" "-O3" "-Os" "-O2 -fomit-frame-pointer" }
       
 91367 +    } else {
       
 91368 +        # Assume we are using the vendor compiler.
       
 91369 +        set common ""
       
 91370 +        set optimizations { "" }
       
 91371 +    }
       
 91372 +
       
 91373 +    set targetabis { "" }
       
 91374 +    if [string match $using_gcc "yes"] {
       
 91375 +        if [istarget "i?86-*-*"] {
       
 91376 +            set targetabis {
       
 91377 +                ""
       
 91378 +                "-DABI_NUM=FFI_STDCALL -DABI_ATTR=__STDCALL__"
       
 91379 +                "-DABI_NUM=FFI_THISCALL -DABI_ATTR=__THISCALL__"
       
 91380 +                "-DABI_NUM=FFI_FASTCALL -DABI_ATTR=__FASTCALL__"
       
 91381 +            }
       
 91382 +        }
       
 91383 +    }
       
 91384 +
       
 91385 +    set common [ concat $common $extra_flags ]
       
 91386 +    foreach test $testcases {
       
 91387 +        set testname [file tail $test]
       
 91388 +        if [search_for $test "ABI_NUM"] {
       
 91389 +            set abis $targetabis
       
 91390 +        } else {
       
 91391 +            set abis { "" }
       
 91392 +        }
       
 91393 +        foreach opt $optimizations {
       
 91394 +            foreach abi $abis {
       
 91395 +                set options [concat $common $opt $abi]
       
 91396 +                verbose "Testing $testname, $options" 1
       
 91397 +                dg-test $test $options ""
       
 91398 +            }
       
 91399 +        }
       
 91400 +    }
       
 91401 +}
       
 91402 +
       
 91403 +# Like check_conditional_xfail, but callable from a dg test.
       
 91404 +
       
 91405 +proc dg-xfail-if { args } {
       
 91406 +    set args [lreplace $args 0 0]
       
 91407 +    set selector "target [join [lindex $args 1]]"
       
 91408 +    if { [dg-process-target $selector] == "S" } {
       
 91409 +	global compiler_conditional_xfail_data
       
 91410 +	set compiler_conditional_xfail_data $args
       
 91411 +    }
       
 91412 +}
       
 91413 +
       
 91414 +proc check-flags { args } {
       
 91415 +
       
 91416 +    # The args are within another list; pull them out.
       
 91417 +    set args [lindex $args 0]
       
 91418 +
       
 91419 +    # The next two arguments are optional.  If they were not specified,
       
 91420 +    # use the defaults.
       
 91421 +    if { [llength $args] == 2 } {
       
 91422 +	lappend $args [list "*"]
       
 91423 +    }
       
 91424 +    if { [llength $args] == 3 } {
       
 91425 +	lappend $args [list ""]
       
 91426 +    }
       
 91427 +
       
 91428 +    # If the option strings are the defaults, or the same as the
       
 91429 +    # defaults, there is no need to call check_conditional_xfail to
       
 91430 +    # compare them to the actual options.
       
 91431 +    if { [string compare [lindex $args 2] "*"] == 0
       
 91432 +	 && [string compare [lindex $args 3] "" ] == 0 } {
       
 91433 +	set result 1    
       
 91434 +    } else {
       
 91435 +	# The target list might be an effective-target keyword, so replace
       
 91436 +	# the original list with "*-*-*", since we already know it matches.
       
 91437 +	set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
       
 91438 +    }
       
 91439 +
       
 91440 +    return $result
       
 91441 +}
       
 91442 +
       
 91443 +proc dg-skip-if { args } {
       
 91444 +    # Verify the number of arguments.  The last two are optional.
       
 91445 +    set args [lreplace $args 0 0]
       
 91446 +    if { [llength $args] < 2 || [llength $args] > 4 } {
       
 91447 +        error "dg-skip-if 2: need 2, 3, or 4 arguments"
       
 91448 +    }
       
 91449 +
       
 91450 +    # Don't bother if we're already skipping the test.
       
 91451 +    upvar dg-do-what dg-do-what
       
 91452 +    if { [lindex ${dg-do-what} 1] == "N" } {
       
 91453 +      return
       
 91454 +    }
       
 91455 +
       
 91456 +    set selector [list target [lindex $args 1]]
       
 91457 +    if { [dg-process-target $selector] == "S" } {
       
 91458 +        if [check-flags $args] {
       
 91459 +            upvar dg-do-what dg-do-what
       
 91460 +            set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
       
 91461 +        }
       
 91462 +    }
       
 91463 +}
       
 91464 +
       
 91465 +# We need to make sure that additional_files and additional_sources
       
 91466 +# are both cleared out after every test.  It is not enough to clear
       
 91467 +# them out *before* the next test run because gcc-target-compile gets
       
 91468 +# run directly from some .exp files (outside of any test).  (Those
       
 91469 +# uses should eventually be eliminated.)
       
 91470 +
       
 91471 +# Because the DG framework doesn't provide a hook that is run at the
       
 91472 +# end of a test, we must replace dg-test with a wrapper.
       
 91473 +
       
 91474 +if { [info procs saved-dg-test] == [list] } {
       
 91475 +    rename dg-test saved-dg-test
       
 91476 +
       
 91477 +    proc dg-test { args } {
       
 91478 +	global additional_files
       
 91479 +	global additional_sources
       
 91480 +	global errorInfo
       
 91481 +
       
 91482 +	if { [ catch { eval saved-dg-test $args } errmsg ] } {
       
 91483 +	    set saved_info $errorInfo
       
 91484 +	    set additional_files ""
       
 91485 +	    set additional_sources ""
       
 91486 +	    error $errmsg $saved_info
       
 91487 +	}
       
 91488 +	set additional_files ""
       
 91489 +	set additional_sources ""
       
 91490 +    }
       
 91491 +}
       
 91492 +
       
 91493 +# Local Variables:
       
 91494 +# tcl-indent-level:4
       
 91495 +# End:
       
 91496 diff --git a/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp b/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp
       
 91497 --- a/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp
       
 91498 +++ b/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp
       
 91499 @@ -20,41 +20,43 @@ set orig_environment_saved 0
       
 91500  set orig_ld_library_path_saved 0
       
 91501  set orig_ld_run_path_saved 0
       
 91502  set orig_shlib_path_saved 0
       
 91503  set orig_ld_libraryn32_path_saved 0
       
 91504  set orig_ld_library64_path_saved 0
       
 91505  set orig_ld_library_path_32_saved 0
       
 91506  set orig_ld_library_path_64_saved 0
       
 91507  set orig_dyld_library_path_saved 0
       
 91508 -
       
 91509 +set orig_path_saved 0
       
 91510  
       
 91511  #######################################
       
 91512  # proc set_ld_library_path_env_vars { }
       
 91513  #######################################
       
 91514  
       
 91515  proc set_ld_library_path_env_vars { } {
       
 91516    global ld_library_path
       
 91517    global orig_environment_saved
       
 91518    global orig_ld_library_path_saved
       
 91519    global orig_ld_run_path_saved
       
 91520    global orig_shlib_path_saved
       
 91521    global orig_ld_libraryn32_path_saved
       
 91522    global orig_ld_library64_path_saved
       
 91523    global orig_ld_library_path_32_saved
       
 91524    global orig_ld_library_path_64_saved
       
 91525    global orig_dyld_library_path_saved
       
 91526 +  global orig_path_saved
       
 91527    global orig_ld_library_path
       
 91528    global orig_ld_run_path
       
 91529    global orig_shlib_path
       
 91530    global orig_ld_libraryn32_path
       
 91531    global orig_ld_library64_path
       
 91532    global orig_ld_library_path_32
       
 91533    global orig_ld_library_path_64
       
 91534    global orig_dyld_library_path
       
 91535 +  global orig_path
       
 91536    global GCC_EXEC_PREFIX
       
 91537  
       
 91538    # Set the relocated compiler prefix, but only if the user hasn't specified one.
       
 91539    if { [info exists GCC_EXEC_PREFIX] && ![info exists env(GCC_EXEC_PREFIX)] } {
       
 91540      setenv GCC_EXEC_PREFIX "$GCC_EXEC_PREFIX"
       
 91541    }
       
 91542  
       
 91543    # Setting the ld library path causes trouble when testing cross-compilers.
       
 91544 @@ -95,16 +97,20 @@ proc set_ld_library_path_env_vars { } {
       
 91545      if [info exists env(LD_LIBRARY_PATH_64)] {
       
 91546        set orig_ld_library_path_64 "$env(LD_LIBRARY_PATH_64)"
       
 91547        set orig_ld_library_path_64_saved 1
       
 91548      }
       
 91549      if [info exists env(DYLD_LIBRARY_PATH)] {
       
 91550        set orig_dyld_library_path "$env(DYLD_LIBRARY_PATH)"
       
 91551        set orig_dyld_library_path_saved 1
       
 91552      }
       
 91553 +    if [info exists env(PATH)] {
       
 91554 +      set orig_path "$env(PATH)"
       
 91555 +      set orig_path_saved 1
       
 91556 +    }
       
 91557    }
       
 91558  
       
 91559    # We need to set ld library path in the environment.  Currently,
       
 91560    # unix.exp doesn't set the environment correctly for all systems.
       
 91561    # It only sets SHLIB_PATH and LD_LIBRARY_PATH when it executes a
       
 91562    # program.  We also need the environment set for compilations, etc.
       
 91563    #
       
 91564    # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
       
 91565 @@ -164,16 +170,23 @@ proc set_ld_library_path_env_vars { } {
       
 91566    } else {
       
 91567      setenv LD_LIBRARY_PATH_64 "$ld_library_path"
       
 91568    }
       
 91569    if { $orig_dyld_library_path_saved } {
       
 91570      setenv DYLD_LIBRARY_PATH "$ld_library_path:$orig_dyld_library_path"
       
 91571    } else {
       
 91572      setenv DYLD_LIBRARY_PATH "$ld_library_path"
       
 91573    }
       
 91574 +  if { [istarget *-*-cygwin*] || [istarget *-*-mingw*] } {
       
 91575 +    if { $orig_path_saved } {
       
 91576 +      setenv PATH "$ld_library_path:$orig_path"
       
 91577 +    } else {
       
 91578 +      setenv PATH "$ld_library_path"
       
 91579 +    }
       
 91580 +  }
       
 91581  
       
 91582    verbose -log "set_ld_library_path_env_vars: ld_library_path=$ld_library_path"
       
 91583  }
       
 91584  
       
 91585  #######################################
       
 91586  # proc restore_ld_library_path_env_vars { }
       
 91587  #######################################
       
 91588  
       
 91589 @@ -182,24 +195,26 @@ proc restore_ld_library_path_env_vars { 
       
 91590    global orig_ld_library_path_saved
       
 91591    global orig_ld_run_path_saved
       
 91592    global orig_shlib_path_saved
       
 91593    global orig_ld_libraryn32_path_saved
       
 91594    global orig_ld_library64_path_saved
       
 91595    global orig_ld_library_path_32_saved
       
 91596    global orig_ld_library_path_64_saved
       
 91597    global orig_dyld_library_path_saved
       
 91598 +  global orig_path_saved
       
 91599    global orig_ld_library_path
       
 91600    global orig_ld_run_path
       
 91601    global orig_shlib_path
       
 91602    global orig_ld_libraryn32_path
       
 91603    global orig_ld_library64_path
       
 91604    global orig_ld_library_path_32
       
 91605    global orig_ld_library_path_64
       
 91606    global orig_dyld_library_path
       
 91607 +  global orig_path
       
 91608  
       
 91609    if { $orig_environment_saved == 0 } {
       
 91610      return
       
 91611    }
       
 91612  
       
 91613    if { $orig_ld_library_path_saved } {
       
 91614      setenv LD_LIBRARY_PATH "$orig_ld_library_path"
       
 91615    } elseif [info exists env(LD_LIBRARY_PATH)] {
       
 91616 @@ -235,16 +250,21 @@ proc restore_ld_library_path_env_vars { 
       
 91617    } elseif [info exists env(LD_LIBRARY_PATH_64)] {
       
 91618      unsetenv LD_LIBRARY_PATH_64
       
 91619    }
       
 91620    if { $orig_dyld_library_path_saved } {
       
 91621      setenv DYLD_LIBRARY_PATH "$orig_dyld_library_path"
       
 91622    } elseif [info exists env(DYLD_LIBRARY_PATH)] {
       
 91623      unsetenv DYLD_LIBRARY_PATH
       
 91624    }
       
 91625 +  if { $orig_path_saved } {
       
 91626 +    setenv PATH "$orig_path"
       
 91627 +  } elseif [info exists env(PATH)] {
       
 91628 +    unsetenv PATH
       
 91629 +  }
       
 91630  }
       
 91631  
       
 91632  #######################################
       
 91633  # proc get_shlib_extension { }
       
 91634  #######################################
       
 91635  
       
 91636  proc get_shlib_extension { } {
       
 91637      global shlib_ext
       
 91638 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/call.exp b/js/src/ctypes/libffi/testsuite/libffi.call/call.exp
       
 91639 --- a/js/src/ctypes/libffi/testsuite/libffi.call/call.exp
       
 91640 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/call.exp
       
 91641 @@ -1,36 +1,31 @@
       
 91642 -# Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc.
       
 91643 +# Copyright (C) 2003, 2006, 2009, 2010 Free Software Foundation, Inc.
       
 91644  
       
 91645  # This program is free software; you can redistribute it and/or modify
       
 91646  # it under the terms of the GNU General Public License as published by
       
 91647  # the Free Software Foundation; either version 3 of the License, or
       
 91648  # (at your option) any later version.
       
 91649  #
       
 91650  # This program is distributed in the hope that it will be useful,
       
 91651  # but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 91652  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 91653  # GNU General Public License for more details.
       
 91654  #
       
 91655  # You should have received a copy of the GNU General Public License
       
 91656  # along with this program; see the file COPYING3.  If not see
       
 91657  # <http://www.gnu.org/licenses/>.
       
 91658  
       
 91659 -# libffi testsuite that uses the 'dg.exp' driver.
       
 91660 -
       
 91661 -load_lib libffi-dg.exp
       
 91662 -
       
 91663  dg-init
       
 91664  libffi-init
       
 91665  
       
 91666  global srcdir subdir
       
 91667  
       
 91668 -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O0 -W -Wall" ""
       
 91669 -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2" ""
       
 91670 -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O3" ""
       
 91671 -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-Os" ""
       
 91672 -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2 -fomit-frame-pointer" ""
       
 91673 +run-many-tests [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] ""
       
 91674 +if { [string match $using_gcc "yes"] } {
       
 91675 +  run-many-tests [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] "-shared-libgcc -lstdc++"
       
 91676 +}
       
 91677  
       
 91678  dg-finish
       
 91679  
       
 91680  # Local Variables:
       
 91681  # tcl-indent-level:4
       
 91682  # End:
       
 91683 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c b/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c
       
 91684 --- a/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c
       
 91685 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c
       
 91686 @@ -1,15 +1,15 @@
       
 91687  /* Area:	closure_call (stdcall convention)
       
 91688     Purpose:	Check handling when caller expects stdcall callee
       
 91689     Limitations:	none.
       
 91690     PR:		none.
       
 91691     Originator:	<twalljava@dev.java.net> */
       
 91692  
       
 91693 -/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */
       
 91694 +/* { dg-do run { target i?86-*-* } } */
       
 91695  #include "ffitest.h"
       
 91696  
       
 91697  static void
       
 91698  closure_test_stdcall(ffi_cif* cif __UNUSED__, void* resp, void** args,
       
 91699  		 void* userdata)
       
 91700  {
       
 91701    *(ffi_arg*)resp =
       
 91702      (int)*(int *)args[0] + (int)(*(int *)args[1])
       
 91703 @@ -18,47 +18,39 @@ closure_test_stdcall(ffi_cif* cif __UNUS
       
 91704  
       
 91705    printf("%d %d %d %d: %d\n",
       
 91706  	 (int)*(int *)args[0], (int)(*(int *)args[1]),
       
 91707  	 (int)(*(int *)args[2]), (int)(*(int *)args[3]),
       
 91708           (int)*(ffi_arg *)resp);
       
 91709  
       
 91710  }
       
 91711  
       
 91712 -typedef int (__stdcall *closure_test_type0)(int, int, int, int);
       
 91713 +typedef int (__STDCALL__ *closure_test_type0)(int, int, int, int);
       
 91714  
       
 91715  int main (void)
       
 91716  {
       
 91717    ffi_cif cif;
       
 91718    void *code;
       
 91719    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 91720    ffi_type * cl_arg_types[17];
       
 91721    int res;
       
 91722 -  void* sp_pre;
       
 91723 -  void* sp_post;
       
 91724 -  char buf[1024];
       
 91725  
       
 91726    cl_arg_types[0] = &ffi_type_uint;
       
 91727    cl_arg_types[1] = &ffi_type_uint;
       
 91728    cl_arg_types[2] = &ffi_type_uint;
       
 91729    cl_arg_types[3] = &ffi_type_uint;
       
 91730    cl_arg_types[4] = NULL;
       
 91731  
       
 91732    /* Initialize the cif */
       
 91733    CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 4,
       
 91734  		     &ffi_type_sint, cl_arg_types) == FFI_OK);
       
 91735  
       
 91736    CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_stdcall,
       
 91737                               (void *) 3 /* userdata */, code) == FFI_OK);
       
 91738  
       
 91739 -  asm volatile (" movl %%esp,%0" : "=g" (sp_pre));
       
 91740    res = (*(closure_test_type0)code)(0, 1, 2, 3);
       
 91741 -  asm volatile (" movl %%esp,%0" : "=g" (sp_post));
       
 91742    /* { dg-output "0 1 2 3: 9" } */
       
 91743  
       
 91744    printf("res: %d\n",res);
       
 91745    /* { dg-output "\nres: 9" } */
       
 91746  
       
 91747 -  sprintf(buf, "mismatch: pre=%p vs post=%p", sp_pre, sp_post);
       
 91748 -  printf("stack pointer %s\n", (sp_pre == sp_post ? "match" : buf));
       
 91749 -  /* { dg-output "\nstack pointer match" } */
       
 91750    exit(0);
       
 91751  }
       
 91752 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/closure_thiscall.c b/js/src/ctypes/libffi/testsuite/libffi.call/closure_thiscall.c
       
 91753 new file mode 100644
       
 91754 --- /dev/null
       
 91755 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/closure_thiscall.c
       
 91756 @@ -0,0 +1,56 @@
       
 91757 +/* Area:	closure_call (thiscall convention)
       
 91758 +   Purpose:	Check handling when caller expects thiscall callee
       
 91759 +   Limitations:	none.
       
 91760 +   PR:		none.
       
 91761 +   Originator:	<ktietz@redhat.com> */
       
 91762 +
       
 91763 +/* { dg-do run { target i?86-*-* } } */
       
 91764 +#include "ffitest.h"
       
 91765 +
       
 91766 +static void
       
 91767 +closure_test_thiscall(ffi_cif* cif __UNUSED__, void* resp, void** args,
       
 91768 +		      void* userdata)
       
 91769 +{
       
 91770 +  *(ffi_arg*)resp =
       
 91771 +    (int)*(int *)args[0] + (int)(*(int *)args[1])
       
 91772 +    + (int)(*(int *)args[2])  + (int)(*(int *)args[3])
       
 91773 +    + (int)(intptr_t)userdata;
       
 91774 +
       
 91775 +  printf("%d %d %d %d: %d\n",
       
 91776 +	 (int)*(int *)args[0], (int)(*(int *)args[1]),
       
 91777 +	 (int)(*(int *)args[2]), (int)(*(int *)args[3]),
       
 91778 +         (int)*(ffi_arg *)resp);
       
 91779 +
       
 91780 +}
       
 91781 +
       
 91782 +typedef int (__THISCALL__ *closure_test_type0)(int, int, int, int);
       
 91783 +
       
 91784 +int main (void)
       
 91785 +{
       
 91786 +  ffi_cif cif;
       
 91787 +  void *code;
       
 91788 +  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 91789 +  ffi_type * cl_arg_types[17];
       
 91790 +  int res;
       
 91791 +
       
 91792 +  cl_arg_types[0] = &ffi_type_uint;
       
 91793 +  cl_arg_types[1] = &ffi_type_uint;
       
 91794 +  cl_arg_types[2] = &ffi_type_uint;
       
 91795 +  cl_arg_types[3] = &ffi_type_uint;
       
 91796 +  cl_arg_types[4] = NULL;
       
 91797 +
       
 91798 +  /* Initialize the cif */
       
 91799 +  CHECK(ffi_prep_cif(&cif, FFI_THISCALL, 4,
       
 91800 +		     &ffi_type_sint, cl_arg_types) == FFI_OK);
       
 91801 +
       
 91802 +  CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_thiscall,
       
 91803 +                             (void *) 3 /* userdata */, code) == FFI_OK);
       
 91804 +
       
 91805 +  res = (*(closure_test_type0)code)(0, 1, 2, 3);
       
 91806 +  /* { dg-output "0 1 2 3: 9" } */
       
 91807 +
       
 91808 +  printf("res: %d\n",res);
       
 91809 +  /* { dg-output "\nres: 9" } */
       
 91810 +
       
 91811 +  exit(0);
       
 91812 +}
       
 91813 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c
       
 91814 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c
       
 91815 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c
       
 91816 @@ -44,25 +44,25 @@ int main (void)
       
 91817    ffi_cif cif;
       
 91818    void *code;
       
 91819    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 91820    void* args_dbl[5];
       
 91821    ffi_type* cls_struct_fields[4];
       
 91822    ffi_type cls_struct_type;
       
 91823    ffi_type* dbl_arg_types[5];
       
 91824  
       
 91825 +  struct cls_struct_12byte h_dbl = { 7, 4, 9 };
       
 91826 +  struct cls_struct_12byte j_dbl = { 1, 5, 3 };
       
 91827 +  struct cls_struct_12byte res_dbl;
       
 91828 +
       
 91829    cls_struct_type.size = 0;
       
 91830    cls_struct_type.alignment = 0;
       
 91831    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 91832    cls_struct_type.elements = cls_struct_fields;
       
 91833  
       
 91834 -  struct cls_struct_12byte h_dbl = { 7, 4, 9 };
       
 91835 -  struct cls_struct_12byte j_dbl = { 1, 5, 3 };
       
 91836 -  struct cls_struct_12byte res_dbl;
       
 91837 -
       
 91838    cls_struct_fields[0] = &ffi_type_sint;
       
 91839    cls_struct_fields[1] = &ffi_type_sint;
       
 91840    cls_struct_fields[2] = &ffi_type_sint;
       
 91841    cls_struct_fields[3] = NULL;
       
 91842  
       
 91843    dbl_arg_types[0] = &cls_struct_type;
       
 91844    dbl_arg_types[1] = &cls_struct_type;
       
 91845    dbl_arg_types[2] = NULL;
       
 91846 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c
       
 91847 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c
       
 91848 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c
       
 91849 @@ -45,25 +45,25 @@ int main (void)
       
 91850    ffi_cif cif;
       
 91851    void *code;
       
 91852    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 91853    void* args_dbl[5];
       
 91854    ffi_type* cls_struct_fields[4];
       
 91855    ffi_type cls_struct_type;
       
 91856    ffi_type* dbl_arg_types[5];
       
 91857  
       
 91858 +  struct cls_struct_16byte h_dbl = { 7, 8.0, 9 };
       
 91859 +  struct cls_struct_16byte j_dbl = { 1, 9.0, 3 };
       
 91860 +  struct cls_struct_16byte res_dbl;
       
 91861 +
       
 91862    cls_struct_type.size = 0;
       
 91863    cls_struct_type.alignment = 0;
       
 91864    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 91865    cls_struct_type.elements = cls_struct_fields;
       
 91866  
       
 91867 -  struct cls_struct_16byte h_dbl = { 7, 8.0, 9 };
       
 91868 -  struct cls_struct_16byte j_dbl = { 1, 9.0, 3 };
       
 91869 -  struct cls_struct_16byte res_dbl;
       
 91870 -
       
 91871    cls_struct_fields[0] = &ffi_type_sint;
       
 91872    cls_struct_fields[1] = &ffi_type_double;
       
 91873    cls_struct_fields[2] = &ffi_type_sint;
       
 91874    cls_struct_fields[3] = NULL;
       
 91875  
       
 91876    dbl_arg_types[0] = &cls_struct_type;
       
 91877    dbl_arg_types[1] = &cls_struct_type;
       
 91878    dbl_arg_types[2] = NULL;
       
 91879 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c
       
 91880 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c
       
 91881 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c
       
 91882 @@ -49,25 +49,25 @@ int main (void)
       
 91883    ffi_cif cif;
       
 91884    void *code;
       
 91885    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 91886    void* args_dbl[3];
       
 91887    ffi_type* cls_struct_fields[5];
       
 91888    ffi_type cls_struct_type;
       
 91889    ffi_type* dbl_arg_types[3];
       
 91890  
       
 91891 +  struct cls_struct_18byte g_dbl = { 1.0, 127, 126, 3.0 };
       
 91892 +  struct cls_struct_18byte f_dbl = { 4.0, 125, 124, 5.0 };
       
 91893 +  struct cls_struct_18byte res_dbl;
       
 91894 +
       
 91895    cls_struct_type.size = 0;
       
 91896    cls_struct_type.alignment = 0;
       
 91897    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 91898    cls_struct_type.elements = cls_struct_fields;
       
 91899  
       
 91900 -  struct cls_struct_18byte g_dbl = { 1.0, 127, 126, 3.0 };
       
 91901 -  struct cls_struct_18byte f_dbl = { 4.0, 125, 124, 5.0 };
       
 91902 -  struct cls_struct_18byte res_dbl;
       
 91903 -
       
 91904    cls_struct_fields[0] = &ffi_type_double;
       
 91905    cls_struct_fields[1] = &ffi_type_uchar;
       
 91906    cls_struct_fields[2] = &ffi_type_uchar;
       
 91907    cls_struct_fields[3] = &ffi_type_double;
       
 91908    cls_struct_fields[4] = NULL;
       
 91909  
       
 91910    dbl_arg_types[0] = &cls_struct_type;
       
 91911    dbl_arg_types[1] = &cls_struct_type;
       
 91912 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c
       
 91913 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c
       
 91914 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c
       
 91915 @@ -52,25 +52,25 @@ int main (void)
       
 91916    ffi_cif cif;
       
 91917    void *code;
       
 91918    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 91919    void* args_dbl[3];
       
 91920    ffi_type* cls_struct_fields[6];
       
 91921    ffi_type cls_struct_type;
       
 91922    ffi_type* dbl_arg_types[3];
       
 91923  
       
 91924 +  struct cls_struct_19byte g_dbl = { 1.0, 127, 126, 3.0, 120 };
       
 91925 +  struct cls_struct_19byte f_dbl = { 4.0, 125, 124, 5.0, 119 };
       
 91926 +  struct cls_struct_19byte res_dbl;
       
 91927 +
       
 91928    cls_struct_type.size = 0;
       
 91929    cls_struct_type.alignment = 0;
       
 91930    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 91931    cls_struct_type.elements = cls_struct_fields;
       
 91932  
       
 91933 -  struct cls_struct_19byte g_dbl = { 1.0, 127, 126, 3.0, 120 };
       
 91934 -  struct cls_struct_19byte f_dbl = { 4.0, 125, 124, 5.0, 119 };
       
 91935 -  struct cls_struct_19byte res_dbl;
       
 91936 -
       
 91937    cls_struct_fields[0] = &ffi_type_double;
       
 91938    cls_struct_fields[1] = &ffi_type_uchar;
       
 91939    cls_struct_fields[2] = &ffi_type_uchar;
       
 91940    cls_struct_fields[3] = &ffi_type_double;
       
 91941    cls_struct_fields[4] = &ffi_type_uchar;
       
 91942    cls_struct_fields[5] = NULL;
       
 91943  
       
 91944    dbl_arg_types[0] = &cls_struct_type;
       
 91945 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
       
 91946 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c
       
 91947 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c
       
 91948 @@ -45,25 +45,25 @@ int main (void)
       
 91949    ffi_cif cif;
       
 91950    void *code;
       
 91951    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 91952    void* args_dbl[5];
       
 91953    ffi_type* cls_struct_fields[2];
       
 91954    ffi_type cls_struct_type;
       
 91955    ffi_type* dbl_arg_types[5];
       
 91956  
       
 91957 +  struct cls_struct_1_1byte g_dbl = { 12 };
       
 91958 +  struct cls_struct_1_1byte f_dbl = { 178 };
       
 91959 +  struct cls_struct_1_1byte res_dbl;
       
 91960 +
       
 91961    cls_struct_type.size = 0;
       
 91962    cls_struct_type.alignment = 0;
       
 91963    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 91964    cls_struct_type.elements = cls_struct_fields;
       
 91965  
       
 91966 -  struct cls_struct_1_1byte g_dbl = { 12 };
       
 91967 -  struct cls_struct_1_1byte f_dbl = { 178 };
       
 91968 -  struct cls_struct_1_1byte res_dbl;
       
 91969 -
       
 91970    cls_struct_fields[0] = &ffi_type_uchar;
       
 91971    cls_struct_fields[1] = NULL;
       
 91972  
       
 91973    dbl_arg_types[0] = &cls_struct_type;
       
 91974    dbl_arg_types[1] = &cls_struct_type;
       
 91975    dbl_arg_types[2] = NULL;
       
 91976  
       
 91977    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type,
       
 91978 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c
       
 91979 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c
       
 91980 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c
       
 91981 @@ -45,25 +45,25 @@ int main (void)
       
 91982    ffi_cif cif;
       
 91983    void *code;
       
 91984    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 91985    void* args_dbl[5];
       
 91986    ffi_type* cls_struct_fields[4];
       
 91987    ffi_type cls_struct_type;
       
 91988    ffi_type* dbl_arg_types[5];
       
 91989  
       
 91990 +  struct cls_struct_20byte g_dbl = { 1.0, 2.0, 3 };
       
 91991 +  struct cls_struct_20byte f_dbl = { 4.0, 5.0, 7 };
       
 91992 +  struct cls_struct_20byte res_dbl;
       
 91993 +
       
 91994    cls_struct_type.size = 0;
       
 91995    cls_struct_type.alignment = 0;
       
 91996    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 91997    cls_struct_type.elements = cls_struct_fields;
       
 91998  
       
 91999 -  struct cls_struct_20byte g_dbl = { 1.0, 2.0, 3 };
       
 92000 -  struct cls_struct_20byte f_dbl = { 4.0, 5.0, 7 };
       
 92001 -  struct cls_struct_20byte res_dbl;
       
 92002 -
       
 92003    cls_struct_fields[0] = &ffi_type_double;
       
 92004    cls_struct_fields[1] = &ffi_type_double;
       
 92005    cls_struct_fields[2] = &ffi_type_sint;
       
 92006    cls_struct_fields[3] = NULL;
       
 92007  
       
 92008    dbl_arg_types[0] = &cls_struct_type;
       
 92009    dbl_arg_types[1] = &cls_struct_type;
       
 92010    dbl_arg_types[2] = NULL;
       
 92011 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c
       
 92012 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c
       
 92013 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c
       
 92014 @@ -47,25 +47,25 @@ int main (void)
       
 92015    ffi_cif cif;
       
 92016    void *code;
       
 92017    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92018    void* args_dbl[3];
       
 92019    ffi_type* cls_struct_fields[4];
       
 92020    ffi_type cls_struct_type;
       
 92021    ffi_type* dbl_arg_types[3];
       
 92022  
       
 92023 +  struct cls_struct_20byte g_dbl = { 1, 2.0, 3.0 };
       
 92024 +  struct cls_struct_20byte f_dbl = { 4, 5.0, 7.0 };
       
 92025 +  struct cls_struct_20byte res_dbl;
       
 92026 +
       
 92027    cls_struct_type.size = 0;
       
 92028    cls_struct_type.alignment = 0;
       
 92029    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92030    cls_struct_type.elements = cls_struct_fields;
       
 92031  
       
 92032 -  struct cls_struct_20byte g_dbl = { 1, 2.0, 3.0 };
       
 92033 -  struct cls_struct_20byte f_dbl = { 4, 5.0, 7.0 };
       
 92034 -  struct cls_struct_20byte res_dbl;
       
 92035 -
       
 92036    cls_struct_fields[0] = &ffi_type_sint;
       
 92037    cls_struct_fields[1] = &ffi_type_double;
       
 92038    cls_struct_fields[2] = &ffi_type_double;
       
 92039    cls_struct_fields[3] = NULL;
       
 92040  
       
 92041    dbl_arg_types[0] = &cls_struct_type;
       
 92042    dbl_arg_types[1] = &cls_struct_type;
       
 92043    dbl_arg_types[2] = NULL;
       
 92044 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c
       
 92045 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c
       
 92046 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c
       
 92047 @@ -56,27 +56,27 @@ int main (void)
       
 92048    ffi_cif cif;
       
 92049    void *code;
       
 92050    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92051    void* args_dbl[5];
       
 92052    ffi_type* cls_struct_fields[5];
       
 92053    ffi_type cls_struct_type;
       
 92054    ffi_type* dbl_arg_types[5];
       
 92055  
       
 92056 -  cls_struct_type.size = 0;
       
 92057 -  cls_struct_type.alignment = 0;
       
 92058 -  cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92059 -  cls_struct_type.elements = cls_struct_fields;
       
 92060 -
       
 92061    struct cls_struct_24byte e_dbl = { 9.0, 2.0, 6, 5.0 };
       
 92062    struct cls_struct_24byte f_dbl = { 1.0, 2.0, 3, 7.0 };
       
 92063    struct cls_struct_24byte g_dbl = { 4.0, 5.0, 7, 9.0 };
       
 92064    struct cls_struct_24byte h_dbl = { 8.0, 6.0, 1, 4.0 };
       
 92065    struct cls_struct_24byte res_dbl;
       
 92066  
       
 92067 +  cls_struct_type.size = 0;
       
 92068 +  cls_struct_type.alignment = 0;
       
 92069 +  cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92070 +  cls_struct_type.elements = cls_struct_fields;
       
 92071 +
       
 92072    cls_struct_fields[0] = &ffi_type_double;
       
 92073    cls_struct_fields[1] = &ffi_type_double;
       
 92074    cls_struct_fields[2] = &ffi_type_sint;
       
 92075    cls_struct_fields[3] = &ffi_type_float;
       
 92076    cls_struct_fields[4] = NULL;
       
 92077  
       
 92078    dbl_arg_types[0] = &cls_struct_type;
       
 92079    dbl_arg_types[1] = &cls_struct_type;
       
 92080 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c
       
 92081 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c
       
 92082 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c
       
 92083 @@ -45,25 +45,25 @@ int main (void)
       
 92084    ffi_cif cif;
       
 92085    void *code;
       
 92086    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92087    void* args_dbl[5];
       
 92088    ffi_type* cls_struct_fields[4];
       
 92089    ffi_type cls_struct_type;
       
 92090    ffi_type* dbl_arg_types[5];
       
 92091  
       
 92092 +  struct cls_struct_2byte g_dbl = { 12, 127 };
       
 92093 +  struct cls_struct_2byte f_dbl = { 1, 13 };
       
 92094 +  struct cls_struct_2byte res_dbl;
       
 92095 +
       
 92096    cls_struct_type.size = 0;
       
 92097    cls_struct_type.alignment = 0;
       
 92098    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92099    cls_struct_type.elements = cls_struct_fields;
       
 92100  
       
 92101 -  struct cls_struct_2byte g_dbl = { 12, 127 };
       
 92102 -  struct cls_struct_2byte f_dbl = { 1, 13 };
       
 92103 -  struct cls_struct_2byte res_dbl;
       
 92104 -
       
 92105    cls_struct_fields[0] = &ffi_type_uchar;
       
 92106    cls_struct_fields[1] = &ffi_type_uchar;
       
 92107    cls_struct_fields[2] = NULL;
       
 92108  
       
 92109    dbl_arg_types[0] = &cls_struct_type;
       
 92110    dbl_arg_types[1] = &cls_struct_type;
       
 92111    dbl_arg_types[2] = NULL;
       
 92112  
       
 92113 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
       
 92114 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c
       
 92115 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c
       
 92116 @@ -49,25 +49,25 @@ int main (void)
       
 92117    ffi_cif cif;
       
 92118    void *code;
       
 92119    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92120    void* args_dbl[5];
       
 92121    ffi_type* cls_struct_fields[4];
       
 92122    ffi_type cls_struct_type;
       
 92123    ffi_type* dbl_arg_types[5];
       
 92124  
       
 92125 +  struct cls_struct_3_1byte g_dbl = { 12, 13, 14 };
       
 92126 +  struct cls_struct_3_1byte f_dbl = { 178, 179, 180 };
       
 92127 +  struct cls_struct_3_1byte res_dbl;
       
 92128 +
       
 92129    cls_struct_type.size = 0;
       
 92130    cls_struct_type.alignment = 0;
       
 92131    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92132    cls_struct_type.elements = cls_struct_fields;
       
 92133  
       
 92134 -  struct cls_struct_3_1byte g_dbl = { 12, 13, 14 };
       
 92135 -  struct cls_struct_3_1byte f_dbl = { 178, 179, 180 };
       
 92136 -  struct cls_struct_3_1byte res_dbl;
       
 92137 -
       
 92138    cls_struct_fields[0] = &ffi_type_uchar;
       
 92139    cls_struct_fields[1] = &ffi_type_uchar;
       
 92140    cls_struct_fields[2] = &ffi_type_uchar;
       
 92141    cls_struct_fields[3] = NULL;
       
 92142  
       
 92143    dbl_arg_types[0] = &cls_struct_type;
       
 92144    dbl_arg_types[1] = &cls_struct_type;
       
 92145    dbl_arg_types[2] = NULL;
       
 92146 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c
       
 92147 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c
       
 92148 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c
       
 92149 @@ -45,25 +45,25 @@ int main (void)
       
 92150    ffi_cif cif;
       
 92151    void *code;
       
 92152    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92153    void* args_dbl[5];
       
 92154    ffi_type* cls_struct_fields[4];
       
 92155    ffi_type cls_struct_type;
       
 92156    ffi_type* dbl_arg_types[5];
       
 92157  
       
 92158 +  struct cls_struct_3byte g_dbl = { 12, 119 };
       
 92159 +  struct cls_struct_3byte f_dbl = { 1, 15 };
       
 92160 +  struct cls_struct_3byte res_dbl;
       
 92161 +
       
 92162    cls_struct_type.size = 0;
       
 92163    cls_struct_type.alignment = 0;
       
 92164    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92165    cls_struct_type.elements = cls_struct_fields;
       
 92166  
       
 92167 -  struct cls_struct_3byte g_dbl = { 12, 119 };
       
 92168 -  struct cls_struct_3byte f_dbl = { 1, 15 };
       
 92169 -  struct cls_struct_3byte res_dbl;
       
 92170 -
       
 92171    cls_struct_fields[0] = &ffi_type_ushort;
       
 92172    cls_struct_fields[1] = &ffi_type_uchar;
       
 92173    cls_struct_fields[2] = NULL;
       
 92174  
       
 92175    dbl_arg_types[0] = &cls_struct_type;
       
 92176    dbl_arg_types[1] = &cls_struct_type;
       
 92177    dbl_arg_types[2] = NULL;
       
 92178  
       
 92179 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c
       
 92180 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c
       
 92181 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c
       
 92182 @@ -45,25 +45,25 @@ int main (void)
       
 92183    ffi_cif cif;
       
 92184    void *code;
       
 92185    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92186    void* args_dbl[5];
       
 92187    ffi_type* cls_struct_fields[4];
       
 92188    ffi_type cls_struct_type;
       
 92189    ffi_type* dbl_arg_types[5];
       
 92190  
       
 92191 +  struct cls_struct_3byte_1 g_dbl = { 15, 125 };
       
 92192 +  struct cls_struct_3byte_1 f_dbl = { 9, 19 };
       
 92193 +  struct cls_struct_3byte_1 res_dbl;
       
 92194 +
       
 92195    cls_struct_type.size = 0;
       
 92196    cls_struct_type.alignment = 0;
       
 92197    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92198    cls_struct_type.elements = cls_struct_fields;
       
 92199  
       
 92200 -  struct cls_struct_3byte_1 g_dbl = { 15, 125 };
       
 92201 -  struct cls_struct_3byte_1 f_dbl = { 9, 19 };
       
 92202 -  struct cls_struct_3byte_1 res_dbl;
       
 92203 -
       
 92204    cls_struct_fields[0] = &ffi_type_uchar;
       
 92205    cls_struct_fields[1] = &ffi_type_ushort;
       
 92206    cls_struct_fields[2] = NULL;
       
 92207  
       
 92208    dbl_arg_types[0] = &cls_struct_type;
       
 92209    dbl_arg_types[1] = &cls_struct_type;
       
 92210    dbl_arg_types[2] = NULL;
       
 92211  
       
 92212 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
       
 92213 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c
       
 92214 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c
       
 92215 @@ -51,25 +51,25 @@ int main (void)
       
 92216    ffi_cif cif;
       
 92217    void *code;
       
 92218    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92219    void* args_dbl[5];
       
 92220    ffi_type* cls_struct_fields[5];
       
 92221    ffi_type cls_struct_type;
       
 92222    ffi_type* dbl_arg_types[5];
       
 92223  
       
 92224 +  struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 };
       
 92225 +  struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 };
       
 92226 +  struct cls_struct_4_1byte res_dbl;
       
 92227 +
       
 92228    cls_struct_type.size = 0;
       
 92229    cls_struct_type.alignment = 0;
       
 92230    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92231    cls_struct_type.elements = cls_struct_fields;
       
 92232  
       
 92233 -  struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 };
       
 92234 -  struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 };
       
 92235 -  struct cls_struct_4_1byte res_dbl;
       
 92236 -
       
 92237    cls_struct_fields[0] = &ffi_type_uchar;
       
 92238    cls_struct_fields[1] = &ffi_type_uchar;
       
 92239    cls_struct_fields[2] = &ffi_type_uchar;
       
 92240    cls_struct_fields[3] = &ffi_type_uchar;
       
 92241    cls_struct_fields[4] = NULL;
       
 92242  
       
 92243    dbl_arg_types[0] = &cls_struct_type;
       
 92244    dbl_arg_types[1] = &cls_struct_type;
       
 92245 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c
       
 92246 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c
       
 92247 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c
       
 92248 @@ -45,25 +45,25 @@ int main (void)
       
 92249    ffi_cif cif;
       
 92250    void *code;
       
 92251    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92252    void* args_dbl[5];
       
 92253    ffi_type* cls_struct_fields[4];
       
 92254    ffi_type cls_struct_type;
       
 92255    ffi_type* dbl_arg_types[5];
       
 92256  
       
 92257 +  struct cls_struct_4byte g_dbl = { 127, 120 };
       
 92258 +  struct cls_struct_4byte f_dbl = { 12, 128 };
       
 92259 +  struct cls_struct_4byte res_dbl;
       
 92260 +
       
 92261    cls_struct_type.size = 0;
       
 92262    cls_struct_type.alignment = 0;
       
 92263    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92264    cls_struct_type.elements = cls_struct_fields;
       
 92265  
       
 92266 -  struct cls_struct_4byte g_dbl = { 127, 120 };
       
 92267 -  struct cls_struct_4byte f_dbl = { 12, 128 };
       
 92268 -  struct cls_struct_4byte res_dbl;
       
 92269 -
       
 92270    cls_struct_fields[0] = &ffi_type_ushort;
       
 92271    cls_struct_fields[1] = &ffi_type_ushort;
       
 92272    cls_struct_fields[2] = NULL;
       
 92273  
       
 92274    dbl_arg_types[0] = &cls_struct_type;
       
 92275    dbl_arg_types[1] = &cls_struct_type;
       
 92276    dbl_arg_types[2] = NULL;
       
 92277  
       
 92278 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
       
 92279 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c
       
 92280 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c
       
 92281 @@ -53,25 +53,25 @@ int main (void)
       
 92282    ffi_cif cif;
       
 92283    void *code;
       
 92284    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92285    void* args_dbl[5];
       
 92286    ffi_type* cls_struct_fields[6];
       
 92287    ffi_type cls_struct_type;
       
 92288    ffi_type* dbl_arg_types[5];
       
 92289  
       
 92290 +  struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 };
       
 92291 +  struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 };
       
 92292 +  struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 };
       
 92293 +
       
 92294    cls_struct_type.size = 0;
       
 92295    cls_struct_type.alignment = 0;
       
 92296    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92297    cls_struct_type.elements = cls_struct_fields;
       
 92298  
       
 92299 -  struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 };
       
 92300 -  struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 };
       
 92301 -  struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 };
       
 92302 -
       
 92303    cls_struct_fields[0] = &ffi_type_uchar;
       
 92304    cls_struct_fields[1] = &ffi_type_uchar;
       
 92305    cls_struct_fields[2] = &ffi_type_uchar;
       
 92306    cls_struct_fields[3] = &ffi_type_uchar;
       
 92307    cls_struct_fields[4] = &ffi_type_uchar;
       
 92308    cls_struct_fields[5] = NULL;
       
 92309  
       
 92310    dbl_arg_types[0] = &cls_struct_type;
       
 92311 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c
       
 92312 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c
       
 92313 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c
       
 92314 @@ -48,25 +48,25 @@ int main (void)
       
 92315    ffi_cif cif;
       
 92316    void *code;
       
 92317    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92318    void* args_dbl[5];
       
 92319    ffi_type* cls_struct_fields[4];
       
 92320    ffi_type cls_struct_type;
       
 92321    ffi_type* dbl_arg_types[5];
       
 92322  
       
 92323 +  struct cls_struct_5byte g_dbl = { 127, 120, 1 };
       
 92324 +  struct cls_struct_5byte f_dbl = { 12, 128, 9 };
       
 92325 +  struct cls_struct_5byte res_dbl = { 0, 0, 0 };
       
 92326 +
       
 92327    cls_struct_type.size = 0;
       
 92328    cls_struct_type.alignment = 0;
       
 92329    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92330    cls_struct_type.elements = cls_struct_fields;
       
 92331  
       
 92332 -  struct cls_struct_5byte g_dbl = { 127, 120, 1 };
       
 92333 -  struct cls_struct_5byte f_dbl = { 12, 128, 9 };
       
 92334 -  struct cls_struct_5byte res_dbl = { 0, 0, 0 };
       
 92335 -
       
 92336    cls_struct_fields[0] = &ffi_type_ushort;
       
 92337    cls_struct_fields[1] = &ffi_type_ushort;
       
 92338    cls_struct_fields[2] = &ffi_type_uchar;
       
 92339    cls_struct_fields[3] = NULL;
       
 92340  
       
 92341    dbl_arg_types[0] = &cls_struct_type;
       
 92342    dbl_arg_types[1] = &cls_struct_type;
       
 92343    dbl_arg_types[2] = NULL;
       
 92344 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c
       
 92345 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c
       
 92346 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c
       
 92347 @@ -61,27 +61,27 @@ int main (void)
       
 92348    ffi_cif cif;
       
 92349    void *code;
       
 92350    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92351    void* args_dbl[5];
       
 92352    ffi_type* cls_struct_fields[9];
       
 92353    ffi_type cls_struct_type;
       
 92354    ffi_type* dbl_arg_types[5];
       
 92355  
       
 92356 -  cls_struct_type.size = 0;
       
 92357 -  cls_struct_type.alignment = 0;
       
 92358 -  cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92359 -  cls_struct_type.elements = cls_struct_fields;
       
 92360 -
       
 92361    struct cls_struct_64byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0 };
       
 92362    struct cls_struct_64byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0 };
       
 92363    struct cls_struct_64byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0 };
       
 92364    struct cls_struct_64byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0 };
       
 92365    struct cls_struct_64byte res_dbl;
       
 92366  
       
 92367 +  cls_struct_type.size = 0;
       
 92368 +  cls_struct_type.alignment = 0;
       
 92369 +  cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92370 +  cls_struct_type.elements = cls_struct_fields;
       
 92371 +
       
 92372    cls_struct_fields[0] = &ffi_type_double;
       
 92373    cls_struct_fields[1] = &ffi_type_double;
       
 92374    cls_struct_fields[2] = &ffi_type_double;
       
 92375    cls_struct_fields[3] = &ffi_type_double;
       
 92376    cls_struct_fields[4] = &ffi_type_double;
       
 92377    cls_struct_fields[5] = &ffi_type_double;
       
 92378    cls_struct_fields[6] = &ffi_type_double;
       
 92379    cls_struct_fields[7] = &ffi_type_double;
       
 92380 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
       
 92381 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c
       
 92382 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c
       
 92383 @@ -55,25 +55,25 @@ int main (void)
       
 92384    ffi_cif cif;
       
 92385    void *code;
       
 92386    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92387    void* args_dbl[5];
       
 92388    ffi_type* cls_struct_fields[7];
       
 92389    ffi_type cls_struct_type;
       
 92390    ffi_type* dbl_arg_types[5];
       
 92391  
       
 92392 +  struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 };
       
 92393 +  struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 };
       
 92394 +  struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 };
       
 92395 +
       
 92396    cls_struct_type.size = 0;
       
 92397    cls_struct_type.alignment = 0;
       
 92398    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92399    cls_struct_type.elements = cls_struct_fields;
       
 92400  
       
 92401 -  struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 };
       
 92402 -  struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 };
       
 92403 -  struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 };
       
 92404 -
       
 92405    cls_struct_fields[0] = &ffi_type_uchar;
       
 92406    cls_struct_fields[1] = &ffi_type_uchar;
       
 92407    cls_struct_fields[2] = &ffi_type_uchar;
       
 92408    cls_struct_fields[3] = &ffi_type_uchar;
       
 92409    cls_struct_fields[4] = &ffi_type_uchar;
       
 92410    cls_struct_fields[5] = &ffi_type_uchar;
       
 92411    cls_struct_fields[6] = NULL;
       
 92412  
       
 92413 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c
       
 92414 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c
       
 92415 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c
       
 92416 @@ -51,25 +51,25 @@ int main (void)
       
 92417    ffi_cif cif;
       
 92418    void *code;
       
 92419    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92420    void* args_dbl[5];
       
 92421    ffi_type* cls_struct_fields[5];
       
 92422    ffi_type cls_struct_type;
       
 92423    ffi_type* dbl_arg_types[5];
       
 92424  
       
 92425 +  struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 };
       
 92426 +  struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 };
       
 92427 +  struct cls_struct_6byte res_dbl;
       
 92428 +
       
 92429    cls_struct_type.size = 0;
       
 92430    cls_struct_type.alignment = 0;
       
 92431    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92432    cls_struct_type.elements = cls_struct_fields;
       
 92433  
       
 92434 -  struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 };
       
 92435 -  struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 };
       
 92436 -  struct cls_struct_6byte res_dbl;
       
 92437 -
       
 92438    cls_struct_fields[0] = &ffi_type_ushort;
       
 92439    cls_struct_fields[1] = &ffi_type_ushort;
       
 92440    cls_struct_fields[2] = &ffi_type_uchar;
       
 92441    cls_struct_fields[3] = &ffi_type_uchar;
       
 92442    cls_struct_fields[4] = NULL;
       
 92443  
       
 92444    dbl_arg_types[0] = &cls_struct_type;
       
 92445    dbl_arg_types[1] = &cls_struct_type;
       
 92446 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
       
 92447 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c
       
 92448 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c
       
 92449 @@ -57,25 +57,25 @@ int main (void)
       
 92450    ffi_cif cif;
       
 92451    void *code;
       
 92452    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92453    void* args_dbl[5];
       
 92454    ffi_type* cls_struct_fields[8];
       
 92455    ffi_type cls_struct_type;
       
 92456    ffi_type* dbl_arg_types[5];
       
 92457  
       
 92458 +  struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 };
       
 92459 +  struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 };
       
 92460 +  struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 };
       
 92461 +
       
 92462    cls_struct_type.size = 0;
       
 92463    cls_struct_type.alignment = 0;
       
 92464    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92465    cls_struct_type.elements = cls_struct_fields;
       
 92466  
       
 92467 -  struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 };
       
 92468 -  struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 };
       
 92469 -  struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 };
       
 92470 -
       
 92471    cls_struct_fields[0] = &ffi_type_uchar;
       
 92472    cls_struct_fields[1] = &ffi_type_uchar;
       
 92473    cls_struct_fields[2] = &ffi_type_uchar;
       
 92474    cls_struct_fields[3] = &ffi_type_uchar;
       
 92475    cls_struct_fields[4] = &ffi_type_uchar;
       
 92476    cls_struct_fields[5] = &ffi_type_uchar;
       
 92477    cls_struct_fields[6] = &ffi_type_uchar;
       
 92478    cls_struct_fields[7] = NULL;
       
 92479 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c
       
 92480 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c
       
 92481 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c
       
 92482 @@ -50,25 +50,25 @@ int main (void)
       
 92483    ffi_cif cif;
       
 92484    void *code;
       
 92485    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92486    void* args_dbl[5];
       
 92487    ffi_type* cls_struct_fields[5];
       
 92488    ffi_type cls_struct_type;
       
 92489    ffi_type* dbl_arg_types[5];
       
 92490  
       
 92491 +  struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 };
       
 92492 +  struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 };
       
 92493 +  struct cls_struct_7byte res_dbl;
       
 92494 +
       
 92495    cls_struct_type.size = 0;
       
 92496    cls_struct_type.alignment = 0;
       
 92497    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92498    cls_struct_type.elements = cls_struct_fields;
       
 92499  
       
 92500 -  struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 };
       
 92501 -  struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 };
       
 92502 -  struct cls_struct_7byte res_dbl;
       
 92503 -
       
 92504    cls_struct_fields[0] = &ffi_type_ushort;
       
 92505    cls_struct_fields[1] = &ffi_type_ushort;
       
 92506    cls_struct_fields[2] = &ffi_type_uchar;
       
 92507    cls_struct_fields[3] = &ffi_type_ushort;
       
 92508    cls_struct_fields[4] = NULL;
       
 92509  
       
 92510    dbl_arg_types[0] = &cls_struct_type;
       
 92511    dbl_arg_types[1] = &cls_struct_type;
       
 92512 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c
       
 92513 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c
       
 92514 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c
       
 92515 @@ -44,25 +44,25 @@ int main (void)
       
 92516    ffi_cif cif;
       
 92517    void *code;
       
 92518    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92519    void* args_dbl[5];
       
 92520    ffi_type* cls_struct_fields[4];
       
 92521    ffi_type cls_struct_type;
       
 92522    ffi_type* dbl_arg_types[5];
       
 92523  
       
 92524 +  struct cls_struct_8byte g_dbl = { 1, 2.0 };
       
 92525 +  struct cls_struct_8byte f_dbl = { 4, 5.0 };
       
 92526 +  struct cls_struct_8byte res_dbl;
       
 92527 +
       
 92528    cls_struct_type.size = 0;
       
 92529    cls_struct_type.alignment = 0;
       
 92530    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92531    cls_struct_type.elements = cls_struct_fields;
       
 92532  
       
 92533 -  struct cls_struct_8byte g_dbl = { 1, 2.0 };
       
 92534 -  struct cls_struct_8byte f_dbl = { 4, 5.0 };
       
 92535 -  struct cls_struct_8byte res_dbl;
       
 92536 -
       
 92537    cls_struct_fields[0] = &ffi_type_sint;
       
 92538    cls_struct_fields[1] = &ffi_type_float;
       
 92539    cls_struct_fields[2] = NULL;
       
 92540  
       
 92541    dbl_arg_types[0] = &cls_struct_type;
       
 92542    dbl_arg_types[1] = &cls_struct_type;
       
 92543    dbl_arg_types[2] = NULL;
       
 92544  
       
 92545 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c
       
 92546 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c
       
 92547 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c
       
 92548 @@ -45,25 +45,25 @@ int main (void)
       
 92549    ffi_cif cif;
       
 92550    void *code;
       
 92551    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92552    void* args_dbl[3];
       
 92553    ffi_type* cls_struct_fields[3];
       
 92554    ffi_type cls_struct_type;
       
 92555    ffi_type* dbl_arg_types[3];
       
 92556  
       
 92557 +  struct cls_struct_9byte h_dbl = { 7, 8.0};
       
 92558 +  struct cls_struct_9byte j_dbl = { 1, 9.0};
       
 92559 +  struct cls_struct_9byte res_dbl;
       
 92560 +
       
 92561    cls_struct_type.size = 0;
       
 92562    cls_struct_type.alignment = 0;
       
 92563    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92564    cls_struct_type.elements = cls_struct_fields;
       
 92565  
       
 92566 -  struct cls_struct_9byte h_dbl = { 7, 8.0};
       
 92567 -  struct cls_struct_9byte j_dbl = { 1, 9.0};
       
 92568 -  struct cls_struct_9byte res_dbl;
       
 92569 -
       
 92570    cls_struct_fields[0] = &ffi_type_sint;
       
 92571    cls_struct_fields[1] = &ffi_type_double;
       
 92572    cls_struct_fields[2] = NULL;
       
 92573  
       
 92574    dbl_arg_types[0] = &cls_struct_type;
       
 92575    dbl_arg_types[1] = &cls_struct_type;
       
 92576    dbl_arg_types[2] = NULL;
       
 92577  
       
 92578 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c
       
 92579 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c
       
 92580 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c
       
 92581 @@ -45,25 +45,25 @@ int main (void)
       
 92582    ffi_cif cif;
       
 92583    void *code;
       
 92584    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92585    void* args_dbl[3];
       
 92586    ffi_type* cls_struct_fields[3];
       
 92587    ffi_type cls_struct_type;
       
 92588    ffi_type* dbl_arg_types[3];
       
 92589  
       
 92590 +  struct cls_struct_9byte h_dbl = { 7.0, 8};
       
 92591 +  struct cls_struct_9byte j_dbl = { 1.0, 9};
       
 92592 +  struct cls_struct_9byte res_dbl;
       
 92593 +
       
 92594    cls_struct_type.size = 0;
       
 92595    cls_struct_type.alignment = 0;
       
 92596    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92597    cls_struct_type.elements = cls_struct_fields;
       
 92598  
       
 92599 -  struct cls_struct_9byte h_dbl = { 7.0, 8};
       
 92600 -  struct cls_struct_9byte j_dbl = { 1.0, 9};
       
 92601 -  struct cls_struct_9byte res_dbl;
       
 92602 -
       
 92603    cls_struct_fields[0] = &ffi_type_double;
       
 92604    cls_struct_fields[1] = &ffi_type_sint;
       
 92605    cls_struct_fields[2] = NULL;
       
 92606  
       
 92607    dbl_arg_types[0] = &cls_struct_type;
       
 92608    dbl_arg_types[1] = &cls_struct_type;
       
 92609    dbl_arg_types[2] = NULL;
       
 92610  
       
 92611 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
       
 92612 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c
       
 92613 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c
       
 92614 @@ -47,25 +47,25 @@ int main (void)
       
 92615    ffi_cif cif;
       
 92616    void *code;
       
 92617    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92618    void* args_dbl[5];
       
 92619    ffi_type* cls_struct_fields[4];
       
 92620    ffi_type cls_struct_type;
       
 92621    ffi_type* dbl_arg_types[5];
       
 92622  
       
 92623 +  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92624 +  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92625 +  struct cls_struct_align res_dbl;
       
 92626 +
       
 92627    cls_struct_type.size = 0;
       
 92628    cls_struct_type.alignment = 0;
       
 92629    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92630    cls_struct_type.elements = cls_struct_fields;
       
 92631  
       
 92632 -  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92633 -  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92634 -  struct cls_struct_align res_dbl;
       
 92635 -
       
 92636    cls_struct_fields[0] = &ffi_type_uchar;
       
 92637    cls_struct_fields[1] = &ffi_type_double;
       
 92638    cls_struct_fields[2] = &ffi_type_uchar;
       
 92639    cls_struct_fields[3] = NULL;
       
 92640  
       
 92641    dbl_arg_types[0] = &cls_struct_type;
       
 92642    dbl_arg_types[1] = &cls_struct_type;
       
 92643    dbl_arg_types[2] = NULL;
       
 92644 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
       
 92645 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c
       
 92646 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c
       
 92647 @@ -45,25 +45,25 @@ int main (void)
       
 92648    ffi_cif cif;
       
 92649    void *code;
       
 92650    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92651    void* args_dbl[5];
       
 92652    ffi_type* cls_struct_fields[4];
       
 92653    ffi_type cls_struct_type;
       
 92654    ffi_type* dbl_arg_types[5];
       
 92655  
       
 92656 +  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92657 +  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92658 +  struct cls_struct_align res_dbl;
       
 92659 +
       
 92660    cls_struct_type.size = 0;
       
 92661    cls_struct_type.alignment = 0;
       
 92662    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92663    cls_struct_type.elements = cls_struct_fields;
       
 92664  
       
 92665 -  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92666 -  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92667 -  struct cls_struct_align res_dbl;
       
 92668 -
       
 92669    cls_struct_fields[0] = &ffi_type_uchar;
       
 92670    cls_struct_fields[1] = &ffi_type_float;
       
 92671    cls_struct_fields[2] = &ffi_type_uchar;
       
 92672    cls_struct_fields[3] = NULL;
       
 92673  
       
 92674    dbl_arg_types[0] = &cls_struct_type;
       
 92675    dbl_arg_types[1] = &cls_struct_type;
       
 92676    dbl_arg_types[2] = NULL;
       
 92677 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
       
 92678 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c
       
 92679 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c
       
 92680 @@ -46,25 +46,25 @@ int main (void)
       
 92681    ffi_cif cif;
       
 92682    void *code;
       
 92683    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92684    void* args_dbl[5];
       
 92685    ffi_type* cls_struct_fields[4];
       
 92686    ffi_type cls_struct_type;
       
 92687    ffi_type* dbl_arg_types[5];
       
 92688  
       
 92689 +  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92690 +  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92691 +  struct cls_struct_align res_dbl;
       
 92692 +
       
 92693    cls_struct_type.size = 0;
       
 92694    cls_struct_type.alignment = 0;
       
 92695    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92696    cls_struct_type.elements = cls_struct_fields;
       
 92697  
       
 92698 -  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92699 -  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92700 -  struct cls_struct_align res_dbl;
       
 92701 -
       
 92702    cls_struct_fields[0] = &ffi_type_uchar;
       
 92703    cls_struct_fields[1] = &ffi_type_longdouble;
       
 92704    cls_struct_fields[2] = &ffi_type_uchar;
       
 92705    cls_struct_fields[3] = NULL;
       
 92706  
       
 92707    dbl_arg_types[0] = &cls_struct_type;
       
 92708    dbl_arg_types[1] = &cls_struct_type;
       
 92709    dbl_arg_types[2] = NULL;
       
 92710 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
       
 92711 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c
       
 92712 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c
       
 92713 @@ -1,17 +1,17 @@
       
 92714  /* Area:	ffi_call, closure_call
       
 92715     Purpose:	Check structure alignment of long double.
       
 92716     Limitations:	none.
       
 92717     PR:		none.
       
 92718     Originator:	<hos@tamanegi.org> 20031203	 */
       
 92719  
       
 92720  /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
       
 92721  /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
       
 92722 -/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */
       
 92723 +/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
       
 92724  /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
       
 92725  
       
 92726  #include "ffitest.h"
       
 92727  
       
 92728  typedef struct cls_struct_align {
       
 92729    long double a;
       
 92730    long double b;
       
 92731    long double c;
       
 92732 @@ -82,25 +82,25 @@ int main (void)
       
 92733  	ffi_cif cif;
       
 92734          void *code;
       
 92735  	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92736  	void* args_dbl[3];
       
 92737  	ffi_type* cls_struct_fields[8];
       
 92738  	ffi_type cls_struct_type;
       
 92739  	ffi_type* dbl_arg_types[3];
       
 92740  
       
 92741 +	struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
       
 92742 +	struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
       
 92743 +	struct cls_struct_align res_dbl;
       
 92744 +
       
 92745  	cls_struct_type.size = 0;
       
 92746  	cls_struct_type.alignment = 0;
       
 92747  	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92748  	cls_struct_type.elements = cls_struct_fields;
       
 92749  
       
 92750 -	struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
       
 92751 -	struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
       
 92752 -	struct cls_struct_align res_dbl;
       
 92753 -
       
 92754  	cls_struct_fields[0] = &ffi_type_longdouble;
       
 92755  	cls_struct_fields[1] = &ffi_type_longdouble;
       
 92756  	cls_struct_fields[2] = &ffi_type_longdouble;
       
 92757  	cls_struct_fields[3] = &ffi_type_longdouble;
       
 92758  	cls_struct_fields[4] = &ffi_type_longdouble;
       
 92759  	cls_struct_fields[5] = &ffi_type_longdouble;
       
 92760  	cls_struct_fields[6] = &ffi_type_longdouble;
       
 92761  	cls_struct_fields[7] = NULL;
       
 92762 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
       
 92763 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c
       
 92764 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c
       
 92765 @@ -2,17 +2,17 @@
       
 92766  	Purpose:		Check structure alignment of long double.
       
 92767  	Limitations:	none.
       
 92768  	PR:				none.
       
 92769  	Originator:		Blake Chaffin	6/18/2007
       
 92770  */
       
 92771  
       
 92772  /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
       
 92773  /* { dg-do run { xfail strongarm*-*-* } } */
       
 92774 -/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */
       
 92775 +/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
       
 92776  /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
       
 92777  
       
 92778  #include "ffitest.h"
       
 92779  
       
 92780  typedef struct cls_struct_align {
       
 92781    long double a;
       
 92782    long double b;
       
 92783    long double c;
       
 92784 @@ -62,25 +62,25 @@ int main (void)
       
 92785  	ffi_cif cif;
       
 92786          void *code;
       
 92787  	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92788  	void* args_dbl[3];
       
 92789  	ffi_type* cls_struct_fields[8];
       
 92790  	ffi_type cls_struct_type;
       
 92791  	ffi_type* dbl_arg_types[3];
       
 92792  
       
 92793 +	struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
       
 92794 +	struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
       
 92795 +	struct cls_struct_align res_dbl;
       
 92796 +
       
 92797  	cls_struct_type.size = 0;
       
 92798  	cls_struct_type.alignment = 0;
       
 92799  	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92800  	cls_struct_type.elements = cls_struct_fields;
       
 92801  
       
 92802 -	struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
       
 92803 -	struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
       
 92804 -	struct cls_struct_align res_dbl;
       
 92805 -
       
 92806  	cls_struct_fields[0] = &ffi_type_longdouble;
       
 92807  	cls_struct_fields[1] = &ffi_type_longdouble;
       
 92808  	cls_struct_fields[2] = &ffi_type_longdouble;
       
 92809  	cls_struct_fields[3] = &ffi_type_longdouble;
       
 92810  	cls_struct_fields[4] = &ffi_type_longdouble;
       
 92811  	cls_struct_fields[5] = &ffi_type_double;
       
 92812  	cls_struct_fields[6] = &ffi_type_longdouble;
       
 92813  	cls_struct_fields[7] = NULL;
       
 92814 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
       
 92815 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c
       
 92816 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c
       
 92817 @@ -49,25 +49,25 @@ int main (void)
       
 92818    ffi_cif cif;
       
 92819    void *code;
       
 92820    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92821    void* args_dbl[5];
       
 92822    ffi_type* cls_struct_fields[4];
       
 92823    ffi_type cls_struct_type;
       
 92824    ffi_type* dbl_arg_types[5];
       
 92825  
       
 92826 +  struct cls_struct_align g_dbl = { 12, (void *)4951, 127 };
       
 92827 +  struct cls_struct_align f_dbl = { 1, (void *)9320, 13 };
       
 92828 +  struct cls_struct_align res_dbl;
       
 92829 +
       
 92830    cls_struct_type.size = 0;
       
 92831    cls_struct_type.alignment = 0;
       
 92832    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92833    cls_struct_type.elements = cls_struct_fields;
       
 92834  
       
 92835 -  struct cls_struct_align g_dbl = { 12, (void *)4951, 127 };
       
 92836 -  struct cls_struct_align f_dbl = { 1, (void *)9320, 13 };
       
 92837 -  struct cls_struct_align res_dbl;
       
 92838 -
       
 92839    cls_struct_fields[0] = &ffi_type_uchar;
       
 92840    cls_struct_fields[1] = &ffi_type_pointer;
       
 92841    cls_struct_fields[2] = &ffi_type_uchar;
       
 92842    cls_struct_fields[3] = NULL;
       
 92843  
       
 92844    dbl_arg_types[0] = &cls_struct_type;
       
 92845    dbl_arg_types[1] = &cls_struct_type;
       
 92846    dbl_arg_types[2] = NULL;
       
 92847 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
       
 92848 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c
       
 92849 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c
       
 92850 @@ -45,25 +45,25 @@ int main (void)
       
 92851    ffi_cif cif;
       
 92852    void *code;
       
 92853    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92854    void* args_dbl[5];
       
 92855    ffi_type* cls_struct_fields[4];
       
 92856    ffi_type cls_struct_type;
       
 92857    ffi_type* dbl_arg_types[5];
       
 92858  
       
 92859 +  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92860 +  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92861 +  struct cls_struct_align res_dbl;
       
 92862 +
       
 92863    cls_struct_type.size = 0;
       
 92864    cls_struct_type.alignment = 0;
       
 92865    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92866    cls_struct_type.elements = cls_struct_fields;
       
 92867  
       
 92868 -  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92869 -  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92870 -  struct cls_struct_align res_dbl;
       
 92871 -
       
 92872    cls_struct_fields[0] = &ffi_type_uchar;
       
 92873    cls_struct_fields[1] = &ffi_type_sshort;
       
 92874    cls_struct_fields[2] = &ffi_type_uchar;
       
 92875    cls_struct_fields[3] = NULL;
       
 92876  
       
 92877    dbl_arg_types[0] = &cls_struct_type;
       
 92878    dbl_arg_types[1] = &cls_struct_type;
       
 92879    dbl_arg_types[2] = NULL;
       
 92880 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
       
 92881 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c
       
 92882 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c
       
 92883 @@ -45,25 +45,25 @@ int main (void)
       
 92884    ffi_cif cif;
       
 92885    void *code;
       
 92886    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92887    void* args_dbl[5];
       
 92888    ffi_type* cls_struct_fields[4];
       
 92889    ffi_type cls_struct_type;
       
 92890    ffi_type* dbl_arg_types[5];
       
 92891  
       
 92892 +  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92893 +  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92894 +  struct cls_struct_align res_dbl;
       
 92895 +
       
 92896    cls_struct_type.size = 0;
       
 92897    cls_struct_type.alignment = 0;
       
 92898    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92899    cls_struct_type.elements = cls_struct_fields;
       
 92900  
       
 92901 -  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92902 -  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92903 -  struct cls_struct_align res_dbl;
       
 92904 -
       
 92905    cls_struct_fields[0] = &ffi_type_uchar;
       
 92906    cls_struct_fields[1] = &ffi_type_sint;
       
 92907    cls_struct_fields[2] = &ffi_type_uchar;
       
 92908    cls_struct_fields[3] = NULL;
       
 92909  
       
 92910    dbl_arg_types[0] = &cls_struct_type;
       
 92911    dbl_arg_types[1] = &cls_struct_type;
       
 92912    dbl_arg_types[2] = NULL;
       
 92913 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
       
 92914 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c
       
 92915 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c
       
 92916 @@ -46,25 +46,25 @@ int main (void)
       
 92917    ffi_cif cif;
       
 92918    void *code;
       
 92919    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92920    void* args_dbl[5];
       
 92921    ffi_type* cls_struct_fields[4];
       
 92922    ffi_type cls_struct_type;
       
 92923    ffi_type* dbl_arg_types[5];
       
 92924  
       
 92925 +  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92926 +  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92927 +  struct cls_struct_align res_dbl;
       
 92928 +
       
 92929    cls_struct_type.size = 0;
       
 92930    cls_struct_type.alignment = 0;
       
 92931    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92932    cls_struct_type.elements = cls_struct_fields;
       
 92933  
       
 92934 -  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92935 -  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92936 -  struct cls_struct_align res_dbl;
       
 92937 -
       
 92938    cls_struct_fields[0] = &ffi_type_uchar;
       
 92939    cls_struct_fields[1] = &ffi_type_sint64;
       
 92940    cls_struct_fields[2] = &ffi_type_uchar;
       
 92941    cls_struct_fields[3] = NULL;
       
 92942  
       
 92943    dbl_arg_types[0] = &cls_struct_type;
       
 92944    dbl_arg_types[1] = &cls_struct_type;
       
 92945    dbl_arg_types[2] = NULL;
       
 92946 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
       
 92947 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c
       
 92948 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c
       
 92949 @@ -45,25 +45,25 @@ int main (void)
       
 92950    ffi_cif cif;
       
 92951    void *code;
       
 92952    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92953    void* args_dbl[5];
       
 92954    ffi_type* cls_struct_fields[4];
       
 92955    ffi_type cls_struct_type;
       
 92956    ffi_type* dbl_arg_types[5];
       
 92957  
       
 92958 +  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92959 +  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92960 +  struct cls_struct_align res_dbl;
       
 92961 +
       
 92962    cls_struct_type.size = 0;
       
 92963    cls_struct_type.alignment = 0;
       
 92964    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92965    cls_struct_type.elements = cls_struct_fields;
       
 92966  
       
 92967 -  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92968 -  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92969 -  struct cls_struct_align res_dbl;
       
 92970 -
       
 92971    cls_struct_fields[0] = &ffi_type_uchar;
       
 92972    cls_struct_fields[1] = &ffi_type_ushort;
       
 92973    cls_struct_fields[2] = &ffi_type_uchar;
       
 92974    cls_struct_fields[3] = NULL;
       
 92975  
       
 92976    dbl_arg_types[0] = &cls_struct_type;
       
 92977    dbl_arg_types[1] = &cls_struct_type;
       
 92978    dbl_arg_types[2] = NULL;
       
 92979 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
       
 92980 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c
       
 92981 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c
       
 92982 @@ -45,25 +45,25 @@ int main (void)
       
 92983    ffi_cif cif;
       
 92984    void *code;
       
 92985    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 92986    void* args_dbl[5];
       
 92987    ffi_type* cls_struct_fields[4];
       
 92988    ffi_type cls_struct_type;
       
 92989    ffi_type* dbl_arg_types[5];
       
 92990  
       
 92991 +  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 92992 +  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 92993 +  struct cls_struct_align res_dbl;
       
 92994 +
       
 92995    cls_struct_type.size = 0;
       
 92996    cls_struct_type.alignment = 0;
       
 92997    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 92998    cls_struct_type.elements = cls_struct_fields;
       
 92999  
       
 93000 -  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 93001 -  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 93002 -  struct cls_struct_align res_dbl;
       
 93003 -
       
 93004    cls_struct_fields[0] = &ffi_type_uchar;
       
 93005    cls_struct_fields[1] = &ffi_type_uint;
       
 93006    cls_struct_fields[2] = &ffi_type_uchar;
       
 93007    cls_struct_fields[3] = NULL;
       
 93008  
       
 93009    dbl_arg_types[0] = &cls_struct_type;
       
 93010    dbl_arg_types[1] = &cls_struct_type;
       
 93011    dbl_arg_types[2] = NULL;
       
 93012 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
       
 93013 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c
       
 93014 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c
       
 93015 @@ -47,25 +47,25 @@ int main (void)
       
 93016    ffi_cif cif;
       
 93017    void *code;
       
 93018    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 93019    void* args_dbl[5];
       
 93020    ffi_type* cls_struct_fields[4];
       
 93021    ffi_type cls_struct_type;
       
 93022    ffi_type* dbl_arg_types[5];
       
 93023  
       
 93024 +  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 93025 +  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 93026 +  struct cls_struct_align res_dbl;
       
 93027 +
       
 93028    cls_struct_type.size = 0;
       
 93029    cls_struct_type.alignment = 0;
       
 93030    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 93031    cls_struct_type.elements = cls_struct_fields;
       
 93032  
       
 93033 -  struct cls_struct_align g_dbl = { 12, 4951, 127 };
       
 93034 -  struct cls_struct_align f_dbl = { 1, 9320, 13 };
       
 93035 -  struct cls_struct_align res_dbl;
       
 93036 -
       
 93037    cls_struct_fields[0] = &ffi_type_uchar;
       
 93038    cls_struct_fields[1] = &ffi_type_uint64;
       
 93039    cls_struct_fields[2] = &ffi_type_uchar;
       
 93040    cls_struct_fields[3] = NULL;
       
 93041  
       
 93042    dbl_arg_types[0] = &cls_struct_type;
       
 93043    dbl_arg_types[1] = &cls_struct_type;
       
 93044    dbl_arg_types[2] = NULL;
       
 93045 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
       
 93046 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c
       
 93047 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c
       
 93048 @@ -32,29 +32,29 @@ int main(int argc __UNUSED__, char** arg
       
 93049  
       
 93050          void *code;
       
 93051  	ffi_closure*	pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 93052  	ffi_type*		cl_arg_types[1];
       
 93053  
       
 93054  	ffi_type	ts1_type;
       
 93055  	ffi_type*	ts1_type_elements[4];
       
 93056  
       
 93057 +	Dbls arg = { 1.0, 2.0 };
       
 93058 +
       
 93059  	ts1_type.size = 0;
       
 93060  	ts1_type.alignment = 0;
       
 93061  	ts1_type.type = FFI_TYPE_STRUCT;
       
 93062  	ts1_type.elements = ts1_type_elements;
       
 93063  
       
 93064  	ts1_type_elements[0] = &ffi_type_double;
       
 93065  	ts1_type_elements[1] = &ffi_type_double;
       
 93066  	ts1_type_elements[2] = NULL;
       
 93067  
       
 93068  	cl_arg_types[0] = &ts1_type;
       
 93069  
       
 93070 -	Dbls arg = { 1.0, 2.0 };
       
 93071 -
       
 93072  	/* Initialize the cif */
       
 93073  	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
       
 93074  				 &ffi_type_void, cl_arg_types) == FFI_OK);
       
 93075  
       
 93076  	CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_gn, NULL, code) == FFI_OK);
       
 93077  
       
 93078  	((void*(*)(Dbls))(code))(arg);
       
 93079  	/* { dg-output "1.0 2.0\n" } */
       
 93080 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
       
 93081 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
       
 93082 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
       
 93083 @@ -1,17 +1,17 @@
       
 93084  /* Area:		ffi_call, closure_call
       
 93085     Purpose:		Test doubles passed in variable argument lists.
       
 93086     Limitations:	none.
       
 93087     PR:			none.
       
 93088     Originator:	Blake Chaffin 6/6/2007	 */
       
 93089  
       
 93090  /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
       
 93091  /* { dg-output "" { xfail avr32*-*-* } } */
       
 93092 -/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
       
 93093 +/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */
       
 93094  
       
 93095  #include "ffitest.h"
       
 93096  
       
 93097  static void
       
 93098  cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, 
       
 93099  		 void** args, void* userdata __UNUSED__)
       
 93100  {
       
 93101  	char*	format		= *(char**)args[0];
       
 93102 @@ -31,29 +31,31 @@ int main (void)
       
 93103  	char*	format		= "%.1f\n";
       
 93104  	double	doubleArg	= 7;
       
 93105  	ffi_arg	res			= 0;
       
 93106  
       
 93107  	arg_types[0] = &ffi_type_pointer;
       
 93108  	arg_types[1] = &ffi_type_double;
       
 93109  	arg_types[2] = NULL;
       
 93110  
       
 93111 -	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_sint,
       
 93112 -		arg_types) == FFI_OK);
       
 93113 +	/* This printf call is variadic */
       
 93114 +	CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint,
       
 93115 +			       arg_types) == FFI_OK);
       
 93116  
       
 93117  	args[0] = &format;
       
 93118  	args[1] = &doubleArg;
       
 93119  	args[2] = NULL;
       
 93120  
       
 93121  	ffi_call(&cif, FFI_FN(printf), &res, args);
       
 93122 -	// { dg-output "7.0" }
       
 93123 +	/* { dg-output "7.0" } */
       
 93124  	printf("res: %d\n", (int) res);
       
 93125 -	// { dg-output "\nres: 4" }
       
 93126 +	/* { dg-output "\nres: 4" } */
       
 93127  
       
 93128 -	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL, code) == FFI_OK);
       
 93129 +	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL,
       
 93130 +				   code) == FFI_OK);
       
 93131  
       
 93132 -	res	= ((int(*)(char*, double))(code))(format, doubleArg);
       
 93133 -	// { dg-output "\n7.0" }
       
 93134 +	res = ((int(*)(char*, ...))(code))(format, doubleArg);
       
 93135 +	/* { dg-output "\n7.0" } */
       
 93136  	printf("res: %d\n", (int) res);
       
 93137 -	// { dg-output "\nres: 4" }
       
 93138 +	/* { dg-output "\nres: 4" } */
       
 93139  
       
 93140  	exit(0);
       
 93141  }
       
 93142 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c
       
 93143 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c
       
 93144 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c
       
 93145 @@ -1,17 +1,19 @@
       
 93146  /* Area:		ffi_call, closure_call
       
 93147     Purpose:		Check long double arguments.
       
 93148     Limitations:	none.
       
 93149     PR:			none.
       
 93150     Originator:	Blake Chaffin	*/
       
 93151  
       
 93152  /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
       
 93153 -/* { dg-do run { xfail arm*-*-* strongarm*-*-* xscale*-*-* } } */
       
 93154 -/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */
       
 93155 +/* This test is known to PASS on armv7l-unknown-linux-gnueabihf, so I have
       
 93156 +   remove the xfail for arm*-*-* below, until we know more.  */
       
 93157 +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
       
 93158 +/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
       
 93159  /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
       
 93160  
       
 93161  #include "ffitest.h"
       
 93162  
       
 93163  long double cls_ldouble_fn(
       
 93164  	long double	a1,
       
 93165  	long double	a2,
       
 93166  	long double	a3,
       
 93167 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
       
 93168 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
       
 93169 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
       
 93170 @@ -1,17 +1,17 @@
       
 93171  /* Area:		ffi_call, closure_call
       
 93172     Purpose:		Test long doubles passed in variable argument lists.
       
 93173     Limitations:	none.
       
 93174     PR:			none.
       
 93175     Originator:	Blake Chaffin 6/6/2007	 */
       
 93176  
       
 93177  /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
       
 93178  /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */
       
 93179 -/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
       
 93180 +/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */
       
 93181  
       
 93182  #include "ffitest.h"
       
 93183  
       
 93184  static void
       
 93185  cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, 
       
 93186  		     void** args, void* userdata __UNUSED__)
       
 93187  {
       
 93188  	char*		format	= *(char**)args[0];
       
 93189 @@ -31,29 +31,31 @@ int main (void)
       
 93190  	char*		format	= "%.1Lf\n";
       
 93191  	long double	ldArg	= 7;
       
 93192  	ffi_arg		res		= 0;
       
 93193  
       
 93194  	arg_types[0] = &ffi_type_pointer;
       
 93195  	arg_types[1] = &ffi_type_longdouble;
       
 93196  	arg_types[2] = NULL;
       
 93197  
       
 93198 -	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_sint,
       
 93199 -		arg_types) == FFI_OK);
       
 93200 +	/* This printf call is variadic */
       
 93201 +	CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint,
       
 93202 +			       arg_types) == FFI_OK);
       
 93203  
       
 93204  	args[0] = &format;
       
 93205  	args[1] = &ldArg;
       
 93206  	args[2] = NULL;
       
 93207  
       
 93208  	ffi_call(&cif, FFI_FN(printf), &res, args);
       
 93209 -	// { dg-output "7.0" }
       
 93210 +	/* { dg-output "7.0" } */
       
 93211  	printf("res: %d\n", (int) res);
       
 93212 -	// { dg-output "\nres: 4" }
       
 93213 +	/* { dg-output "\nres: 4" } */
       
 93214  
       
 93215 -	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL, code) == FFI_OK);
       
 93216 +	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL,
       
 93217 +				   code) == FFI_OK);
       
 93218  
       
 93219 -	res	= ((int(*)(char*, long double))(code))(format, ldArg);
       
 93220 -	// { dg-output "\n7.0" }
       
 93221 +	res = ((int(*)(char*, ...))(code))(format, ldArg);
       
 93222 +	/* { dg-output "\n7.0" } */
       
 93223  	printf("res: %d\n", (int) res);
       
 93224 -	// { dg-output "\nres: 4" }
       
 93225 +	/* { dg-output "\nres: 4" } */
       
 93226  
       
 93227  	exit(0);
       
 93228  }
       
 93229 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c
       
 93230 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c
       
 93231 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c
       
 93232 @@ -30,17 +30,17 @@ cls_pointer_gn(ffi_cif* cif __UNUSED__, 
       
 93233  }
       
 93234  
       
 93235  int main (void)
       
 93236  {
       
 93237  	ffi_cif	cif;
       
 93238          void *code;
       
 93239  	ffi_closure*	pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 93240  	void*			args[3];
       
 93241 -//	ffi_type		cls_pointer_type;
       
 93242 +	/*	ffi_type		cls_pointer_type; */
       
 93243  	ffi_type*		arg_types[3];
       
 93244  
       
 93245  /*	cls_pointer_type.size = sizeof(void*);
       
 93246  	cls_pointer_type.alignment = 0;
       
 93247  	cls_pointer_type.type = FFI_TYPE_POINTER;
       
 93248  	cls_pointer_type.elements = NULL;*/
       
 93249  
       
 93250  	void*	arg1	= (void*)0x12345678;
       
 93251 @@ -60,15 +60,15 @@ int main (void)
       
 93252  
       
 93253  	ffi_call(&cif, FFI_FN(cls_pointer_fn), &res, args);
       
 93254  	/* { dg-output "0x12345678 0x89abcdef: 0x9be02467" } */
       
 93255  	printf("res: 0x%08x\n", (unsigned int) res);
       
 93256  	/* { dg-output "\nres: 0x9be02467" } */
       
 93257  
       
 93258  	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK);
       
 93259  
       
 93260 -	res = (ffi_arg)((void*(*)(void*, void*))(code))(arg1, arg2);
       
 93261 +	res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2);
       
 93262  	/* { dg-output "\n0x12345678 0x89abcdef: 0x9be02467" } */
       
 93263  	printf("res: 0x%08x\n", (unsigned int) res);
       
 93264  	/* { dg-output "\nres: 0x9be02467" } */
       
 93265  
       
 93266  	exit(0);
       
 93267  }
       
 93268 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
       
 93269 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c
       
 93270 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c
       
 93271 @@ -23,21 +23,22 @@ void* cls_pointer_fn2(void* a1, void* a2
       
 93272  	long double	trample1	= (intptr_t)a1 + (intptr_t)a2;
       
 93273  	char		trample2	= ((char*)&a1)[0] + ((char*)&a2)[0];
       
 93274  	long double	trample3	= (intptr_t)trample1 + (intptr_t)a1;
       
 93275  	char		trample4	= trample2 + ((char*)&a1)[1];
       
 93276  	long double	trample5	= (intptr_t)trample3 + (intptr_t)a2;
       
 93277  	char		trample6	= trample4 + ((char*)&a2)[1];
       
 93278  	long double	trample7	= (intptr_t)trample5 + (intptr_t)trample1;
       
 93279  	char		trample8	= trample6 + trample2;
       
 93280 +	void*		result;
       
 93281  
       
 93282  	dummyVar	= dummy_func(trample1, trample2, trample3, trample4,
       
 93283  		trample5, trample6, trample7, trample8);
       
 93284  
       
 93285 -	void*	result	= (void*)((intptr_t)a1 + (intptr_t)a2);
       
 93286 +	result	= (void*)((intptr_t)a1 + (intptr_t)a2);
       
 93287  
       
 93288  	printf("0x%08x 0x%08x: 0x%08x\n", 
       
 93289  	       (unsigned int)(uintptr_t) a1,
       
 93290                 (unsigned int)(uintptr_t) a2,
       
 93291                 (unsigned int)(uintptr_t) result);
       
 93292  
       
 93293  	return result;
       
 93294  }
       
 93295 @@ -47,21 +48,22 @@ void* cls_pointer_fn1(void* a1, void* a2
       
 93296  	long double	trample1	= (intptr_t)a1 + (intptr_t)a2;
       
 93297  	char		trample2	= ((char*)&a1)[0] + ((char*)&a2)[0];
       
 93298  	long double	trample3	= (intptr_t)trample1 + (intptr_t)a1;
       
 93299  	char		trample4	= trample2 + ((char*)&a1)[1];
       
 93300  	long double	trample5	= (intptr_t)trample3 + (intptr_t)a2;
       
 93301  	char		trample6	= trample4 + ((char*)&a2)[1];
       
 93302  	long double	trample7	= (intptr_t)trample5 + (intptr_t)trample1;
       
 93303  	char		trample8	= trample6 + trample2;
       
 93304 +	void*		result;
       
 93305  
       
 93306  	dummyVar	= dummy_func(trample1, trample2, trample3, trample4,
       
 93307  		trample5, trample6, trample7, trample8);
       
 93308  
       
 93309 -	void*	result	= (void*)((intptr_t)a1 + (intptr_t)a2);
       
 93310 +	result	= (void*)((intptr_t)a1 + (intptr_t)a2);
       
 93311  
       
 93312  	printf("0x%08x 0x%08x: 0x%08x\n",
       
 93313                 (unsigned int)(intptr_t) a1,
       
 93314                 (unsigned int)(intptr_t) a2,
       
 93315                 (unsigned int)(intptr_t) result);
       
 93316  
       
 93317  	result	= cls_pointer_fn2(result, a1);
       
 93318  
       
 93319 @@ -91,17 +93,17 @@ cls_pointer_gn(ffi_cif* cif __UNUSED__, 
       
 93320  }
       
 93321  
       
 93322  int main (void)
       
 93323  {
       
 93324  	ffi_cif	cif;
       
 93325          void *code;
       
 93326  	ffi_closure*	pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 93327  	void*			args[3];
       
 93328 -//	ffi_type		cls_pointer_type;
       
 93329 +	/*	ffi_type		cls_pointer_type; */
       
 93330  	ffi_type*		arg_types[3];
       
 93331  
       
 93332  /*	cls_pointer_type.size = sizeof(void*);
       
 93333  	cls_pointer_type.alignment = 0;
       
 93334  	cls_pointer_type.type = FFI_TYPE_POINTER;
       
 93335  	cls_pointer_type.elements = NULL;*/
       
 93336  
       
 93337  	void*	arg1	= (void*)0x01234567;
       
 93338 @@ -118,23 +120,23 @@ int main (void)
       
 93339  	args[0] = &arg1;
       
 93340  	args[1] = &arg2;
       
 93341  	args[2] = NULL;
       
 93342  
       
 93343  	printf("\n");
       
 93344  	ffi_call(&cif, FFI_FN(cls_pointer_fn1), &res, args);
       
 93345  
       
 93346  	printf("res: 0x%08x\n", (unsigned int) res);
       
 93347 -	// { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" }
       
 93348 -	// { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" }
       
 93349 -	// { dg-output "\nres: 0x8bf258bd" }
       
 93350 +	/* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */
       
 93351 +	/* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */
       
 93352 +	/* { dg-output "\nres: 0x8bf258bd" } */
       
 93353  
       
 93354  	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK);
       
 93355  
       
 93356 -	res = (ffi_arg)((void*(*)(void*, void*))(code))(arg1, arg2);
       
 93357 +	res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2);
       
 93358  
       
 93359  	printf("res: 0x%08x\n", (unsigned int) res);
       
 93360 -	// { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" }
       
 93361 -	// { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" }
       
 93362 -	// { dg-output "\nres: 0x8bf258bd" }
       
 93363 +	/* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */
       
 93364 +	/* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */
       
 93365 +	/* { dg-output "\nres: 0x8bf258bd" } */
       
 93366  
       
 93367  	exit(0);
       
 93368  }
       
 93369 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
       
 93370 new file mode 100644
       
 93371 --- /dev/null
       
 93372 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_struct_va1.c
       
 93373 @@ -0,0 +1,114 @@
       
 93374 +/* Area:		ffi_call, closure_call
       
 93375 +   Purpose:		Test doubles passed in variable argument lists.
       
 93376 +   Limitations:	none.
       
 93377 +   PR:			none.
       
 93378 +   Originator:	Blake Chaffin 6/6/2007	 */
       
 93379 +
       
 93380 +/* { dg-do run } */
       
 93381 +/* { dg-output "" { xfail avr32*-*-* } } */
       
 93382 +#include "ffitest.h"
       
 93383 +
       
 93384 +struct small_tag
       
 93385 +{
       
 93386 +  unsigned char a;
       
 93387 +  unsigned char b;
       
 93388 +};
       
 93389 +
       
 93390 +struct large_tag
       
 93391 +{
       
 93392 +  unsigned a;
       
 93393 +  unsigned b;
       
 93394 +  unsigned c;
       
 93395 +  unsigned d;
       
 93396 +  unsigned e;
       
 93397 +};
       
 93398 +
       
 93399 +static void
       
 93400 +test_fn (ffi_cif* cif __UNUSED__, void* resp,
       
 93401 +	 void** args, void* userdata __UNUSED__)
       
 93402 +{
       
 93403 +  int n = *(int*)args[0];
       
 93404 +  struct small_tag s1 = * (struct small_tag *) args[1];
       
 93405 +  struct large_tag l1 = * (struct large_tag *) args[2];
       
 93406 +  struct small_tag s2 = * (struct small_tag *) args[3];
       
 93407 +
       
 93408 +  printf ("%d %d %d %d %d %d %d %d %d %d\n", n, s1.a, s1.b,
       
 93409 +	  l1.a, l1.b, l1.c, l1.d, l1.e,
       
 93410 +	  s2.a, s2.b);
       
 93411 +  * (ffi_arg*) resp = 42;
       
 93412 +}
       
 93413 +
       
 93414 +int
       
 93415 +main (void)
       
 93416 +{
       
 93417 +  ffi_cif cif;
       
 93418 +  void *code;
       
 93419 +  ffi_closure *pcl = ffi_closure_alloc (sizeof (ffi_closure), &code);
       
 93420 +  ffi_type* arg_types[5];
       
 93421 +
       
 93422 +  ffi_arg res = 0;
       
 93423 +
       
 93424 +  ffi_type s_type;
       
 93425 +  ffi_type *s_type_elements[3];
       
 93426 +
       
 93427 +  ffi_type l_type;
       
 93428 +  ffi_type *l_type_elements[6];
       
 93429 +
       
 93430 +  struct small_tag s1;
       
 93431 +  struct small_tag s2;
       
 93432 +  struct large_tag l1;
       
 93433 +
       
 93434 +  int si;
       
 93435 +
       
 93436 +  s_type.size = 0;
       
 93437 +  s_type.alignment = 0;
       
 93438 +  s_type.type = FFI_TYPE_STRUCT;
       
 93439 +  s_type.elements = s_type_elements;
       
 93440 +
       
 93441 +  s_type_elements[0] = &ffi_type_uchar;
       
 93442 +  s_type_elements[1] = &ffi_type_uchar;
       
 93443 +  s_type_elements[2] = NULL;
       
 93444 +
       
 93445 +  l_type.size = 0;
       
 93446 +  l_type.alignment = 0;
       
 93447 +  l_type.type = FFI_TYPE_STRUCT;
       
 93448 +  l_type.elements = l_type_elements;
       
 93449 +
       
 93450 +  l_type_elements[0] = &ffi_type_uint;
       
 93451 +  l_type_elements[1] = &ffi_type_uint;
       
 93452 +  l_type_elements[2] = &ffi_type_uint;
       
 93453 +  l_type_elements[3] = &ffi_type_uint;
       
 93454 +  l_type_elements[4] = &ffi_type_uint;
       
 93455 +  l_type_elements[5] = NULL;
       
 93456 +
       
 93457 +  arg_types[0] = &ffi_type_sint;
       
 93458 +  arg_types[1] = &s_type;
       
 93459 +  arg_types[2] = &l_type;
       
 93460 +  arg_types[3] = &s_type;
       
 93461 +  arg_types[4] = NULL;
       
 93462 +
       
 93463 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint,
       
 93464 +			 arg_types) == FFI_OK);
       
 93465 +
       
 93466 +  si = 4;
       
 93467 +  s1.a = 5;
       
 93468 +  s1.b = 6;
       
 93469 +
       
 93470 +  s2.a = 20;
       
 93471 +  s2.b = 21;
       
 93472 +
       
 93473 +  l1.a = 10;
       
 93474 +  l1.b = 11;
       
 93475 +  l1.c = 12;
       
 93476 +  l1.d = 13;
       
 93477 +  l1.e = 14;
       
 93478 +
       
 93479 +  CHECK(ffi_prep_closure_loc(pcl, &cif, test_fn, NULL, code) == FFI_OK);
       
 93480 +
       
 93481 +  res = ((int (*)(int, ...))(code))(si, s1, l1, s2);
       
 93482 +  /* { dg-output "4 5 6 10 11 12 13 14 20 21" } */
       
 93483 +  printf("res: %d\n", (int) res);
       
 93484 +  /* { dg-output "\nres: 42" } */
       
 93485 +
       
 93486 +  exit(0);
       
 93487 +}
       
 93488 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
       
 93489 new file mode 100644
       
 93490 --- /dev/null
       
 93491 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uchar_va.c
       
 93492 @@ -0,0 +1,44 @@
       
 93493 +/* Area:	closure_call
       
 93494 +   Purpose:	Test anonymous unsigned char argument.
       
 93495 +   Limitations:	none.
       
 93496 +   PR:		none.
       
 93497 +   Originator:	ARM Ltd. */
       
 93498 +
       
 93499 +/* { dg-do run } */
       
 93500 +#include "ffitest.h"
       
 93501 +
       
 93502 +typedef unsigned char T;
       
 93503 +
       
 93504 +static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
       
 93505 +			 void* userdata __UNUSED__)
       
 93506 + {
       
 93507 +   *(ffi_arg *)resp = *(T *)args[0];
       
 93508 +
       
 93509 +   printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]);
       
 93510 + }
       
 93511 +
       
 93512 +typedef T (*cls_ret_T)(T, ...);
       
 93513 +
       
 93514 +int main (void)
       
 93515 +{
       
 93516 +  ffi_cif cif;
       
 93517 +  void *code;
       
 93518 +  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 93519 +  ffi_type * cl_arg_types[3];
       
 93520 +  T res;
       
 93521 +
       
 93522 +  cl_arg_types[0] = &ffi_type_uchar;
       
 93523 +  cl_arg_types[1] = &ffi_type_uchar;
       
 93524 +  cl_arg_types[2] = NULL;
       
 93525 +
       
 93526 +  /* Initialize the cif */
       
 93527 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2,
       
 93528 +			 &ffi_type_uchar, cl_arg_types) == FFI_OK);
       
 93529 +
       
 93530 +  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code)  == FFI_OK);
       
 93531 +  res = ((((cls_ret_T)code)(67, 4)));
       
 93532 +  /* { dg-output "67: 67 4" } */
       
 93533 +  printf("res: %d\n", res);
       
 93534 +  /* { dg-output "\nres: 67" } */
       
 93535 +  exit(0);
       
 93536 +}
       
 93537 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
       
 93538 new file mode 100644
       
 93539 --- /dev/null
       
 93540 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uint_va.c
       
 93541 @@ -0,0 +1,45 @@
       
 93542 +/* Area:	closure_call
       
 93543 +   Purpose:	Test anonymous unsigned int argument.
       
 93544 +   Limitations:	none.
       
 93545 +   PR:		none.
       
 93546 +   Originator:	ARM Ltd. */
       
 93547 +
       
 93548 +/* { dg-do run } */
       
 93549 +
       
 93550 +#include "ffitest.h"
       
 93551 +
       
 93552 +typedef unsigned int T;
       
 93553 +
       
 93554 +static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
       
 93555 +			 void* userdata __UNUSED__)
       
 93556 + {
       
 93557 +   *(ffi_arg *)resp = *(T *)args[0];
       
 93558 +
       
 93559 +   printf("%d: %d %d\n", (int)*(ffi_arg *)resp, *(T *)args[0], *(T *)args[1]);
       
 93560 + }
       
 93561 +
       
 93562 +typedef T (*cls_ret_T)(T, ...);
       
 93563 +
       
 93564 +int main (void)
       
 93565 +{
       
 93566 +  ffi_cif cif;
       
 93567 +  void *code;
       
 93568 +  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 93569 +  ffi_type * cl_arg_types[3];
       
 93570 +  T res;
       
 93571 +
       
 93572 +  cl_arg_types[0] = &ffi_type_uint;
       
 93573 +  cl_arg_types[1] = &ffi_type_uint;
       
 93574 +  cl_arg_types[2] = NULL;
       
 93575 +
       
 93576 +  /* Initialize the cif */
       
 93577 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2,
       
 93578 +			 &ffi_type_uint, cl_arg_types) == FFI_OK);
       
 93579 +
       
 93580 +  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code)  == FFI_OK);
       
 93581 +  res = ((((cls_ret_T)code)(67, 4)));
       
 93582 +  /* { dg-output "67: 67 4" } */
       
 93583 +  printf("res: %d\n", res);
       
 93584 +  /* { dg-output "\nres: 67" } */
       
 93585 +  exit(0);
       
 93586 +}
       
 93587 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
       
 93588 new file mode 100644
       
 93589 --- /dev/null
       
 93590 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulong_va.c
       
 93591 @@ -0,0 +1,45 @@
       
 93592 +/* Area:	closure_call
       
 93593 +   Purpose:	Test anonymous unsigned long argument.
       
 93594 +   Limitations:	none.
       
 93595 +   PR:		none.
       
 93596 +   Originator:	ARM Ltd. */
       
 93597 +
       
 93598 +/* { dg-do run } */
       
 93599 +
       
 93600 +#include "ffitest.h"
       
 93601 +
       
 93602 +typedef unsigned long T;
       
 93603 +
       
 93604 +static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
       
 93605 +			 void* userdata __UNUSED__)
       
 93606 + {
       
 93607 +   *(T *)resp = *(T *)args[0];
       
 93608 +
       
 93609 +   printf("%ld: %ld %ld\n", *(T *)resp, *(T *)args[0], *(T *)args[1]);
       
 93610 + }
       
 93611 +
       
 93612 +typedef T (*cls_ret_T)(T, ...);
       
 93613 +
       
 93614 +int main (void)
       
 93615 +{
       
 93616 +  ffi_cif cif;
       
 93617 +  void *code;
       
 93618 +  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 93619 +  ffi_type * cl_arg_types[3];
       
 93620 +  T res;
       
 93621 +
       
 93622 +  cl_arg_types[0] = &ffi_type_ulong;
       
 93623 +  cl_arg_types[1] = &ffi_type_ulong;
       
 93624 +  cl_arg_types[2] = NULL;
       
 93625 +
       
 93626 +  /* Initialize the cif */
       
 93627 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2,
       
 93628 +			 &ffi_type_ulong, cl_arg_types) == FFI_OK);
       
 93629 +
       
 93630 +  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code)  == FFI_OK);
       
 93631 +  res = ((((cls_ret_T)code)(67, 4)));
       
 93632 +  /* { dg-output "67: 67 4" } */
       
 93633 +  printf("res: %ld\n", res);
       
 93634 +  /* { dg-output "\nres: 67" } */
       
 93635 +  exit(0);
       
 93636 +}
       
 93637 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c
       
 93638 --- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c
       
 93639 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c
       
 93640 @@ -6,17 +6,17 @@
       
 93641  
       
 93642  /* { dg-do run } */
       
 93643  /* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */
       
 93644  #include "ffitest.h"
       
 93645  
       
 93646  static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp,
       
 93647  				 void** args, void* userdata __UNUSED__)
       
 93648  {
       
 93649 -  *(unsigned long long *)resp=  *(unsigned long long *)args[0];
       
 93650 +  *(unsigned long long *)resp= 0xfffffffffffffffLL ^ *(unsigned long long *)args[0];
       
 93651  
       
 93652    printf("%" PRIuLL ": %" PRIuLL "\n",*(unsigned long long *)args[0],
       
 93653  	 *(unsigned long long *)(resp));
       
 93654  }
       
 93655  typedef unsigned long long (*cls_ret_ulonglong)(unsigned long long);
       
 93656  
       
 93657  int main (void)
       
 93658  {
       
 93659 @@ -29,19 +29,19 @@ int main (void)
       
 93660    cl_arg_types[0] = &ffi_type_uint64;
       
 93661    cl_arg_types[1] = NULL;
       
 93662  
       
 93663    /* Initialize the cif */
       
 93664    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
       
 93665  		     &ffi_type_uint64, cl_arg_types) == FFI_OK);
       
 93666    CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ulonglong_fn, NULL, code)  == FFI_OK);
       
 93667    res = (*((cls_ret_ulonglong)code))(214LL);
       
 93668 -  /* { dg-output "214: 214" } */
       
 93669 +  /* { dg-output "214: 1152921504606846761" } */
       
 93670    printf("res: %" PRIdLL "\n", res);
       
 93671 -  /* { dg-output "\nres: 214" } */
       
 93672 +  /* { dg-output "\nres: 1152921504606846761" } */
       
 93673  
       
 93674    res = (*((cls_ret_ulonglong)code))(9223372035854775808LL);
       
 93675 -  /* { dg-output "\n9223372035854775808: 9223372035854775808" } */
       
 93676 +  /* { dg-output "\n9223372035854775808: 8070450533247928831" } */
       
 93677    printf("res: %" PRIdLL "\n", res);
       
 93678 -  /* { dg-output "\nres: 9223372035854775808" } */
       
 93679 +  /* { dg-output "\nres: 8070450533247928831" } */
       
 93680  
       
 93681    exit(0);
       
 93682  }
       
 93683 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
       
 93684 new file mode 100644
       
 93685 --- /dev/null
       
 93686 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ushort_va.c
       
 93687 @@ -0,0 +1,44 @@
       
 93688 +/* Area:	closure_call
       
 93689 +   Purpose:	Test anonymous unsigned short argument.
       
 93690 +   Limitations:	none.
       
 93691 +   PR:		none.
       
 93692 +   Originator:	ARM Ltd. */
       
 93693 +
       
 93694 +/* { dg-do run } */
       
 93695 +#include "ffitest.h"
       
 93696 +
       
 93697 +typedef unsigned short T;
       
 93698 +
       
 93699 +static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
       
 93700 +			 void* userdata __UNUSED__)
       
 93701 + {
       
 93702 +   *(ffi_arg *)resp = *(T *)args[0];
       
 93703 +
       
 93704 +   printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]);
       
 93705 + }
       
 93706 +
       
 93707 +typedef T (*cls_ret_T)(T, ...);
       
 93708 +
       
 93709 +int main (void)
       
 93710 +{
       
 93711 +  ffi_cif cif;
       
 93712 +  void *code;
       
 93713 +  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 93714 +  ffi_type * cl_arg_types[3];
       
 93715 +  T res;
       
 93716 +
       
 93717 +  cl_arg_types[0] = &ffi_type_ushort;
       
 93718 +  cl_arg_types[1] = &ffi_type_ushort;
       
 93719 +  cl_arg_types[2] = NULL;
       
 93720 +
       
 93721 +  /* Initialize the cif */
       
 93722 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2,
       
 93723 +			 &ffi_type_ushort, cl_arg_types) == FFI_OK);
       
 93724 +
       
 93725 +  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code)  == FFI_OK);
       
 93726 +  res = ((((cls_ret_T)code)(67, 4)));
       
 93727 +  /* { dg-output "67: 67 4" } */
       
 93728 +  printf("res: %d\n", res);
       
 93729 +  /* { dg-output "\nres: 67" } */
       
 93730 +  exit(0);
       
 93731 +}
       
 93732 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
       
 93733 --- a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c
       
 93734 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c
       
 93735 @@ -1,15 +1,16 @@
       
 93736  /* Area:		ffi_prep_cif, ffi_prep_closure
       
 93737     Purpose:		Test error return for bad ABIs.
       
 93738     Limitations:	none.
       
 93739     PR:			none.
       
 93740     Originator:	Blake Chaffin 6/6/2007	 */
       
 93741  
       
 93742 -/* { dg-do run { xfail *-*-* } } */
       
 93743 +/* { dg-do run } */
       
 93744 +
       
 93745  #include "ffitest.h"
       
 93746  
       
 93747  static void
       
 93748  dummy_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, 
       
 93749  	 void** args __UNUSED__, void* userdata __UNUSED__)
       
 93750  {}
       
 93751  
       
 93752  int main (void)
       
 93753 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
       
 93754 --- a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c
       
 93755 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c
       
 93756 @@ -1,25 +1,26 @@
       
 93757  /* Area:		ffi_prep_cif
       
 93758     Purpose:		Test error return for bad typedefs.
       
 93759     Limitations:	none.
       
 93760     PR:			none.
       
 93761     Originator:	Blake Chaffin 6/6/2007	 */
       
 93762  
       
 93763 -/* { dg-do run { xfail *-*-* } } */
       
 93764 +/* { dg-do run } */
       
 93765 +
       
 93766  #include "ffitest.h"
       
 93767  
       
 93768  int main (void)
       
 93769  {
       
 93770  	ffi_cif cif;
       
 93771  	ffi_type* arg_types[1];
       
 93772  
       
 93773 +	ffi_type	badType	= ffi_type_void;
       
 93774 +
       
 93775  	arg_types[0] = NULL;
       
 93776  
       
 93777 -	ffi_type	badType	= ffi_type_void;
       
 93778 -
       
 93779  	badType.size = 0;
       
 93780  
       
 93781  	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &badType,
       
 93782  		arg_types) == FFI_BAD_TYPEDEF);
       
 93783  
       
 93784  	exit(0);
       
 93785  }
       
 93786 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h b/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h
       
 93787 --- a/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h
       
 93788 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h
       
 93789 @@ -10,24 +10,35 @@
       
 93790  #endif
       
 93791  
       
 93792  #if defined HAVE_INTTYPES_H
       
 93793  #include <inttypes.h>
       
 93794  #endif
       
 93795  
       
 93796  #define MAX_ARGS 256
       
 93797  
       
 93798 -#define CHECK(x) !(x) ? abort() : 0
       
 93799 +#define CHECK(x) (!(x) ? (abort(), 1) : 0)
       
 93800  
       
 93801 -/* Define __UNUSED__ that also other compilers than gcc can run the tests.  */
       
 93802 +/* Define macros so that compilers other than gcc can run the tests.  */
       
 93803  #undef __UNUSED__
       
 93804  #if defined(__GNUC__)
       
 93805  #define __UNUSED__ __attribute__((__unused__))
       
 93806 +#define __STDCALL__ __attribute__((stdcall))
       
 93807 +#define __THISCALL__ __attribute__((thiscall))
       
 93808 +#define __FASTCALL__ __attribute__((fastcall))
       
 93809  #else
       
 93810  #define __UNUSED__
       
 93811 +#define __STDCALL__ __stdcall
       
 93812 +#define __THISCALL__ __thiscall
       
 93813 +#define __FASTCALL__ __fastcall
       
 93814 +#endif
       
 93815 +
       
 93816 +#ifndef ABI_NUM
       
 93817 +#define ABI_NUM FFI_DEFAULT_ABI
       
 93818 +#define ABI_ATTR
       
 93819  #endif
       
 93820  
       
 93821  /* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
       
 93822     file open.  */
       
 93823  #ifdef HAVE_MMAP_ANON
       
 93824  # undef HAVE_MMAP_DEV_ZERO
       
 93825  
       
 93826  # include <sys/mman.h>
       
 93827 @@ -62,68 +73,63 @@
       
 93828  
       
 93829  /* Tru64 UNIX kludge.  */
       
 93830  #if defined(__alpha__) && defined(__osf__)
       
 93831  /* Tru64 UNIX V4.0 doesn't support %lld/%lld, but long is 64-bit.  */
       
 93832  #undef PRIdLL
       
 93833  #define PRIdLL "ld"
       
 93834  #undef PRIuLL
       
 93835  #define PRIuLL "lu"
       
 93836 +#define PRId8 "hd"
       
 93837 +#define PRIu8 "hu"
       
 93838  #define PRId64 "ld"
       
 93839  #define PRIu64 "lu"
       
 93840  #define PRIuPTR "lu"
       
 93841  #endif
       
 93842  
       
 93843  /* PA HP-UX kludge.  */
       
 93844  #if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR)
       
 93845  #define PRIuPTR "lu"
       
 93846  #endif
       
 93847  
       
 93848 +/* IRIX kludge.  */
       
 93849 +#if defined(__sgi)
       
 93850 +/* IRIX 6.5 <inttypes.h> provides all definitions, but only for C99
       
 93851 +   compilations.  */
       
 93852 +#define PRId8 "hhd"
       
 93853 +#define PRIu8 "hhu"
       
 93854 +#if (_MIPS_SZLONG == 32)
       
 93855 +#define PRId64 "lld"
       
 93856 +#define PRIu64 "llu"
       
 93857 +#endif
       
 93858 +/* This doesn't match <inttypes.h>, which always has "lld" here, but the
       
 93859 +   arguments are uint64_t, int64_t, which are unsigned long, long for
       
 93860 +   64-bit in <sgidefs.h>.  */
       
 93861 +#if (_MIPS_SZLONG == 64)
       
 93862 +#define PRId64 "ld"
       
 93863 +#define PRIu64 "lu"
       
 93864 +#endif
       
 93865 +/* This doesn't match <inttypes.h>, which has "u" here, but the arguments
       
 93866 +   are uintptr_t, which is always unsigned long.  */
       
 93867 +#define PRIuPTR "lu"
       
 93868 +#endif
       
 93869 +
       
 93870  /* Solaris < 10 kludge.  */
       
 93871  #if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR)
       
 93872  #if defined(__arch64__) || defined (__x86_64__)
       
 93873  #define PRIuPTR "lu"
       
 93874  #else
       
 93875  #define PRIuPTR "u"
       
 93876  #endif
       
 93877  #endif
       
 93878  
       
 93879 -#ifdef USING_MMAP
       
 93880 -static inline void *
       
 93881 -allocate_mmap (size_t size)
       
 93882 -{
       
 93883 -  void *page;
       
 93884 -#if defined (HAVE_MMAP_DEV_ZERO)
       
 93885 -  static int dev_zero_fd = -1;
       
 93886 +/* MSVC kludge.  */
       
 93887 +#if defined _MSC_VER
       
 93888 +#define PRIuPTR "lu"
       
 93889 +#define PRIu8 "u"
       
 93890 +#define PRId8 "d"
       
 93891 +#define PRIu64 "I64u"
       
 93892 +#define PRId64 "I64d"
       
 93893  #endif
       
 93894  
       
 93895 -#ifdef HAVE_MMAP_DEV_ZERO
       
 93896 -  if (dev_zero_fd == -1)
       
 93897 -    {
       
 93898 -      dev_zero_fd = open ("/dev/zero", O_RDONLY);
       
 93899 -      if (dev_zero_fd == -1)
       
 93900 -	{
       
 93901 -	  perror ("open /dev/zero: %m");
       
 93902 -	  exit (1);
       
 93903 -	}
       
 93904 -    }
       
 93905 +#ifndef PRIuPTR
       
 93906 +#define PRIuPTR "u"
       
 93907  #endif
       
 93908 -
       
 93909 -
       
 93910 -#ifdef HAVE_MMAP_ANON
       
 93911 -  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
       
 93912 -	       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
       
 93913 -#endif
       
 93914 -#ifdef HAVE_MMAP_DEV_ZERO
       
 93915 -  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
       
 93916 -	       MAP_PRIVATE, dev_zero_fd, 0);
       
 93917 -#endif
       
 93918 -
       
 93919 -  if (page == (void *) MAP_FAILED)
       
 93920 -    {
       
 93921 -      perror ("virtual memory exhausted");
       
 93922 -      exit (1);
       
 93923 -    }
       
 93924 -
       
 93925 -  return page;
       
 93926 -}
       
 93927 -
       
 93928 -#endif
       
 93929 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/float_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/float_va.c
       
 93930 new file mode 100644
       
 93931 --- /dev/null
       
 93932 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/float_va.c
       
 93933 @@ -0,0 +1,107 @@
       
 93934 +/* Area:        fp and variadics
       
 93935 +   Purpose:     check fp inputs and returns work on variadics, even the fixed params
       
 93936 +   Limitations: None
       
 93937 +   PR:          none
       
 93938 +   Originator:  <david.gilbert@linaro.org> 2011-01-25
       
 93939 +
       
 93940 +   Intended to stress the difference in ABI on ARM vfp
       
 93941 +*/
       
 93942 +
       
 93943 +/* { dg-do run } */
       
 93944 +
       
 93945 +#include <stdarg.h>
       
 93946 +
       
 93947 +#include "ffitest.h"
       
 93948 +
       
 93949 +/* prints out all the parameters, and returns the sum of them all.
       
 93950 + * 'x' is the number of variadic parameters all of which are double in this test
       
 93951 + */
       
 93952 +double float_va_fn(unsigned int x, double y,...)
       
 93953 +{
       
 93954 +  double total=0.0;
       
 93955 +  va_list ap;
       
 93956 +  unsigned int i;
       
 93957 +
       
 93958 +  total+=(double)x;
       
 93959 +  total+=y;
       
 93960 +
       
 93961 +  printf("%u: %.1f :", x, y);
       
 93962 +
       
 93963 +  va_start(ap, y);
       
 93964 +  for(i=0;i<x;i++)
       
 93965 +  {
       
 93966 +    double arg=va_arg(ap, double);
       
 93967 +    total+=arg;
       
 93968 +    printf(" %d:%.1f ", i, arg);
       
 93969 +  }
       
 93970 +  va_end(ap);
       
 93971 +
       
 93972 +  printf(" total: %.1f\n", total);
       
 93973 +
       
 93974 +  return total;
       
 93975 +}
       
 93976 +
       
 93977 +int main (void)
       
 93978 +{
       
 93979 +  ffi_cif    cif;
       
 93980 +
       
 93981 +  ffi_type    *arg_types[5];
       
 93982 +  void        *values[5];
       
 93983 +  double        doubles[5];
       
 93984 +  unsigned int firstarg;
       
 93985 +  double        resfp;
       
 93986 +
       
 93987 +  /* First test, pass float_va_fn(0,2.0) - note there are no actual
       
 93988 +   * variadic parameters, but it's declared variadic so the ABI may be
       
 93989 +   * different. */
       
 93990 +  /* Call it statically and then via ffi */
       
 93991 +  resfp=float_va_fn(0,2.0);
       
 93992 +  /* { dg-output "0: 2.0 : total: 2.0" } */
       
 93993 +  printf("compiled: %.1f\n", resfp);
       
 93994 +  /* { dg-output "\ncompiled: 2.0" } */
       
 93995 +
       
 93996 +  arg_types[0] = &ffi_type_uint;
       
 93997 +  arg_types[1] = &ffi_type_double;
       
 93998 +  arg_types[2] = NULL;
       
 93999 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 2, 2,
       
 94000 +        &ffi_type_double, arg_types) == FFI_OK);
       
 94001 +
       
 94002 +  firstarg = 0;
       
 94003 +  doubles[0] = 2.0;
       
 94004 +  values[0] = &firstarg;
       
 94005 +  values[1] = &doubles[0];
       
 94006 +  ffi_call(&cif, FFI_FN(float_va_fn), &resfp, values);
       
 94007 +  /* { dg-output "\n0: 2.0 : total: 2.0" } */
       
 94008 +  printf("ffi: %.1f\n", resfp);
       
 94009 +  /* { dg-output "\nffi: 2.0" } */
       
 94010 +
       
 94011 +  /* Second test, float_va_fn(2,2.0,3.0,4.0), now with variadic params */
       
 94012 +  /* Call it statically and then via ffi */
       
 94013 +  resfp=float_va_fn(2,2.0,3.0,4.0);
       
 94014 +  /* { dg-output "\n2: 2.0 : 0:3.0  1:4.0  total: 11.0" } */
       
 94015 +  printf("compiled: %.1f\n", resfp);
       
 94016 +  /* { dg-output "\ncompiled: 11.0" } */
       
 94017 +
       
 94018 +  arg_types[0] = &ffi_type_uint;
       
 94019 +  arg_types[1] = &ffi_type_double;
       
 94020 +  arg_types[2] = &ffi_type_double;
       
 94021 +  arg_types[3] = &ffi_type_double;
       
 94022 +  arg_types[4] = NULL;
       
 94023 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 2, 4,
       
 94024 +        &ffi_type_double, arg_types) == FFI_OK);
       
 94025 +
       
 94026 +  firstarg = 2;
       
 94027 +  doubles[0] = 2.0;
       
 94028 +  doubles[1] = 3.0;
       
 94029 +  doubles[2] = 4.0;
       
 94030 +  values[0] = &firstarg;
       
 94031 +  values[1] = &doubles[0];
       
 94032 +  values[2] = &doubles[1];
       
 94033 +  values[3] = &doubles[2];
       
 94034 +  ffi_call(&cif, FFI_FN(float_va_fn), &resfp, values);
       
 94035 +  /* { dg-output "\n2: 2.0 : 0:3.0  1:4.0  total: 11.0" } */
       
 94036 +  printf("ffi: %.1f\n", resfp);
       
 94037 +  /* { dg-output "\nffi: 11.0" } */
       
 94038 +
       
 94039 +  exit(0);
       
 94040 +}
       
 94041 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/huge_struct.c b/js/src/ctypes/libffi/testsuite/libffi.call/huge_struct.c
       
 94042 --- a/js/src/ctypes/libffi/testsuite/libffi.call/huge_struct.c
       
 94043 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/huge_struct.c
       
 94044 @@ -2,17 +2,18 @@
       
 94045  	Purpose:		Check large structure returns.
       
 94046  	Limitations:	none.
       
 94047  	PR:				none.
       
 94048  	Originator:		Blake Chaffin	6/18/2007
       
 94049  */
       
 94050  
       
 94051  /* { dg-excess-errors "" { target x86_64-*-mingw* x86_64-*-cygwin* } } */
       
 94052  /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
       
 94053 -/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */
       
 94054 +/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
       
 94055 +/* { dg-options -Wformat=0 { target moxie*-*-elf } } */
       
 94056  /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
       
 94057  
       
 94058  #include "ffitest.h"
       
 94059  
       
 94060  typedef	struct BigStruct{
       
 94061  	uint8_t		a;
       
 94062  	int8_t		b;
       
 94063  	uint16_t	c;
       
 94064 @@ -124,24 +125,24 @@ test_large_fn(
       
 94065  		ui8_2 + 2, si8_2 + 2, ui16_2 + 2, si16_2 + 2, ui32_2 + 2, si32_2 + 2,
       
 94066  			ui64_2 + 2, si64_2 + 2, f_2 + 2, d_2 + 2, ld_2 + 2, (char*)((intptr_t)p_2 + 2), 
       
 94067  		ui8_3 + 3, si8_3 + 3, ui16_3 + 3, si16_3 + 3, ui32_3 + 3, si32_3 + 3,
       
 94068  			ui64_3 + 3, si64_3 + 3, f_3 + 3, d_3 + 3, ld_3 + 3, (char*)((intptr_t)p_3 + 3), 
       
 94069  		ui8_4 + 4, si8_4 + 4, ui16_4 + 4, si16_4 + 4, ui32_4 + 4, si32_4 + 4,
       
 94070  			ui64_4 + 4, si64_4 + 4, f_4 + 4, d_4 + 4, ld_4 + 4, (char*)((intptr_t)p_4 + 4), 
       
 94071  		ui8_5 + 5, si8_5 + 5};
       
 94072  
       
 94073 -	printf("%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94074 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94075 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94076 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %hhu %hhd: "
       
 94077 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94078 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94079 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94080 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %hhu %hhd\n",
       
 94081 +	printf("%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94082 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94083 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94084 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 ": "
       
 94085 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94086 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94087 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94088 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n",
       
 94089  	       ui8_1, si8_1, ui16_1, si16_1, ui32_1, si32_1, ui64_1, si64_1, f_1, d_1, ld_1, (unsigned long)p_1,
       
 94090  		ui8_2, si8_2, ui16_2, si16_2, ui32_2, si32_2, ui64_2, si64_2, f_2, d_2, ld_2, (unsigned long)p_2,
       
 94091  		ui8_3, si8_3, ui16_3, si16_3, ui32_3, si32_3, ui64_3, si64_3, f_3, d_3, ld_3, (unsigned long)p_3,
       
 94092  		ui8_4, si8_4, ui16_4, si16_4, ui32_4, si32_4, ui64_4, si64_4, f_4, d_4, ld_4, (unsigned long)p_4, ui8_5, si8_5,
       
 94093  		retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f,
       
 94094  	       retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l,
       
 94095  		retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r,
       
 94096  	       retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x,
       
 94097 @@ -224,16 +225,29 @@ main(int argc __UNUSED__, const char** a
       
 94098  	ffi_cif		cif;
       
 94099  	ffi_type*	argTypes[51];
       
 94100  	void*		argValues[51];
       
 94101  
       
 94102  	ffi_type	ret_struct_type;
       
 94103  	ffi_type*	st_fields[51];
       
 94104  	BigStruct	retVal;
       
 94105  
       
 94106 +	uint8_t		ui8		= 1;
       
 94107 +	int8_t		si8		= 2;
       
 94108 +	uint16_t	ui16	= 3;
       
 94109 +	int16_t		si16	= 4;
       
 94110 +	uint32_t	ui32	= 5;
       
 94111 +	int32_t		si32	= 6;
       
 94112 +	uint64_t	ui64	= 7;
       
 94113 +	int64_t		si64	= 8;
       
 94114 +	float		f		= 9;
       
 94115 +	double		d		= 10;
       
 94116 +	long double	ld		= 11;
       
 94117 +	char*		p		= (char*)0x12345678;
       
 94118 +
       
 94119  	memset (&retVal, 0, sizeof(retVal));
       
 94120  
       
 94121  	ret_struct_type.size = 0;
       
 94122  	ret_struct_type.alignment = 0;
       
 94123  	ret_struct_type.type = FFI_TYPE_STRUCT;
       
 94124  	ret_struct_type.elements = st_fields;
       
 94125  
       
 94126  	st_fields[0]	= st_fields[12]	= st_fields[24]	= st_fields[36]	= st_fields[48]	= &ffi_type_uint8;
       
 94127 @@ -246,29 +260,16 @@ main(int argc __UNUSED__, const char** a
       
 94128  	st_fields[7]	= st_fields[19]	= st_fields[31]	= st_fields[43]	= &ffi_type_sint64;
       
 94129  	st_fields[8]	= st_fields[20]	= st_fields[32]	= st_fields[44]	= &ffi_type_float;
       
 94130  	st_fields[9]	= st_fields[21]	= st_fields[33]	= st_fields[45]	= &ffi_type_double;
       
 94131  	st_fields[10]	= st_fields[22]	= st_fields[34]	= st_fields[46]	= &ffi_type_longdouble;
       
 94132  	st_fields[11]	= st_fields[23]	= st_fields[35]	= st_fields[47]	= &ffi_type_pointer;
       
 94133  
       
 94134  	st_fields[50] = NULL;
       
 94135  
       
 94136 -	uint8_t		ui8		= 1;
       
 94137 -	int8_t		si8		= 2;
       
 94138 -	uint16_t	ui16	= 3;
       
 94139 -	int16_t		si16	= 4;
       
 94140 -	uint32_t	ui32	= 5;
       
 94141 -	int32_t		si32	= 6;
       
 94142 -	uint64_t	ui64	= 7;
       
 94143 -	int64_t		si64	= 8;
       
 94144 -	float		f		= 9;
       
 94145 -	double		d		= 10;
       
 94146 -	long double	ld		= 11;
       
 94147 -	char*		p		= (char*)0x12345678;
       
 94148 -
       
 94149  	argTypes[0]		= argTypes[12]	= argTypes[24]	= argTypes[36]	= argTypes[48]	= &ffi_type_uint8;
       
 94150  	argValues[0]	= argValues[12]	= argValues[24]	= argValues[36]	= argValues[48]	= &ui8;
       
 94151  	argTypes[1]		= argTypes[13]	= argTypes[25]	= argTypes[37]	= argTypes[49]	= &ffi_type_sint8;
       
 94152  	argValues[1]	= argValues[13]	= argValues[25]	= argValues[37]	= argValues[49]	= &si8;
       
 94153  	argTypes[2]		= argTypes[14]	= argTypes[26]	= argTypes[38]	= &ffi_type_uint16;
       
 94154  	argValues[2]	= argValues[14]	= argValues[26]	= argValues[38]	= &ui16;
       
 94155  	argTypes[3]		= argTypes[15]	= argTypes[27]	= argTypes[39]	= &ffi_type_sint16;
       
 94156  	argValues[3]	= argValues[15]	= argValues[27]	= argValues[39]	= &si16;
       
 94157 @@ -290,53 +291,53 @@ main(int argc __UNUSED__, const char** a
       
 94158  	argValues[11]	= argValues[23]	= argValues[35]	= argValues[47]	= &p;
       
 94159  
       
 94160  	argTypes[50]	= NULL;
       
 94161  	argValues[50]	= NULL;
       
 94162  
       
 94163  	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 50, &ret_struct_type, argTypes) == FFI_OK);
       
 94164  
       
 94165  	ffi_call(&cif, FFI_FN(test_large_fn), &retVal, argValues);
       
 94166 -	// { dg-output "1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
       
 94167 -	printf("res: %hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94168 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94169 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94170 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %hhu %hhd\n",
       
 94171 +	/* { dg-output "1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */
       
 94172 +	printf("res: %" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94173 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94174 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94175 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n",
       
 94176  		retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f,
       
 94177  	       retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l,
       
 94178  		retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r,
       
 94179  	       retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x,
       
 94180  		retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd,
       
 94181  	       retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj,
       
 94182  		retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp,
       
 94183  	       retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx);
       
 94184 -	// { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
       
 94185 +	/* { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */
       
 94186  
       
 94187  	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_large_fn, NULL, code) == FFI_OK);
       
 94188  
       
 94189  	retVal	= ((BigStruct(*)(
       
 94190  		uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*,
       
 94191  		uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*,
       
 94192  		uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*,
       
 94193  		uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*,
       
 94194  		uint8_t, int8_t))(code))(
       
 94195  		ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
       
 94196  		ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
       
 94197  		ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
       
 94198  		ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
       
 94199  		ui8, si8);
       
 94200 -	// { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
       
 94201 -	printf("res: %hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94202 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94203 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94204 -		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %hhu %hhd\n",
       
 94205 +	/* { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */
       
 94206 +	printf("res: %" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94207 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94208 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
       
 94209 +		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n",
       
 94210  		retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f,
       
 94211  	       retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l,
       
 94212  		retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r,
       
 94213  	       retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x,
       
 94214  		retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd,
       
 94215  	       retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj,
       
 94216  		retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp,
       
 94217  	       retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx);
       
 94218 -	// { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
       
 94219 +	/* { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */
       
 94220  
       
 94221      return 0;
       
 94222  }
       
 94223 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/many.c b/js/src/ctypes/libffi/testsuite/libffi.call/many.c
       
 94224 --- a/js/src/ctypes/libffi/testsuite/libffi.call/many.c
       
 94225 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/many.c
       
 94226 @@ -2,40 +2,30 @@
       
 94227     Purpose:	Check return value float, with many arguments
       
 94228     Limitations:	none.
       
 94229     PR:		none.
       
 94230     Originator:	From the original ffitest.c  */
       
 94231  
       
 94232  /* { dg-do run } */
       
 94233  #include "ffitest.h"
       
 94234  
       
 94235 +#include <stdlib.h>
       
 94236  #include <float.h>
       
 94237 +#include <math.h>
       
 94238  
       
 94239 -static float many(float f1,
       
 94240 -		  float f2,
       
 94241 -		  float f3,
       
 94242 -		  float f4,
       
 94243 -		  float f5,
       
 94244 -		  float f6,
       
 94245 -		  float f7,
       
 94246 -		  float f8,
       
 94247 -		  float f9,
       
 94248 -		  float f10,
       
 94249 -		  float f11,
       
 94250 -		  float f12,
       
 94251 -		  float f13)
       
 94252 +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)
       
 94253  {
       
 94254  #if 0
       
 94255    printf("%f %f %f %f %f %f %f %f %f %f %f %f %f\n",
       
 94256  	 (double) f1, (double) f2, (double) f3, (double) f4, (double) f5, 
       
 94257  	 (double) f6, (double) f7, (double) f8, (double) f9, (double) f10,
       
 94258  	 (double) f11, (double) f12, (double) f13);
       
 94259  #endif
       
 94260  
       
 94261 -  return ((f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13);
       
 94262 +  return f1+f2+f3+f4+f5+f6+f7+f8+f9+f10+f11+f12+f13;
       
 94263  }
       
 94264  
       
 94265  int main (void)
       
 94266  {
       
 94267    ffi_cif cif;
       
 94268    ffi_type *args[13];
       
 94269    void *values[13];
       
 94270    float fa[13];
       
 94271 @@ -45,25 +35,25 @@ int main (void)
       
 94272    for (i = 0; i < 13; i++)
       
 94273      {
       
 94274        args[i] = &ffi_type_float;
       
 94275        values[i] = &fa[i];
       
 94276        fa[i] = (float) i;
       
 94277      }
       
 94278  
       
 94279      /* Initialize the cif */
       
 94280 -    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 13, 
       
 94281 +    CHECK(ffi_prep_cif(&cif, ABI_NUM, 13,
       
 94282  		       &ffi_type_float, args) == FFI_OK);
       
 94283  
       
 94284      ffi_call(&cif, FFI_FN(many), &f, values);
       
 94285  
       
 94286      ff =  many(fa[0], fa[1],
       
 94287  	       fa[2], fa[3],
       
 94288  	       fa[4], fa[5],
       
 94289  	       fa[6], fa[7],
       
 94290  	       fa[8], fa[9],
       
 94291  	       fa[10],fa[11],fa[12]);
       
 94292  
       
 94293 -    if (f - ff < FLT_EPSILON)
       
 94294 +    if (fabs(f - ff) < FLT_EPSILON)
       
 94295        exit(0);
       
 94296      else
       
 94297        abort();
       
 94298  }
       
 94299 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/many2.c b/js/src/ctypes/libffi/testsuite/libffi.call/many2.c
       
 94300 new file mode 100644
       
 94301 --- /dev/null
       
 94302 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/many2.c
       
 94303 @@ -0,0 +1,57 @@
       
 94304 +/* Area:        ffi_call
       
 94305 +   Purpose:     Check uint8_t arguments.
       
 94306 +   Limitations: none.
       
 94307 +   PR:          PR45677.
       
 94308 +   Originator:  Dan Witte <dwitte@gmail.com> 20100916  */
       
 94309 +
       
 94310 +/* { dg-do run } */
       
 94311 +
       
 94312 +#include "ffitest.h"
       
 94313 +
       
 94314 +#define NARGS 7
       
 94315 +
       
 94316 +typedef unsigned char u8;
       
 94317 +
       
 94318 +#ifdef __GNUC__
       
 94319 +__attribute__((noinline))
       
 94320 +#endif
       
 94321 +uint8_t
       
 94322 +foo (uint8_t a, uint8_t b, uint8_t c, uint8_t d,
       
 94323 +     uint8_t e, uint8_t f, uint8_t g)
       
 94324 +{
       
 94325 +  return a + b + c + d + e + f + g;
       
 94326 +}
       
 94327 +
       
 94328 +uint8_t ABI_ATTR
       
 94329 +bar (uint8_t a, uint8_t b, uint8_t c, uint8_t d,
       
 94330 +     uint8_t e, uint8_t f, uint8_t g)
       
 94331 +{
       
 94332 +  return foo (a, b, c, d, e, f, g);
       
 94333 +}
       
 94334 +
       
 94335 +int
       
 94336 +main (void)
       
 94337 +{
       
 94338 +  ffi_type *ffitypes[NARGS];
       
 94339 +  int i;
       
 94340 +  ffi_cif cif;
       
 94341 +  ffi_arg result = 0;
       
 94342 +  uint8_t args[NARGS];
       
 94343 +  void *argptrs[NARGS];
       
 94344 +
       
 94345 +  for (i = 0; i < NARGS; ++i)
       
 94346 +    ffitypes[i] = &ffi_type_uint8;
       
 94347 +
       
 94348 +  CHECK (ffi_prep_cif (&cif, ABI_NUM, NARGS,
       
 94349 +		       &ffi_type_uint8, ffitypes) == FFI_OK);
       
 94350 +
       
 94351 +  for (i = 0; i < NARGS; ++i)
       
 94352 +    {
       
 94353 +      args[i] = i;
       
 94354 +      argptrs[i] = &args[i];
       
 94355 +    }
       
 94356 +  ffi_call (&cif, FFI_FN (bar), &result, argptrs);
       
 94357 +
       
 94358 +  CHECK (result == 21);
       
 94359 +  return 0;
       
 94360 +}
       
 94361 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/many_win32.c b/js/src/ctypes/libffi/testsuite/libffi.call/many_win32.c
       
 94362 deleted file mode 100644
       
 94363 --- a/js/src/ctypes/libffi/testsuite/libffi.call/many_win32.c
       
 94364 +++ /dev/null
       
 94365 @@ -1,63 +0,0 @@
       
 94366 -/* Area:	ffi_call
       
 94367 -   Purpose:	Check stdcall many call on X86_WIN32 systems.
       
 94368 -   Limitations:	none.
       
 94369 -   PR:		none.
       
 94370 -   Originator:	From the original ffitest.c  */
       
 94371 -
       
 94372 -/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */
       
 94373 -
       
 94374 -#include "ffitest.h"
       
 94375 -#include <float.h>
       
 94376 -
       
 94377 -static float __attribute__((stdcall)) stdcall_many(float f1,
       
 94378 -						   float f2,
       
 94379 -						   float f3,
       
 94380 -						   float f4,
       
 94381 -						   float f5,
       
 94382 -						   float f6,
       
 94383 -						   float f7,
       
 94384 -						   float f8,
       
 94385 -						   float f9,
       
 94386 -						   float f10,
       
 94387 -						   float f11,
       
 94388 -						   float f12,
       
 94389 -						   float f13)
       
 94390 -{
       
 94391 -  return ((f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13);
       
 94392 -}
       
 94393 -
       
 94394 -int main (void)
       
 94395 -{
       
 94396 -  ffi_cif cif;
       
 94397 -  ffi_type *args[13];
       
 94398 -  void *values[13];
       
 94399 -  float fa[13];
       
 94400 -  float f, ff;
       
 94401 -  unsigned long ul;
       
 94402 -
       
 94403 -  for (ul = 0; ul < 13; ul++)
       
 94404 -    {
       
 94405 -      args[ul] = &ffi_type_float;
       
 94406 -      values[ul] = &fa[ul];
       
 94407 -	fa[ul] = (float) ul;
       
 94408 -    }
       
 94409 -
       
 94410 -  /* Initialize the cif */
       
 94411 -  CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 13,
       
 94412 -		     &ffi_type_float, args) == FFI_OK);
       
 94413 -
       
 94414 -  ff =  stdcall_many(fa[0], fa[1],
       
 94415 -		     fa[2], fa[3],
       
 94416 -		     fa[4], fa[5],
       
 94417 -		     fa[6], fa[7],
       
 94418 -		     fa[8], fa[9],
       
 94419 -		     fa[10], fa[11], fa[12]);
       
 94420 -
       
 94421 -  ffi_call(&cif, FFI_FN(stdcall_many), &f, values);
       
 94422 -
       
 94423 -  if (f - ff < FLT_EPSILON)
       
 94424 -    printf("stdcall many arg tests ok!\n");
       
 94425 -  else
       
 94426 -    CHECK(0);
       
 94427 -  exit(0);
       
 94428 -}
       
 94429 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/negint.c b/js/src/ctypes/libffi/testsuite/libffi.call/negint.c
       
 94430 --- a/js/src/ctypes/libffi/testsuite/libffi.call/negint.c
       
 94431 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/negint.c
       
 94432 @@ -1,16 +1,15 @@
       
 94433  /* Area:	ffi_call
       
 94434     Purpose:	Check that negative integers are passed correctly.
       
 94435     Limitations:	none.
       
 94436     PR:		none.
       
 94437     Originator:	From the original ffitest.c  */
       
 94438  
       
 94439  /* { dg-do run } */
       
 94440 -/* { dg-options -O2 } */
       
 94441  
       
 94442  #include "ffitest.h"
       
 94443  
       
 94444  static int checking(int a, short b, signed char c)
       
 94445  {
       
 94446  
       
 94447    return (a < 0 && b < 0 && c < 0);
       
 94448  }
       
 94449 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c
       
 94450 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c
       
 94451 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c
       
 94452 @@ -72,37 +72,37 @@ int main (void)
       
 94453    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94454    void* args_dbl[5];
       
 94455    ffi_type* cls_struct_fields[5];
       
 94456    ffi_type* cls_struct_fields1[5];
       
 94457    ffi_type* cls_struct_fields2[5];
       
 94458    ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
       
 94459    ffi_type* dbl_arg_types[5];
       
 94460  
       
 94461 +  struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6};
       
 94462 +  struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0};
       
 94463 +  struct cls_struct_combined g_dbl = {{4.0, 5.0, 6},
       
 94464 +				      {3, 1.0, 8.0}};
       
 94465 +  struct cls_struct_combined res_dbl;
       
 94466 +
       
 94467    cls_struct_type.size = 0;
       
 94468    cls_struct_type.alignment = 0;
       
 94469    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94470    cls_struct_type.elements = cls_struct_fields;
       
 94471  
       
 94472    cls_struct_type1.size = 0;
       
 94473    cls_struct_type1.alignment = 0;
       
 94474    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 94475    cls_struct_type1.elements = cls_struct_fields1;
       
 94476  
       
 94477    cls_struct_type2.size = 0;
       
 94478    cls_struct_type2.alignment = 0;
       
 94479    cls_struct_type2.type = FFI_TYPE_STRUCT;
       
 94480    cls_struct_type2.elements = cls_struct_fields2;
       
 94481  
       
 94482 -  struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6};
       
 94483 -  struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0};
       
 94484 -  struct cls_struct_combined g_dbl = {{4.0, 5.0, 6},
       
 94485 -				      {3, 1.0, 8.0}};
       
 94486 -  struct cls_struct_combined res_dbl;
       
 94487 -
       
 94488    cls_struct_fields[0] = &ffi_type_double;
       
 94489    cls_struct_fields[1] = &ffi_type_float;
       
 94490    cls_struct_fields[2] = &ffi_type_sint;
       
 94491    cls_struct_fields[3] = NULL;
       
 94492  
       
 94493    cls_struct_fields1[0] = &ffi_type_sint;
       
 94494    cls_struct_fields1[1] = &ffi_type_double;
       
 94495    cls_struct_fields1[2] = &ffi_type_float;
       
 94496 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c
       
 94497 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c
       
 94498 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c
       
 94499 @@ -76,38 +76,38 @@ int main (void)
       
 94500    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94501    void* args_dbl[5];
       
 94502    ffi_type* cls_struct_fields[5];
       
 94503    ffi_type* cls_struct_fields1[5];
       
 94504    ffi_type* cls_struct_fields2[5];
       
 94505    ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
       
 94506    ffi_type* dbl_arg_types[5];
       
 94507  
       
 94508 +  struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6};
       
 94509 +  struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0};
       
 94510 +  struct cls_struct_combined g_dbl = {{4.0, 5.0, 6},
       
 94511 +				      {3, 1.0, 8.0}};
       
 94512 +  struct cls_struct_16byte1 h_dbl = { 3.0, 2.0, 4};
       
 94513 +  struct cls_struct_combined res_dbl;
       
 94514 +
       
 94515    cls_struct_type.size = 0;
       
 94516    cls_struct_type.alignment = 0;
       
 94517    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94518    cls_struct_type.elements = cls_struct_fields;
       
 94519  
       
 94520    cls_struct_type1.size = 0;
       
 94521    cls_struct_type1.alignment = 0;
       
 94522    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 94523    cls_struct_type1.elements = cls_struct_fields1;
       
 94524  
       
 94525    cls_struct_type2.size = 0;
       
 94526    cls_struct_type2.alignment = 0;
       
 94527    cls_struct_type2.type = FFI_TYPE_STRUCT;
       
 94528    cls_struct_type2.elements = cls_struct_fields2;
       
 94529  
       
 94530 -  struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6};
       
 94531 -  struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0};
       
 94532 -  struct cls_struct_combined g_dbl = {{4.0, 5.0, 6},
       
 94533 -				      {3, 1.0, 8.0}};
       
 94534 -  struct cls_struct_16byte1 h_dbl = { 3.0, 2.0, 4};
       
 94535 -  struct cls_struct_combined res_dbl;
       
 94536 -
       
 94537    cls_struct_fields[0] = &ffi_type_double;
       
 94538    cls_struct_fields[1] = &ffi_type_float;
       
 94539    cls_struct_fields[2] = &ffi_type_sint;
       
 94540    cls_struct_fields[3] = NULL;
       
 94541  
       
 94542    cls_struct_fields1[0] = &ffi_type_sint;
       
 94543    cls_struct_fields1[1] = &ffi_type_double;
       
 94544    cls_struct_fields1[2] = &ffi_type_float;
       
 94545 @@ -151,11 +151,11 @@ int main (void)
       
 94546  	     (code))(e_dbl, f_dbl, g_dbl, h_dbl);
       
 94547    /* { dg-output "\n9 2 6 1 2 3 4 5 6 3 1 8 3 2 4: 15 10 13 10 12 13" } */
       
 94548    CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a));
       
 94549    CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b));
       
 94550    CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c));
       
 94551    CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii));
       
 94552    CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd));
       
 94553    CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff));
       
 94554 -  //  CHECK( 1 == 0);
       
 94555 +  /*  CHECK( 1 == 0); */
       
 94556    exit(0);
       
 94557  }
       
 94558 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c
       
 94559 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c
       
 94560 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c
       
 94561 @@ -62,37 +62,37 @@ int main (void)
       
 94562    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94563    void* args_dbl[4];
       
 94564    ffi_type* cls_struct_fields[3];
       
 94565    ffi_type* cls_struct_fields1[4];
       
 94566    ffi_type* cls_struct_fields2[3];
       
 94567    ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
       
 94568    ffi_type* dbl_arg_types[4];
       
 94569  
       
 94570 +  struct A e_dbl = { 1LL, 7};
       
 94571 +  struct B f_dbl = { 99, {12LL , 127}, 255};
       
 94572 +  struct C g_dbl = { 2LL, 9};
       
 94573 +
       
 94574 +  struct B res_dbl;
       
 94575 +
       
 94576    cls_struct_type.size = 0;
       
 94577    cls_struct_type.alignment = 0;
       
 94578    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94579    cls_struct_type.elements = cls_struct_fields;
       
 94580  
       
 94581    cls_struct_type1.size = 0;
       
 94582    cls_struct_type1.alignment = 0;
       
 94583    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 94584    cls_struct_type1.elements = cls_struct_fields1;
       
 94585  
       
 94586    cls_struct_type2.size = 0;
       
 94587    cls_struct_type2.alignment = 0;
       
 94588    cls_struct_type2.type = FFI_TYPE_STRUCT;
       
 94589    cls_struct_type2.elements = cls_struct_fields2;
       
 94590  
       
 94591 -  struct A e_dbl = { 1LL, 7};
       
 94592 -  struct B f_dbl = { 99, {12LL , 127}, 255};
       
 94593 -  struct C g_dbl = { 2LL, 9};
       
 94594 -
       
 94595 -  struct B res_dbl;
       
 94596 -
       
 94597    cls_struct_fields[0] = &ffi_type_uint64;
       
 94598    cls_struct_fields[1] = &ffi_type_uchar;
       
 94599    cls_struct_fields[2] = NULL;
       
 94600  
       
 94601    cls_struct_fields1[0] = &ffi_type_uchar;
       
 94602    cls_struct_fields1[1] = &cls_struct_type;
       
 94603    cls_struct_fields1[2] = &ffi_type_uint;
       
 94604    cls_struct_fields1[3] = NULL;
       
 94605 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct11.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct11.c
       
 94606 new file mode 100644
       
 94607 --- /dev/null
       
 94608 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct11.c
       
 94609 @@ -0,0 +1,121 @@
       
 94610 +/* Area:	ffi_call, closure_call
       
 94611 +   Purpose:	Check parameter passing with nested structs
       
 94612 +		of a single type.  This tests the special cases
       
 94613 +		for homogeneous floating-point aggregates in the
       
 94614 +		AArch64 PCS.
       
 94615 +   Limitations:	none.
       
 94616 +   PR:		none.
       
 94617 +   Originator:  ARM Ltd.  */
       
 94618 +
       
 94619 +/* { dg-do run } */
       
 94620 +#include "ffitest.h"
       
 94621 +
       
 94622 +typedef struct A {
       
 94623 +  float a_x;
       
 94624 +  float a_y;
       
 94625 +} A;
       
 94626 +
       
 94627 +typedef struct B {
       
 94628 +  float b_x;
       
 94629 +  float b_y;
       
 94630 +} B;
       
 94631 +
       
 94632 +typedef struct C {
       
 94633 +  A a;
       
 94634 +  B b;
       
 94635 +} C;
       
 94636 +
       
 94637 +static C C_fn (int x, int y, int z, C source, int i, int j, int k)
       
 94638 +{
       
 94639 +  C result;
       
 94640 +  result.a.a_x = source.a.a_x;
       
 94641 +  result.a.a_y = source.a.a_y;
       
 94642 +  result.b.b_x = source.b.b_x;
       
 94643 +  result.b.b_y = source.b.b_y;
       
 94644 +
       
 94645 +  printf ("%d, %d, %d, %d, %d, %d\n", x, y, z, i, j, k);
       
 94646 +
       
 94647 +  printf ("%.1f, %.1f, %.1f, %.1f, "
       
 94648 +	  "%.1f, %.1f, %.1f, %.1f\n",
       
 94649 +	  source.a.a_x, source.a.a_y,
       
 94650 +	  source.b.b_x, source.b.b_y,
       
 94651 +	  result.a.a_x, result.a.a_y,
       
 94652 +	  result.b.b_x, result.b.b_y);
       
 94653 +
       
 94654 +  return result;
       
 94655 +}
       
 94656 +
       
 94657 +int main (void)
       
 94658 +{
       
 94659 +  ffi_cif cif;
       
 94660 +
       
 94661 +  ffi_type* struct_fields_source_a[3];
       
 94662 +  ffi_type* struct_fields_source_b[3];
       
 94663 +  ffi_type* struct_fields_source_c[3];
       
 94664 +  ffi_type* arg_types[8];
       
 94665 +
       
 94666 +  ffi_type struct_type_a, struct_type_b, struct_type_c;
       
 94667 +
       
 94668 +  struct A source_fld_a = {1.0, 2.0};
       
 94669 +  struct B source_fld_b = {4.0, 8.0};
       
 94670 +  int k = 1;
       
 94671 +
       
 94672 +  struct C result;
       
 94673 +  struct C source = {source_fld_a, source_fld_b};
       
 94674 +
       
 94675 +  struct_type_a.size = 0;
       
 94676 +  struct_type_a.alignment = 0;
       
 94677 +  struct_type_a.type = FFI_TYPE_STRUCT;
       
 94678 +  struct_type_a.elements = struct_fields_source_a;
       
 94679 +
       
 94680 +  struct_type_b.size = 0;
       
 94681 +  struct_type_b.alignment = 0;
       
 94682 +  struct_type_b.type = FFI_TYPE_STRUCT;
       
 94683 +  struct_type_b.elements = struct_fields_source_b;
       
 94684 +
       
 94685 +  struct_type_c.size = 0;
       
 94686 +  struct_type_c.alignment = 0;
       
 94687 +  struct_type_c.type = FFI_TYPE_STRUCT;
       
 94688 +  struct_type_c.elements = struct_fields_source_c;
       
 94689 +
       
 94690 +  struct_fields_source_a[0] = &ffi_type_float;
       
 94691 +  struct_fields_source_a[1] = &ffi_type_float;
       
 94692 +  struct_fields_source_a[2] = NULL;
       
 94693 +
       
 94694 +  struct_fields_source_b[0] = &ffi_type_float;
       
 94695 +  struct_fields_source_b[1] = &ffi_type_float;
       
 94696 +  struct_fields_source_b[2] = NULL;
       
 94697 +
       
 94698 +  struct_fields_source_c[0] = &struct_type_a;
       
 94699 +  struct_fields_source_c[1] = &struct_type_b;
       
 94700 +  struct_fields_source_c[2] = NULL;
       
 94701 +
       
 94702 +  arg_types[0] = &ffi_type_sint32;
       
 94703 +  arg_types[1] = &ffi_type_sint32;
       
 94704 +  arg_types[2] = &ffi_type_sint32;
       
 94705 +  arg_types[3] = &struct_type_c;
       
 94706 +  arg_types[4] = &ffi_type_sint32;
       
 94707 +  arg_types[5] = &ffi_type_sint32;
       
 94708 +  arg_types[6] = &ffi_type_sint32;
       
 94709 +  arg_types[7] = NULL;
       
 94710 +
       
 94711 +  void *args[7];
       
 94712 +  args[0] = &k;
       
 94713 +  args[1] = &k;
       
 94714 +  args[2] = &k;
       
 94715 +  args[3] = &source;
       
 94716 +  args[4] = &k;
       
 94717 +  args[5] = &k;
       
 94718 +  args[6] = &k;
       
 94719 +  CHECK (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, 7, &struct_type_c,
       
 94720 +		       arg_types) == FFI_OK);
       
 94721 +
       
 94722 +  ffi_call (&cif, FFI_FN (C_fn), &result, args);
       
 94723 +  /* { dg-output "1, 1, 1, 1, 1, 1\n" } */
       
 94724 +  /* { dg-output "1.0, 2.0, 4.0, 8.0, 1.0, 2.0, 4.0, 8.0" } */
       
 94725 +  CHECK (result.a.a_x == source.a.a_x);
       
 94726 +  CHECK (result.a.a_y == source.a.a_y);
       
 94727 +  CHECK (result.b.b_x == source.b.b_x);
       
 94728 +  CHECK (result.b.b_y == source.b.b_y);
       
 94729 +  exit (0);
       
 94730 +}
       
 94731 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c
       
 94732 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c
       
 94733 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c
       
 94734 @@ -52,31 +52,31 @@ int main (void)
       
 94735    void *code;
       
 94736    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94737    void* args_dbl[3];
       
 94738    ffi_type* cls_struct_fields[3];
       
 94739    ffi_type* cls_struct_fields1[3];
       
 94740    ffi_type cls_struct_type, cls_struct_type1;
       
 94741    ffi_type* dbl_arg_types[3];
       
 94742  
       
 94743 +  struct A e_dbl = { 1, 7};
       
 94744 +  struct B f_dbl = {{12 , 127}, 99};
       
 94745 +
       
 94746 +  struct B res_dbl;
       
 94747 +
       
 94748    cls_struct_type.size = 0;
       
 94749    cls_struct_type.alignment = 0;
       
 94750    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94751    cls_struct_type.elements = cls_struct_fields;
       
 94752  
       
 94753    cls_struct_type1.size = 0;
       
 94754    cls_struct_type1.alignment = 0;
       
 94755    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 94756    cls_struct_type1.elements = cls_struct_fields1;
       
 94757  
       
 94758 -  struct A e_dbl = { 1, 7};
       
 94759 -  struct B f_dbl = {{12 , 127}, 99};
       
 94760 -
       
 94761 -  struct B res_dbl;
       
 94762 -
       
 94763    cls_struct_fields[0] = &ffi_type_ulong;
       
 94764    cls_struct_fields[1] = &ffi_type_uchar;
       
 94765    cls_struct_fields[2] = NULL;
       
 94766  
       
 94767    cls_struct_fields1[0] = &cls_struct_type;
       
 94768    cls_struct_fields1[1] = &ffi_type_uchar;
       
 94769    cls_struct_fields1[2] = NULL;
       
 94770  
       
 94771 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c
       
 94772 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c
       
 94773 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c
       
 94774 @@ -53,31 +53,31 @@ int main (void)
       
 94775    void *code;
       
 94776    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94777    void* args_dbl[3];
       
 94778    ffi_type* cls_struct_fields[3];
       
 94779    ffi_type* cls_struct_fields1[3];
       
 94780    ffi_type cls_struct_type, cls_struct_type1;
       
 94781    ffi_type* dbl_arg_types[3];
       
 94782  
       
 94783 +  struct A e_dbl = { 1LL, 7};
       
 94784 +  struct B f_dbl = {{12LL , 127}, 99};
       
 94785 +
       
 94786 +  struct B res_dbl;
       
 94787 +
       
 94788    cls_struct_type.size = 0;
       
 94789    cls_struct_type.alignment = 0;
       
 94790    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94791    cls_struct_type.elements = cls_struct_fields;
       
 94792  
       
 94793    cls_struct_type1.size = 0;
       
 94794    cls_struct_type1.alignment = 0;
       
 94795    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 94796    cls_struct_type1.elements = cls_struct_fields1;
       
 94797  
       
 94798 -  struct A e_dbl = { 1LL, 7};
       
 94799 -  struct B f_dbl = {{12LL , 127}, 99};
       
 94800 -
       
 94801 -  struct B res_dbl;
       
 94802 -
       
 94803    cls_struct_fields[0] = &ffi_type_uint64;
       
 94804    cls_struct_fields[1] = &ffi_type_uchar;
       
 94805    cls_struct_fields[2] = NULL;
       
 94806  
       
 94807    cls_struct_fields1[0] = &cls_struct_type;
       
 94808    cls_struct_fields1[1] = &ffi_type_uchar;
       
 94809    cls_struct_fields1[2] = NULL;
       
 94810  
       
 94811 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c
       
 94812 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c
       
 94813 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c
       
 94814 @@ -53,31 +53,31 @@ int main (void)
       
 94815    void *code;
       
 94816    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94817    void* args_dbl[3];
       
 94818    ffi_type* cls_struct_fields[3];
       
 94819    ffi_type* cls_struct_fields1[3];
       
 94820    ffi_type cls_struct_type, cls_struct_type1;
       
 94821    ffi_type* dbl_arg_types[3];
       
 94822  
       
 94823 +  struct A e_dbl = { 1.0, 7};
       
 94824 +  struct B f_dbl = {{12.0 , 127}, 99};
       
 94825 +
       
 94826 +  struct B res_dbl;
       
 94827 +
       
 94828    cls_struct_type.size = 0;
       
 94829    cls_struct_type.alignment = 0;
       
 94830    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94831    cls_struct_type.elements = cls_struct_fields;
       
 94832  
       
 94833    cls_struct_type1.size = 0;
       
 94834    cls_struct_type1.alignment = 0;
       
 94835    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 94836    cls_struct_type1.elements = cls_struct_fields1;
       
 94837  
       
 94838 -  struct A e_dbl = { 1.0, 7};
       
 94839 -  struct B f_dbl = {{12.0 , 127}, 99};
       
 94840 -
       
 94841 -  struct B res_dbl;
       
 94842 -
       
 94843    cls_struct_fields[0] = &ffi_type_double;
       
 94844    cls_struct_fields[1] = &ffi_type_uchar;
       
 94845    cls_struct_fields[2] = NULL;
       
 94846  
       
 94847    cls_struct_fields1[0] = &cls_struct_type;
       
 94848    cls_struct_fields1[1] = &ffi_type_uchar;
       
 94849    cls_struct_fields1[2] = NULL;
       
 94850  
       
 94851 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c
       
 94852 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c
       
 94853 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c
       
 94854 @@ -53,31 +53,31 @@ int main (void)
       
 94855    void *code;
       
 94856    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94857    void* args_dbl[3];
       
 94858    ffi_type* cls_struct_fields[3];
       
 94859    ffi_type* cls_struct_fields1[3];
       
 94860    ffi_type cls_struct_type, cls_struct_type1;
       
 94861    ffi_type* dbl_arg_types[3];
       
 94862  
       
 94863 +  struct A e_dbl = { 1.0, 7};
       
 94864 +  struct B f_dbl = {{12.0 , 127}, 99};
       
 94865 +
       
 94866 +  struct B res_dbl;
       
 94867 +
       
 94868    cls_struct_type.size = 0;
       
 94869    cls_struct_type.alignment = 0;
       
 94870    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94871    cls_struct_type.elements = cls_struct_fields;
       
 94872  
       
 94873    cls_struct_type1.size = 0;
       
 94874    cls_struct_type1.alignment = 0;
       
 94875    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 94876    cls_struct_type1.elements = cls_struct_fields1;
       
 94877  
       
 94878 -  struct A e_dbl = { 1.0, 7};
       
 94879 -  struct B f_dbl = {{12.0 , 127}, 99};
       
 94880 -
       
 94881 -  struct B res_dbl;
       
 94882 -
       
 94883    cls_struct_fields[0] = &ffi_type_longdouble;
       
 94884    cls_struct_fields[1] = &ffi_type_uchar;
       
 94885    cls_struct_fields[2] = NULL;
       
 94886  
       
 94887    cls_struct_fields1[0] = &cls_struct_type;
       
 94888    cls_struct_fields1[1] = &ffi_type_uchar;
       
 94889    cls_struct_fields1[2] = NULL;
       
 94890  
       
 94891 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c
       
 94892 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c
       
 94893 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c
       
 94894 @@ -61,37 +61,37 @@ int main (void)
       
 94895    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94896    void* args_dbl[4];
       
 94897    ffi_type* cls_struct_fields[3];
       
 94898    ffi_type* cls_struct_fields1[3];
       
 94899    ffi_type* cls_struct_fields2[3];
       
 94900    ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
       
 94901    ffi_type* dbl_arg_types[4];
       
 94902  
       
 94903 +  struct A e_dbl = { 1.0, 7};
       
 94904 +  struct B f_dbl = {{12.0 , 127}, 99};
       
 94905 +  struct C g_dbl = { 2, 9};
       
 94906 +
       
 94907 +  struct B res_dbl;
       
 94908 +
       
 94909    cls_struct_type.size = 0;
       
 94910    cls_struct_type.alignment = 0;
       
 94911    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94912    cls_struct_type.elements = cls_struct_fields;
       
 94913  
       
 94914    cls_struct_type1.size = 0;
       
 94915    cls_struct_type1.alignment = 0;
       
 94916    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 94917    cls_struct_type1.elements = cls_struct_fields1;
       
 94918  
       
 94919    cls_struct_type2.size = 0;
       
 94920    cls_struct_type2.alignment = 0;
       
 94921    cls_struct_type2.type = FFI_TYPE_STRUCT;
       
 94922    cls_struct_type2.elements = cls_struct_fields2;
       
 94923  
       
 94924 -  struct A e_dbl = { 1.0, 7};
       
 94925 -  struct B f_dbl = {{12.0 , 127}, 99};
       
 94926 -  struct C g_dbl = { 2, 9};
       
 94927 -
       
 94928 -  struct B res_dbl;
       
 94929 -
       
 94930    cls_struct_fields[0] = &ffi_type_double;
       
 94931    cls_struct_fields[1] = &ffi_type_uchar;
       
 94932    cls_struct_fields[2] = NULL;
       
 94933  
       
 94934    cls_struct_fields1[0] = &cls_struct_type;
       
 94935    cls_struct_fields1[1] = &ffi_type_uchar;
       
 94936    cls_struct_fields1[2] = NULL;
       
 94937  
       
 94938 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c
       
 94939 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c
       
 94940 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c
       
 94941 @@ -53,31 +53,31 @@ int main (void)
       
 94942    void *code;
       
 94943    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94944    void* args_dbl[3];
       
 94945    ffi_type* cls_struct_fields[3];
       
 94946    ffi_type* cls_struct_fields1[3];
       
 94947    ffi_type cls_struct_type, cls_struct_type1;
       
 94948    ffi_type* dbl_arg_types[3];
       
 94949  
       
 94950 +  struct A e_dbl = { 1LL, 7};
       
 94951 +  struct B f_dbl = {{12.0 , 127}, 99};
       
 94952 +
       
 94953 +  struct B res_dbl;
       
 94954 +
       
 94955    cls_struct_type.size = 0;
       
 94956    cls_struct_type.alignment = 0;
       
 94957    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94958    cls_struct_type.elements = cls_struct_fields;
       
 94959  
       
 94960    cls_struct_type1.size = 0;
       
 94961    cls_struct_type1.alignment = 0;
       
 94962    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 94963    cls_struct_type1.elements = cls_struct_fields1;
       
 94964  
       
 94965 -  struct A e_dbl = { 1LL, 7};
       
 94966 -  struct B f_dbl = {{12.0 , 127}, 99};
       
 94967 -
       
 94968 -  struct B res_dbl;
       
 94969 -
       
 94970    cls_struct_fields[0] = &ffi_type_uint64;
       
 94971    cls_struct_fields[1] = &ffi_type_uchar;
       
 94972    cls_struct_fields[2] = NULL;
       
 94973  
       
 94974    cls_struct_fields1[0] = &cls_struct_type;
       
 94975    cls_struct_fields1[1] = &ffi_type_uchar;
       
 94976    cls_struct_fields1[2] = NULL;
       
 94977  
       
 94978 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c
       
 94979 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c
       
 94980 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c
       
 94981 @@ -61,37 +61,37 @@ int main (void)
       
 94982    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 94983    void* args_dbl[4];
       
 94984    ffi_type* cls_struct_fields[3];
       
 94985    ffi_type* cls_struct_fields1[3];
       
 94986    ffi_type* cls_struct_fields2[3];
       
 94987    ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
       
 94988    ffi_type* dbl_arg_types[4];
       
 94989  
       
 94990 +  struct A e_dbl = { 1LL, 7};
       
 94991 +  struct B f_dbl = {{12LL , 127}, 99};
       
 94992 +  struct C g_dbl = { 2LL, 9};
       
 94993 +
       
 94994 +  struct B res_dbl;
       
 94995 +
       
 94996    cls_struct_type.size = 0;
       
 94997    cls_struct_type.alignment = 0;
       
 94998    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 94999    cls_struct_type.elements = cls_struct_fields;
       
 95000  
       
 95001    cls_struct_type1.size = 0;
       
 95002    cls_struct_type1.alignment = 0;
       
 95003    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 95004    cls_struct_type1.elements = cls_struct_fields1;
       
 95005  
       
 95006    cls_struct_type2.size = 0;
       
 95007    cls_struct_type2.alignment = 0;
       
 95008    cls_struct_type2.type = FFI_TYPE_STRUCT;
       
 95009    cls_struct_type2.elements = cls_struct_fields2;
       
 95010  
       
 95011 -  struct A e_dbl = { 1LL, 7};
       
 95012 -  struct B f_dbl = {{12LL , 127}, 99};
       
 95013 -  struct C g_dbl = { 2LL, 9};
       
 95014 -
       
 95015 -  struct B res_dbl;
       
 95016 -
       
 95017    cls_struct_fields[0] = &ffi_type_uint64;
       
 95018    cls_struct_fields[1] = &ffi_type_uchar;
       
 95019    cls_struct_fields[2] = NULL;
       
 95020  
       
 95021    cls_struct_fields1[0] = &cls_struct_type;
       
 95022    cls_struct_fields1[1] = &ffi_type_uchar;
       
 95023    cls_struct_fields1[2] = NULL;
       
 95024  
       
 95025 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c
       
 95026 --- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c
       
 95027 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c
       
 95028 @@ -61,37 +61,37 @@ int main (void)
       
 95029    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 95030    void* args_dbl[4];
       
 95031    ffi_type* cls_struct_fields[3];
       
 95032    ffi_type* cls_struct_fields1[3];
       
 95033    ffi_type* cls_struct_fields2[3];
       
 95034    ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
       
 95035    ffi_type* dbl_arg_types[4];
       
 95036  
       
 95037 +  struct A e_dbl = { 1, 7LL};
       
 95038 +  struct B f_dbl = {{12.0 , 127}, 99};
       
 95039 +  struct C g_dbl = { 2, 9};
       
 95040 +
       
 95041 +  struct B res_dbl;
       
 95042 +
       
 95043    cls_struct_type.size = 0;
       
 95044    cls_struct_type.alignment = 0;
       
 95045    cls_struct_type.type = FFI_TYPE_STRUCT;
       
 95046    cls_struct_type.elements = cls_struct_fields;
       
 95047  
       
 95048    cls_struct_type1.size = 0;
       
 95049    cls_struct_type1.alignment = 0;
       
 95050    cls_struct_type1.type = FFI_TYPE_STRUCT;
       
 95051    cls_struct_type1.elements = cls_struct_fields1;
       
 95052  
       
 95053    cls_struct_type2.size = 0;
       
 95054    cls_struct_type2.alignment = 0;
       
 95055    cls_struct_type2.type = FFI_TYPE_STRUCT;
       
 95056    cls_struct_type2.elements = cls_struct_fields2;
       
 95057  
       
 95058 -  struct A e_dbl = { 1, 7LL};
       
 95059 -  struct B f_dbl = {{12.0 , 127}, 99};
       
 95060 -  struct C g_dbl = { 2, 9};
       
 95061 -
       
 95062 -  struct B res_dbl;
       
 95063 -
       
 95064    cls_struct_fields[0] = &ffi_type_uchar;
       
 95065    cls_struct_fields[1] = &ffi_type_uint64;
       
 95066    cls_struct_fields[2] = NULL;
       
 95067  
       
 95068    cls_struct_fields1[0] = &cls_struct_type;
       
 95069    cls_struct_fields1[1] = &ffi_type_uchar;
       
 95070    cls_struct_fields1[2] = NULL;
       
 95071  
       
 95072 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c b/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c
       
 95073 --- a/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c
       
 95074 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c
       
 95075 @@ -4,16 +4,17 @@
       
 95076     PR:		none.
       
 95077     Originator:	<andreast@gcc.gnu.org> 20050212  */
       
 95078  
       
 95079  /* { dg-do run } */
       
 95080  #include "ffitest.h"
       
 95081  
       
 95082  static double return_dbl(double dbl)
       
 95083  {
       
 95084 +  printf ("%f\n", dbl);
       
 95085    return 2 * dbl;
       
 95086  }
       
 95087  int main (void)
       
 95088  {
       
 95089    ffi_cif cif;
       
 95090    ffi_type *args[MAX_ARGS];
       
 95091    void *values[MAX_ARGS];
       
 95092    double dbl, rdbl;
       
 95093 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c b/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c
       
 95094 --- a/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c
       
 95095 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c
       
 95096 @@ -25,12 +25,12 @@ int main (void)
       
 95097    /* Initialize the cif */
       
 95098    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
       
 95099  		     &ffi_type_schar, args) == FFI_OK);
       
 95100  
       
 95101    for (sc = (signed char) -127;
       
 95102         sc < (signed char) 127; sc++)
       
 95103      {
       
 95104        ffi_call(&cif, FFI_FN(return_sc), &rint, values);
       
 95105 -      CHECK(rint == (ffi_arg) sc);
       
 95106 +      CHECK((signed char)rint == sc);
       
 95107      }
       
 95108    exit(0);
       
 95109  }
       
 95110 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c b/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c
       
 95111 --- a/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c
       
 95112 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c
       
 95113 @@ -27,12 +27,12 @@ int main (void)
       
 95114    /* Initialize the cif */
       
 95115    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
       
 95116  		     &ffi_type_uchar, args) == FFI_OK);
       
 95117  
       
 95118    for (uc = (unsigned char) '\x00';
       
 95119         uc < (unsigned char) '\xff'; uc++)
       
 95120      {
       
 95121        ffi_call(&cif, FFI_FN(return_uc), &rint, values);
       
 95122 -      CHECK(rint == (signed int) uc);
       
 95123 +      CHECK((unsigned char)rint == uc);
       
 95124      }
       
 95125    exit(0);
       
 95126  }
       
 95127 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c
       
 95128 --- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c
       
 95129 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c
       
 95130 @@ -4,18 +4,18 @@
       
 95131  				the gp and fp register count on Darwin/AIX/ppc64.
       
 95132     Limitations:	none.
       
 95133     PR:			none.
       
 95134     Originator:	Blake Chaffin	6/21/2007	*/
       
 95135  
       
 95136  /* { dg-do run { xfail strongarm*-*-* xscale*-*-*  } } */
       
 95137  #include "ffitest.h"
       
 95138  
       
 95139 -// 13 FPRs: 104 bytes
       
 95140 -// 14 FPRs: 112 bytes
       
 95141 +/* 13 FPRs: 104 bytes */
       
 95142 +/* 14 FPRs: 112 bytes */
       
 95143  
       
 95144  typedef struct struct_108byte {
       
 95145  	double a;
       
 95146  	double b;
       
 95147  	double c;
       
 95148  	double d;
       
 95149  	double e;
       
 95150  	double f;
       
 95151 @@ -77,27 +77,27 @@ int main (void)
       
 95152  	ffi_cif cif;
       
 95153          void *code;
       
 95154  	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 95155  	void* args_dbl[5];
       
 95156  	ffi_type* cls_struct_fields[15];
       
 95157  	ffi_type cls_struct_type;
       
 95158  	ffi_type* dbl_arg_types[5];
       
 95159  
       
 95160 -	cls_struct_type.size = 0;
       
 95161 -	cls_struct_type.alignment = 0;
       
 95162 -	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 95163 -	cls_struct_type.elements = cls_struct_fields;
       
 95164 -
       
 95165  	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 };
       
 95166  	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 };
       
 95167  	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 };
       
 95168  	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 };
       
 95169  	struct_108byte res_dbl;
       
 95170  
       
 95171 +	cls_struct_type.size = 0;
       
 95172 +	cls_struct_type.alignment = 0;
       
 95173 +	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 95174 +	cls_struct_type.elements = cls_struct_fields;
       
 95175 +
       
 95176  	cls_struct_fields[0] = &ffi_type_double;
       
 95177  	cls_struct_fields[1] = &ffi_type_double;
       
 95178  	cls_struct_fields[2] = &ffi_type_double;
       
 95179  	cls_struct_fields[3] = &ffi_type_double;
       
 95180  	cls_struct_fields[4] = &ffi_type_double;
       
 95181  	cls_struct_fields[5] = &ffi_type_double;
       
 95182  	cls_struct_fields[6] = &ffi_type_double;
       
 95183  	cls_struct_fields[7] = &ffi_type_double;
       
 95184 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c
       
 95185 --- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c
       
 95186 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c
       
 95187 @@ -4,18 +4,18 @@
       
 95188  				the gp and fp register count on Darwin/AIX/ppc64.
       
 95189     Limitations:	none.
       
 95190     PR:			none.
       
 95191     Originator:	Blake Chaffin	6/21/2007	*/
       
 95192  
       
 95193  /* { dg-do run { xfail strongarm*-*-* xscale*-*-*  } } */
       
 95194  #include "ffitest.h"
       
 95195  
       
 95196 -// 13 FPRs: 104 bytes
       
 95197 -// 14 FPRs: 112 bytes
       
 95198 +/* 13 FPRs: 104 bytes */
       
 95199 +/* 14 FPRs: 112 bytes */
       
 95200  
       
 95201  typedef struct struct_116byte {
       
 95202  	double a;
       
 95203  	double b;
       
 95204  	double c;
       
 95205  	double d;
       
 95206  	double e;
       
 95207  	double f;
       
 95208 @@ -79,27 +79,27 @@ int main (void)
       
 95209  	ffi_cif cif;
       
 95210          void *code;
       
 95211  	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 95212  	void* args_dbl[5];
       
 95213  	ffi_type* cls_struct_fields[16];
       
 95214  	ffi_type cls_struct_type;
       
 95215  	ffi_type* dbl_arg_types[5];
       
 95216  
       
 95217 -	cls_struct_type.size = 0;
       
 95218 -	cls_struct_type.alignment = 0;
       
 95219 -	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 95220 -	cls_struct_type.elements = cls_struct_fields;
       
 95221 -
       
 95222  	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 };
       
 95223  	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 };
       
 95224  	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 };
       
 95225  	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 };
       
 95226  	struct_116byte res_dbl;
       
 95227  
       
 95228 +	cls_struct_type.size = 0;
       
 95229 +	cls_struct_type.alignment = 0;
       
 95230 +	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 95231 +	cls_struct_type.elements = cls_struct_fields;
       
 95232 +
       
 95233  	cls_struct_fields[0] = &ffi_type_double;
       
 95234  	cls_struct_fields[1] = &ffi_type_double;
       
 95235  	cls_struct_fields[2] = &ffi_type_double;
       
 95236  	cls_struct_fields[3] = &ffi_type_double;
       
 95237  	cls_struct_fields[4] = &ffi_type_double;
       
 95238  	cls_struct_fields[5] = &ffi_type_double;
       
 95239  	cls_struct_fields[6] = &ffi_type_double;
       
 95240  	cls_struct_fields[7] = &ffi_type_double;
       
 95241 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c
       
 95242 --- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c
       
 95243 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c
       
 95244 @@ -63,27 +63,27 @@ int main (void)
       
 95245  	ffi_cif cif;
       
 95246          void *code;
       
 95247  	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 95248  	void* args_dbl[5];
       
 95249  	ffi_type* cls_struct_fields[10];
       
 95250  	ffi_type cls_struct_type;
       
 95251  	ffi_type* dbl_arg_types[5];
       
 95252  
       
 95253 -	cls_struct_type.size = 0;
       
 95254 -	cls_struct_type.alignment = 0;
       
 95255 -	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 95256 -	cls_struct_type.elements = cls_struct_fields;
       
 95257 -
       
 95258  	struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7.0 };
       
 95259  	struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0 };
       
 95260  	struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3.0 };
       
 95261  	struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2.0 };
       
 95262  	struct_72byte res_dbl;
       
 95263  
       
 95264 +	cls_struct_type.size = 0;
       
 95265 +	cls_struct_type.alignment = 0;
       
 95266 +	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 95267 +	cls_struct_type.elements = cls_struct_fields;
       
 95268 +
       
 95269  	cls_struct_fields[0] = &ffi_type_double;
       
 95270  	cls_struct_fields[1] = &ffi_type_double;
       
 95271  	cls_struct_fields[2] = &ffi_type_double;
       
 95272  	cls_struct_fields[3] = &ffi_type_double;
       
 95273  	cls_struct_fields[4] = &ffi_type_double;
       
 95274  	cls_struct_fields[5] = &ffi_type_double;
       
 95275  	cls_struct_fields[6] = &ffi_type_double;
       
 95276  	cls_struct_fields[7] = &ffi_type_double;
       
 95277 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c
       
 95278 --- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c
       
 95279 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c
       
 95280 @@ -64,27 +64,27 @@ int main (void)
       
 95281  	ffi_cif cif;
       
 95282          void *code;
       
 95283  	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 95284  	void* args_dbl[5];
       
 95285  	ffi_type* cls_struct_fields[10];
       
 95286  	ffi_type cls_struct_type;
       
 95287  	ffi_type* dbl_arg_types[5];
       
 95288  
       
 95289 -	cls_struct_type.size = 0;
       
 95290 -	cls_struct_type.alignment = 0;
       
 95291 -	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 95292 -	cls_struct_type.elements = cls_struct_fields;
       
 95293 -
       
 95294  	struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7 };
       
 95295  	struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4 };
       
 95296  	struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3 };
       
 95297  	struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2 };
       
 95298  	struct_72byte res_dbl;
       
 95299  
       
 95300 +	cls_struct_type.size = 0;
       
 95301 +	cls_struct_type.alignment = 0;
       
 95302 +	cls_struct_type.type = FFI_TYPE_STRUCT;
       
 95303 +	cls_struct_type.elements = cls_struct_fields;
       
 95304 +
       
 95305  	cls_struct_fields[0] = &ffi_type_double;
       
 95306  	cls_struct_fields[1] = &ffi_type_double;
       
 95307  	cls_struct_fields[2] = &ffi_type_double;
       
 95308  	cls_struct_fields[3] = &ffi_type_double;
       
 95309  	cls_struct_fields[4] = &ffi_type_double;
       
 95310  	cls_struct_fields[5] = &ffi_type_double;
       
 95311  	cls_struct_fields[6] = &ffi_type_double;
       
 95312  	cls_struct_fields[7] = &ffi_type_double;
       
 95313 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c
       
 95314 --- a/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c
       
 95315 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c
       
 95316 @@ -2,34 +2,34 @@
       
 95317     Purpose:	Check strlen function call.
       
 95318     Limitations:	none.
       
 95319     PR:		none.
       
 95320     Originator:	From the original ffitest.c  */
       
 95321  
       
 95322  /* { dg-do run } */
       
 95323  #include "ffitest.h"
       
 95324  
       
 95325 -static size_t my_strlen(char *s)
       
 95326 +static size_t ABI_ATTR my_strlen(char *s)
       
 95327  {
       
 95328    return (strlen(s));
       
 95329  }
       
 95330  
       
 95331  int main (void)
       
 95332  {
       
 95333    ffi_cif cif;
       
 95334    ffi_type *args[MAX_ARGS];
       
 95335    void *values[MAX_ARGS];
       
 95336    ffi_arg rint;
       
 95337    char *s;
       
 95338  
       
 95339    args[0] = &ffi_type_pointer;
       
 95340    values[0] = (void*) &s;
       
 95341    
       
 95342    /* Initialize the cif */
       
 95343 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, 
       
 95344 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
       
 95345  		     &ffi_type_sint, args) == FFI_OK);
       
 95346    
       
 95347    s = "a";
       
 95348    ffi_call(&cif, FFI_FN(my_strlen), &rint, values);
       
 95349    CHECK(rint == 1);
       
 95350    
       
 95351    s = "1234567";
       
 95352    ffi_call(&cif, FFI_FN(my_strlen), &rint, values);
       
 95353 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen2.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen2.c
       
 95354 new file mode 100644
       
 95355 --- /dev/null
       
 95356 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen2.c
       
 95357 @@ -0,0 +1,49 @@
       
 95358 +/* Area:	ffi_call
       
 95359 +   Purpose:	Check strlen function call with additional arguments.
       
 95360 +   Limitations:	none.
       
 95361 +   PR:		none.
       
 95362 +   Originator:	From the original ffitest.c  */
       
 95363 +
       
 95364 +/* { dg-do run } */
       
 95365 +
       
 95366 +#include "ffitest.h"
       
 95367 +
       
 95368 +static size_t ABI_ATTR my_f(char *s, float a)
       
 95369 +{
       
 95370 +  return (size_t) ((int) strlen(s) + (int) a);
       
 95371 +}
       
 95372 +
       
 95373 +int main (void)
       
 95374 +{
       
 95375 +  ffi_cif cif;
       
 95376 +  ffi_type *args[MAX_ARGS];
       
 95377 +  void *values[MAX_ARGS];
       
 95378 +  ffi_arg rint;
       
 95379 +  char *s;
       
 95380 +  float v2;
       
 95381 +  args[0] = &ffi_type_pointer;
       
 95382 +  args[1] = &ffi_type_float;
       
 95383 +  values[0] = (void*) &s;
       
 95384 +  values[1] = (void*) &v2;
       
 95385 +  
       
 95386 +  /* Initialize the cif */
       
 95387 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 2,
       
 95388 +		       &ffi_type_sint, args) == FFI_OK);
       
 95389 +  
       
 95390 +  s = "a";
       
 95391 +  v2 = 0.0;
       
 95392 +  ffi_call(&cif, FFI_FN(my_f), &rint, values);
       
 95393 +  CHECK(rint == 1);
       
 95394 +  
       
 95395 +  s = "1234567";
       
 95396 +  v2 = -1.0;
       
 95397 +  ffi_call(&cif, FFI_FN(my_f), &rint, values);
       
 95398 +  CHECK(rint == 6);
       
 95399 +  
       
 95400 +  s = "1234567890123456789012345";
       
 95401 +  v2 = 1.0;
       
 95402 +  ffi_call(&cif, FFI_FN(my_f), &rint, values);
       
 95403 +  CHECK(rint == 26);
       
 95404 +  
       
 95405 +  exit(0);
       
 95406 +}
       
 95407 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen3.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen3.c
       
 95408 new file mode 100644
       
 95409 --- /dev/null
       
 95410 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen3.c
       
 95411 @@ -0,0 +1,49 @@
       
 95412 +/* Area:	ffi_call
       
 95413 +   Purpose:	Check strlen function call with additional arguments.
       
 95414 +   Limitations:	none.
       
 95415 +   PR:		none.
       
 95416 +   Originator:	From the original ffitest.c  */
       
 95417 +
       
 95418 +/* { dg-do run } */
       
 95419 +
       
 95420 +#include "ffitest.h"
       
 95421 +
       
 95422 +static size_t ABI_ATTR my_f(float a, char *s)
       
 95423 +{
       
 95424 +  return (size_t) ((int) strlen(s) + (int) a);
       
 95425 +}
       
 95426 +
       
 95427 +int main (void)
       
 95428 +{
       
 95429 +  ffi_cif cif;
       
 95430 +  ffi_type *args[MAX_ARGS];
       
 95431 +  void *values[MAX_ARGS];
       
 95432 +  ffi_arg rint;
       
 95433 +  char *s;
       
 95434 +  float v2;
       
 95435 +  args[1] = &ffi_type_pointer;
       
 95436 +  args[0] = &ffi_type_float;
       
 95437 +  values[1] = (void*) &s;
       
 95438 +  values[0] = (void*) &v2;
       
 95439 +  
       
 95440 +  /* Initialize the cif */
       
 95441 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 2,
       
 95442 +		       &ffi_type_sint, args) == FFI_OK);
       
 95443 +  
       
 95444 +  s = "a";
       
 95445 +  v2 = 0.0;
       
 95446 +  ffi_call(&cif, FFI_FN(my_f), &rint, values);
       
 95447 +  CHECK(rint == 1);
       
 95448 +  
       
 95449 +  s = "1234567";
       
 95450 +  v2 = -1.0;
       
 95451 +  ffi_call(&cif, FFI_FN(my_f), &rint, values);
       
 95452 +  CHECK(rint == 6);
       
 95453 +  
       
 95454 +  s = "1234567890123456789012345";
       
 95455 +  v2 = 1.0;
       
 95456 +  ffi_call(&cif, FFI_FN(my_f), &rint, values);
       
 95457 +  CHECK(rint == 26);
       
 95458 +  
       
 95459 +  exit(0);
       
 95460 +}
       
 95461 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen4.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen4.c
       
 95462 new file mode 100644
       
 95463 --- /dev/null
       
 95464 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen4.c
       
 95465 @@ -0,0 +1,55 @@
       
 95466 +/* Area:	ffi_call
       
 95467 +   Purpose:	Check strlen function call with additional arguments.
       
 95468 +   Limitations:	none.
       
 95469 +   PR:		none.
       
 95470 +   Originator:	From the original ffitest.c  */
       
 95471 +
       
 95472 +/* { dg-do run } */
       
 95473 +
       
 95474 +#include "ffitest.h"
       
 95475 +
       
 95476 +static size_t ABI_ATTR my_f(float a, char *s, int i)
       
 95477 +{
       
 95478 +  return (size_t) ((int) strlen(s) + (int) a + i);
       
 95479 +}
       
 95480 +
       
 95481 +int main (void)
       
 95482 +{
       
 95483 +  ffi_cif cif;
       
 95484 +  ffi_type *args[MAX_ARGS];
       
 95485 +  void *values[MAX_ARGS];
       
 95486 +  ffi_arg rint;
       
 95487 +  char *s;
       
 95488 +  int v1;
       
 95489 +  float v2;
       
 95490 +  args[2] = &ffi_type_sint;
       
 95491 +  args[1] = &ffi_type_pointer;
       
 95492 +  args[0] = &ffi_type_float;
       
 95493 +  values[2] = (void*) &v1;
       
 95494 +  values[1] = (void*) &s;
       
 95495 +  values[0] = (void*) &v2;
       
 95496 +  
       
 95497 +  /* Initialize the cif */
       
 95498 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 3,
       
 95499 +		       &ffi_type_sint, args) == FFI_OK);
       
 95500 +  
       
 95501 +  s = "a";
       
 95502 +  v1 = 1;
       
 95503 +  v2 = 0.0;
       
 95504 +  ffi_call(&cif, FFI_FN(my_f), &rint, values);
       
 95505 +  CHECK(rint == 2);
       
 95506 +  
       
 95507 +  s = "1234567";
       
 95508 +  v2 = -1.0;
       
 95509 +  v1 = -2;
       
 95510 +  ffi_call(&cif, FFI_FN(my_f), &rint, values);
       
 95511 +  CHECK(rint == 4);
       
 95512 +  
       
 95513 +  s = "1234567890123456789012345";
       
 95514 +  v2 = 1.0;
       
 95515 +  v1 = 2;
       
 95516 +  ffi_call(&cif, FFI_FN(my_f), &rint, values);
       
 95517 +  CHECK(rint == 28);
       
 95518 +  
       
 95519 +  exit(0);
       
 95520 +}
       
 95521 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen_win32.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen_win32.c
       
 95522 deleted file mode 100644
       
 95523 --- a/js/src/ctypes/libffi/testsuite/libffi.call/strlen_win32.c
       
 95524 +++ /dev/null
       
 95525 @@ -1,44 +0,0 @@
       
 95526 -/* Area:	ffi_call
       
 95527 -   Purpose:	Check stdcall strlen call on X86_WIN32 systems.
       
 95528 -   Limitations:	none.
       
 95529 -   PR:		none.
       
 95530 -   Originator:	From the original ffitest.c  */
       
 95531 -
       
 95532 -/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */
       
 95533 -
       
 95534 -#include "ffitest.h"
       
 95535 -
       
 95536 -static size_t __attribute__((stdcall)) my_stdcall_strlen(char *s)
       
 95537 -{
       
 95538 -  return (strlen(s));
       
 95539 -}
       
 95540 -
       
 95541 -int main (void)
       
 95542 -{
       
 95543 -  ffi_cif cif;
       
 95544 -  ffi_type *args[MAX_ARGS];
       
 95545 -  void *values[MAX_ARGS];
       
 95546 -  ffi_arg rint;
       
 95547 -  char *s;
       
 95548 -  args[0] = &ffi_type_pointer;
       
 95549 -  values[0] = (void*) &s;
       
 95550 -  
       
 95551 -  /* Initialize the cif */
       
 95552 -  CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 1,
       
 95553 -		       &ffi_type_sint, args) == FFI_OK);
       
 95554 -  
       
 95555 -  s = "a";
       
 95556 -  ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values);
       
 95557 -  CHECK(rint == 1);
       
 95558 -  
       
 95559 -  s = "1234567";
       
 95560 -  ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values);
       
 95561 -  CHECK(rint == 7);
       
 95562 -  
       
 95563 -  s = "1234567890123456789012345";
       
 95564 -  ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values);
       
 95565 -  CHECK(rint == 25);
       
 95566 -  
       
 95567 -  printf("stdcall strlen tests passed\n");
       
 95568 -  exit(0);
       
 95569 -}
       
 95570 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c
       
 95571 --- a/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c
       
 95572 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c
       
 95573 @@ -9,51 +9,53 @@
       
 95574  
       
 95575  typedef struct
       
 95576  {
       
 95577    unsigned char uc;
       
 95578    double d;
       
 95579    unsigned int ui;
       
 95580  } test_structure_1;
       
 95581  
       
 95582 -static test_structure_1 struct1(test_structure_1 ts)
       
 95583 +static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
       
 95584  {
       
 95585    ts.uc++;
       
 95586    ts.d--;
       
 95587    ts.ui++;
       
 95588  
       
 95589    return ts;
       
 95590  }
       
 95591  
       
 95592  int main (void)
       
 95593  {
       
 95594    ffi_cif cif;
       
 95595    ffi_type *args[MAX_ARGS];
       
 95596    void *values[MAX_ARGS];
       
 95597    ffi_type ts1_type;
       
 95598    ffi_type *ts1_type_elements[4];
       
 95599 +
       
 95600 +  test_structure_1 ts1_arg;
       
 95601 +
       
 95602 +  /* This is a hack to get a properly aligned result buffer */
       
 95603 +  test_structure_1 *ts1_result =
       
 95604 +    (test_structure_1 *) malloc (sizeof(test_structure_1));
       
 95605 +
       
 95606    ts1_type.size = 0;
       
 95607    ts1_type.alignment = 0;
       
 95608    ts1_type.type = FFI_TYPE_STRUCT;
       
 95609    ts1_type.elements = ts1_type_elements;
       
 95610    ts1_type_elements[0] = &ffi_type_uchar;
       
 95611    ts1_type_elements[1] = &ffi_type_double;
       
 95612    ts1_type_elements[2] = &ffi_type_uint;
       
 95613    ts1_type_elements[3] = NULL;
       
 95614    
       
 95615 -  test_structure_1 ts1_arg;
       
 95616 -  /* This is a hack to get a properly aligned result buffer */
       
 95617 -  test_structure_1 *ts1_result = 
       
 95618 -    (test_structure_1 *) malloc (sizeof(test_structure_1));
       
 95619 -  
       
 95620    args[0] = &ts1_type;
       
 95621    values[0] = &ts1_arg;
       
 95622    
       
 95623    /* Initialize the cif */
       
 95624 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, 
       
 95625 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
       
 95626  		     &ts1_type, args) == FFI_OK);
       
 95627    
       
 95628    ts1_arg.uc = '\x01';
       
 95629    ts1_arg.d = 3.14159;
       
 95630    ts1_arg.ui = 555;
       
 95631  
       
 95632    ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
       
 95633    
       
 95634 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c
       
 95635 --- a/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c
       
 95636 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c
       
 95637 @@ -8,50 +8,50 @@
       
 95638  #include "ffitest.h"
       
 95639  
       
 95640  typedef struct
       
 95641  {
       
 95642    double d1;
       
 95643    double d2;
       
 95644  } test_structure_2;
       
 95645  
       
 95646 -static test_structure_2 struct2(test_structure_2 ts)
       
 95647 +static test_structure_2 ABI_ATTR struct2(test_structure_2 ts)
       
 95648  {
       
 95649    ts.d1--;
       
 95650    ts.d2--;
       
 95651  
       
 95652    return ts;
       
 95653  }
       
 95654  
       
 95655  int main (void)
       
 95656  {
       
 95657    ffi_cif cif;
       
 95658    ffi_type *args[MAX_ARGS];
       
 95659    void *values[MAX_ARGS];
       
 95660    test_structure_2 ts2_arg;
       
 95661    ffi_type ts2_type;
       
 95662    ffi_type *ts2_type_elements[3];
       
 95663 +
       
 95664 +  /* This is a hack to get a properly aligned result buffer */
       
 95665 +  test_structure_2 *ts2_result =
       
 95666 +    (test_structure_2 *) malloc (sizeof(test_structure_2));
       
 95667 +
       
 95668    ts2_type.size = 0;
       
 95669    ts2_type.alignment = 0;
       
 95670    ts2_type.type = FFI_TYPE_STRUCT;
       
 95671    ts2_type.elements = ts2_type_elements;
       
 95672    ts2_type_elements[0] = &ffi_type_double;
       
 95673    ts2_type_elements[1] = &ffi_type_double;
       
 95674    ts2_type_elements[2] = NULL;
       
 95675  
       
 95676 -  
       
 95677 -  /* This is a hack to get a properly aligned result buffer */
       
 95678 -  test_structure_2 *ts2_result = 
       
 95679 -    (test_structure_2 *) malloc (sizeof(test_structure_2));
       
 95680 -  
       
 95681    args[0] = &ts2_type;
       
 95682    values[0] = &ts2_arg;
       
 95683    
       
 95684    /* Initialize the cif */
       
 95685 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts2_type, args) == FFI_OK);
       
 95686 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts2_type, args) == FFI_OK);
       
 95687    
       
 95688    ts2_arg.d1 = 5.55;
       
 95689    ts2_arg.d2 = 6.66;
       
 95690    
       
 95691    printf ("%g\n", ts2_arg.d1);
       
 95692    printf ("%g\n", ts2_arg.d2);
       
 95693    
       
 95694    ffi_call(&cif, FFI_FN(struct2), ts2_result, values);
       
 95695 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c
       
 95696 --- a/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c
       
 95697 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c
       
 95698 @@ -7,47 +7,48 @@
       
 95699  /* { dg-do run } */
       
 95700  #include "ffitest.h"
       
 95701  
       
 95702  typedef struct
       
 95703  {
       
 95704    int si;
       
 95705  } test_structure_3;
       
 95706  
       
 95707 -static test_structure_3 struct3(test_structure_3 ts)
       
 95708 +static test_structure_3 ABI_ATTR struct3(test_structure_3 ts)
       
 95709  {
       
 95710    ts.si = -(ts.si*2);
       
 95711  
       
 95712    return ts;
       
 95713  }
       
 95714  
       
 95715  int main (void)
       
 95716  {
       
 95717    ffi_cif cif;
       
 95718    ffi_type *args[MAX_ARGS];
       
 95719    void *values[MAX_ARGS];
       
 95720    int compare_value;
       
 95721    ffi_type ts3_type;
       
 95722    ffi_type *ts3_type_elements[2];
       
 95723 +
       
 95724 +  test_structure_3 ts3_arg;
       
 95725 +  test_structure_3 *ts3_result =
       
 95726 +    (test_structure_3 *) malloc (sizeof(test_structure_3));
       
 95727 +
       
 95728    ts3_type.size = 0;
       
 95729    ts3_type.alignment = 0;
       
 95730    ts3_type.type = FFI_TYPE_STRUCT;
       
 95731    ts3_type.elements = ts3_type_elements;
       
 95732    ts3_type_elements[0] = &ffi_type_sint;
       
 95733    ts3_type_elements[1] = NULL;
       
 95734  
       
 95735 -  test_structure_3 ts3_arg;
       
 95736 -  test_structure_3 *ts3_result = 
       
 95737 -    (test_structure_3 *) malloc (sizeof(test_structure_3));
       
 95738 -  
       
 95739    args[0] = &ts3_type;
       
 95740    values[0] = &ts3_arg;
       
 95741    
       
 95742    /* Initialize the cif */
       
 95743 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, 
       
 95744 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
       
 95745  		     &ts3_type, args) == FFI_OK);
       
 95746    
       
 95747    ts3_arg.si = -123;
       
 95748    compare_value = ts3_arg.si;
       
 95749    
       
 95750    ffi_call(&cif, FFI_FN(struct3), ts3_result, values);
       
 95751    
       
 95752    printf ("%d %d\n", ts3_result->si, -(compare_value*2));
       
 95753 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c
       
 95754 --- a/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c
       
 95755 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c
       
 95756 @@ -9,50 +9,51 @@
       
 95757  
       
 95758  typedef struct
       
 95759  {
       
 95760    unsigned ui1;
       
 95761    unsigned ui2;
       
 95762    unsigned ui3;
       
 95763  } test_structure_4;
       
 95764  
       
 95765 -static test_structure_4 struct4(test_structure_4 ts)
       
 95766 +static test_structure_4 ABI_ATTR struct4(test_structure_4 ts)
       
 95767  {
       
 95768    ts.ui3 = ts.ui1 * ts.ui2 * ts.ui3;
       
 95769  
       
 95770    return ts;
       
 95771  }
       
 95772  
       
 95773  int main (void)
       
 95774  {
       
 95775    ffi_cif cif;
       
 95776    ffi_type *args[MAX_ARGS];
       
 95777    void *values[MAX_ARGS];
       
 95778    ffi_type ts4_type;
       
 95779    ffi_type *ts4_type_elements[4];  
       
 95780 +
       
 95781 +  test_structure_4 ts4_arg;
       
 95782 +
       
 95783 +  /* This is a hack to get a properly aligned result buffer */
       
 95784 +  test_structure_4 *ts4_result =
       
 95785 +    (test_structure_4 *) malloc (sizeof(test_structure_4));
       
 95786 +
       
 95787    ts4_type.size = 0;
       
 95788    ts4_type.alignment = 0;
       
 95789    ts4_type.type = FFI_TYPE_STRUCT;
       
 95790 -  test_structure_4 ts4_arg;
       
 95791    ts4_type.elements = ts4_type_elements;
       
 95792    ts4_type_elements[0] = &ffi_type_uint;
       
 95793    ts4_type_elements[1] = &ffi_type_uint;
       
 95794    ts4_type_elements[2] = &ffi_type_uint;
       
 95795    ts4_type_elements[3] = NULL;
       
 95796  
       
 95797 -  
       
 95798 -  /* This is a hack to get a properly aligned result buffer */
       
 95799 -  test_structure_4 *ts4_result = 
       
 95800 -    (test_structure_4 *) malloc (sizeof(test_structure_4));
       
 95801 -  
       
 95802    args[0] = &ts4_type;
       
 95803    values[0] = &ts4_arg;
       
 95804    
       
 95805    /* Initialize the cif */
       
 95806 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts4_type, args) == FFI_OK);
       
 95807 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts4_type, args) == FFI_OK);
       
 95808    
       
 95809    ts4_arg.ui1 = 2;
       
 95810    ts4_arg.ui2 = 3;
       
 95811    ts4_arg.ui3 = 4;
       
 95812    
       
 95813    ffi_call (&cif, FFI_FN(struct4), ts4_result, values);
       
 95814    
       
 95815    CHECK(ts4_result->ui3 == 2U * 3U * 4U);
       
 95816 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c
       
 95817 --- a/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c
       
 95818 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c
       
 95819 @@ -7,52 +7,53 @@
       
 95820  /* { dg-do run } */
       
 95821  #include "ffitest.h"
       
 95822  typedef struct
       
 95823  {
       
 95824    char c1;
       
 95825    char c2;
       
 95826  } test_structure_5;
       
 95827  
       
 95828 -static test_structure_5 struct5(test_structure_5 ts1, test_structure_5 ts2)
       
 95829 +static test_structure_5 ABI_ATTR struct5(test_structure_5 ts1, test_structure_5 ts2)
       
 95830  {
       
 95831    ts1.c1 += ts2.c1;
       
 95832    ts1.c2 -= ts2.c2;
       
 95833    
       
 95834    return ts1;
       
 95835  }
       
 95836  
       
 95837  int main (void)
       
 95838  {
       
 95839    ffi_cif cif;
       
 95840    ffi_type *args[MAX_ARGS];
       
 95841    void *values[MAX_ARGS];
       
 95842    ffi_type ts5_type;
       
 95843    ffi_type *ts5_type_elements[3];
       
 95844 +
       
 95845 +  test_structure_5 ts5_arg1, ts5_arg2;
       
 95846 +
       
 95847 +  /* This is a hack to get a properly aligned result buffer */
       
 95848 +  test_structure_5 *ts5_result =
       
 95849 +    (test_structure_5 *) malloc (sizeof(test_structure_5));
       
 95850 +
       
 95851    ts5_type.size = 0;
       
 95852    ts5_type.alignment = 0;
       
 95853    ts5_type.type = FFI_TYPE_STRUCT;
       
 95854    ts5_type.elements = ts5_type_elements;
       
 95855    ts5_type_elements[0] = &ffi_type_schar;
       
 95856    ts5_type_elements[1] = &ffi_type_schar;
       
 95857    ts5_type_elements[2] = NULL;
       
 95858  
       
 95859 -  test_structure_5 ts5_arg1, ts5_arg2;
       
 95860 -  
       
 95861 -  /* This is a hack to get a properly aligned result buffer */
       
 95862 -  test_structure_5 *ts5_result = 
       
 95863 -    (test_structure_5 *) malloc (sizeof(test_structure_5));
       
 95864 -  
       
 95865    args[0] = &ts5_type;
       
 95866    args[1] = &ts5_type;
       
 95867    values[0] = &ts5_arg1;
       
 95868    values[1] = &ts5_arg2;
       
 95869    
       
 95870    /* Initialize the cif */
       
 95871 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ts5_type, args) == FFI_OK);
       
 95872 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts5_type, args) == FFI_OK);
       
 95873    
       
 95874    ts5_arg1.c1 = 2;
       
 95875    ts5_arg1.c2 = 6;
       
 95876    ts5_arg2.c1 = 5;
       
 95877    ts5_arg2.c2 = 3;
       
 95878    
       
 95879    ffi_call (&cif, FFI_FN(struct5), ts5_result, values);
       
 95880    
       
 95881 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c
       
 95882 --- a/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c
       
 95883 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c
       
 95884 @@ -7,51 +7,51 @@
       
 95885  /* { dg-do run } */
       
 95886  #include "ffitest.h"
       
 95887  typedef struct
       
 95888  {
       
 95889    float f;
       
 95890    double d;
       
 95891  } test_structure_6;
       
 95892  
       
 95893 -static test_structure_6 struct6 (test_structure_6 ts)
       
 95894 +static test_structure_6 ABI_ATTR struct6 (test_structure_6 ts)
       
 95895  {
       
 95896    ts.f += 1;
       
 95897    ts.d += 1;
       
 95898    
       
 95899    return ts;
       
 95900  }
       
 95901  
       
 95902  int main (void)
       
 95903  {
       
 95904    ffi_cif cif;
       
 95905    ffi_type *args[MAX_ARGS];
       
 95906    void *values[MAX_ARGS];
       
 95907    ffi_type ts6_type;
       
 95908    ffi_type *ts6_type_elements[3];
       
 95909 +
       
 95910 +  test_structure_6 ts6_arg;
       
 95911 +
       
 95912 +  /* This is a hack to get a properly aligned result buffer */
       
 95913 +  test_structure_6 *ts6_result =
       
 95914 +    (test_structure_6 *) malloc (sizeof(test_structure_6));
       
 95915 +
       
 95916    ts6_type.size = 0;
       
 95917    ts6_type.alignment = 0;
       
 95918    ts6_type.type = FFI_TYPE_STRUCT;
       
 95919    ts6_type.elements = ts6_type_elements;
       
 95920    ts6_type_elements[0] = &ffi_type_float;
       
 95921    ts6_type_elements[1] = &ffi_type_double;
       
 95922    ts6_type_elements[2] = NULL;
       
 95923  
       
 95924 -
       
 95925 -  test_structure_6 ts6_arg;
       
 95926 -
       
 95927 -  /* This is a hack to get a properly aligned result buffer */
       
 95928 -  test_structure_6 *ts6_result = 
       
 95929 -    (test_structure_6 *) malloc (sizeof(test_structure_6));
       
 95930 -  
       
 95931    args[0] = &ts6_type;
       
 95932    values[0] = &ts6_arg;
       
 95933  
       
 95934    /* Initialize the cif */
       
 95935 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts6_type, args) == FFI_OK);
       
 95936 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts6_type, args) == FFI_OK);
       
 95937    
       
 95938    ts6_arg.f = 5.55f;
       
 95939    ts6_arg.d = 6.66;
       
 95940    
       
 95941    printf ("%g\n", ts6_arg.f);
       
 95942    printf ("%g\n", ts6_arg.d);
       
 95943  
       
 95944    ffi_call(&cif, FFI_FN(struct6), ts6_result, values);
       
 95945 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c
       
 95946 --- a/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c
       
 95947 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c
       
 95948 @@ -8,53 +8,53 @@
       
 95949  #include "ffitest.h"
       
 95950  typedef struct
       
 95951  {
       
 95952    float f1;
       
 95953    float f2;
       
 95954    double d;
       
 95955  } test_structure_7;
       
 95956  
       
 95957 -static test_structure_7 struct7 (test_structure_7 ts)
       
 95958 +static test_structure_7 ABI_ATTR struct7 (test_structure_7 ts)
       
 95959  {
       
 95960    ts.f1 += 1;
       
 95961    ts.f2 += 1;
       
 95962    ts.d += 1;
       
 95963  
       
 95964    return ts;
       
 95965  }
       
 95966  
       
 95967  int main (void)
       
 95968  {
       
 95969    ffi_cif cif;
       
 95970    ffi_type *args[MAX_ARGS];
       
 95971    void *values[MAX_ARGS];
       
 95972    ffi_type ts7_type;
       
 95973    ffi_type *ts7_type_elements[4];
       
 95974 +
       
 95975 +  test_structure_7 ts7_arg;
       
 95976 +
       
 95977 +  /* This is a hack to get a properly aligned result buffer */
       
 95978 +  test_structure_7 *ts7_result =
       
 95979 +    (test_structure_7 *) malloc (sizeof(test_structure_7));
       
 95980 +
       
 95981    ts7_type.size = 0;
       
 95982    ts7_type.alignment = 0;
       
 95983    ts7_type.type = FFI_TYPE_STRUCT;
       
 95984    ts7_type.elements = ts7_type_elements;
       
 95985    ts7_type_elements[0] = &ffi_type_float;
       
 95986    ts7_type_elements[1] = &ffi_type_float;
       
 95987    ts7_type_elements[2] = &ffi_type_double;
       
 95988    ts7_type_elements[3] = NULL;
       
 95989  
       
 95990 -
       
 95991 -  test_structure_7 ts7_arg;
       
 95992 -  
       
 95993 -  /* This is a hack to get a properly aligned result buffer */
       
 95994 -  test_structure_7 *ts7_result = 
       
 95995 -    (test_structure_7 *) malloc (sizeof(test_structure_7));
       
 95996 -  
       
 95997    args[0] = &ts7_type;
       
 95998    values[0] = &ts7_arg;
       
 95999    
       
 96000    /* Initialize the cif */
       
 96001 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts7_type, args) == FFI_OK);
       
 96002 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts7_type, args) == FFI_OK);
       
 96003    
       
 96004    ts7_arg.f1 = 5.55f;
       
 96005    ts7_arg.f2 = 55.5f;
       
 96006    ts7_arg.d = 6.66;
       
 96007  
       
 96008    printf ("%g\n", ts7_arg.f1);
       
 96009    printf ("%g\n", ts7_arg.f2);
       
 96010    printf ("%g\n", ts7_arg.d);
       
 96011 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c
       
 96012 --- a/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c
       
 96013 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c
       
 96014 @@ -9,54 +9,55 @@
       
 96015  typedef struct
       
 96016  {
       
 96017    float f1;
       
 96018    float f2;
       
 96019    float f3;
       
 96020    float f4;
       
 96021  } test_structure_8;
       
 96022  
       
 96023 -static test_structure_8 struct8 (test_structure_8 ts)
       
 96024 +static test_structure_8 ABI_ATTR struct8 (test_structure_8 ts)
       
 96025  {
       
 96026    ts.f1 += 1;
       
 96027    ts.f2 += 1;
       
 96028    ts.f3 += 1;
       
 96029    ts.f4 += 1;
       
 96030  
       
 96031    return ts;
       
 96032  }
       
 96033  
       
 96034  int main (void)
       
 96035  {
       
 96036    ffi_cif cif;
       
 96037    ffi_type *args[MAX_ARGS];
       
 96038    void *values[MAX_ARGS];
       
 96039    ffi_type ts8_type;
       
 96040    ffi_type *ts8_type_elements[5];
       
 96041 +
       
 96042 +  test_structure_8 ts8_arg;
       
 96043 +
       
 96044 +  /* This is a hack to get a properly aligned result buffer */
       
 96045 +  test_structure_8 *ts8_result =
       
 96046 +    (test_structure_8 *) malloc (sizeof(test_structure_8));
       
 96047 +
       
 96048    ts8_type.size = 0;
       
 96049    ts8_type.alignment = 0;
       
 96050    ts8_type.type = FFI_TYPE_STRUCT;
       
 96051    ts8_type.elements = ts8_type_elements;
       
 96052    ts8_type_elements[0] = &ffi_type_float;
       
 96053    ts8_type_elements[1] = &ffi_type_float;
       
 96054    ts8_type_elements[2] = &ffi_type_float;
       
 96055    ts8_type_elements[3] = &ffi_type_float;
       
 96056    ts8_type_elements[4] = NULL;
       
 96057  
       
 96058 -  test_structure_8 ts8_arg;
       
 96059 -  
       
 96060 -  /* This is a hack to get a properly aligned result buffer */
       
 96061 -  test_structure_8 *ts8_result = 
       
 96062 -    (test_structure_8 *) malloc (sizeof(test_structure_8));
       
 96063 -  
       
 96064    args[0] = &ts8_type;
       
 96065    values[0] = &ts8_arg;
       
 96066    
       
 96067    /* Initialize the cif */
       
 96068 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts8_type, args) == FFI_OK);
       
 96069 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts8_type, args) == FFI_OK);
       
 96070    
       
 96071    ts8_arg.f1 = 5.55f;
       
 96072    ts8_arg.f2 = 55.5f;
       
 96073    ts8_arg.f3 = -5.55f;
       
 96074    ts8_arg.f4 = -55.5f;
       
 96075  
       
 96076    printf ("%g\n", ts8_arg.f1);
       
 96077    printf ("%g\n", ts8_arg.f2);
       
 96078 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c
       
 96079 --- a/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c
       
 96080 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c
       
 96081 @@ -8,50 +8,51 @@
       
 96082  #include "ffitest.h"
       
 96083  
       
 96084  typedef struct
       
 96085  {
       
 96086    float f;
       
 96087    int i;
       
 96088  } test_structure_9;
       
 96089  
       
 96090 -static test_structure_9 struct9 (test_structure_9 ts)
       
 96091 +static test_structure_9 ABI_ATTR struct9 (test_structure_9 ts)
       
 96092  {
       
 96093    ts.f += 1;
       
 96094    ts.i += 1;
       
 96095  
       
 96096    return ts;
       
 96097  }
       
 96098  
       
 96099  int main (void)
       
 96100  {
       
 96101    ffi_cif cif;
       
 96102    ffi_type *args[MAX_ARGS];
       
 96103    void *values[MAX_ARGS];
       
 96104    ffi_type ts9_type;
       
 96105    ffi_type *ts9_type_elements[3];
       
 96106 +
       
 96107 +  test_structure_9 ts9_arg;
       
 96108 +
       
 96109 +  /* This is a hack to get a properly aligned result buffer */
       
 96110 +  test_structure_9 *ts9_result =
       
 96111 +    (test_structure_9 *) malloc (sizeof(test_structure_9));
       
 96112 +
       
 96113    ts9_type.size = 0;
       
 96114    ts9_type.alignment = 0;
       
 96115    ts9_type.type = FFI_TYPE_STRUCT;
       
 96116    ts9_type.elements = ts9_type_elements;
       
 96117    ts9_type_elements[0] = &ffi_type_float;
       
 96118    ts9_type_elements[1] = &ffi_type_sint;
       
 96119    ts9_type_elements[2] = NULL;
       
 96120  
       
 96121 -  test_structure_9 ts9_arg;
       
 96122 -  
       
 96123 -  /* This is a hack to get a properly aligned result buffer */
       
 96124 -  test_structure_9 *ts9_result = 
       
 96125 -    (test_structure_9 *) malloc (sizeof(test_structure_9));
       
 96126 -  
       
 96127    args[0] = &ts9_type;
       
 96128    values[0] = &ts9_arg;
       
 96129    
       
 96130    /* Initialize the cif */
       
 96131 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts9_type, args) == FFI_OK);
       
 96132 +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts9_type, args) == FFI_OK);
       
 96133    
       
 96134    ts9_arg.f = 5.55f;
       
 96135    ts9_arg.i = 5;
       
 96136    
       
 96137    printf ("%g\n", ts9_arg.f);
       
 96138    printf ("%d\n", ts9_arg.i);
       
 96139    
       
 96140    ffi_call(&cif, FFI_FN(struct9), ts9_result, values);
       
 96141 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c b/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c
       
 96142 --- a/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c
       
 96143 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c
       
 96144 @@ -38,23 +38,23 @@ int main (void)
       
 96145  {
       
 96146    ffi_cif cif;
       
 96147    void *code;
       
 96148    ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 96149    ffi_type* cls_struct_fields0[5];
       
 96150    ffi_type cls_struct_type0;
       
 96151    ffi_type* dbl_arg_types[5];
       
 96152  
       
 96153 +  struct cls_struct_combined g_dbl = {4.0, 5.0, 1.0, 8.0};
       
 96154 +
       
 96155    cls_struct_type0.size = 0;
       
 96156    cls_struct_type0.alignment = 0;
       
 96157    cls_struct_type0.type = FFI_TYPE_STRUCT;
       
 96158    cls_struct_type0.elements = cls_struct_fields0;
       
 96159  
       
 96160 -  struct cls_struct_combined g_dbl = {4.0, 5.0, 1.0, 8.0};
       
 96161 -
       
 96162    cls_struct_fields0[0] = &ffi_type_float;
       
 96163    cls_struct_fields0[1] = &ffi_type_float;
       
 96164    cls_struct_fields0[2] = &ffi_type_float;
       
 96165    cls_struct_fields0[3] = &ffi_type_float;
       
 96166    cls_struct_fields0[4] = NULL;
       
 96167  
       
 96168    dbl_arg_types[0] = &cls_struct_type0;
       
 96169    dbl_arg_types[1] = NULL;
       
 96170 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/uninitialized.c b/js/src/ctypes/libffi/testsuite/libffi.call/uninitialized.c
       
 96171 new file mode 100644
       
 96172 --- /dev/null
       
 96173 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/uninitialized.c
       
 96174 @@ -0,0 +1,61 @@
       
 96175 +/* { dg-do run } */
       
 96176 +#include "ffitest.h"
       
 96177 +
       
 96178 +typedef struct
       
 96179 +{
       
 96180 +  unsigned char uc;
       
 96181 +  double d;
       
 96182 +  unsigned int ui;
       
 96183 +} test_structure_1;
       
 96184 +
       
 96185 +static test_structure_1 struct1(test_structure_1 ts)
       
 96186 +{
       
 96187 +  ts.uc++;
       
 96188 +  ts.d--;
       
 96189 +  ts.ui++;
       
 96190 +
       
 96191 +  return ts;
       
 96192 +}
       
 96193 +
       
 96194 +int main (void)
       
 96195 +{
       
 96196 +  ffi_cif cif;
       
 96197 +  ffi_type *args[MAX_ARGS];
       
 96198 +  void *values[MAX_ARGS];
       
 96199 +  ffi_type ts1_type;
       
 96200 +  ffi_type *ts1_type_elements[4];
       
 96201 +
       
 96202 +  memset(&cif, 1, sizeof(cif));
       
 96203 +  ts1_type.size = 0;
       
 96204 +  ts1_type.alignment = 0;
       
 96205 +  ts1_type.type = FFI_TYPE_STRUCT;
       
 96206 +  ts1_type.elements = ts1_type_elements;
       
 96207 +  ts1_type_elements[0] = &ffi_type_uchar;
       
 96208 +  ts1_type_elements[1] = &ffi_type_double;
       
 96209 +  ts1_type_elements[2] = &ffi_type_uint;
       
 96210 +  ts1_type_elements[3] = NULL;
       
 96211 +
       
 96212 +  test_structure_1 ts1_arg;
       
 96213 +  /* This is a hack to get a properly aligned result buffer */
       
 96214 +  test_structure_1 *ts1_result =
       
 96215 +    (test_structure_1 *) malloc (sizeof(test_structure_1));
       
 96216 +
       
 96217 +  args[0] = &ts1_type;
       
 96218 +  values[0] = &ts1_arg;
       
 96219 +
       
 96220 +  /* Initialize the cif */
       
 96221 +  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
       
 96222 +		     &ts1_type, args) == FFI_OK);
       
 96223 +
       
 96224 +  ts1_arg.uc = '\x01';
       
 96225 +  ts1_arg.d = 3.14159;
       
 96226 +  ts1_arg.ui = 555;
       
 96227 +
       
 96228 +  ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
       
 96229 +
       
 96230 +  CHECK(ts1_result->ui == 556);
       
 96231 +  CHECK(ts1_result->d == 3.14159 - 1);
       
 96232 +
       
 96233 +  free (ts1_result);
       
 96234 +  exit(0);
       
 96235 +}
       
 96236 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest.cc b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest.cc
       
 96237 new file mode 100644
       
 96238 --- /dev/null
       
 96239 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest.cc
       
 96240 @@ -0,0 +1,117 @@
       
 96241 +/* Area:	ffi_closure, unwind info
       
 96242 +   Purpose:	Check if the unwind information is passed correctly.
       
 96243 +   Limitations:	none.
       
 96244 +   PR:		none.
       
 96245 +   Originator:	Jeff Sturm <jsturm@one-point.com>  */
       
 96246 +
       
 96247 +/* { dg-do run } */
       
 96248 +
       
 96249 +#include "ffitest.h"
       
 96250 +
       
 96251 +void ABI_ATTR
       
 96252 +closure_test_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__,
       
 96253 +		void** args __UNUSED__, void* userdata __UNUSED__)
       
 96254 +{
       
 96255 +  throw 9;
       
 96256 +}
       
 96257 +
       
 96258 +typedef void (*closure_test_type)();
       
 96259 +
       
 96260 +void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp,
       
 96261 +		      void** args, void* userdata __UNUSED__)
       
 96262 + {
       
 96263 +    *(ffi_arg*)resp =
       
 96264 +      (int)*(float *)args[0] +(int)(*(float *)args[1]) +
       
 96265 +      (int)(*(float *)args[2]) + (int)*(float *)args[3] +
       
 96266 +      (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) +
       
 96267 +      (int)*(float *)args[6] + (int)(*(int *)args[7]) +
       
 96268 +      (int)(*(double*)args[8]) + (int)*(int *)args[9] +
       
 96269 +      (int)(*(int *)args[10]) + (int)(*(float *)args[11]) +
       
 96270 +      (int)*(int *)args[12] + (int)(*(int *)args[13]) +
       
 96271 +      (int)(*(int *)args[14]) + *(int *)args[15] + (int)(intptr_t)userdata;
       
 96272 +
       
 96273 +    printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
       
 96274 +	   (int)*(float *)args[0], (int)(*(float *)args[1]),
       
 96275 +	   (int)(*(float *)args[2]), (int)*(float *)args[3],
       
 96276 +	   (int)(*(signed short *)args[4]), (int)(*(float *)args[5]),
       
 96277 +	   (int)*(float *)args[6], (int)(*(int *)args[7]),
       
 96278 +	   (int)(*(double *)args[8]), (int)*(int *)args[9],
       
 96279 +	   (int)(*(int *)args[10]), (int)(*(float *)args[11]),
       
 96280 +	   (int)*(int *)args[12], (int)(*(int *)args[13]),
       
 96281 +	   (int)(*(int *)args[14]), *(int *)args[15],
       
 96282 +	   (int)(intptr_t)userdata, (int)*(ffi_arg*)resp);
       
 96283 +
       
 96284 +    throw (int)*(ffi_arg*)resp;
       
 96285 +}
       
 96286 +
       
 96287 +typedef int (*closure_test_type1)(float, float, float, float, signed short,
       
 96288 +				  float, float, int, double, int, int, float,
       
 96289 +				  int, int, int, int);
       
 96290 +
       
 96291 +int main (void)
       
 96292 +{
       
 96293 +  ffi_cif cif;
       
 96294 +  void *code;
       
 96295 +  ffi_closure *pcl = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 96296 +  ffi_type * cl_arg_types[17];
       
 96297 +
       
 96298 +  {
       
 96299 +    cl_arg_types[1] = NULL;
       
 96300 +
       
 96301 +    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0,
       
 96302 +		       &ffi_type_void, cl_arg_types) == FFI_OK);
       
 96303 +    CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn, NULL, code) == FFI_OK);
       
 96304 +
       
 96305 +    try
       
 96306 +      {
       
 96307 +	(*((closure_test_type)(code)))();
       
 96308 +      } catch (int exception_code)
       
 96309 +      {
       
 96310 +	CHECK(exception_code == 9);
       
 96311 +      }
       
 96312 +
       
 96313 +    printf("part one OK\n");
       
 96314 +    /* { dg-output "part one OK" } */
       
 96315 +    }
       
 96316 +
       
 96317 +    {
       
 96318 +
       
 96319 +      cl_arg_types[0] = &ffi_type_float;
       
 96320 +      cl_arg_types[1] = &ffi_type_float;
       
 96321 +      cl_arg_types[2] = &ffi_type_float;
       
 96322 +      cl_arg_types[3] = &ffi_type_float;
       
 96323 +      cl_arg_types[4] = &ffi_type_sshort;
       
 96324 +      cl_arg_types[5] = &ffi_type_float;
       
 96325 +      cl_arg_types[6] = &ffi_type_float;
       
 96326 +      cl_arg_types[7] = &ffi_type_uint;
       
 96327 +      cl_arg_types[8] = &ffi_type_double;
       
 96328 +      cl_arg_types[9] = &ffi_type_uint;
       
 96329 +      cl_arg_types[10] = &ffi_type_uint;
       
 96330 +      cl_arg_types[11] = &ffi_type_float;
       
 96331 +      cl_arg_types[12] = &ffi_type_uint;
       
 96332 +      cl_arg_types[13] = &ffi_type_uint;
       
 96333 +      cl_arg_types[14] = &ffi_type_uint;
       
 96334 +      cl_arg_types[15] = &ffi_type_uint;
       
 96335 +      cl_arg_types[16] = NULL;
       
 96336 +
       
 96337 +      /* Initialize the cif */
       
 96338 +      CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
       
 96339 +			 &ffi_type_sint, cl_arg_types) == FFI_OK);
       
 96340 +
       
 96341 +      CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1,
       
 96342 +                                 (void *) 3 /* userdata */, code)  == FFI_OK);
       
 96343 +      try
       
 96344 +	{
       
 96345 +	  (*((closure_test_type1)code))
       
 96346 +	    (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13,
       
 96347 +	     19, 21, 1);
       
 96348 +	  /* { dg-output "\n1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */
       
 96349 +	} catch (int exception_code)
       
 96350 +	{
       
 96351 +	  CHECK(exception_code == 255);
       
 96352 +	}
       
 96353 +      printf("part two OK\n");
       
 96354 +      /* { dg-output "\npart two OK" } */
       
 96355 +    }
       
 96356 +    exit(0);
       
 96357 +}
       
 96358 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
       
 96359 new file mode 100644
       
 96360 --- /dev/null
       
 96361 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc
       
 96362 @@ -0,0 +1,54 @@
       
 96363 +/* Area:	ffi_call, unwind info
       
 96364 +   Purpose:	Check if the unwind information is passed correctly.
       
 96365 +   Limitations:	none.
       
 96366 +   PR:		none.
       
 96367 +   Originator:	Andreas Tobler <andreast@gcc.gnu.org> 20061213  */
       
 96368 +
       
 96369 +/* { dg-do run } */
       
 96370 +
       
 96371 +#include "ffitest.h"
       
 96372 +
       
 96373 +static int checking(int a __UNUSED__, short b __UNUSED__,
       
 96374 +		    signed char c __UNUSED__)
       
 96375 +{
       
 96376 +  throw 9;
       
 96377 +}
       
 96378 +
       
 96379 +int main (void)
       
 96380 +{
       
 96381 +  ffi_cif cif;
       
 96382 +  ffi_type *args[MAX_ARGS];
       
 96383 +  void *values[MAX_ARGS];
       
 96384 +  ffi_arg rint;
       
 96385 +
       
 96386 +  signed int si;
       
 96387 +  signed short ss;
       
 96388 +  signed char sc;
       
 96389 +
       
 96390 +  args[0] = &ffi_type_sint;
       
 96391 +  values[0] = &si;
       
 96392 +  args[1] = &ffi_type_sshort;
       
 96393 +  values[1] = &ss;
       
 96394 +  args[2] = &ffi_type_schar;
       
 96395 +  values[2] = &sc;
       
 96396 +
       
 96397 +  /* Initialize the cif */
       
 96398 +  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
       
 96399 +		     &ffi_type_sint, args) == FFI_OK);
       
 96400 +
       
 96401 +  si = -6;
       
 96402 +  ss = -12;
       
 96403 +  sc = -1;
       
 96404 +  {
       
 96405 +    try
       
 96406 +      {
       
 96407 +	ffi_call(&cif, FFI_FN(checking), &rint, values);
       
 96408 +      } catch (int exception_code)
       
 96409 +      {
       
 96410 +	CHECK(exception_code == 9);
       
 96411 +      }
       
 96412 +    printf("part one OK\n");
       
 96413 +    /* { dg-output "part one OK" } */
       
 96414 +  }
       
 96415 +  exit(0);
       
 96416 +}
       
 96417 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_1.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_1.c
       
 96418 new file mode 100644
       
 96419 --- /dev/null
       
 96420 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_1.c
       
 96421 @@ -0,0 +1,196 @@
       
 96422 +/* Area:		ffi_call
       
 96423 +   Purpose:		Test passing struct in variable argument lists.
       
 96424 +   Limitations:	none.
       
 96425 +   PR:			none.
       
 96426 +   Originator:	        ARM Ltd. */
       
 96427 +
       
 96428 +/* { dg-do run } */
       
 96429 +/* { dg-output "" { xfail avr32*-*-* } } */
       
 96430 +
       
 96431 +#include "ffitest.h"
       
 96432 +#include <stdarg.h>
       
 96433 +
       
 96434 +struct small_tag
       
 96435 +{
       
 96436 +  unsigned char a;
       
 96437 +  unsigned char b;
       
 96438 +};
       
 96439 +
       
 96440 +struct large_tag
       
 96441 +{
       
 96442 +  unsigned a;
       
 96443 +  unsigned b;
       
 96444 +  unsigned c;
       
 96445 +  unsigned d;
       
 96446 +  unsigned e;
       
 96447 +};
       
 96448 +
       
 96449 +static int
       
 96450 +test_fn (int n, ...)
       
 96451 +{
       
 96452 +  va_list ap;
       
 96453 +  struct small_tag s1;
       
 96454 +  struct small_tag s2;
       
 96455 +  struct large_tag l;
       
 96456 +  unsigned char uc;
       
 96457 +  signed char sc;
       
 96458 +  unsigned short us;
       
 96459 +  signed short ss;
       
 96460 +  unsigned int ui;
       
 96461 +  signed int si;
       
 96462 +  unsigned long ul;
       
 96463 +  signed long sl;
       
 96464 +  float f;
       
 96465 +  double d;
       
 96466 +
       
 96467 +  va_start (ap, n);
       
 96468 +  s1 = va_arg (ap, struct small_tag);
       
 96469 +  l = va_arg (ap, struct large_tag);
       
 96470 +  s2 = va_arg (ap, struct small_tag);
       
 96471 +
       
 96472 +  uc = va_arg (ap, unsigned);
       
 96473 +  sc = va_arg (ap, signed);
       
 96474 +
       
 96475 +  us = va_arg (ap, unsigned);
       
 96476 +  ss = va_arg (ap, signed);
       
 96477 +
       
 96478 +  ui = va_arg (ap, unsigned int);
       
 96479 +  si = va_arg (ap, signed int);
       
 96480 +
       
 96481 +  ul = va_arg (ap, unsigned long);
       
 96482 +  sl = va_arg (ap, signed long);
       
 96483 +
       
 96484 +  f = va_arg (ap, double);	/* C standard promotes float->double
       
 96485 +				   when anonymous */
       
 96486 +  d = va_arg (ap, double);
       
 96487 +
       
 96488 +  printf ("%u %u %u %u %u %u %u %u %u uc=%u sc=%d %u %d %u %d %lu %ld %f %f\n",
       
 96489 +	  s1.a, s1.b, l.a, l.b, l.c, l.d, l.e,
       
 96490 +	  s2.a, s2.b,
       
 96491 +	  uc, sc,
       
 96492 +	  us, ss,
       
 96493 +	  ui, si,
       
 96494 +	  ul, sl,
       
 96495 +	  f, d);
       
 96496 +  va_end (ap);
       
 96497 +  return n + 1;
       
 96498 +}
       
 96499 +
       
 96500 +int
       
 96501 +main (void)
       
 96502 +{
       
 96503 +  ffi_cif cif;
       
 96504 +  void* args[15];
       
 96505 +  ffi_type* arg_types[15];
       
 96506 +
       
 96507 +  ffi_type s_type;
       
 96508 +  ffi_type *s_type_elements[3];
       
 96509 +
       
 96510 +  ffi_type l_type;
       
 96511 +  ffi_type *l_type_elements[6];
       
 96512 +
       
 96513 +  struct small_tag s1;
       
 96514 +  struct small_tag s2;
       
 96515 +  struct large_tag l1;
       
 96516 +
       
 96517 +  int n;
       
 96518 +  ffi_arg res;
       
 96519 +
       
 96520 +  unsigned char uc;
       
 96521 +  signed char sc;
       
 96522 +  unsigned short us;
       
 96523 +  signed short ss;
       
 96524 +  unsigned int ui;
       
 96525 +  signed int si;
       
 96526 +  unsigned long ul;
       
 96527 +  signed long sl;
       
 96528 +  double d1;
       
 96529 +  double f1;
       
 96530 +
       
 96531 +  s_type.size = 0;
       
 96532 +  s_type.alignment = 0;
       
 96533 +  s_type.type = FFI_TYPE_STRUCT;
       
 96534 +  s_type.elements = s_type_elements;
       
 96535 +
       
 96536 +  s_type_elements[0] = &ffi_type_uchar;
       
 96537 +  s_type_elements[1] = &ffi_type_uchar;
       
 96538 +  s_type_elements[2] = NULL;
       
 96539 +
       
 96540 +  l_type.size = 0;
       
 96541 +  l_type.alignment = 0;
       
 96542 +  l_type.type = FFI_TYPE_STRUCT;
       
 96543 +  l_type.elements = l_type_elements;
       
 96544 +
       
 96545 +  l_type_elements[0] = &ffi_type_uint;
       
 96546 +  l_type_elements[1] = &ffi_type_uint;
       
 96547 +  l_type_elements[2] = &ffi_type_uint;
       
 96548 +  l_type_elements[3] = &ffi_type_uint;
       
 96549 +  l_type_elements[4] = &ffi_type_uint;
       
 96550 +  l_type_elements[5] = NULL;
       
 96551 +
       
 96552 +  arg_types[0] = &ffi_type_sint;
       
 96553 +  arg_types[1] = &s_type;
       
 96554 +  arg_types[2] = &l_type;
       
 96555 +  arg_types[3] = &s_type;
       
 96556 +  arg_types[4] = &ffi_type_uchar;
       
 96557 +  arg_types[5] = &ffi_type_schar;
       
 96558 +  arg_types[6] = &ffi_type_ushort;
       
 96559 +  arg_types[7] = &ffi_type_sshort;
       
 96560 +  arg_types[8] = &ffi_type_uint;
       
 96561 +  arg_types[9] = &ffi_type_sint;
       
 96562 +  arg_types[10] = &ffi_type_ulong;
       
 96563 +  arg_types[11] = &ffi_type_slong;
       
 96564 +  arg_types[12] = &ffi_type_double;
       
 96565 +  arg_types[13] = &ffi_type_double;
       
 96566 +  arg_types[14] = NULL;
       
 96567 +
       
 96568 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 14, &ffi_type_sint, arg_types) == FFI_OK);
       
 96569 +
       
 96570 +  s1.a = 5;
       
 96571 +  s1.b = 6;
       
 96572 +
       
 96573 +  l1.a = 10;
       
 96574 +  l1.b = 11;
       
 96575 +  l1.c = 12;
       
 96576 +  l1.d = 13;
       
 96577 +  l1.e = 14;
       
 96578 +
       
 96579 +  s2.a = 7;
       
 96580 +  s2.b = 8;
       
 96581 +
       
 96582 +  n = 41;
       
 96583 +
       
 96584 +  uc = 9;
       
 96585 +  sc = 10;
       
 96586 +  us = 11;
       
 96587 +  ss = 12;
       
 96588 +  ui = 13;
       
 96589 +  si = 14;
       
 96590 +  ul = 15;
       
 96591 +  sl = 16;
       
 96592 +  f1 = 2.12;
       
 96593 +  d1 = 3.13;
       
 96594 +
       
 96595 +  args[0] = &n;
       
 96596 +  args[1] = &s1;
       
 96597 +  args[2] = &l1;
       
 96598 +  args[3] = &s2;
       
 96599 +  args[4] = &uc;
       
 96600 +  args[5] = &sc;
       
 96601 +  args[6] = &us;
       
 96602 +  args[7] = &ss;
       
 96603 +  args[8] = &ui;
       
 96604 +  args[9] = &si;
       
 96605 +  args[10] = &ul;
       
 96606 +  args[11] = &sl;
       
 96607 +  args[12] = &f1;
       
 96608 +  args[13] = &d1;
       
 96609 +  args[14] = NULL;
       
 96610 +
       
 96611 +  ffi_call(&cif, FFI_FN(test_fn), &res, args);
       
 96612 +  /* { 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" } */
       
 96613 +  printf("res: %d\n", (int) res);
       
 96614 +  /* { dg-output "\nres: 42" } */
       
 96615 +
       
 96616 +  return 0;
       
 96617 +}
       
 96618 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_struct1.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct1.c
       
 96619 new file mode 100644
       
 96620 --- /dev/null
       
 96621 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct1.c
       
 96622 @@ -0,0 +1,121 @@
       
 96623 +/* Area:		ffi_call
       
 96624 +   Purpose:		Test passing struct in variable argument lists.
       
 96625 +   Limitations:	none.
       
 96626 +   PR:			none.
       
 96627 +   Originator: ARM Ltd. */
       
 96628 +
       
 96629 +/* { dg-do run } */
       
 96630 +/* { dg-output "" { xfail avr32*-*-* } } */
       
 96631 +
       
 96632 +#include "ffitest.h"
       
 96633 +#include <stdarg.h>
       
 96634 +
       
 96635 +struct small_tag
       
 96636 +{
       
 96637 +  unsigned char a;
       
 96638 +  unsigned char b;
       
 96639 +};
       
 96640 +
       
 96641 +struct large_tag
       
 96642 +{
       
 96643 +  unsigned a;
       
 96644 +  unsigned b;
       
 96645 +  unsigned c;
       
 96646 +  unsigned d;
       
 96647 +  unsigned e;
       
 96648 +};
       
 96649 +
       
 96650 +static int
       
 96651 +test_fn (int n, ...)
       
 96652 +{
       
 96653 +  va_list ap;
       
 96654 +  struct small_tag s1;
       
 96655 +  struct small_tag s2;
       
 96656 +  struct large_tag l;
       
 96657 +
       
 96658 +  va_start (ap, n);
       
 96659 +  s1 = va_arg (ap, struct small_tag);
       
 96660 +  l = va_arg (ap, struct large_tag);
       
 96661 +  s2 = va_arg (ap, struct small_tag);
       
 96662 +  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,
       
 96663 +	  s2.a, s2.b);
       
 96664 +  va_end (ap);
       
 96665 +  return n + 1;
       
 96666 +}
       
 96667 +
       
 96668 +int
       
 96669 +main (void)
       
 96670 +{
       
 96671 +  ffi_cif cif;
       
 96672 +  void* args[5];
       
 96673 +  ffi_type* arg_types[5];
       
 96674 +
       
 96675 +  ffi_type s_type;
       
 96676 +  ffi_type *s_type_elements[3];
       
 96677 +
       
 96678 +  ffi_type l_type;
       
 96679 +  ffi_type *l_type_elements[6];
       
 96680 +
       
 96681 +  struct small_tag s1;
       
 96682 +  struct small_tag s2;
       
 96683 +  struct large_tag l1;
       
 96684 +
       
 96685 +  int n;
       
 96686 +  ffi_arg res;
       
 96687 +
       
 96688 +  s_type.size = 0;
       
 96689 +  s_type.alignment = 0;
       
 96690 +  s_type.type = FFI_TYPE_STRUCT;
       
 96691 +  s_type.elements = s_type_elements;
       
 96692 +
       
 96693 +  s_type_elements[0] = &ffi_type_uchar;
       
 96694 +  s_type_elements[1] = &ffi_type_uchar;
       
 96695 +  s_type_elements[2] = NULL;
       
 96696 +
       
 96697 +  l_type.size = 0;
       
 96698 +  l_type.alignment = 0;
       
 96699 +  l_type.type = FFI_TYPE_STRUCT;
       
 96700 +  l_type.elements = l_type_elements;
       
 96701 +
       
 96702 +  l_type_elements[0] = &ffi_type_uint;
       
 96703 +  l_type_elements[1] = &ffi_type_uint;
       
 96704 +  l_type_elements[2] = &ffi_type_uint;
       
 96705 +  l_type_elements[3] = &ffi_type_uint;
       
 96706 +  l_type_elements[4] = &ffi_type_uint;
       
 96707 +  l_type_elements[5] = NULL;
       
 96708 +
       
 96709 +  arg_types[0] = &ffi_type_sint;
       
 96710 +  arg_types[1] = &s_type;
       
 96711 +  arg_types[2] = &l_type;
       
 96712 +  arg_types[3] = &s_type;
       
 96713 +  arg_types[4] = NULL;
       
 96714 +
       
 96715 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint, arg_types) == FFI_OK);
       
 96716 +
       
 96717 +  s1.a = 5;
       
 96718 +  s1.b = 6;
       
 96719 +
       
 96720 +  l1.a = 10;
       
 96721 +  l1.b = 11;
       
 96722 +  l1.c = 12;
       
 96723 +  l1.d = 13;
       
 96724 +  l1.e = 14;
       
 96725 +
       
 96726 +  s2.a = 7;
       
 96727 +  s2.b = 8;
       
 96728 +
       
 96729 +  n = 41;
       
 96730 +
       
 96731 +  args[0] = &n;
       
 96732 +  args[1] = &s1;
       
 96733 +  args[2] = &l1;
       
 96734 +  args[3] = &s2;
       
 96735 +  args[4] = NULL;
       
 96736 +
       
 96737 +  ffi_call(&cif, FFI_FN(test_fn), &res, args);
       
 96738 +  /* { dg-output "5 6 10 11 12 13 14 7 8" } */
       
 96739 +  printf("res: %d\n", (int) res);
       
 96740 +  /* { dg-output "\nres: 42" } */
       
 96741 +
       
 96742 +  return 0;
       
 96743 +}
       
 96744 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_struct2.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct2.c
       
 96745 new file mode 100644
       
 96746 --- /dev/null
       
 96747 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct2.c
       
 96748 @@ -0,0 +1,123 @@
       
 96749 +/* Area:		ffi_call
       
 96750 +   Purpose:		Test passing struct in variable argument lists.
       
 96751 +   Limitations:	none.
       
 96752 +   PR:			none.
       
 96753 +   Originator: ARM Ltd. */
       
 96754 +
       
 96755 +/* { dg-do run } */
       
 96756 +/* { dg-output "" { xfail avr32*-*-* } } */
       
 96757 +
       
 96758 +#include "ffitest.h"
       
 96759 +#include <stdarg.h>
       
 96760 +
       
 96761 +struct small_tag
       
 96762 +{
       
 96763 +  unsigned char a;
       
 96764 +  unsigned char b;
       
 96765 +};
       
 96766 +
       
 96767 +struct large_tag
       
 96768 +{
       
 96769 +  unsigned a;
       
 96770 +  unsigned b;
       
 96771 +  unsigned c;
       
 96772 +  unsigned d;
       
 96773 +  unsigned e;
       
 96774 +};
       
 96775 +
       
 96776 +static struct small_tag
       
 96777 +test_fn (int n, ...)
       
 96778 +{
       
 96779 +  va_list ap;
       
 96780 +  struct small_tag s1;
       
 96781 +  struct small_tag s2;
       
 96782 +  struct large_tag l;
       
 96783 +
       
 96784 +  va_start (ap, n);
       
 96785 +  s1 = va_arg (ap, struct small_tag);
       
 96786 +  l = va_arg (ap, struct large_tag);
       
 96787 +  s2 = va_arg (ap, struct small_tag);
       
 96788 +  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,
       
 96789 +	  s2.a, s2.b);
       
 96790 +  va_end (ap);
       
 96791 +  s1.a += s2.a;
       
 96792 +  s1.b += s2.b;
       
 96793 +  return s1;
       
 96794 +}
       
 96795 +
       
 96796 +int
       
 96797 +main (void)
       
 96798 +{
       
 96799 +  ffi_cif cif;
       
 96800 +  void* args[5];
       
 96801 +  ffi_type* arg_types[5];
       
 96802 +
       
 96803 +  ffi_type s_type;
       
 96804 +  ffi_type *s_type_elements[3];
       
 96805 +
       
 96806 +  ffi_type l_type;
       
 96807 +  ffi_type *l_type_elements[6];
       
 96808 +
       
 96809 +  struct small_tag s1;
       
 96810 +  struct small_tag s2;
       
 96811 +  struct large_tag l1;
       
 96812 +
       
 96813 +  int n;
       
 96814 +  struct small_tag res;
       
 96815 +
       
 96816 +  s_type.size = 0;
       
 96817 +  s_type.alignment = 0;
       
 96818 +  s_type.type = FFI_TYPE_STRUCT;
       
 96819 +  s_type.elements = s_type_elements;
       
 96820 +
       
 96821 +  s_type_elements[0] = &ffi_type_uchar;
       
 96822 +  s_type_elements[1] = &ffi_type_uchar;
       
 96823 +  s_type_elements[2] = NULL;
       
 96824 +
       
 96825 +  l_type.size = 0;
       
 96826 +  l_type.alignment = 0;
       
 96827 +  l_type.type = FFI_TYPE_STRUCT;
       
 96828 +  l_type.elements = l_type_elements;
       
 96829 +
       
 96830 +  l_type_elements[0] = &ffi_type_uint;
       
 96831 +  l_type_elements[1] = &ffi_type_uint;
       
 96832 +  l_type_elements[2] = &ffi_type_uint;
       
 96833 +  l_type_elements[3] = &ffi_type_uint;
       
 96834 +  l_type_elements[4] = &ffi_type_uint;
       
 96835 +  l_type_elements[5] = NULL;
       
 96836 +
       
 96837 +  arg_types[0] = &ffi_type_sint;
       
 96838 +  arg_types[1] = &s_type;
       
 96839 +  arg_types[2] = &l_type;
       
 96840 +  arg_types[3] = &s_type;
       
 96841 +  arg_types[4] = NULL;
       
 96842 +
       
 96843 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &s_type, arg_types) == FFI_OK);
       
 96844 +
       
 96845 +  s1.a = 5;
       
 96846 +  s1.b = 6;
       
 96847 +
       
 96848 +  l1.a = 10;
       
 96849 +  l1.b = 11;
       
 96850 +  l1.c = 12;
       
 96851 +  l1.d = 13;
       
 96852 +  l1.e = 14;
       
 96853 +
       
 96854 +  s2.a = 7;
       
 96855 +  s2.b = 8;
       
 96856 +
       
 96857 +  n = 41;
       
 96858 +
       
 96859 +  args[0] = &n;
       
 96860 +  args[1] = &s1;
       
 96861 +  args[2] = &l1;
       
 96862 +  args[3] = &s2;
       
 96863 +  args[4] = NULL;
       
 96864 +
       
 96865 +  ffi_call(&cif, FFI_FN(test_fn), &res, args);
       
 96866 +  /* { dg-output "5 6 10 11 12 13 14 7 8" } */
       
 96867 +  printf("res: %d %d\n", res.a, res.b);
       
 96868 +  /* { dg-output "\nres: 12 14" } */
       
 96869 +
       
 96870 +  return 0;
       
 96871 +}
       
 96872 diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_struct3.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct3.c
       
 96873 new file mode 100644
       
 96874 --- /dev/null
       
 96875 +++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct3.c
       
 96876 @@ -0,0 +1,125 @@
       
 96877 +/* Area:		ffi_call
       
 96878 +   Purpose:		Test passing struct in variable argument lists.
       
 96879 +   Limitations:	none.
       
 96880 +   PR:			none.
       
 96881 +   Originator:	ARM Ltd. */
       
 96882 +
       
 96883 +/* { dg-do run } */
       
 96884 +/* { dg-output "" { xfail avr32*-*-* } } */
       
 96885 +
       
 96886 +#include "ffitest.h"
       
 96887 +#include <stdarg.h>
       
 96888 +
       
 96889 +struct small_tag
       
 96890 +{
       
 96891 +  unsigned char a;
       
 96892 +  unsigned char b;
       
 96893 +};
       
 96894 +
       
 96895 +struct large_tag
       
 96896 +{
       
 96897 +  unsigned a;
       
 96898 +  unsigned b;
       
 96899 +  unsigned c;
       
 96900 +  unsigned d;
       
 96901 +  unsigned e;
       
 96902 +};
       
 96903 +
       
 96904 +static struct large_tag
       
 96905 +test_fn (int n, ...)
       
 96906 +{
       
 96907 +  va_list ap;
       
 96908 +  struct small_tag s1;
       
 96909 +  struct small_tag s2;
       
 96910 +  struct large_tag l;
       
 96911 +
       
 96912 +  va_start (ap, n);
       
 96913 +  s1 = va_arg (ap, struct small_tag);
       
 96914 +  l = va_arg (ap, struct large_tag);
       
 96915 +  s2 = va_arg (ap, struct small_tag);
       
 96916 +  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,
       
 96917 +	  s2.a, s2.b);
       
 96918 +  va_end (ap);
       
 96919 +  l.a += s1.a;
       
 96920 +  l.b += s1.b;
       
 96921 +  l.c += s2.a;
       
 96922 +  l.d += s2.b;
       
 96923 +  return l;
       
 96924 +}
       
 96925 +
       
 96926 +int
       
 96927 +main (void)
       
 96928 +{
       
 96929 +  ffi_cif cif;
       
 96930 +  void* args[5];
       
 96931 +  ffi_type* arg_types[5];
       
 96932 +
       
 96933 +  ffi_type s_type;
       
 96934 +  ffi_type *s_type_elements[3];
       
 96935 +
       
 96936 +  ffi_type l_type;
       
 96937 +  ffi_type *l_type_elements[6];
       
 96938 +
       
 96939 +  struct small_tag s1;
       
 96940 +  struct small_tag s2;
       
 96941 +  struct large_tag l1;
       
 96942 +
       
 96943 +  int n;
       
 96944 +  struct large_tag res;
       
 96945 +
       
 96946 +  s_type.size = 0;
       
 96947 +  s_type.alignment = 0;
       
 96948 +  s_type.type = FFI_TYPE_STRUCT;
       
 96949 +  s_type.elements = s_type_elements;
       
 96950 +
       
 96951 +  s_type_elements[0] = &ffi_type_uchar;
       
 96952 +  s_type_elements[1] = &ffi_type_uchar;
       
 96953 +  s_type_elements[2] = NULL;
       
 96954 +
       
 96955 +  l_type.size = 0;
       
 96956 +  l_type.alignment = 0;
       
 96957 +  l_type.type = FFI_TYPE_STRUCT;
       
 96958 +  l_type.elements = l_type_elements;
       
 96959 +
       
 96960 +  l_type_elements[0] = &ffi_type_uint;
       
 96961 +  l_type_elements[1] = &ffi_type_uint;
       
 96962 +  l_type_elements[2] = &ffi_type_uint;
       
 96963 +  l_type_elements[3] = &ffi_type_uint;
       
 96964 +  l_type_elements[4] = &ffi_type_uint;
       
 96965 +  l_type_elements[5] = NULL;
       
 96966 +
       
 96967 +  arg_types[0] = &ffi_type_sint;
       
 96968 +  arg_types[1] = &s_type;
       
 96969 +  arg_types[2] = &l_type;
       
 96970 +  arg_types[3] = &s_type;
       
 96971 +  arg_types[4] = NULL;
       
 96972 +
       
 96973 +  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &l_type, arg_types) == FFI_OK);
       
 96974 +
       
 96975 +  s1.a = 5;
       
 96976 +  s1.b = 6;
       
 96977 +
       
 96978 +  l1.a = 10;
       
 96979 +  l1.b = 11;
       
 96980 +  l1.c = 12;
       
 96981 +  l1.d = 13;
       
 96982 +  l1.e = 14;
       
 96983 +
       
 96984 +  s2.a = 7;
       
 96985 +  s2.b = 8;
       
 96986 +
       
 96987 +  n = 41;
       
 96988 +
       
 96989 +  args[0] = &n;
       
 96990 +  args[1] = &s1;
       
 96991 +  args[2] = &l1;
       
 96992 +  args[3] = &s2;
       
 96993 +  args[4] = NULL;
       
 96994 +
       
 96995 +  ffi_call(&cif, FFI_FN(test_fn), &res, args);
       
 96996 +  /* { dg-output "5 6 10 11 12 13 14 7 8" } */
       
 96997 +  printf("res: %d %d %d %d %d\n", res.a, res.b, res.c, res.d, res.e);
       
 96998 +  /* { dg-output "\nres: 15 17 19 21 14" } */
       
 96999 +
       
 97000 +  return 0;
       
 97001 +}
       
 97002 diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/ffitestcxx.h b/js/src/ctypes/libffi/testsuite/libffi.special/ffitestcxx.h
       
 97003 deleted file mode 100644
       
 97004 --- a/js/src/ctypes/libffi/testsuite/libffi.special/ffitestcxx.h
       
 97005 +++ /dev/null
       
 97006 @@ -1,96 +0,0 @@
       
 97007 -#include <stdlib.h>
       
 97008 -#include <stdio.h>
       
 97009 -#include <fcntl.h>
       
 97010 -#include <ffi.h>
       
 97011 -#include "fficonfig.h"
       
 97012 -
       
 97013 -#define MAX_ARGS 256
       
 97014 -
       
 97015 -
       
 97016 -/* Define __UNUSED__ that also other compilers than gcc can run the tests.  */
       
 97017 -#undef __UNUSED__
       
 97018 -#if defined(__GNUC__)
       
 97019 -#define __UNUSED__ __attribute__((__unused__))
       
 97020 -#else
       
 97021 -#define __UNUSED__
       
 97022 -#endif
       
 97023 -
       
 97024 -#define CHECK(x) (!(x) ? abort() : (void)0)
       
 97025 -
       
 97026 -/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
       
 97027 -   file open.  */
       
 97028 -#ifdef HAVE_MMAP_ANON
       
 97029 -# undef HAVE_MMAP_DEV_ZERO
       
 97030 -
       
 97031 -# include <sys/mman.h>
       
 97032 -# ifndef MAP_FAILED
       
 97033 -#  define MAP_FAILED -1
       
 97034 -# endif
       
 97035 -# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
       
 97036 -#  define MAP_ANONYMOUS MAP_ANON
       
 97037 -# endif
       
 97038 -# define USING_MMAP
       
 97039 -
       
 97040 -#endif
       
 97041 -
       
 97042 -#ifdef HAVE_MMAP_DEV_ZERO
       
 97043 -
       
 97044 -# include <sys/mman.h>
       
 97045 -# ifndef MAP_FAILED
       
 97046 -#  define MAP_FAILED -1
       
 97047 -# endif
       
 97048 -# define USING_MMAP
       
 97049 -
       
 97050 -#endif
       
 97051 -
       
 97052 -
       
 97053 -/* MinGW kludge.  */
       
 97054 -#ifdef _WIN64
       
 97055 -#define PRIdLL "I64d"
       
 97056 -#define PRIuLL "I64u"
       
 97057 -#else
       
 97058 -#define PRIdLL "lld"
       
 97059 -#define PRIuLL "llu"
       
 97060 -#endif
       
 97061 -
       
 97062 -#ifdef USING_MMAP
       
 97063 -static inline void *
       
 97064 -allocate_mmap (size_t size)
       
 97065 -{
       
 97066 -  void *page;
       
 97067 -#if defined (HAVE_MMAP_DEV_ZERO)
       
 97068 -  static int dev_zero_fd = -1;
       
 97069 -#endif
       
 97070 -
       
 97071 -#ifdef HAVE_MMAP_DEV_ZERO
       
 97072 -  if (dev_zero_fd == -1)
       
 97073 -    {
       
 97074 -      dev_zero_fd = open ("/dev/zero", O_RDONLY);
       
 97075 -      if (dev_zero_fd == -1)
       
 97076 -	{
       
 97077 -	  perror ("open /dev/zero: %m");
       
 97078 -	  exit (1);
       
 97079 -	}
       
 97080 -    }
       
 97081 -#endif
       
 97082 -
       
 97083 -
       
 97084 -#ifdef HAVE_MMAP_ANON
       
 97085 -  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
       
 97086 -	       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
       
 97087 -#endif
       
 97088 -#ifdef HAVE_MMAP_DEV_ZERO
       
 97089 -  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
       
 97090 -	       MAP_PRIVATE, dev_zero_fd, 0);
       
 97091 -#endif
       
 97092 -
       
 97093 -  if (page == (char *) MAP_FAILED)
       
 97094 -    {
       
 97095 -      perror ("virtual memory exhausted");
       
 97096 -      exit (1);
       
 97097 -    }
       
 97098 -
       
 97099 -  return page;
       
 97100 -}
       
 97101 -
       
 97102 -#endif
       
 97103 diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/special.exp b/js/src/ctypes/libffi/testsuite/libffi.special/special.exp
       
 97104 deleted file mode 100644
       
 97105 --- a/js/src/ctypes/libffi/testsuite/libffi.special/special.exp
       
 97106 +++ /dev/null
       
 97107 @@ -1,37 +0,0 @@
       
 97108 -# Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc.
       
 97109 -
       
 97110 -# This program is free software; you can redistribute it and/or modify
       
 97111 -# it under the terms of the GNU General Public License as published by
       
 97112 -# the Free Software Foundation; either version 3 of the License, or
       
 97113 -# (at your option) any later version.
       
 97114 -#
       
 97115 -# This program is distributed in the hope that it will be useful,
       
 97116 -# but WITHOUT ANY WARRANTY; without even the implied warranty of
       
 97117 -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
 97118 -# GNU General Public License for more details.
       
 97119 -#
       
 97120 -# You should have received a copy of the GNU General Public License
       
 97121 -# along with this program; see the file COPYING3.  If not see
       
 97122 -# <http://www.gnu.org/licenses/>.
       
 97123 -
       
 97124 -load_lib libffi-dg.exp
       
 97125 -
       
 97126 -dg-init
       
 97127 -libffi-init
       
 97128 -
       
 97129 -global srcdir subdir
       
 97130 -
       
 97131 -global cxx_options
       
 97132 -
       
 97133 -set cxx_options " -shared-libgcc -lstdc++"
       
 97134 -
       
 97135 -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O0 -W -Wall"
       
 97136 -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O2"
       
 97137 -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O3"
       
 97138 -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-Os"
       
 97139 -
       
 97140 -dg-finish
       
 97141 -
       
 97142 -# Local Variables:
       
 97143 -# tcl-indent-level:4
       
 97144 -# End:
       
 97145 diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest.cc b/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest.cc
       
 97146 deleted file mode 100644
       
 97147 --- a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest.cc
       
 97148 +++ /dev/null
       
 97149 @@ -1,124 +0,0 @@
       
 97150 -/* Area:	ffi_closure, unwind info
       
 97151 -   Purpose:	Check if the unwind information is passed correctly.
       
 97152 -   Limitations:	none.
       
 97153 -   PR:		none.
       
 97154 -   Originator:	Jeff Sturm <jsturm@one-point.com>  */
       
 97155 -
       
 97156 -/* { dg-do run } */
       
 97157 -#include "ffitestcxx.h"
       
 97158 -
       
 97159 -#if defined HAVE_STDINT_H
       
 97160 -#include <stdint.h>
       
 97161 -#endif
       
 97162 -
       
 97163 -#if defined HAVE_INTTYPES_H
       
 97164 -#include <inttypes.h>
       
 97165 -#endif
       
 97166 -
       
 97167 -void
       
 97168 -closure_test_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__,
       
 97169 -		void** args __UNUSED__, void* userdata __UNUSED__)
       
 97170 -{
       
 97171 -  throw 9;
       
 97172 -}
       
 97173 -
       
 97174 -typedef void (*closure_test_type)();
       
 97175 -
       
 97176 -void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp,
       
 97177 -		      void** args, void* userdata __UNUSED__)
       
 97178 - {
       
 97179 -    *(ffi_arg*)resp =
       
 97180 -      (int)*(float *)args[0] +(int)(*(float *)args[1]) +
       
 97181 -      (int)(*(float *)args[2]) + (int)*(float *)args[3] +
       
 97182 -      (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) +
       
 97183 -      (int)*(float *)args[6] + (int)(*(int *)args[7]) +
       
 97184 -      (int)(*(double*)args[8]) + (int)*(int *)args[9] +
       
 97185 -      (int)(*(int *)args[10]) + (int)(*(float *)args[11]) +
       
 97186 -      (int)*(int *)args[12] + (int)(*(int *)args[13]) +
       
 97187 -      (int)(*(int *)args[14]) + *(int *)args[15] + (int)(intptr_t)userdata;
       
 97188 -
       
 97189 -    printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
       
 97190 -	   (int)*(float *)args[0], (int)(*(float *)args[1]),
       
 97191 -	   (int)(*(float *)args[2]), (int)*(float *)args[3],
       
 97192 -	   (int)(*(signed short *)args[4]), (int)(*(float *)args[5]),
       
 97193 -	   (int)*(float *)args[6], (int)(*(int *)args[7]),
       
 97194 -	   (int)(*(double *)args[8]), (int)*(int *)args[9],
       
 97195 -	   (int)(*(int *)args[10]), (int)(*(float *)args[11]),
       
 97196 -	   (int)*(int *)args[12], (int)(*(int *)args[13]),
       
 97197 -	   (int)(*(int *)args[14]), *(int *)args[15],
       
 97198 -	   (int)(intptr_t)userdata, (int)*(ffi_arg*)resp);
       
 97199 -
       
 97200 -    throw (int)*(ffi_arg*)resp;
       
 97201 -}
       
 97202 -
       
 97203 -typedef int (*closure_test_type1)(float, float, float, float, signed short,
       
 97204 -				  float, float, int, double, int, int, float,
       
 97205 -				  int, int, int, int);
       
 97206 -
       
 97207 -int main (void)
       
 97208 -{
       
 97209 -  ffi_cif cif;
       
 97210 -  void *code;
       
 97211 -  ffi_closure *pcl = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &code);
       
 97212 -  ffi_type * cl_arg_types[17];
       
 97213 -
       
 97214 -  {
       
 97215 -    cl_arg_types[1] = NULL;
       
 97216 -
       
 97217 -    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0,
       
 97218 -		       &ffi_type_void, cl_arg_types) == FFI_OK);
       
 97219 -    CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn, NULL, code) == FFI_OK);
       
 97220 -
       
 97221 -    try
       
 97222 -      {
       
 97223 -	(*((closure_test_type)(code)))();
       
 97224 -      } catch (int exception_code)
       
 97225 -      {
       
 97226 -	CHECK(exception_code == 9);
       
 97227 -      }
       
 97228 -
       
 97229 -    printf("part one OK\n");
       
 97230 -    /* { dg-output "part one OK" } */
       
 97231 -    }
       
 97232 -
       
 97233 -    {
       
 97234 -
       
 97235 -      cl_arg_types[0] = &ffi_type_float;
       
 97236 -      cl_arg_types[1] = &ffi_type_float;
       
 97237 -      cl_arg_types[2] = &ffi_type_float;
       
 97238 -      cl_arg_types[3] = &ffi_type_float;
       
 97239 -      cl_arg_types[4] = &ffi_type_sshort;
       
 97240 -      cl_arg_types[5] = &ffi_type_float;
       
 97241 -      cl_arg_types[6] = &ffi_type_float;
       
 97242 -      cl_arg_types[7] = &ffi_type_uint;
       
 97243 -      cl_arg_types[8] = &ffi_type_double;
       
 97244 -      cl_arg_types[9] = &ffi_type_uint;
       
 97245 -      cl_arg_types[10] = &ffi_type_uint;
       
 97246 -      cl_arg_types[11] = &ffi_type_float;
       
 97247 -      cl_arg_types[12] = &ffi_type_uint;
       
 97248 -      cl_arg_types[13] = &ffi_type_uint;
       
 97249 -      cl_arg_types[14] = &ffi_type_uint;
       
 97250 -      cl_arg_types[15] = &ffi_type_uint;
       
 97251 -      cl_arg_types[16] = NULL;
       
 97252 -
       
 97253 -      /* Initialize the cif */
       
 97254 -      CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
       
 97255 -			 &ffi_type_sint, cl_arg_types) == FFI_OK);
       
 97256 -
       
 97257 -      CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1,
       
 97258 -                                 (void *) 3 /* userdata */, code)  == FFI_OK);
       
 97259 -      try
       
 97260 -	{
       
 97261 -	  (*((closure_test_type1)code))
       
 97262 -	    (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13,
       
 97263 -	     19, 21, 1);
       
 97264 -	  /* { dg-output "\n1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */
       
 97265 -	} catch (int exception_code)
       
 97266 -	{
       
 97267 -	  CHECK(exception_code == 255);
       
 97268 -	}
       
 97269 -      printf("part two OK\n");
       
 97270 -      /* { dg-output "\npart two OK" } */
       
 97271 -    }
       
 97272 -    exit(0);
       
 97273 -}
       
 97274 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
       
 97275 deleted file mode 100644
       
 97276 --- a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
       
 97277 +++ /dev/null
       
 97278 @@ -1,53 +0,0 @@
       
 97279 -/* Area:	ffi_call, unwind info
       
 97280 -   Purpose:	Check if the unwind information is passed correctly.
       
 97281 -   Limitations:	none.
       
 97282 -   PR:		none.
       
 97283 -   Originator:	Andreas Tobler <andreast@gcc.gnu.org> 20061213  */
       
 97284 -
       
 97285 -/* { dg-do run } */
       
 97286 -#include "ffitestcxx.h"
       
 97287 -
       
 97288 -static int checking(int a __UNUSED__, short b __UNUSED__,
       
 97289 -		    signed char c __UNUSED__)
       
 97290 -{
       
 97291 -  throw 9;
       
 97292 -}
       
 97293 -
       
 97294 -int main (void)
       
 97295 -{
       
 97296 -  ffi_cif cif;
       
 97297 -  ffi_type *args[MAX_ARGS];
       
 97298 -  void *values[MAX_ARGS];
       
 97299 -  ffi_arg rint;
       
 97300 -
       
 97301 -  signed int si;
       
 97302 -  signed short ss;
       
 97303 -  signed char sc;
       
 97304 -
       
 97305 -  args[0] = &ffi_type_sint;
       
 97306 -  values[0] = &si;
       
 97307 -  args[1] = &ffi_type_sshort;
       
 97308 -  values[1] = &ss;
       
 97309 -  args[2] = &ffi_type_schar;
       
 97310 -  values[2] = &sc;
       
 97311 -
       
 97312 -  /* Initialize the cif */
       
 97313 -  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
       
 97314 -		     &ffi_type_sint, args) == FFI_OK);
       
 97315 -
       
 97316 -  si = -6;
       
 97317 -  ss = -12;
       
 97318 -  sc = -1;
       
 97319 -  {
       
 97320 -    try
       
 97321 -      {
       
 97322 -	ffi_call(&cif, FFI_FN(checking), &rint, values);
       
 97323 -      } catch (int exception_code)
       
 97324 -      {
       
 97325 -	CHECK(exception_code == 9);
       
 97326 -      }
       
 97327 -    printf("part one OK\n");
       
 97328 -    /* { dg-output "part one OK" } */
       
 97329 -  }
       
 97330 -  exit(0);
       
 97331 -}
       
 97332 --- a/js/src/ctypes/patches-libffi/00-base.patch
       
 97333 +++ /dev/null
       
 97334 @@ -1,1349 +0,0 @@
       
 97335 -Patch libffi to fix bug 550602, bug 538216, bug545634, bug 594611, bug 605421
       
 97336 -and bug 631928.
       
 97337 -
       
 97338 -diff --git a/js/src/ctypes/libffi/Makefile.in b/js/src/ctypes/libffi/Makefile.in
       
 97339 ---- a/js/src/ctypes/libffi/Makefile.in
       
 97340 -+++ b/js/src/ctypes/libffi/Makefile.in
       
 97341 -@@ -199,17 +199,17 @@ LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIB
       
 97342 - CCLD = $(CC)
       
 97343 - LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
       
 97344 - 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
       
 97345 - 	$(LDFLAGS) -o $@
       
 97346 - SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \
       
 97347 - 	$(libffi_convenience_la_SOURCES) \
       
 97348 - 	$(nodist_libffi_convenience_la_SOURCES)
       
 97349 - DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES)
       
 97350 --INFO_DEPS = $(srcdir)/doc/libffi.info
       
 97351 -+INFO_DEPS =
       
 97352 - am__TEXINFO_TEX_DIR = $(srcdir)
       
 97353 - DVIS = doc/libffi.dvi
       
 97354 - PDFS = doc/libffi.pdf
       
 97355 - PSS = doc/libffi.ps
       
 97356 - HTMLS = doc/libffi.html
       
 97357 - TEXINFOS = doc/libffi.texi
       
 97358 - TEXI2DVI = texi2dvi
       
 97359 - TEXI2PDF = $(TEXI2DVI) --pdf --batch
       
 97360 -@@ -986,57 +986,57 @@ distclean-compile:
       
 97361 - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi.Plo@am__quote@
       
 97362 - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi64.Plo@am__quote@
       
 97363 - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/freebsd.Plo@am__quote@
       
 97364 - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/sysv.Plo@am__quote@
       
 97365 - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/unix64.Plo@am__quote@
       
 97366 - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win32.Plo@am__quote@
       
 97367 - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win64.Plo@am__quote@
       
 97368 - 
       
 97369 --.S.o:
       
 97370 -+%.o: %.S
       
 97371 - @am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
       
 97372 - @am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
       
 97373 - @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
       
 97374 - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 97375 - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 97376 - @am__fastdepCCAS_FALSE@	$(CPPASCOMPILE) -c -o $@ $<
       
 97377 - 
       
 97378 --.S.obj:
       
 97379 -+%.obj: %.S
       
 97380 - @am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
       
 97381 - @am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
       
 97382 - @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
       
 97383 - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 97384 - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 97385 - @am__fastdepCCAS_FALSE@	$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
       
 97386 - 
       
 97387 --.S.lo:
       
 97388 -+%.lo: %.S
       
 97389 - @am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
       
 97390 - @am__fastdepCCAS_TRUE@	$(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
       
 97391 - @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
       
 97392 - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
       
 97393 - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 97394 - @am__fastdepCCAS_FALSE@	$(LTCPPASCOMPILE) -c -o $@ $<
       
 97395 - 
       
 97396 --.c.o:
       
 97397 -+%.o: %.c
       
 97398 - @am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
       
 97399 - @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
       
 97400 - @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
       
 97401 - @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 97402 - @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 97403 - @am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ $<
       
 97404 - 
       
 97405 --.c.obj:
       
 97406 -+%.obj: %.c
       
 97407 - @am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
       
 97408 - @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
       
 97409 - @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
       
 97410 - @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
       
 97411 - @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 97412 - @am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
       
 97413 - 
       
 97414 --.c.lo:
       
 97415 -+%.lo: %.c
       
 97416 - @am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
       
 97417 - @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
       
 97418 - @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
       
 97419 - @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
       
 97420 - @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
       
 97421 - @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
       
 97422 - 
       
 97423 - mostlyclean-libtool:
       
 97424 -@@ -1129,17 +1129,17 @@ doc/libffi.html: doc/libffi.texi $(srcdi
       
 97425 - 	-@rm -f vti.tmp
       
 97426 - 	@cp $(srcdir)/doc/version.texi $@
       
 97427 - 
       
 97428 - mostlyclean-vti:
       
 97429 - 	-rm -f vti.tmp
       
 97430 - 
       
 97431 - maintainer-clean-vti:
       
 97432 - @MAINTAINER_MODE_TRUE@	-rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi
       
 97433 --.dvi.ps:
       
 97434 -+%.ps: %.dvi
       
 97435 - 	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
       
 97436 - 	$(DVIPS) -o $@ $<
       
 97437 - 
       
 97438 - uninstall-dvi-am:
       
 97439 - 	@$(NORMAL_UNINSTALL)
       
 97440 - 	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
       
 97441 - 	for p in $$list; do \
       
 97442 - 	  $(am__strip_dir) \
       
 97443 -diff --git a/js/src/ctypes/libffi/aclocal.m4 b/js/src/ctypes/libffi/aclocal.m4
       
 97444 ---- a/js/src/ctypes/libffi/aclocal.m4
       
 97445 -+++ b/js/src/ctypes/libffi/aclocal.m4
       
 97446 -@@ -4703,17 +4703,17 @@ dnl Note also adjust exclude_expsyms for
       
 97447 -       # Tell ltmain to make .dll files, not .so files.
       
 97448 -       shrext_cmds=".dll"
       
 97449 -       # FIXME: Setting linknames here is a bad hack.
       
 97450 -       _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
       
 97451 -       # The linker will automatically build a .lib file if we build a DLL.
       
 97452 -       _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
       
 97453 -       # FIXME: Should let the user specify the lib program.
       
 97454 -       _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
       
 97455 --      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
       
 97456 -+      _LT_TAGVAR(fix_srcfile_path, $1)=''
       
 97457 -       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       
 97458 -       ;;
       
 97459 - 
       
 97460 -     darwin* | rhapsody*)
       
 97461 -       _LT_DARWIN_LINKER_FEATURES($1)
       
 97462 -       ;;
       
 97463 - 
       
 97464 -     dgux*)
       
 97465 -diff --git a/js/src/ctypes/libffi/config.sub b/js/src/ctypes/libffi/config.sub
       
 97466 ---- a/js/src/ctypes/libffi/config.sub
       
 97467 -+++ b/js/src/ctypes/libffi/config.sub
       
 97468 -@@ -1,15 +1,15 @@
       
 97469 - #! /bin/sh
       
 97470 - # Configuration validation subroutine script.
       
 97471 - #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
       
 97472 - #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
       
 97473 - #   Free Software Foundation, Inc.
       
 97474 - 
       
 97475 --timestamp='2009-11-07'
       
 97476 -+timestamp='2011-01-03'
       
 97477 - 
       
 97478 - # This file is (in principle) common to ALL GNU software.
       
 97479 - # The presence of a machine in this file suggests that SOME GNU software
       
 97480 - # can handle that machine.  It does not imply ALL GNU software can.
       
 97481 - #
       
 97482 - # This file is free software; you can redistribute it and/or modify
       
 97483 - # it under the terms of the GNU General Public License as published by
       
 97484 - # the Free Software Foundation; either version 2 of the License, or
       
 97485 -@@ -121,17 +121,17 @@ esac
       
 97486 - 
       
 97487 - # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
       
 97488 - # Here we must recognize all the valid KERNEL-OS combinations.
       
 97489 - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
       
 97490 - case $maybe_os in
       
 97491 -   nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
       
 97492 -   uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
       
 97493 -   kopensolaris*-gnu* | \
       
 97494 --  storm-chaos* | os2-emx* | rtmk-nova*)
       
 97495 -+  storm-chaos* | os2-emx* | rtmk-nova* | wince-winmo*)
       
 97496 -     os=-$maybe_os
       
 97497 -     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
       
 97498 -     ;;
       
 97499 -   *)
       
 97500 -     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
       
 97501 -     if [ $basic_machine != $1 ]
       
 97502 -     then os=`echo $1 | sed 's/.*-/-/'`
       
 97503 -     else os=; fi
       
 97504 -@@ -282,32 +282,30 @@ case $basic_machine in
       
 97505 - 	| mt \
       
 97506 - 	| msp430 \
       
 97507 - 	| nios | nios2 \
       
 97508 - 	| ns16k | ns32k \
       
 97509 - 	| or32 \
       
 97510 - 	| pdp10 | pdp11 | pj | pjl \
       
 97511 - 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
       
 97512 - 	| pyramid \
       
 97513 --	| rx \
       
 97514 - 	| score \
       
 97515 - 	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
       
 97516 - 	| sh64 | sh64le \
       
 97517 - 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
       
 97518 - 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
       
 97519 - 	| spu | strongarm \
       
 97520 - 	| tahoe | thumb | tic4x | tic80 | tron \
       
 97521 --	| ubicom32 \
       
 97522 - 	| v850 | v850e \
       
 97523 - 	| we32k \
       
 97524 - 	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
       
 97525 - 	| z8k | z80)
       
 97526 - 		basic_machine=$basic_machine-unknown
       
 97527 - 		;;
       
 97528 --	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
       
 97529 -+	m6811 | m68hc11 | m6812 | m68hc12)
       
 97530 - 		# Motorola 68HC11/12.
       
 97531 - 		basic_machine=$basic_machine-unknown
       
 97532 - 		os=-none
       
 97533 - 		;;
       
 97534 - 	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
       
 97535 - 		;;
       
 97536 - 	ms1)
       
 97537 - 		basic_machine=mt-unknown
       
 97538 -@@ -368,26 +366,25 @@ case $basic_machine in
       
 97539 - 	| mt-* \
       
 97540 - 	| msp430-* \
       
 97541 - 	| nios-* | nios2-* \
       
 97542 - 	| none-* | np1-* | ns16k-* | ns32k-* \
       
 97543 - 	| orion-* \
       
 97544 - 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
       
 97545 - 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
       
 97546 - 	| pyramid-* \
       
 97547 --	| romp-* | rs6000-* | rx-* \
       
 97548 -+	| romp-* | rs6000-* \
       
 97549 - 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
       
 97550 - 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
       
 97551 - 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
       
 97552 - 	| sparclite-* \
       
 97553 - 	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
       
 97554 - 	| tahoe-* | thumb-* \
       
 97555 - 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
       
 97556 - 	| tron-* \
       
 97557 --	| ubicom32-* \
       
 97558 - 	| v850-* | v850e-* | vax-* \
       
 97559 - 	| we32k-* \
       
 97560 - 	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
       
 97561 - 	| xstormy16-* | xtensa*-* \
       
 97562 - 	| ymp-* \
       
 97563 - 	| z8k-* | z80-*)
       
 97564 - 		;;
       
 97565 - 	# Recognize the basic CPU types without company name, with glob match.
       
 97566 -@@ -1294,17 +1291,17 @@ case $os in
       
 97567 - 	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
       
 97568 - 	      | -uxpv* | -beos* | -mpeix* | -udk* \
       
 97569 - 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
       
 97570 - 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
       
 97571 - 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
       
 97572 - 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
       
 97573 - 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
       
 97574 - 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
       
 97575 --	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
       
 97576 -+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -winmo*)
       
 97577 - 	# Remember, each alternative MUST END IN *, to match a version number.
       
 97578 - 		;;
       
 97579 - 	-qnx*)
       
 97580 - 		case $basic_machine in
       
 97581 - 		    x86-* | i*86-*)
       
 97582 - 			;;
       
 97583 - 		    *)
       
 97584 - 			os=-nto$os
       
 97585 -@@ -1336,16 +1333,19 @@ case $os in
       
 97586 - 		os=`echo $os | sed -e 's|sunos6|solaris3|'`
       
 97587 - 		;;
       
 97588 - 	-opened*)
       
 97589 - 		os=-openedition
       
 97590 - 		;;
       
 97591 -         -os400*)
       
 97592 - 		os=-os400
       
 97593 - 		;;
       
 97594 -+	-wince-winmo*)
       
 97595 -+		os=-wince-winmo
       
 97596 -+		;;
       
 97597 - 	-wince*)
       
 97598 - 		os=-wince
       
 97599 - 		;;
       
 97600 - 	-osfrose*)
       
 97601 - 		os=-osfrose
       
 97602 - 		;;
       
 97603 - 	-osf*)
       
 97604 - 		os=-osf
       
 97605 -@@ -1427,16 +1427,19 @@ case $os in
       
 97606 - 		os=-kaos
       
 97607 - 		;;
       
 97608 - 	-zvmoe)
       
 97609 - 		os=-zvmoe
       
 97610 - 		;;
       
 97611 - 	-dicos*)
       
 97612 - 		os=-dicos
       
 97613 - 		;;
       
 97614 -+        -android*)
       
 97615 -+	        os=-android
       
 97616 -+                ;;
       
 97617 - 	-none)
       
 97618 - 		;;
       
 97619 - 	*)
       
 97620 - 		# Get rid of the `-' at the beginning of $os.
       
 97621 - 		os=`echo $os | sed 's/[^-]*-//'`
       
 97622 - 		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
       
 97623 - 		exit 1
       
 97624 - 		;;
       
 97625 -@@ -1681,16 +1684,19 @@ case $basic_machine in
       
 97626 - 				vendor=apple
       
 97627 - 				;;
       
 97628 - 			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
       
 97629 - 				vendor=atari
       
 97630 - 				;;
       
 97631 - 			-vos*)
       
 97632 - 				vendor=stratus
       
 97633 - 				;;
       
 97634 -+			*-android*|*-linuxandroid*)
       
 97635 -+				vendor=linux-
       
 97636 -+				;;
       
 97637 - 		esac
       
 97638 - 		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
       
 97639 - 		;;
       
 97640 - esac
       
 97641 - 
       
 97642 - echo $basic_machine$os
       
 97643 - exit
       
 97644 - 
       
 97645 -diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
       
 97646 ---- a/js/src/ctypes/libffi/configure
       
 97647 -+++ b/js/src/ctypes/libffi/configure
       
 97648 -@@ -8903,17 +8903,17 @@ if test -z "$aix_libpath"; then aix_libp
       
 97649 -       # Tell ltmain to make .dll files, not .so files.
       
 97650 -       shrext_cmds=".dll"
       
 97651 -       # FIXME: Setting linknames here is a bad hack.
       
 97652 -       archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
       
 97653 -       # The linker will automatically build a .lib file if we build a DLL.
       
 97654 -       old_archive_from_new_cmds='true'
       
 97655 -       # FIXME: Should let the user specify the lib program.
       
 97656 -       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
       
 97657 --      fix_srcfile_path='`cygpath -w "$srcfile"`'
       
 97658 -+      fix_srcfile_path=''
       
 97659 -       enable_shared_with_static_runtimes=yes
       
 97660 -       ;;
       
 97661 - 
       
 97662 -     darwin* | rhapsody*)
       
 97663 - 
       
 97664 - 
       
 97665 -   archive_cmds_need_lc=no
       
 97666 -   hardcode_direct=no
       
 97667 -@@ -12270,20 +12270,20 @@ fi
       
 97668 - 
       
 97669 - if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
       
 97670 -     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5
       
 97671 - $as_echo_n "checking assembler supports pc related relocs... " >&6; }
       
 97672 - if test "${libffi_cv_as_x86_pcrel+set}" = set; then :
       
 97673 -   $as_echo_n "(cached) " >&6
       
 97674 - else
       
 97675 - 
       
 97676 --	libffi_cv_as_x86_pcrel=yes
       
 97677 -+	libffi_cv_as_x86_pcrel=no
       
 97678 - 	echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
       
 97679 --	if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then
       
 97680 --	    libffi_cv_as_x86_pcrel=no
       
 97681 -+	if $CC $CFLAGS -c conftest.s > /dev/null; then
       
 97682 -+	    libffi_cv_as_x86_pcrel=yes
       
 97683 - 	fi
       
 97684 - 
       
 97685 - fi
       
 97686 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5
       
 97687 - $as_echo "$libffi_cv_as_x86_pcrel" >&6; }
       
 97688 -     if test "x$libffi_cv_as_x86_pcrel" = xyes; then
       
 97689 - 
       
 97690 - $as_echo "#define HAVE_AS_X86_PCREL 1" >>confdefs.h
       
 97691 -diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
       
 97692 ---- a/js/src/ctypes/libffi/configure.ac
       
 97693 -+++ b/js/src/ctypes/libffi/configure.ac
       
 97694 -@@ -272,20 +272,20 @@ if test x$TARGET = xSPARC; then
       
 97695 -        AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
       
 97696 - 	       [Define if your assembler supports .register.])
       
 97697 -     fi
       
 97698 - fi
       
 97699 - 
       
 97700 - if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
       
 97701 -     AC_CACHE_CHECK([assembler supports pc related relocs],
       
 97702 - 	libffi_cv_as_x86_pcrel, [
       
 97703 --	libffi_cv_as_x86_pcrel=yes
       
 97704 -+	libffi_cv_as_x86_pcrel=no
       
 97705 - 	echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
       
 97706 --	if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then
       
 97707 --	    libffi_cv_as_x86_pcrel=no
       
 97708 -+	if $CC $CFLAGS -c conftest.s > /dev/null; then
       
 97709 -+	    libffi_cv_as_x86_pcrel=yes
       
 97710 - 	fi
       
 97711 - 	])
       
 97712 -     if test "x$libffi_cv_as_x86_pcrel" = xyes; then
       
 97713 - 	AC_DEFINE(HAVE_AS_X86_PCREL, 1,
       
 97714 - 		  [Define if your assembler supports PC relative relocs.])
       
 97715 -     fi
       
 97716 - 
       
 97717 -     AC_CACHE_CHECK([assembler .ascii pseudo-op support],
       
 97718 -diff --git a/js/src/ctypes/libffi/include/ffi.h.in b/js/src/ctypes/libffi/include/ffi.h.in
       
 97719 ---- a/js/src/ctypes/libffi/include/ffi.h.in
       
 97720 -+++ b/js/src/ctypes/libffi/include/ffi.h.in
       
 97721 -@@ -72,25 +72,37 @@ extern "C" {
       
 97722 - #endif
       
 97723 - 
       
 97724 - #include <stddef.h>
       
 97725 - #include <limits.h>
       
 97726 - 
       
 97727 - /* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example).
       
 97728 -    But we can find it either under the correct ANSI name, or under GNU
       
 97729 -    C's internal name.  */
       
 97730 -+
       
 97731 -+#define FFI_64_BIT_MAX 9223372036854775807
       
 97732 -+
       
 97733 - #ifdef LONG_LONG_MAX
       
 97734 - # define FFI_LONG_LONG_MAX LONG_LONG_MAX
       
 97735 - #else
       
 97736 - # ifdef LLONG_MAX
       
 97737 - #  define FFI_LONG_LONG_MAX LLONG_MAX
       
 97738 - # else
       
 97739 - #  ifdef __GNUC__
       
 97740 - #   define FFI_LONG_LONG_MAX __LONG_LONG_MAX__
       
 97741 - #  endif
       
 97742 -+#  ifdef _AIX
       
 97743 -+#   ifndef __PPC64__
       
 97744 -+#    if defined (__IBMC__) || defined (__IBMCPP__)
       
 97745 -+#     define FFI_LONG_LONG_MAX LONGLONG_MAX
       
 97746 -+#    endif
       
 97747 -+#   endif /* __PPC64__ */
       
 97748 -+#   undef  FFI_64_BIT_MAX
       
 97749 -+#   define FFI_64_BIT_MAX 9223372036854775807LL
       
 97750 -+#  endif
       
 97751 - # endif
       
 97752 - #endif
       
 97753 - 
       
 97754 - /* The closure code assumes that this works on pointers, i.e. a size_t	*/
       
 97755 - /* can hold a pointer.							*/
       
 97756 - 
       
 97757 - typedef struct _ffi_type
       
 97758 - {
       
 97759 -@@ -127,27 +139,27 @@ typedef struct _ffi_type
       
 97760 - #elif INT_MAX == 9223372036854775807
       
 97761 - # define ffi_type_uint         ffi_type_uint64
       
 97762 - # define ffi_type_sint         ffi_type_sint64
       
 97763 - #else
       
 97764 -  #error "int size not supported"
       
 97765 - #endif
       
 97766 - 
       
 97767 - #if LONG_MAX == 2147483647
       
 97768 --# if FFI_LONG_LONG_MAX != 9223372036854775807
       
 97769 -+# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX
       
 97770 -  #error "no 64-bit data type supported"
       
 97771 - # endif
       
 97772 --#elif LONG_MAX != 9223372036854775807
       
 97773 -+#elif LONG_MAX != FFI_64_BIT_MAX
       
 97774 -  #error "long size not supported"
       
 97775 - #endif
       
 97776 - 
       
 97777 - #if LONG_MAX == 2147483647
       
 97778 - # define ffi_type_ulong        ffi_type_uint32
       
 97779 - # define ffi_type_slong        ffi_type_sint32
       
 97780 --#elif LONG_MAX == 9223372036854775807
       
 97781 -+#elif LONG_MAX == FFI_64_BIT_MAX
       
 97782 - # define ffi_type_ulong        ffi_type_uint64
       
 97783 - # define ffi_type_slong        ffi_type_sint64
       
 97784 - #else
       
 97785 -  #error "long size not supported"
       
 97786 - #endif
       
 97787 - 
       
 97788 - /* These are defined in types.c */
       
 97789 - extern ffi_type ffi_type_void;
       
 97790 -@@ -190,17 +202,17 @@ typedef struct {
       
 97791 - #endif
       
 97792 - } ffi_cif;
       
 97793 - 
       
 97794 - /* ---- Definitions for the raw API -------------------------------------- */
       
 97795 - 
       
 97796 - #ifndef FFI_SIZEOF_ARG
       
 97797 - # if LONG_MAX == 2147483647
       
 97798 - #  define FFI_SIZEOF_ARG        4
       
 97799 --# elif LONG_MAX == 9223372036854775807
       
 97800 -+# elif LONG_MAX == FFI_64_BIT_MAX
       
 97801 - #  define FFI_SIZEOF_ARG        8
       
 97802 - # endif
       
 97803 - #endif
       
 97804 - 
       
 97805 - #ifndef FFI_SIZEOF_JAVA_RAW
       
 97806 - #  define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG
       
 97807 - #endif
       
 97808 - 
       
 97809 -diff --git a/js/src/ctypes/libffi/src/arm/ffi.c b/js/src/ctypes/libffi/src/arm/ffi.c
       
 97810 ---- a/js/src/ctypes/libffi/src/arm/ffi.c
       
 97811 -+++ b/js/src/ctypes/libffi/src/arm/ffi.c
       
 97812 -@@ -24,22 +24,30 @@
       
 97813 -    DEALINGS IN THE SOFTWARE.
       
 97814 -    ----------------------------------------------------------------------- */
       
 97815 - 
       
 97816 - #include <ffi.h>
       
 97817 - #include <ffi_common.h>
       
 97818 - 
       
 97819 - #include <stdlib.h>
       
 97820 - 
       
 97821 -+/* Forward declares. */
       
 97822 -+static int vfp_type_p (ffi_type *);
       
 97823 -+static void layout_vfp_args (ffi_cif *);
       
 97824 -+
       
 97825 - /* ffi_prep_args is called by the assembly routine once stack space
       
 97826 --   has been allocated for the function's arguments */
       
 97827 --
       
 97828 --void ffi_prep_args(char *stack, extended_cif *ecif)
       
 97829 -+   has been allocated for the function's arguments
       
 97830 -+   
       
 97831 -+   The vfp_space parameter is the load area for VFP regs, the return
       
 97832 -+   value is cif->vfp_used (word bitset of VFP regs used for passing
       
 97833 -+   arguments). These are only used for the VFP hard-float ABI.
       
 97834 -+*/
       
 97835 -+int ffi_prep_args(char *stack, extended_cif *ecif, float *vfp_space)
       
 97836 - {
       
 97837 --  register unsigned int i;
       
 97838 -+  register unsigned int i, vi = 0;
       
 97839 -   register void **p_argv;
       
 97840 -   register char *argp;
       
 97841 -   register ffi_type **p_arg;
       
 97842 - 
       
 97843 -   argp = stack;
       
 97844 - 
       
 97845 -   if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
       
 97846 -     *(void **) argp = ecif->rvalue;
       
 97847 -@@ -49,16 +57,31 @@ void ffi_prep_args(char *stack, extended
       
 97848 -   p_argv = ecif->avalue;
       
 97849 - 
       
 97850 -   for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
       
 97851 -        (i != 0);
       
 97852 -        i--, p_arg++)
       
 97853 -     {
       
 97854 -       size_t z;
       
 97855 - 
       
 97856 -+      /* Allocated in VFP registers. */
       
 97857 -+      if (ecif->cif->abi == FFI_VFP
       
 97858 -+	  && vi < ecif->cif->vfp_nargs && vfp_type_p (*p_arg))
       
 97859 -+	{
       
 97860 -+	  float* vfp_slot = vfp_space + ecif->cif->vfp_args[vi++];
       
 97861 -+	  if ((*p_arg)->type == FFI_TYPE_FLOAT)
       
 97862 -+	    *((float*)vfp_slot) = *((float*)*p_argv);
       
 97863 -+	  else if ((*p_arg)->type == FFI_TYPE_DOUBLE)
       
 97864 -+	    *((double*)vfp_slot) = *((double*)*p_argv);
       
 97865 -+	  else
       
 97866 -+	    memcpy(vfp_slot, *p_argv, (*p_arg)->size);
       
 97867 -+	  p_argv++;
       
 97868 -+	  continue;
       
 97869 -+	}
       
 97870 -+
       
 97871 -       /* Align if necessary */
       
 97872 -       if (((*p_arg)->alignment - 1) & (unsigned) argp) {
       
 97873 - 	argp = (char *) ALIGN(argp, (*p_arg)->alignment);
       
 97874 -       }
       
 97875 - 
       
 97876 -       if ((*p_arg)->type == FFI_TYPE_STRUCT)
       
 97877 - 	argp = (char *) ALIGN(argp, 4);
       
 97878 - 
       
 97879 -@@ -98,23 +121,25 @@ void ffi_prep_args(char *stack, extended
       
 97880 - 	    }
       
 97881 - 	  else
       
 97882 - 	    {
       
 97883 - 	      memcpy(argp, *p_argv, z);
       
 97884 - 	    }
       
 97885 - 	  p_argv++;
       
 97886 - 	  argp += z;
       
 97887 -     }
       
 97888 --  
       
 97889 --  return;
       
 97890 -+
       
 97891 -+  /* Indicate the VFP registers used. */
       
 97892 -+  return ecif->cif->vfp_used;
       
 97893 - }
       
 97894 - 
       
 97895 - /* Perform machine dependent cif processing */
       
 97896 - ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
       
 97897 - {
       
 97898 -+  int type_code;
       
 97899 -   /* Round the stack up to a multiple of 8 bytes.  This isn't needed 
       
 97900 -      everywhere, but it is on some platforms, and it doesn't harm anything
       
 97901 -      when it isn't needed.  */
       
 97902 -   cif->bytes = (cif->bytes + 7) & ~7;
       
 97903 - 
       
 97904 -   /* Set the return type flag */
       
 97905 -   switch (cif->rtype->type)
       
 97906 -     {
       
 97907 -@@ -125,137 +150,176 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
       
 97908 -       break;
       
 97909 - 
       
 97910 -     case FFI_TYPE_SINT64:
       
 97911 -     case FFI_TYPE_UINT64:
       
 97912 -       cif->flags = (unsigned) FFI_TYPE_SINT64;
       
 97913 -       break;
       
 97914 - 
       
 97915 -     case FFI_TYPE_STRUCT:
       
 97916 --      if (cif->rtype->size <= 4)
       
 97917 -+      if (cif->abi == FFI_VFP
       
 97918 -+	  && (type_code = vfp_type_p (cif->rtype)) != 0)
       
 97919 -+	{
       
 97920 -+	  /* A Composite Type passed in VFP registers, either
       
 97921 -+	     FFI_TYPE_STRUCT_VFP_FLOAT or FFI_TYPE_STRUCT_VFP_DOUBLE. */
       
 97922 -+	  cif->flags = (unsigned) type_code;
       
 97923 -+	}
       
 97924 -+      else if (cif->rtype->size <= 4)
       
 97925 - 	/* A Composite Type not larger than 4 bytes is returned in r0.  */
       
 97926 - 	cif->flags = (unsigned)FFI_TYPE_INT;
       
 97927 -       else
       
 97928 - 	/* A Composite Type larger than 4 bytes, or whose size cannot
       
 97929 - 	   be determined statically ... is stored in memory at an
       
 97930 - 	   address passed [in r0].  */
       
 97931 - 	cif->flags = (unsigned)FFI_TYPE_STRUCT;
       
 97932 -       break;
       
 97933 - 
       
 97934 -     default:
       
 97935 -       cif->flags = FFI_TYPE_INT;
       
 97936 -       break;
       
 97937 -     }
       
 97938 - 
       
 97939 -+  /* Map out the register placements of VFP register args.
       
 97940 -+     The VFP hard-float calling conventions are slightly more sophisticated than
       
 97941 -+     the base calling conventions, so we do it here instead of in ffi_prep_args(). */
       
 97942 -+  if (cif->abi == FFI_VFP)
       
 97943 -+    layout_vfp_args (cif);
       
 97944 -+
       
 97945 -   return FFI_OK;
       
 97946 - }
       
 97947 - 
       
 97948 --extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
       
 97949 --			  unsigned, unsigned, unsigned *, void (*fn)(void));
       
 97950 -+/* Prototypes for assembly functions, in sysv.S */
       
 97951 -+extern void ffi_call_SYSV (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *);
       
 97952 -+extern void ffi_call_VFP (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *);
       
 97953 - 
       
 97954 - void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 97955 - {
       
 97956 -   extended_cif ecif;
       
 97957 - 
       
 97958 -   int small_struct = (cif->flags == FFI_TYPE_INT 
       
 97959 - 		      && cif->rtype->type == FFI_TYPE_STRUCT);
       
 97960 -+  int vfp_struct = (cif->flags == FFI_TYPE_STRUCT_VFP_FLOAT
       
 97961 -+		    || cif->flags == FFI_TYPE_STRUCT_VFP_DOUBLE);
       
 97962 - 
       
 97963 -   ecif.cif = cif;
       
 97964 -   ecif.avalue = avalue;
       
 97965 - 
       
 97966 -   unsigned int temp;
       
 97967 -   
       
 97968 -   /* If the return value is a struct and we don't have a return	*/
       
 97969 -   /* value address then we need to make one		        */
       
 97970 - 
       
 97971 -   if ((rvalue == NULL) && 
       
 97972 -       (cif->flags == FFI_TYPE_STRUCT))
       
 97973 -     {
       
 97974 -       ecif.rvalue = alloca(cif->rtype->size);
       
 97975 -     }
       
 97976 -   else if (small_struct)
       
 97977 -     ecif.rvalue = &temp;
       
 97978 -+  else if (vfp_struct)
       
 97979 -+    {
       
 97980 -+      /* Largest case is double x 4. */
       
 97981 -+      ecif.rvalue = alloca(32);
       
 97982 -+    }
       
 97983 -   else
       
 97984 -     ecif.rvalue = rvalue;
       
 97985 - 
       
 97986 -   switch (cif->abi) 
       
 97987 -     {
       
 97988 -     case FFI_SYSV:
       
 97989 --      ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue,
       
 97990 --		    fn);
       
 97991 -+      ffi_call_SYSV (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
       
 97992 -+      break;
       
 97993 - 
       
 97994 -+    case FFI_VFP:
       
 97995 -+      ffi_call_VFP (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
       
 97996 -       break;
       
 97997 -+
       
 97998 -     default:
       
 97999 -       FFI_ASSERT(0);
       
 98000 -       break;
       
 98001 -     }
       
 98002 -   if (small_struct)
       
 98003 -     memcpy (rvalue, &temp, cif->rtype->size);
       
 98004 -+  else if (vfp_struct)
       
 98005 -+    memcpy (rvalue, ecif.rvalue, cif->rtype->size);
       
 98006 - }
       
 98007 - 
       
 98008 - /** private members **/
       
 98009 - 
       
 98010 - static void ffi_prep_incoming_args_SYSV (char *stack, void **ret,
       
 98011 --					 void** args, ffi_cif* cif);
       
 98012 -+					 void** args, ffi_cif* cif, float *vfp_stack);
       
 98013 - 
       
 98014 - void ffi_closure_SYSV (ffi_closure *);
       
 98015 - 
       
 98016 -+void ffi_closure_VFP (ffi_closure *);
       
 98017 -+
       
 98018 - /* This function is jumped to by the trampoline */
       
 98019 - 
       
 98020 - unsigned int
       
 98021 --ffi_closure_SYSV_inner (closure, respp, args)
       
 98022 -+ffi_closure_SYSV_inner (closure, respp, args, vfp_args)
       
 98023 -      ffi_closure *closure;
       
 98024 -      void **respp;
       
 98025 -      void *args;
       
 98026 -+     void *vfp_args;
       
 98027 - {
       
 98028 -   // our various things...
       
 98029 -   ffi_cif       *cif;
       
 98030 -   void         **arg_area;
       
 98031 - 
       
 98032 -   cif         = closure->cif;
       
 98033 -   arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
       
 98034 - 
       
 98035 -   /* this call will initialize ARG_AREA, such that each
       
 98036 -    * element in that array points to the corresponding 
       
 98037 -    * value on the stack; and if the function returns
       
 98038 -    * a structure, it will re-set RESP to point to the
       
 98039 -    * structure return address.  */
       
 98040 - 
       
 98041 --  ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif);
       
 98042 -+  ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args);
       
 98043 - 
       
 98044 -   (closure->fun) (cif, *respp, arg_area, closure->user_data);
       
 98045 - 
       
 98046 -   return cif->flags;
       
 98047 - }
       
 98048 - 
       
 98049 - /*@-exportheader@*/
       
 98050 - static void 
       
 98051 - ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
       
 98052 --			    void **avalue, ffi_cif *cif)
       
 98053 -+			    void **avalue, ffi_cif *cif,
       
 98054 -+			    /* Used only under VFP hard-float ABI. */
       
 98055 -+			    float *vfp_stack)
       
 98056 - /*@=exportheader@*/
       
 98057 - {
       
 98058 --  register unsigned int i;
       
 98059 -+  register unsigned int i, vi = 0;
       
 98060 -   register void **p_argv;
       
 98061 -   register char *argp;
       
 98062 -   register ffi_type **p_arg;
       
 98063 - 
       
 98064 -   argp = stack;
       
 98065 - 
       
 98066 -   if ( cif->flags == FFI_TYPE_STRUCT ) {
       
 98067 -     *rvalue = *(void **) argp;
       
 98068 -     argp += 4;
       
 98069 -   }
       
 98070 - 
       
 98071 -   p_argv = avalue;
       
 98072 - 
       
 98073 -   for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
       
 98074 -     {
       
 98075 -       size_t z;
       
 98076 -+      size_t alignment;
       
 98077 -+  
       
 98078 -+      if (cif->abi == FFI_VFP
       
 98079 -+	  && vi < cif->vfp_nargs && vfp_type_p (*p_arg))
       
 98080 -+	{
       
 98081 -+	  *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]);
       
 98082 -+	  continue;
       
 98083 -+	}
       
 98084 - 
       
 98085 --      size_t alignment = (*p_arg)->alignment;
       
 98086 -+      alignment = (*p_arg)->alignment;
       
 98087 -       if (alignment < 4)
       
 98088 - 	alignment = 4;
       
 98089 -       /* Align if necessary */
       
 98090 -       if ((alignment - 1) & (unsigned) argp) {
       
 98091 - 	argp = (char *) ALIGN(argp, alignment);
       
 98092 -       }
       
 98093 - 
       
 98094 -       z = (*p_arg)->size;
       
 98095 -@@ -290,20 +354,147 @@ ffi_prep_incoming_args_SYSV(char *stack,
       
 98096 - 
       
 98097 - ffi_status
       
 98098 - ffi_prep_closure_loc (ffi_closure* closure,
       
 98099 - 		      ffi_cif* cif,
       
 98100 - 		      void (*fun)(ffi_cif*,void*,void**,void*),
       
 98101 - 		      void *user_data,
       
 98102 - 		      void *codeloc)
       
 98103 - {
       
 98104 --  FFI_ASSERT (cif->abi == FFI_SYSV);
       
 98105 -+  void (*closure_func)(ffi_closure*) = NULL;
       
 98106 - 
       
 98107 -+  if (cif->abi == FFI_SYSV)
       
 98108 -+    closure_func = &ffi_closure_SYSV;
       
 98109 -+  else if (cif->abi == FFI_VFP)
       
 98110 -+    closure_func = &ffi_closure_VFP;
       
 98111 -+  else
       
 98112 -+    FFI_ASSERT (0);
       
 98113 -+    
       
 98114 -   FFI_INIT_TRAMPOLINE (&closure->tramp[0], \
       
 98115 --		       &ffi_closure_SYSV,  \
       
 98116 -+		       closure_func,  \
       
 98117 - 		       codeloc);
       
 98118 -     
       
 98119 -   closure->cif  = cif;
       
 98120 -   closure->user_data = user_data;
       
 98121 -   closure->fun  = fun;
       
 98122 - 
       
 98123 -   return FFI_OK;
       
 98124 - }
       
 98125 -+
       
 98126 -+/* Below are routines for VFP hard-float support. */
       
 98127 -+
       
 98128 -+static int rec_vfp_type_p (ffi_type *t, int *elt, int *elnum)
       
 98129 -+{
       
 98130 -+  switch (t->type)
       
 98131 -+    {
       
 98132 -+    case FFI_TYPE_FLOAT:
       
 98133 -+    case FFI_TYPE_DOUBLE:
       
 98134 -+      *elt = (int) t->type;
       
 98135 -+      *elnum = 1;
       
 98136 -+      return 1;
       
 98137 -+
       
 98138 -+    case FFI_TYPE_STRUCT_VFP_FLOAT:
       
 98139 -+      *elt = FFI_TYPE_FLOAT;
       
 98140 -+      *elnum = t->size / sizeof (float);
       
 98141 -+      return 1;
       
 98142 -+
       
 98143 -+    case FFI_TYPE_STRUCT_VFP_DOUBLE:
       
 98144 -+      *elt = FFI_TYPE_DOUBLE;
       
 98145 -+      *elnum = t->size / sizeof (double);
       
 98146 -+      return 1;
       
 98147 -+
       
 98148 -+    case FFI_TYPE_STRUCT:;
       
 98149 -+      {
       
 98150 -+	int base_elt = 0, total_elnum = 0;
       
 98151 -+	ffi_type **el = t->elements;
       
 98152 -+	while (*el)
       
 98153 -+	  {
       
 98154 -+	    int el_elt = 0, el_elnum = 0;
       
 98155 -+	    if (! rec_vfp_type_p (*el, &el_elt, &el_elnum)
       
 98156 -+		|| (base_elt && base_elt != el_elt)
       
 98157 -+		|| total_elnum + el_elnum > 4)
       
 98158 -+	      return 0;
       
 98159 -+	    base_elt = el_elt;
       
 98160 -+	    total_elnum += el_elnum;
       
 98161 -+	    el++;
       
 98162 -+	  }
       
 98163 -+	*elnum = total_elnum;
       
 98164 -+	*elt = base_elt;
       
 98165 -+	return 1;
       
 98166 -+      }
       
 98167 -+    default: ;
       
 98168 -+    }
       
 98169 -+  return 0;
       
 98170 -+}
       
 98171 -+
       
 98172 -+static int vfp_type_p (ffi_type *t)
       
 98173 -+{
       
 98174 -+  int elt, elnum;
       
 98175 -+  if (rec_vfp_type_p (t, &elt, &elnum))
       
 98176 -+    {
       
 98177 -+      if (t->type == FFI_TYPE_STRUCT)
       
 98178 -+	{
       
 98179 -+	  if (elnum == 1)
       
 98180 -+	    t->type = elt;
       
 98181 -+	  else
       
 98182 -+	    t->type = (elt == FFI_TYPE_FLOAT
       
 98183 -+		       ? FFI_TYPE_STRUCT_VFP_FLOAT
       
 98184 -+		       : FFI_TYPE_STRUCT_VFP_DOUBLE);
       
 98185 -+	}
       
 98186 -+      return (int) t->type;
       
 98187 -+    }
       
 98188 -+  return 0;
       
 98189 -+}
       
 98190 -+
       
 98191 -+static void place_vfp_arg (ffi_cif *cif, ffi_type *t)
       
 98192 -+{
       
 98193 -+  int reg = cif->vfp_reg_free;
       
 98194 -+  int nregs = t->size / sizeof (float);
       
 98195 -+  int align = ((t->type == FFI_TYPE_STRUCT_VFP_FLOAT
       
 98196 -+		|| t->type == FFI_TYPE_FLOAT) ? 1 : 2);
       
 98197 -+  /* Align register number. */
       
 98198 -+  if ((reg & 1) && align == 2)
       
 98199 -+    reg++;
       
 98200 -+  while (reg + nregs <= 16)
       
 98201 -+    {
       
 98202 -+      int s, new_used = 0;
       
 98203 -+      for (s = reg; s < reg + nregs; s++)
       
 98204 -+	{
       
 98205 -+	  new_used |= (1 << s);
       
 98206 -+	  if (cif->vfp_used & (1 << s))
       
 98207 -+	    {
       
 98208 -+	      reg += align;
       
 98209 -+	      goto next_reg;
       
 98210 -+	    }
       
 98211 -+	}
       
 98212 -+      /* Found regs to allocate. */
       
 98213 -+      cif->vfp_used |= new_used;
       
 98214 -+      cif->vfp_args[cif->vfp_nargs++] = reg;
       
 98215 -+
       
 98216 -+      /* Update vfp_reg_free. */
       
 98217 -+      if (cif->vfp_used & (1 << cif->vfp_reg_free))
       
 98218 -+	{
       
 98219 -+	  reg += nregs;
       
 98220 -+	  while (cif->vfp_used & (1 << reg))
       
 98221 -+	    reg += 1;
       
 98222 -+	  cif->vfp_reg_free = reg;
       
 98223 -+	}
       
 98224 -+      return;
       
 98225 -+    next_reg: ;
       
 98226 -+    }
       
 98227 -+}
       
 98228 -+
       
 98229 -+static void layout_vfp_args (ffi_cif *cif)
       
 98230 -+{
       
 98231 -+  int i;
       
 98232 -+  /* Init VFP fields */
       
 98233 -+  cif->vfp_used = 0;
       
 98234 -+  cif->vfp_nargs = 0;
       
 98235 -+  cif->vfp_reg_free = 0;
       
 98236 -+  memset (cif->vfp_args, -1, 16); /* Init to -1. */
       
 98237 -+
       
 98238 -+  for (i = 0; i < cif->nargs; i++)
       
 98239 -+    {
       
 98240 -+      ffi_type *t = cif->arg_types[i];
       
 98241 -+      if (vfp_type_p (t))
       
 98242 -+	place_vfp_arg (cif, t);
       
 98243 -+    }
       
 98244 -+}
       
 98245 -diff --git a/js/src/ctypes/libffi/src/arm/ffitarget.h b/js/src/ctypes/libffi/src/arm/ffitarget.h
       
 98246 ---- a/js/src/ctypes/libffi/src/arm/ffitarget.h
       
 98247 -+++ b/js/src/ctypes/libffi/src/arm/ffitarget.h
       
 98248 -@@ -29,21 +29,35 @@
       
 98249 - 
       
 98250 - #ifndef LIBFFI_ASM
       
 98251 - typedef unsigned long          ffi_arg;
       
 98252 - typedef signed long            ffi_sarg;
       
 98253 - 
       
 98254 - typedef enum ffi_abi {
       
 98255 -   FFI_FIRST_ABI = 0,
       
 98256 -   FFI_SYSV,
       
 98257 -+  FFI_VFP,
       
 98258 -   FFI_LAST_ABI,
       
 98259 -+#ifdef __ARM_PCS_VFP
       
 98260 -+  FFI_DEFAULT_ABI = FFI_VFP
       
 98261 -+#else
       
 98262 -   FFI_DEFAULT_ABI = FFI_SYSV
       
 98263 -+#endif
       
 98264 - } ffi_abi;
       
 98265 - #endif
       
 98266 - 
       
 98267 -+#define FFI_EXTRA_CIF_FIELDS			\
       
 98268 -+  int vfp_used;					\
       
 98269 -+  short vfp_reg_free, vfp_nargs;		\
       
 98270 -+  signed char vfp_args[16]			\
       
 98271 -+
       
 98272 -+/* Internally used. */
       
 98273 -+#define FFI_TYPE_STRUCT_VFP_FLOAT  (FFI_TYPE_LAST + 1)
       
 98274 -+#define FFI_TYPE_STRUCT_VFP_DOUBLE (FFI_TYPE_LAST + 2)
       
 98275 -+
       
 98276 - /* ---- Definitions for closures ----------------------------------------- */
       
 98277 - 
       
 98278 - #define FFI_CLOSURES 1
       
 98279 - #define FFI_TRAMPOLINE_SIZE 20
       
 98280 - #define FFI_NATIVE_RAW_API 0
       
 98281 - 
       
 98282 - #endif
       
 98283 - 
       
 98284 -diff --git a/js/src/ctypes/libffi/src/arm/sysv.S b/js/src/ctypes/libffi/src/arm/sysv.S
       
 98285 ---- a/js/src/ctypes/libffi/src/arm/sysv.S
       
 98286 -+++ b/js/src/ctypes/libffi/src/arm/sysv.S
       
 98287 -@@ -137,54 +137,52 @@
       
 98288 - 	ldr\cond	pc, [sp], #4
       
 98289 - 	.else
       
 98290 - 	ldm\cond\dirn	sp!, {\regs, pc}
       
 98291 - 	.endif
       
 98292 - #endif
       
 98293 - .endm
       
 98294 - 
       
 98295 - 
       
 98296 --	@ r0:   ffi_prep_args
       
 98297 -+	@ r0:   fn
       
 98298 - 	@ r1:   &ecif
       
 98299 - 	@ r2:   cif->bytes
       
 98300 - 	@ r3:   fig->flags
       
 98301 - 	@ sp+0: ecif.rvalue
       
 98302 --	@ sp+4: fn
       
 98303 - 
       
 98304 - 	@ This assumes we are using gas.
       
 98305 - ARM_FUNC_START ffi_call_SYSV
       
 98306 - 	@ Save registers
       
 98307 -         stmfd	sp!, {r0-r3, fp, lr}
       
 98308 - 	UNWIND .save	{r0-r3, fp, lr}
       
 98309 - 	mov	fp, sp
       
 98310 - 
       
 98311 - 	UNWIND .setfp	fp, sp
       
 98312 - 
       
 98313 - 	@ Make room for all of the new args.
       
 98314 - 	sub	sp, fp, r2
       
 98315 - 
       
 98316 - 	@ Place all of the ffi_prep_args in position
       
 98317 --	mov	ip, r0
       
 98318 - 	mov	r0, sp
       
 98319 - 	@     r1 already set
       
 98320 - 
       
 98321 - 	@ Call ffi_prep_args(stack, &ecif)
       
 98322 --	call_reg(ip)
       
 98323 -+	bl	ffi_prep_args
       
 98324 - 
       
 98325 - 	@ move first 4 parameters in registers
       
 98326 - 	ldmia	sp, {r0-r3}
       
 98327 - 
       
 98328 - 	@ and adjust stack
       
 98329 --	ldr	ip, [fp, #8]
       
 98330 --        cmp	ip, #16
       
 98331 --	movhs	ip, #16
       
 98332 --        add	sp, sp, ip
       
 98333 -+	sub	lr, fp, sp	@ cif->bytes == fp - sp
       
 98334 -+	ldr	ip, [fp]	@ load fn() in advance
       
 98335 -+	cmp	lr, #16
       
 98336 -+	movhs	lr, #16
       
 98337 -+	add	sp, sp, lr
       
 98338 - 
       
 98339 - 	@ call (fn) (...)
       
 98340 --	ldr	ip, [fp, #28]
       
 98341 - 	call_reg(ip)
       
 98342 - 	
       
 98343 - 	@ Remove the space we pushed for the args
       
 98344 - 	mov	sp, fp
       
 98345 - 
       
 98346 - 	@ Load r2 with the pointer to storage for the return value
       
 98347 - 	ldr	r2, [sp, #24]
       
 98348 - 
       
 98349 -@@ -225,16 +223,111 @@ ARM_FUNC_START ffi_call_SYSV
       
 98350 - 
       
 98351 - LSYM(Lepilogue):
       
 98352 - 	RETLDM	"r0-r3,fp"
       
 98353 - 
       
 98354 - .ffi_call_SYSV_end:
       
 98355 - 	UNWIND .fnend
       
 98356 -         .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
       
 98357 - 
       
 98358 -+
       
 98359 -+	@ r0:   fn
       
 98360 -+	@ r1:   &ecif
       
 98361 -+	@ r2:   cif->bytes
       
 98362 -+	@ r3:   fig->flags
       
 98363 -+	@ sp+0: ecif.rvalue
       
 98364 -+
       
 98365 -+ARM_FUNC_START ffi_call_VFP
       
 98366 -+	@ Save registers
       
 98367 -+        stmfd	sp!, {r0-r3, fp, lr}
       
 98368 -+	UNWIND .save	{r0-r3, fp, lr}
       
 98369 -+	mov	fp, sp
       
 98370 -+	UNWIND .setfp	fp, sp
       
 98371 -+
       
 98372 -+	@ Make room for all of the new args.
       
 98373 -+	sub	sp, sp, r2
       
 98374 -+
       
 98375 -+	@ Make room for loading VFP args
       
 98376 -+	sub	sp, sp, #64
       
 98377 -+
       
 98378 -+	@ Place all of the ffi_prep_args in position
       
 98379 -+	mov	r0, sp
       
 98380 -+	@     r1 already set
       
 98381 -+	sub	r2, fp, #64   @ VFP scratch space
       
 98382 -+
       
 98383 -+	@ Call ffi_prep_args(stack, &ecif, vfp_space)
       
 98384 -+	bl	ffi_prep_args
       
 98385 -+
       
 98386 -+	@ Load VFP register args if needed
       
 98387 -+	cmp	r0, #0
       
 98388 -+	beq	LSYM(Lbase_args)
       
 98389 -+
       
 98390 -+	@ Load only d0 if possible
       
 98391 -+	cmp	r0, #3
       
 98392 -+	sub	ip, fp, #64
       
 98393 -+	flddle	d0, [ip]
       
 98394 -+	fldmiadgt	ip, {d0-d7}
       
 98395 -+
       
 98396 -+LSYM(Lbase_args):
       
 98397 -+	@ move first 4 parameters in registers
       
 98398 -+	ldmia	sp, {r0-r3}
       
 98399 -+
       
 98400 -+	@ and adjust stack
       
 98401 -+	sub	lr, ip, sp	@ cif->bytes == (fp - 64) - sp
       
 98402 -+	ldr	ip, [fp]	@ load fn() in advance
       
 98403 -+        cmp	lr, #16
       
 98404 -+	movhs	lr, #16
       
 98405 -+        add	sp, sp, lr
       
 98406 -+
       
 98407 -+	@ call (fn) (...)
       
 98408 -+	call_reg(ip)
       
 98409 -+
       
 98410 -+	@ Remove the space we pushed for the args
       
 98411 -+	mov	sp, fp
       
 98412 -+
       
 98413 -+	@ Load r2 with the pointer to storage for
       
 98414 -+	@ the return value
       
 98415 -+	ldr	r2, [sp, #24]
       
 98416 -+
       
 98417 -+	@ Load r3 with the return type code 
       
 98418 -+	ldr	r3, [sp, #12]
       
 98419 -+
       
 98420 -+	@ If the return value pointer is NULL,
       
 98421 -+	@ assume no return value.
       
 98422 -+	cmp	r2, #0
       
 98423 -+	beq	LSYM(Lepilogue_vfp)
       
 98424 -+	
       
 98425 -+	cmp	r3, #FFI_TYPE_INT
       
 98426 -+	streq	r0, [r2]
       
 98427 -+	beq	LSYM(Lepilogue_vfp)
       
 98428 -+
       
 98429 -+	cmp	r3, #FFI_TYPE_SINT64
       
 98430 -+	stmeqia	r2, {r0, r1}
       
 98431 -+	beq	LSYM(Lepilogue_vfp)
       
 98432 -+
       
 98433 -+	cmp	r3, #FFI_TYPE_FLOAT
       
 98434 -+	fstseq	s0, [r2]
       
 98435 -+	beq	LSYM(Lepilogue_vfp)
       
 98436 -+	
       
 98437 -+	cmp	r3, #FFI_TYPE_DOUBLE
       
 98438 -+	fstdeq	d0, [r2]
       
 98439 -+	beq	LSYM(Lepilogue_vfp)
       
 98440 -+
       
 98441 -+	cmp	r3, #FFI_TYPE_STRUCT_VFP_FLOAT
       
 98442 -+	cmpne	r3, #FFI_TYPE_STRUCT_VFP_DOUBLE
       
 98443 -+	fstmiadeq	r2, {d0-d3}
       
 98444 -+
       
 98445 -+LSYM(Lepilogue_vfp):
       
 98446 -+	RETLDM	"r0-r3,fp"
       
 98447 -+
       
 98448 -+.ffi_call_VFP_end:
       
 98449 -+	UNWIND .fnend
       
 98450 -+        .size    CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
       
 98451 -+	
       
 98452 -+	
       
 98453 - /*
       
 98454 - 	unsigned int FFI_HIDDEN
       
 98455 - 	ffi_closure_SYSV_inner (closure, respp, args)
       
 98456 - 	     ffi_closure *closure;
       
 98457 - 	     void **respp;
       
 98458 -   	     void *args;
       
 98459 - */
       
 98460 - 
       
 98461 -@@ -297,11 +390,73 @@ ARM_FUNC_START ffi_closure_SYSV
       
 98462 - 	ldfd	f0, [sp]
       
 98463 - 	b	.Lclosure_epilogue
       
 98464 - #endif
       
 98465 - 
       
 98466 - .ffi_closure_SYSV_end:
       
 98467 - 	UNWIND .fnend
       
 98468 -         .size    CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
       
 98469 - 
       
 98470 -+
       
 98471 -+ARM_FUNC_START ffi_closure_VFP
       
 98472 -+	fstmfdd	sp!, {d0-d7}
       
 98473 -+	@ r0-r3, then d0-d7
       
 98474 -+	UNWIND .pad #80
       
 98475 -+	add	ip, sp, #80
       
 98476 -+	stmfd	sp!, {ip, lr}
       
 98477 -+	UNWIND .save	{r0, lr}
       
 98478 -+	add	r2, sp, #72
       
 98479 -+	add	r3, sp, #8
       
 98480 -+	.pad #72
       
 98481 -+	sub	sp, sp, #72
       
 98482 -+	str	sp, [sp, #64]
       
 98483 -+	add	r1, sp, #64
       
 98484 -+	bl	ffi_closure_SYSV_inner
       
 98485 -+
       
 98486 -+	cmp	r0, #FFI_TYPE_INT
       
 98487 -+	beq	.Lretint_vfp
       
 98488 -+
       
 98489 -+	cmp	r0, #FFI_TYPE_FLOAT
       
 98490 -+	beq	.Lretfloat_vfp
       
 98491 -+
       
 98492 -+	cmp	r0, #FFI_TYPE_DOUBLE
       
 98493 -+	cmpne	r0, #FFI_TYPE_LONGDOUBLE
       
 98494 -+	beq	.Lretdouble_vfp
       
 98495 -+
       
 98496 -+	cmp	r0, #FFI_TYPE_SINT64
       
 98497 -+	beq	.Lretlonglong_vfp
       
 98498 -+
       
 98499 -+	cmp	r0, #FFI_TYPE_STRUCT_VFP_FLOAT
       
 98500 -+	beq	.Lretfloat_struct_vfp
       
 98501 -+
       
 98502 -+	cmp	r0, #FFI_TYPE_STRUCT_VFP_DOUBLE
       
 98503 -+	beq	.Lretdouble_struct_vfp
       
 98504 -+	
       
 98505 -+.Lclosure_epilogue_vfp:
       
 98506 -+	add	sp, sp, #72
       
 98507 -+	ldmfd	sp, {sp, pc}
       
 98508 -+
       
 98509 -+.Lretfloat_vfp:
       
 98510 -+	flds	s0, [sp]
       
 98511 -+	b	.Lclosure_epilogue_vfp
       
 98512 -+.Lretdouble_vfp:
       
 98513 -+	fldd	d0, [sp]
       
 98514 -+	b	.Lclosure_epilogue_vfp
       
 98515 -+.Lretint_vfp:
       
 98516 -+	ldr	r0, [sp]
       
 98517 -+	b	.Lclosure_epilogue_vfp
       
 98518 -+.Lretlonglong_vfp:
       
 98519 -+	ldmia	sp, {r0, r1}
       
 98520 -+	b	.Lclosure_epilogue_vfp
       
 98521 -+.Lretfloat_struct_vfp:
       
 98522 -+	fldmiad	sp, {d0-d1}
       
 98523 -+	b	.Lclosure_epilogue_vfp
       
 98524 -+.Lretdouble_struct_vfp:
       
 98525 -+	fldmiad	sp, {d0-d3}
       
 98526 -+	b	.Lclosure_epilogue_vfp
       
 98527 -+
       
 98528 -+.ffi_closure_VFP_end:
       
 98529 -+	UNWIND .fnend
       
 98530 -+        .size    CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP)
       
 98531 -+
       
 98532 - #if defined __ELF__ && defined __linux__
       
 98533 - 	.section	.note.GNU-stack,"",%progbits
       
 98534 - #endif
       
 98535 -diff --git a/js/src/ctypes/libffi/src/x86/ffi64.c b/js/src/ctypes/libffi/src/x86/ffi64.c
       
 98536 ---- a/js/src/ctypes/libffi/src/x86/ffi64.c
       
 98537 -+++ b/js/src/ctypes/libffi/src/x86/ffi64.c
       
 98538 -@@ -373,29 +373,29 @@ ffi_prep_cif_machdep (ffi_cif *cif)
       
 98539 - 	  || gprcount + ngpr > MAX_GPR_REGS
       
 98540 - 	  || ssecount + nsse > MAX_SSE_REGS)
       
 98541 - 	{
       
 98542 - 	  long align = cif->arg_types[i]->alignment;
       
 98543 - 
       
 98544 - 	  if (align < 8)
       
 98545 - 	    align = 8;
       
 98546 - 
       
 98547 --	  bytes = ALIGN(bytes, align);
       
 98548 -+	  bytes = ALIGN (bytes, align);
       
 98549 - 	  bytes += cif->arg_types[i]->size;
       
 98550 - 	}
       
 98551 -       else
       
 98552 - 	{
       
 98553 - 	  gprcount += ngpr;
       
 98554 - 	  ssecount += nsse;
       
 98555 - 	}
       
 98556 -     }
       
 98557 -   if (ssecount)
       
 98558 -     flags |= 1 << 11;
       
 98559 -   cif->flags = flags;
       
 98560 --  cif->bytes = bytes;
       
 98561 -+  cif->bytes = ALIGN (bytes, 8);
       
 98562 - 
       
 98563 -   return FFI_OK;
       
 98564 - }
       
 98565 - 
       
 98566 - void
       
 98567 - ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       
 98568 - {
       
 98569 -   enum x86_64_reg_class classes[MAX_CLASSES];
       
 98570 -diff --git a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp b/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
       
 98571 ---- a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
       
 98572 -+++ b/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
       
 98573 -@@ -261,16 +261,66 @@ proc dg-xfail-if { args } {
       
 98574 -     set args [lreplace $args 0 0]
       
 98575 -     set selector "target [join [lindex $args 1]]"
       
 98576 -     if { [dg-process-target $selector] == "S" } {
       
 98577 - 	global compiler_conditional_xfail_data
       
 98578 - 	set compiler_conditional_xfail_data $args
       
 98579 -     }
       
 98580 - }
       
 98581 - 
       
 98582 -+proc check-flags { args } {
       
 98583 -+
       
 98584 -+    # The args are within another list; pull them out.
       
 98585 -+    set args [lindex $args 0]
       
 98586 -+
       
 98587 -+    # The next two arguments are optional.  If they were not specified,
       
 98588 -+    # use the defaults.
       
 98589 -+    if { [llength $args] == 2 } {
       
 98590 -+	lappend $args [list "*"]
       
 98591 -+    }
       
 98592 -+    if { [llength $args] == 3 } {
       
 98593 -+	lappend $args [list ""]
       
 98594 -+    }
       
 98595 -+
       
 98596 -+    # If the option strings are the defaults, or the same as the
       
 98597 -+    # defaults, there is no need to call check_conditional_xfail to
       
 98598 -+    # compare them to the actual options.
       
 98599 -+    if { [string compare [lindex $args 2] "*"] == 0
       
 98600 -+	 && [string compare [lindex $args 3] "" ] == 0 } {
       
 98601 -+	set result 1    
       
 98602 -+    } else {
       
 98603 -+	# The target list might be an effective-target keyword, so replace
       
 98604 -+	# the original list with "*-*-*", since we already know it matches.
       
 98605 -+	set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
       
 98606 -+    }
       
 98607 -+
       
 98608 -+    return $result
       
 98609 -+}
       
 98610 -+
       
 98611 -+proc dg-skip-if { args } {
       
 98612 -+    # Verify the number of arguments.  The last two are optional.
       
 98613 -+    set args [lreplace $args 0 0]
       
 98614 -+    if { [llength $args] < 2 || [llength $args] > 4 } {
       
 98615 -+        error "dg-skip-if 2: need 2, 3, or 4 arguments"
       
 98616 -+    }
       
 98617 -+
       
 98618 -+    # Don't bother if we're already skipping the test.
       
 98619 -+    upvar dg-do-what dg-do-what
       
 98620 -+    if { [lindex ${dg-do-what} 1] == "N" } {
       
 98621 -+      return
       
 98622 -+    }
       
 98623 -+
       
 98624 -+    set selector [list target [lindex $args 1]]
       
 98625 -+    if { [dg-process-target $selector] == "S" } {
       
 98626 -+        if [check-flags $args] {
       
 98627 -+            upvar dg-do-what dg-do-what
       
 98628 -+            set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
       
 98629 -+        }
       
 98630 -+    }
       
 98631 -+}
       
 98632 - 
       
 98633 - # We need to make sure that additional_files and additional_sources
       
 98634 - # are both cleared out after every test.  It is not enough to clear
       
 98635 - # them out *before* the next test run because gcc-target-compile gets
       
 98636 - # run directly from some .exp files (outside of any test).  (Those
       
 98637 - # uses should eventually be eliminated.)
       
 98638 - 
       
 98639 - # Because the DG framework doesn't provide a hook that is run at the
       
 98640 -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
       
 98641 ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
       
 98642 -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
       
 98643 -@@ -1,16 +1,18 @@
       
 98644 - /* Area:		ffi_call, closure_call
       
 98645 -    Purpose:		Test doubles passed in variable argument lists.
       
 98646 -    Limitations:	none.
       
 98647 -    PR:			none.
       
 98648 -    Originator:	Blake Chaffin 6/6/2007	 */
       
 98649 - 
       
 98650 - /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
       
 98651 - /* { dg-output "" { xfail avr32*-*-* } } */
       
 98652 -+/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
       
 98653 -+
       
 98654 - #include "ffitest.h"
       
 98655 - 
       
 98656 - static void
       
 98657 - cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, 
       
 98658 - 		 void** args, void* userdata __UNUSED__)
       
 98659 - {
       
 98660 - 	char*	format		= *(char**)args[0];
       
 98661 - 	double	doubleValue	= *(double*)args[1];
       
 98662 -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
       
 98663 ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
       
 98664 -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
       
 98665 -@@ -1,16 +1,18 @@
       
 98666 - /* Area:		ffi_call, closure_call
       
 98667 -    Purpose:		Test long doubles passed in variable argument lists.
       
 98668 -    Limitations:	none.
       
 98669 -    PR:			none.
       
 98670 -    Originator:	Blake Chaffin 6/6/2007	 */
       
 98671 - 
       
 98672 - /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
       
 98673 - /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */
       
 98674 -+/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
       
 98675 -+
       
 98676 - #include "ffitest.h"
       
 98677 - 
       
 98678 - static void
       
 98679 - cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, 
       
 98680 - 		     void** args, void* userdata __UNUSED__)
       
 98681 - {
       
 98682 - 	char*		format	= *(char**)args[0];
       
 98683 - 	long double	ldValue	= *(long double*)args[1];
       
 98684 diff --git a/js/src/ctypes/patches-libffi/01-bug-670719.patch b/js/src/ctypes/patches-libffi/01-bug-670719.patch
       
 98685 deleted file mode 100644
       
 98686 --- a/js/src/ctypes/patches-libffi/01-bug-670719.patch
       
 98687 +++ /dev/null
       
 98688 @@ -1,50 +0,0 @@
       
 98689 -# HG changeset patch
       
 98690 -# Parent e357f3f732a0f3e98f8bd4661de03c9042c5c330
       
 98691 -# User Landry Breuil <landry@openbsd.org>
       
 98692 -treat powerpc-*-openbsd* as powerpc-*-freebsd*
       
 98693 -
       
 98694 -
       
 98695 -diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
       
 98696 ---- a/js/src/ctypes/libffi/configure
       
 98697 -+++ b/js/src/ctypes/libffi/configure
       
 98698 -@@ -11272,17 +11272,17 @@ case "$host" in
       
 98699 - 	TARGET=POWERPC; TARGETDIR=powerpc
       
 98700 - 	;;
       
 98701 -   powerpc-*-darwin*)
       
 98702 - 	TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
       
 98703 - 	;;
       
 98704 -   powerpc-*-aix* | rs6000-*-aix*)
       
 98705 - 	TARGET=POWERPC_AIX; TARGETDIR=powerpc
       
 98706 - 	;;
       
 98707 --  powerpc-*-freebsd*)
       
 98708 -+  powerpc-*-freebsd* | powerpc-*-openbsd*)
       
 98709 - 	TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
       
 98710 - 	;;
       
 98711 -   powerpc*-*-rtems*)
       
 98712 - 	TARGET=POWERPC; TARGETDIR=powerpc
       
 98713 - 	;;
       
 98714 - 
       
 98715 -   s390-*-* | s390x-*-*)
       
 98716 - 	TARGET=S390; TARGETDIR=s390
       
 98717 -diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
       
 98718 ---- a/js/src/ctypes/libffi/configure.ac
       
 98719 -+++ b/js/src/ctypes/libffi/configure.ac
       
 98720 -@@ -135,17 +135,17 @@ case "$host" in
       
 98721 - 	TARGET=POWERPC; TARGETDIR=powerpc
       
 98722 - 	;;
       
 98723 -   powerpc-*-darwin*)
       
 98724 - 	TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
       
 98725 - 	;;
       
 98726 -   powerpc-*-aix* | rs6000-*-aix*)
       
 98727 - 	TARGET=POWERPC_AIX; TARGETDIR=powerpc
       
 98728 - 	;;
       
 98729 --  powerpc-*-freebsd*)
       
 98730 -+  powerpc-*-freebsd* | powerpc-*-openbsd*)
       
 98731 - 	TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
       
 98732 - 	;;
       
 98733 -   powerpc*-*-rtems*)
       
 98734 - 	TARGET=POWERPC; TARGETDIR=powerpc
       
 98735 - 	;;
       
 98736 - 
       
 98737 -   s390-*-* | s390x-*-*)
       
 98738 - 	TARGET=S390; TARGETDIR=s390
       
 98739 diff --git a/js/src/ctypes/patches-libffi/02-bug-682180.patch b/js/src/ctypes/patches-libffi/02-bug-682180.patch
       
 98740 deleted file mode 100644
       
 98741 --- a/js/src/ctypes/patches-libffi/02-bug-682180.patch
       
 98742 +++ /dev/null
       
 98743 @@ -1,48 +0,0 @@
       
 98744 -# HG changeset patch
       
 98745 -# Parent 5e5eb679345b4d13b8e9ee40e253a97fd665dad3
       
 98746 -diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
       
 98747 ---- a/js/src/ctypes/libffi/configure
       
 98748 -+++ b/js/src/ctypes/libffi/configure
       
 98749 -@@ -12357,17 +12357,18 @@ fi
       
 98750 -     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
       
 98751 - 
       
 98752 - $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h
       
 98753 - 
       
 98754 -     fi
       
 98755 - fi
       
 98756 - 
       
 98757 - case "$target" in
       
 98758 --     *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
 98759 -+     # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
       
 98760 -+     *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
 98761 - 
       
 98762 - $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
       
 98763 - 
       
 98764 -      ;;
       
 98765 - esac
       
 98766 - 
       
 98767 - if test x$TARGET = xX86_64; then
       
 98768 -     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
       
 98769 -diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
       
 98770 ---- a/js/src/ctypes/libffi/configure.ac
       
 98771 -+++ b/js/src/ctypes/libffi/configure.ac
       
 98772 -@@ -311,17 +311,18 @@ if test x$TARGET = xX86 || test x$TARGET
       
 98773 -     ])
       
 98774 -     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
       
 98775 -        AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1,
       
 98776 - 	       [Define if your assembler supports .string.])
       
 98777 -     fi
       
 98778 - fi
       
 98779 - 
       
 98780 - case "$target" in
       
 98781 --     *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
 98782 -+     # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
       
 98783 -+     *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
 98784 -        AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
       
 98785 -                  [Cannot use malloc on this target, so, we revert to
       
 98786 -                    alternative means])
       
 98787 -      ;;
       
 98788 - esac
       
 98789 - 
       
 98790 - if test x$TARGET = xX86_64; then
       
 98791 -     AC_CACHE_CHECK([assembler supports unwind section type],
       
 98792 diff --git a/js/src/ctypes/patches-libffi/03-bug-712594.patch b/js/src/ctypes/patches-libffi/03-bug-712594.patch
       
 98793 deleted file mode 100644
       
 98794 --- a/js/src/ctypes/patches-libffi/03-bug-712594.patch
       
 98795 +++ /dev/null
       
 98796 @@ -1,1210 +0,0 @@
       
 98797 -commit 5b9cd52784339a42e417174a55e310e214d435f9
       
 98798 -Author: Anthony Green <green@moxielogic.com>
       
 98799 -Date:   Mon Nov 22 15:19:57 2010 -0500
       
 98800 -
       
 98801 -    win64-underscore patch
       
 98802 -
       
 98803 -diff --git a/js/src/ctypes/libffi/aclocal.m4 b/js/src/ctypes/libffi/aclocal.m4
       
 98804 ---- a/js/src/ctypes/libffi/aclocal.m4
       
 98805 -+++ b/js/src/ctypes/libffi/aclocal.m4
       
 98806 -@@ -7359,16 +7359,821 @@ func_append ()
       
 98807 -   eval "$[1]=\$$[1]\$[2]"
       
 98808 - }
       
 98809 - 
       
 98810 - _LT_EOF
       
 98811 -     ;;
       
 98812 -   esac
       
 98813 - ])
       
 98814 - 
       
 98815 -+# ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*-
       
 98816 -+#
       
 98817 -+#   Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc.
       
 98818 -+#   Written by Thomas Tanner, 1999
       
 98819 -+#
       
 98820 -+# This file is free software; the Free Software Foundation gives
       
 98821 -+# unlimited permission to copy and/or distribute it, with or without
       
 98822 -+# modifications, as long as this notice is preserved.
       
 98823 -+
       
 98824 -+# serial 17 LTDL_INIT
       
 98825 -+
       
 98826 -+# LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE])
       
 98827 -+# ------------------------------------------
       
 98828 -+# DIRECTORY contains the libltdl sources.  It is okay to call this
       
 98829 -+# function multiple times, as long as the same DIRECTORY is always given.
       
 98830 -+AC_DEFUN([LT_CONFIG_LTDL_DIR],
       
 98831 -+[AC_BEFORE([$0], [LTDL_INIT])
       
 98832 -+_$0($*)
       
 98833 -+])# LT_CONFIG_LTDL_DIR
       
 98834 -+
       
 98835 -+# We break this out into a separate macro, so that we can call it safely
       
 98836 -+# internally without being caught accidentally by the sed scan in libtoolize.
       
 98837 -+m4_defun([_LT_CONFIG_LTDL_DIR],
       
 98838 -+[dnl remove trailing slashes
       
 98839 -+m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$]))
       
 98840 -+m4_case(_LTDL_DIR,
       
 98841 -+	[], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply `.'
       
 98842 -+	     m4_if(_ARG_DIR, [.],
       
 98843 -+	             [],
       
 98844 -+		 [m4_define([_LTDL_DIR], _ARG_DIR)
       
 98845 -+	          _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])],
       
 98846 -+    [m4_if(_ARG_DIR, _LTDL_DIR,
       
 98847 -+	    [],
       
 98848 -+	[m4_fatal([multiple libltdl directories: `]_LTDL_DIR[', `]_ARG_DIR['])])])
       
 98849 -+m4_popdef([_ARG_DIR])
       
 98850 -+])# _LT_CONFIG_LTDL_DIR
       
 98851 -+
       
 98852 -+# Initialise:
       
 98853 -+m4_define([_LTDL_DIR], [])
       
 98854 -+
       
 98855 -+
       
 98856 -+# _LT_BUILD_PREFIX
       
 98857 -+# ----------------
       
 98858 -+# If Autoconf is new enough, expand to `${top_build_prefix}', otherwise
       
 98859 -+# to `${top_builddir}/'.
       
 98860 -+m4_define([_LT_BUILD_PREFIX],
       
 98861 -+[m4_ifdef([AC_AUTOCONF_VERSION],
       
 98862 -+   [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]),
       
 98863 -+	  [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX],
       
 98864 -+			  [${top_build_prefix}],
       
 98865 -+			  [${top_builddir}/])],
       
 98866 -+	  [${top_build_prefix}])],
       
 98867 -+   [${top_builddir}/])[]dnl
       
 98868 -+])
       
 98869 -+
       
 98870 -+
       
 98871 -+# LTDL_CONVENIENCE
       
 98872 -+# ----------------
       
 98873 -+# sets LIBLTDL to the link flags for the libltdl convenience library and
       
 98874 -+# LTDLINCL to the include flags for the libltdl header and adds
       
 98875 -+# --enable-ltdl-convenience to the configure arguments.  Note that
       
 98876 -+# AC_CONFIG_SUBDIRS is not called here.  LIBLTDL will be prefixed with
       
 98877 -+# '${top_build_prefix}' if available, otherwise with '${top_builddir}/',
       
 98878 -+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
       
 98879 -+# quotes!).  If your package is not flat and you're not using automake,
       
 98880 -+# define top_build_prefix, top_builddir, and top_srcdir appropriately
       
 98881 -+# in your Makefiles.
       
 98882 -+AC_DEFUN([LTDL_CONVENIENCE],
       
 98883 -+[AC_BEFORE([$0], [LTDL_INIT])dnl
       
 98884 -+dnl Although the argument is deprecated and no longer documented,
       
 98885 -+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
       
 98886 -+dnl here make sure it is the same as any other declaration of libltdl's
       
 98887 -+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
       
 98888 -+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
       
 98889 -+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
       
 98890 -+_$0()
       
 98891 -+])# LTDL_CONVENIENCE
       
 98892 -+
       
 98893 -+# AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools,
       
 98894 -+# now we have LT_CONFIG_LTDL_DIR:
       
 98895 -+AU_DEFUN([AC_LIBLTDL_CONVENIENCE],
       
 98896 -+[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
       
 98897 -+_LTDL_CONVENIENCE])
       
 98898 -+
       
 98899 -+dnl aclocal-1.4 backwards compatibility:
       
 98900 -+dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [])
       
 98901 -+
       
 98902 -+
       
 98903 -+# _LTDL_CONVENIENCE
       
 98904 -+# -----------------
       
 98905 -+# Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]).
       
 98906 -+m4_defun([_LTDL_CONVENIENCE],
       
 98907 -+[case $enable_ltdl_convenience in
       
 98908 -+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
       
 98909 -+  "") enable_ltdl_convenience=yes
       
 98910 -+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
       
 98911 -+esac
       
 98912 -+LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la"
       
 98913 -+LTDLDEPS=$LIBLTDL
       
 98914 -+LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}"
       
 98915 -+
       
 98916 -+AC_SUBST([LIBLTDL])
       
 98917 -+AC_SUBST([LTDLDEPS])
       
 98918 -+AC_SUBST([LTDLINCL])
       
 98919 -+
       
 98920 -+# For backwards non-gettext consistent compatibility...
       
 98921 -+INCLTDL="$LTDLINCL"
       
 98922 -+AC_SUBST([INCLTDL])
       
 98923 -+])# _LTDL_CONVENIENCE
       
 98924 -+
       
 98925 -+
       
 98926 -+# LTDL_INSTALLABLE
       
 98927 -+# ----------------
       
 98928 -+# sets LIBLTDL to the link flags for the libltdl installable library
       
 98929 -+# and LTDLINCL to the include flags for the libltdl header and adds
       
 98930 -+# --enable-ltdl-install to the configure arguments.  Note that
       
 98931 -+# AC_CONFIG_SUBDIRS is not called from here.  If an installed libltdl
       
 98932 -+# is not found, LIBLTDL will be prefixed with '${top_build_prefix}' if
       
 98933 -+# available, otherwise with '${top_builddir}/', and LTDLINCL will be
       
 98934 -+# prefixed with '${top_srcdir}/' (note the single quotes!).  If your
       
 98935 -+# package is not flat and you're not using automake, define top_build_prefix,
       
 98936 -+# top_builddir, and top_srcdir appropriately in your Makefiles.
       
 98937 -+# In the future, this macro may have to be called after LT_INIT.
       
 98938 -+AC_DEFUN([LTDL_INSTALLABLE],
       
 98939 -+[AC_BEFORE([$0], [LTDL_INIT])dnl
       
 98940 -+dnl Although the argument is deprecated and no longer documented,
       
 98941 -+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
       
 98942 -+dnl here make sure it is the same as any other declaration of libltdl's
       
 98943 -+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
       
 98944 -+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
       
 98945 -+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
       
 98946 -+_$0()
       
 98947 -+])# LTDL_INSTALLABLE
       
 98948 -+
       
 98949 -+# AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools,
       
 98950 -+# now we have LT_CONFIG_LTDL_DIR:
       
 98951 -+AU_DEFUN([AC_LIBLTDL_INSTALLABLE],
       
 98952 -+[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
       
 98953 -+_LTDL_INSTALLABLE])
       
 98954 -+
       
 98955 -+dnl aclocal-1.4 backwards compatibility:
       
 98956 -+dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [])
       
 98957 -+
       
 98958 -+
       
 98959 -+# _LTDL_INSTALLABLE
       
 98960 -+# -----------------
       
 98961 -+# Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]).
       
 98962 -+m4_defun([_LTDL_INSTALLABLE],
       
 98963 -+[if test -f $prefix/lib/libltdl.la; then
       
 98964 -+  lt_save_LDFLAGS="$LDFLAGS"
       
 98965 -+  LDFLAGS="-L$prefix/lib $LDFLAGS"
       
 98966 -+  AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes])
       
 98967 -+  LDFLAGS="$lt_save_LDFLAGS"
       
 98968 -+  if test x"${lt_lib_ltdl-no}" = xyes; then
       
 98969 -+    if test x"$enable_ltdl_install" != xyes; then
       
 98970 -+      # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install
       
 98971 -+      AC_MSG_WARN([not overwriting libltdl at $prefix, force with `--enable-ltdl-install'])
       
 98972 -+      enable_ltdl_install=no
       
 98973 -+    fi
       
 98974 -+  elif test x"$enable_ltdl_install" = xno; then
       
 98975 -+    AC_MSG_WARN([libltdl not installed, but installation disabled])
       
 98976 -+  fi
       
 98977 -+fi
       
 98978 -+
       
 98979 -+# If configure.ac declared an installable ltdl, and the user didn't override
       
 98980 -+# with --disable-ltdl-install, we will install the shipped libltdl.
       
 98981 -+case $enable_ltdl_install in
       
 98982 -+  no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
       
 98983 -+      LIBLTDL="-lltdl"
       
 98984 -+      LTDLDEPS=
       
 98985 -+      LTDLINCL=
       
 98986 -+      ;;
       
 98987 -+  *)  enable_ltdl_install=yes
       
 98988 -+      ac_configure_args="$ac_configure_args --enable-ltdl-install"
       
 98989 -+      LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la"
       
 98990 -+      LTDLDEPS=$LIBLTDL
       
 98991 -+      LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}"
       
 98992 -+      ;;
       
 98993 -+esac
       
 98994 -+
       
 98995 -+AC_SUBST([LIBLTDL])
       
 98996 -+AC_SUBST([LTDLDEPS])
       
 98997 -+AC_SUBST([LTDLINCL])
       
 98998 -+
       
 98999 -+# For backwards non-gettext consistent compatibility...
       
 99000 -+INCLTDL="$LTDLINCL"
       
 99001 -+AC_SUBST([INCLTDL])
       
 99002 -+])# LTDL_INSTALLABLE
       
 99003 -+
       
 99004 -+
       
 99005 -+# _LTDL_MODE_DISPATCH
       
 99006 -+# -------------------
       
 99007 -+m4_define([_LTDL_MODE_DISPATCH],
       
 99008 -+[dnl If _LTDL_DIR is `.', then we are configuring libltdl itself:
       
 99009 -+m4_if(_LTDL_DIR, [],
       
 99010 -+	[],
       
 99011 -+    dnl if _LTDL_MODE was not set already, the default value is `subproject':
       
 99012 -+    [m4_case(m4_default(_LTDL_MODE, [subproject]),
       
 99013 -+	  [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR)
       
 99014 -+			  _LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"])],
       
 99015 -+	  [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/"])],
       
 99016 -+	  [recursive], [],
       
 99017 -+	[m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl
       
 99018 -+dnl Be careful not to expand twice:
       
 99019 -+m4_define([$0], [])
       
 99020 -+])# _LTDL_MODE_DISPATCH
       
 99021 -+
       
 99022 -+
       
 99023 -+# _LT_LIBOBJ(MODULE_NAME)
       
 99024 -+# -----------------------
       
 99025 -+# Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead
       
 99026 -+# of into LIBOBJS.
       
 99027 -+AC_DEFUN([_LT_LIBOBJ], [
       
 99028 -+  m4_pattern_allow([^_LT_LIBOBJS$])
       
 99029 -+  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
       
 99030 -+])# _LT_LIBOBJS
       
 99031 -+
       
 99032 -+
       
 99033 -+# LTDL_INIT([OPTIONS])
       
 99034 -+# --------------------
       
 99035 -+# Clients of libltdl can use this macro to allow the installer to
       
 99036 -+# choose between a shipped copy of the ltdl sources or a preinstalled
       
 99037 -+# version of the library.  If the shipped ltdl sources are not in a
       
 99038 -+# subdirectory named libltdl, the directory name must be given by
       
 99039 -+# LT_CONFIG_LTDL_DIR.
       
 99040 -+AC_DEFUN([LTDL_INIT],
       
 99041 -+[dnl Parse OPTIONS
       
 99042 -+_LT_SET_OPTIONS([$0], [$1])
       
 99043 -+
       
 99044 -+dnl We need to keep our own list of libobjs separate from our parent project,
       
 99045 -+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
       
 99046 -+dnl we look for our own LIBOBJs.
       
 99047 -+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
       
 99048 -+m4_pushdef([AC_LIBSOURCES])
       
 99049 -+
       
 99050 -+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
       
 99051 -+m4_if(_LTDL_MODE, [],
       
 99052 -+        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
       
 99053 -+        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
       
 99054 -+                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
       
 99055 -+
       
 99056 -+AC_ARG_WITH([included_ltdl],
       
 99057 -+    [AS_HELP_STRING([--with-included-ltdl],
       
 99058 -+                    [use the GNU ltdl sources included here])])
       
 99059 -+
       
 99060 -+if test "x$with_included_ltdl" != xyes; then
       
 99061 -+  # We are not being forced to use the included libltdl sources, so
       
 99062 -+  # decide whether there is a useful installed version we can use.
       
 99063 -+  AC_CHECK_HEADER([ltdl.h],
       
 99064 -+      [AC_CHECK_DECL([lt_dlinterface_register],
       
 99065 -+	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
       
 99066 -+	       [with_included_ltdl=no],
       
 99067 -+	       [with_included_ltdl=yes])],
       
 99068 -+	   [with_included_ltdl=yes],
       
 99069 -+	   [AC_INCLUDES_DEFAULT
       
 99070 -+	    #include <ltdl.h>])],
       
 99071 -+      [with_included_ltdl=yes],
       
 99072 -+      [AC_INCLUDES_DEFAULT]
       
 99073 -+  )
       
 99074 -+fi
       
 99075 -+
       
 99076 -+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
       
 99077 -+dnl was called yet, then for old times' sake, we assume libltdl is in an
       
 99078 -+dnl eponymous directory:
       
 99079 -+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
       
 99080 -+
       
 99081 -+AC_ARG_WITH([ltdl_include],
       
 99082 -+    [AS_HELP_STRING([--with-ltdl-include=DIR],
       
 99083 -+                    [use the ltdl headers installed in DIR])])
       
 99084 -+
       
 99085 -+if test -n "$with_ltdl_include"; then
       
 99086 -+  if test -f "$with_ltdl_include/ltdl.h"; then :
       
 99087 -+  else
       
 99088 -+    AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
       
 99089 -+  fi
       
 99090 -+else
       
 99091 -+  with_ltdl_include=no
       
 99092 -+fi
       
 99093 -+
       
 99094 -+AC_ARG_WITH([ltdl_lib],
       
 99095 -+    [AS_HELP_STRING([--with-ltdl-lib=DIR],
       
 99096 -+                    [use the libltdl.la installed in DIR])])
       
 99097 -+
       
 99098 -+if test -n "$with_ltdl_lib"; then
       
 99099 -+  if test -f "$with_ltdl_lib/libltdl.la"; then :
       
 99100 -+  else
       
 99101 -+    AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
       
 99102 -+  fi
       
 99103 -+else
       
 99104 -+  with_ltdl_lib=no
       
 99105 -+fi
       
 99106 -+
       
 99107 -+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
       
 99108 -+  ,yes,no,no,)
       
 99109 -+	m4_case(m4_default(_LTDL_TYPE, [convenience]),
       
 99110 -+	    [convenience], [_LTDL_CONVENIENCE],
       
 99111 -+	    [installable], [_LTDL_INSTALLABLE],
       
 99112 -+	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
       
 99113 -+	;;
       
 99114 -+  ,no,no,no,)
       
 99115 -+	# If the included ltdl is not to be used, then use the
       
 99116 -+	# preinstalled libltdl we found.
       
 99117 -+	AC_DEFINE([HAVE_LTDL], [1],
       
 99118 -+	  [Define this if a modern libltdl is already installed])
       
 99119 -+	LIBLTDL=-lltdl
       
 99120 -+	LTDLDEPS=
       
 99121 -+	LTDLINCL=
       
 99122 -+	;;
       
 99123 -+  ,no*,no,*)
       
 99124 -+	AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
       
 99125 -+	;;
       
 99126 -+  *)	with_included_ltdl=no
       
 99127 -+	LIBLTDL="-L$with_ltdl_lib -lltdl"
       
 99128 -+	LTDLDEPS=
       
 99129 -+	LTDLINCL="-I$with_ltdl_include"
       
 99130 -+	;;
       
 99131 -+esac
       
 99132 -+INCLTDL="$LTDLINCL"
       
 99133 -+
       
 99134 -+# Report our decision...
       
 99135 -+AC_MSG_CHECKING([where to find libltdl headers])
       
 99136 -+AC_MSG_RESULT([$LTDLINCL])
       
 99137 -+AC_MSG_CHECKING([where to find libltdl library])
       
 99138 -+AC_MSG_RESULT([$LIBLTDL])
       
 99139 -+
       
 99140 -+_LTDL_SETUP
       
 99141 -+
       
 99142 -+dnl restore autoconf definition.
       
 99143 -+m4_popdef([AC_LIBOBJ])
       
 99144 -+m4_popdef([AC_LIBSOURCES])
       
 99145 -+
       
 99146 -+AC_CONFIG_COMMANDS_PRE([
       
 99147 -+    _ltdl_libobjs=
       
 99148 -+    _ltdl_ltlibobjs=
       
 99149 -+    if test -n "$_LT_LIBOBJS"; then
       
 99150 -+      # Remove the extension.
       
 99151 -+      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
       
 99152 -+      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
       
 99153 -+        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
       
 99154 -+        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
       
 99155 -+      done
       
 99156 -+    fi
       
 99157 -+    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
       
 99158 -+    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
       
 99159 -+])
       
 99160 -+
       
 99161 -+# Only expand once:
       
 99162 -+m4_define([LTDL_INIT])
       
 99163 -+])# LTDL_INIT
       
 99164 -+
       
 99165 -+# Old names:
       
 99166 -+AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
       
 99167 -+AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
       
 99168 -+AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
       
 99169 -+dnl aclocal-1.4 backwards compatibility:
       
 99170 -+dnl AC_DEFUN([AC_LIB_LTDL], [])
       
 99171 -+dnl AC_DEFUN([AC_WITH_LTDL], [])
       
 99172 -+dnl AC_DEFUN([LT_WITH_LTDL], [])
       
 99173 -+
       
 99174 -+
       
 99175 -+# _LTDL_SETUP
       
 99176 -+# -----------
       
 99177 -+# Perform all the checks necessary for compilation of the ltdl objects
       
 99178 -+#  -- including compiler checks and header checks.  This is a public
       
 99179 -+# interface  mainly for the benefit of libltdl's own configure.ac, most
       
 99180 -+# other users should call LTDL_INIT instead.
       
 99181 -+AC_DEFUN([_LTDL_SETUP],
       
 99182 -+[AC_REQUIRE([AC_PROG_CC])dnl
       
 99183 -+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
       
 99184 -+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
       
 99185 -+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
       
 99186 -+AC_REQUIRE([LT_LIB_DLLOAD])dnl
       
 99187 -+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
       
 99188 -+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
       
 99189 -+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
       
 99190 -+AC_REQUIRE([gl_FUNC_ARGZ])dnl
       
 99191 -+
       
 99192 -+m4_require([_LT_CHECK_OBJDIR])dnl
       
 99193 -+m4_require([_LT_HEADER_DLFCN])dnl
       
 99194 -+m4_require([_LT_CHECK_DLPREOPEN])dnl
       
 99195 -+m4_require([_LT_DECL_SED])dnl
       
 99196 -+
       
 99197 -+dnl Don't require this, or it will be expanded earlier than the code
       
 99198 -+dnl that sets the variables it relies on:
       
 99199 -+_LT_ENABLE_INSTALL
       
 99200 -+
       
 99201 -+dnl _LTDL_MODE specific code must be called at least once:
       
 99202 -+_LTDL_MODE_DISPATCH
       
 99203 -+
       
 99204 -+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
       
 99205 -+# the user used.  This is so that ltdl.h can pick up the parent projects
       
 99206 -+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
       
 99207 -+# definitions required by ltdl.c.
       
 99208 -+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
       
 99209 -+AC_CONFIG_COMMANDS_PRE([dnl
       
 99210 -+m4_pattern_allow([^LT_CONFIG_H$])dnl
       
 99211 -+m4_ifset([AH_HEADER],
       
 99212 -+    [LT_CONFIG_H=AH_HEADER],
       
 99213 -+    [m4_ifset([AC_LIST_HEADERS],
       
 99214 -+	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[      ]]*,,;s,[[ :]].*$,,'`],
       
 99215 -+	[])])])
       
 99216 -+AC_SUBST([LT_CONFIG_H])
       
 99217 -+
       
 99218 -+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
       
 99219 -+	[], [], [AC_INCLUDES_DEFAULT])
       
 99220 -+
       
 99221 -+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
       
 99222 -+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
       
 99223 -+
       
 99224 -+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
       
 99225 -+
       
 99226 -+name=ltdl
       
 99227 -+LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""`
       
 99228 -+AC_SUBST([LTDLOPEN])
       
 99229 -+])# _LTDL_SETUP
       
 99230 -+
       
 99231 -+
       
 99232 -+# _LT_ENABLE_INSTALL
       
 99233 -+# ------------------
       
 99234 -+m4_define([_LT_ENABLE_INSTALL],
       
 99235 -+[AC_ARG_ENABLE([ltdl-install],
       
 99236 -+    [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])])
       
 99237 -+
       
 99238 -+case ,${enable_ltdl_install},${enable_ltdl_convenience} in
       
 99239 -+  *yes*) ;;
       
 99240 -+  *) enable_ltdl_convenience=yes ;;
       
 99241 -+esac
       
 99242 -+
       
 99243 -+m4_ifdef([AM_CONDITIONAL],
       
 99244 -+[AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno)
       
 99245 -+ AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno)])
       
 99246 -+])# _LT_ENABLE_INSTALL
       
 99247 -+
       
 99248 -+
       
 99249 -+# LT_SYS_DLOPEN_DEPLIBS
       
 99250 -+# ---------------------
       
 99251 -+AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS],
       
 99252 -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
       
 99253 -+AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
       
 99254 -+  [lt_cv_sys_dlopen_deplibs],
       
 99255 -+  [# PORTME does your system automatically load deplibs for dlopen?
       
 99256 -+  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
       
 99257 -+  # For now, we just catch OSes we know something about -- in the
       
 99258 -+  # future, we'll try test this programmatically.
       
 99259 -+  lt_cv_sys_dlopen_deplibs=unknown
       
 99260 -+  case $host_os in
       
 99261 -+  aix3*|aix4.1.*|aix4.2.*)
       
 99262 -+    # Unknown whether this is true for these versions of AIX, but
       
 99263 -+    # we want this `case' here to explicitly catch those versions.
       
 99264 -+    lt_cv_sys_dlopen_deplibs=unknown
       
 99265 -+    ;;
       
 99266 -+  aix[[4-9]]*)
       
 99267 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99268 -+    ;;
       
 99269 -+  amigaos*)
       
 99270 -+    case $host_cpu in
       
 99271 -+    powerpc)
       
 99272 -+      lt_cv_sys_dlopen_deplibs=no
       
 99273 -+      ;;
       
 99274 -+    esac
       
 99275 -+    ;;
       
 99276 -+  darwin*)
       
 99277 -+    # Assuming the user has installed a libdl from somewhere, this is true
       
 99278 -+    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
       
 99279 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99280 -+    ;;
       
 99281 -+  freebsd* | dragonfly*)
       
 99282 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99283 -+    ;;
       
 99284 -+  gnu* | linux* | k*bsd*-gnu)
       
 99285 -+    # GNU and its variants, using gnu ld.so (Glibc)
       
 99286 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99287 -+    ;;
       
 99288 -+  hpux10*|hpux11*)
       
 99289 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99290 -+    ;;
       
 99291 -+  interix*)
       
 99292 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99293 -+    ;;
       
 99294 -+  irix[[12345]]*|irix6.[[01]]*)
       
 99295 -+    # Catch all versions of IRIX before 6.2, and indicate that we don't
       
 99296 -+    # know how it worked for any of those versions.
       
 99297 -+    lt_cv_sys_dlopen_deplibs=unknown
       
 99298 -+    ;;
       
 99299 -+  irix*)
       
 99300 -+    # The case above catches anything before 6.2, and it's known that
       
 99301 -+    # at 6.2 and later dlopen does load deplibs.
       
 99302 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99303 -+    ;;
       
 99304 -+  netbsd*)
       
 99305 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99306 -+    ;;
       
 99307 -+  openbsd*)
       
 99308 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99309 -+    ;;
       
 99310 -+  osf[[1234]]*)
       
 99311 -+    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
       
 99312 -+    # it did *not* use an RPATH in a shared library to find objects the
       
 99313 -+    # library depends on, so we explicitly say `no'.
       
 99314 -+    lt_cv_sys_dlopen_deplibs=no
       
 99315 -+    ;;
       
 99316 -+  osf5.0|osf5.0a|osf5.1)
       
 99317 -+    # dlopen *does* load deplibs and with the right loader patch applied
       
 99318 -+    # it even uses RPATH in a shared library to search for shared objects
       
 99319 -+    # that the library depends on, but there's no easy way to know if that
       
 99320 -+    # patch is installed.  Since this is the case, all we can really
       
 99321 -+    # say is unknown -- it depends on the patch being installed.  If
       
 99322 -+    # it is, this changes to `yes'.  Without it, it would be `no'.
       
 99323 -+    lt_cv_sys_dlopen_deplibs=unknown
       
 99324 -+    ;;
       
 99325 -+  osf*)
       
 99326 -+    # the two cases above should catch all versions of osf <= 5.1.  Read
       
 99327 -+    # the comments above for what we know about them.
       
 99328 -+    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
       
 99329 -+    # is used to find them so we can finally say `yes'.
       
 99330 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99331 -+    ;;
       
 99332 -+  qnx*)
       
 99333 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99334 -+    ;;
       
 99335 -+  solaris*)
       
 99336 -+    lt_cv_sys_dlopen_deplibs=yes
       
 99337 -+    ;;
       
 99338 -+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
       
 99339 -+    libltdl_cv_sys_dlopen_deplibs=yes
       
 99340 -+    ;;
       
 99341 -+  esac
       
 99342 -+  ])
       
 99343 -+if test "$lt_cv_sys_dlopen_deplibs" != yes; then
       
 99344 -+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
       
 99345 -+    [Define if the OS needs help to load dependent libraries for dlopen().])
       
 99346 -+fi
       
 99347 -+])# LT_SYS_DLOPEN_DEPLIBS
       
 99348 -+
       
 99349 -+# Old name:
       
 99350 -+AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS])
       
 99351 -+dnl aclocal-1.4 backwards compatibility:
       
 99352 -+dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [])
       
 99353 -+
       
 99354 -+
       
 99355 -+# LT_SYS_MODULE_EXT
       
 99356 -+# -----------------
       
 99357 -+AC_DEFUN([LT_SYS_MODULE_EXT],
       
 99358 -+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
       
 99359 -+AC_CACHE_CHECK([which extension is used for runtime loadable modules],
       
 99360 -+  [libltdl_cv_shlibext],
       
 99361 -+[
       
 99362 -+module=yes
       
 99363 -+eval libltdl_cv_shlibext=$shrext_cmds
       
 99364 -+  ])
       
 99365 -+if test -n "$libltdl_cv_shlibext"; then
       
 99366 -+  m4_pattern_allow([LT_MODULE_EXT])dnl
       
 99367 -+  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
       
 99368 -+    [Define to the extension used for runtime loadable modules, say, ".so".])
       
 99369 -+fi
       
 99370 -+])# LT_SYS_MODULE_EXT
       
 99371 -+
       
 99372 -+# Old name:
       
 99373 -+AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT])
       
 99374 -+dnl aclocal-1.4 backwards compatibility:
       
 99375 -+dnl AC_DEFUN([AC_LTDL_SHLIBEXT], [])
       
 99376 -+
       
 99377 -+
       
 99378 -+# LT_SYS_MODULE_PATH
       
 99379 -+# ------------------
       
 99380 -+AC_DEFUN([LT_SYS_MODULE_PATH],
       
 99381 -+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
       
 99382 -+AC_CACHE_CHECK([which variable specifies run-time module search path],
       
 99383 -+  [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
       
 99384 -+if test -n "$lt_cv_module_path_var"; then
       
 99385 -+  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
       
 99386 -+  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
       
 99387 -+    [Define to the name of the environment variable that determines the run-time module search path.])
       
 99388 -+fi
       
 99389 -+])# LT_SYS_MODULE_PATH
       
 99390 -+
       
 99391 -+# Old name:
       
 99392 -+AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH])
       
 99393 -+dnl aclocal-1.4 backwards compatibility:
       
 99394 -+dnl AC_DEFUN([AC_LTDL_SHLIBPATH], [])
       
 99395 -+
       
 99396 -+
       
 99397 -+# LT_SYS_DLSEARCH_PATH
       
 99398 -+# --------------------
       
 99399 -+AC_DEFUN([LT_SYS_DLSEARCH_PATH],
       
 99400 -+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
       
 99401 -+AC_CACHE_CHECK([for the default library search path],
       
 99402 -+  [lt_cv_sys_dlsearch_path],
       
 99403 -+  [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
       
 99404 -+if test -n "$lt_cv_sys_dlsearch_path"; then
       
 99405 -+  sys_dlsearch_path=
       
 99406 -+  for dir in $lt_cv_sys_dlsearch_path; do
       
 99407 -+    if test -z "$sys_dlsearch_path"; then
       
 99408 -+      sys_dlsearch_path="$dir"
       
 99409 -+    else
       
 99410 -+      sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
       
 99411 -+    fi
       
 99412 -+  done
       
 99413 -+  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
       
 99414 -+  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
       
 99415 -+    [Define to the system default library search path.])
       
 99416 -+fi
       
 99417 -+])# LT_SYS_DLSEARCH_PATH
       
 99418 -+
       
 99419 -+# Old name:
       
 99420 -+AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH])
       
 99421 -+dnl aclocal-1.4 backwards compatibility:
       
 99422 -+dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [])
       
 99423 -+
       
 99424 -+
       
 99425 -+# _LT_CHECK_DLPREOPEN
       
 99426 -+# -------------------
       
 99427 -+m4_defun([_LT_CHECK_DLPREOPEN],
       
 99428 -+[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
       
 99429 -+AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen],
       
 99430 -+  [libltdl_cv_preloaded_symbols],
       
 99431 -+  [if test -n "$lt_cv_sys_global_symbol_pipe"; then
       
 99432 -+    libltdl_cv_preloaded_symbols=yes
       
 99433 -+  else
       
 99434 -+    libltdl_cv_preloaded_symbols=no
       
 99435 -+  fi
       
 99436 -+  ])
       
 99437 -+if test x"$libltdl_cv_preloaded_symbols" = xyes; then
       
 99438 -+  AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1],
       
 99439 -+    [Define if libtool can extract symbol lists from object files.])
       
 99440 -+fi
       
 99441 -+])# _LT_CHECK_DLPREOPEN
       
 99442 -+
       
 99443 -+
       
 99444 -+# LT_LIB_DLLOAD
       
 99445 -+# -------------
       
 99446 -+AC_DEFUN([LT_LIB_DLLOAD],
       
 99447 -+[m4_pattern_allow([^LT_DLLOADERS$])
       
 99448 -+LT_DLLOADERS=
       
 99449 -+AC_SUBST([LT_DLLOADERS])
       
 99450 -+
       
 99451 -+AC_LANG_PUSH([C])
       
 99452 -+
       
 99453 -+LIBADD_DLOPEN=
       
 99454 -+AC_SEARCH_LIBS([dlopen], [dl],
       
 99455 -+	[AC_DEFINE([HAVE_LIBDL], [1],
       
 99456 -+		   [Define if you have the libdl library or equivalent.])
       
 99457 -+	if test "$ac_cv_search_dlopen" != "none required" ; then
       
 99458 -+	  LIBADD_DLOPEN="-ldl"
       
 99459 -+	fi
       
 99460 -+	libltdl_cv_lib_dl_dlopen="yes"
       
 99461 -+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
       
 99462 -+    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
       
 99463 -+#  include <dlfcn.h>
       
 99464 -+#endif
       
 99465 -+    ]], [[dlopen(0, 0);]])],
       
 99466 -+	    [AC_DEFINE([HAVE_LIBDL], [1],
       
 99467 -+		       [Define if you have the libdl library or equivalent.])
       
 99468 -+	    libltdl_cv_func_dlopen="yes"
       
 99469 -+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
       
 99470 -+	[AC_CHECK_LIB([svld], [dlopen],
       
 99471 -+		[AC_DEFINE([HAVE_LIBDL], [1],
       
 99472 -+			 [Define if you have the libdl library or equivalent.])
       
 99473 -+	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
       
 99474 -+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
       
 99475 -+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
       
 99476 -+then
       
 99477 -+  lt_save_LIBS="$LIBS"
       
 99478 -+  LIBS="$LIBS $LIBADD_DLOPEN"
       
 99479 -+  AC_CHECK_FUNCS([dlerror])
       
 99480 -+  LIBS="$lt_save_LIBS"
       
 99481 -+fi
       
 99482 -+AC_SUBST([LIBADD_DLOPEN])
       
 99483 -+
       
 99484 -+LIBADD_SHL_LOAD=
       
 99485 -+AC_CHECK_FUNC([shl_load],
       
 99486 -+	[AC_DEFINE([HAVE_SHL_LOAD], [1],
       
 99487 -+		   [Define if you have the shl_load function.])
       
 99488 -+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
       
 99489 -+    [AC_CHECK_LIB([dld], [shl_load],
       
 99490 -+	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
       
 99491 -+		       [Define if you have the shl_load function.])
       
 99492 -+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
       
 99493 -+	    LIBADD_SHL_LOAD="-ldld"])])
       
 99494 -+AC_SUBST([LIBADD_SHL_LOAD])
       
 99495 -+
       
 99496 -+case $host_os in
       
 99497 -+darwin[[1567]].*)
       
 99498 -+# We only want this for pre-Mac OS X 10.4.
       
 99499 -+  AC_CHECK_FUNC([_dyld_func_lookup],
       
 99500 -+	[AC_DEFINE([HAVE_DYLD], [1],
       
 99501 -+		   [Define if you have the _dyld_func_lookup function.])
       
 99502 -+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
       
 99503 -+  ;;
       
 99504 -+beos*)
       
 99505 -+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
       
 99506 -+  ;;
       
 99507 -+cygwin* | mingw* | os2* | pw32*)
       
 99508 -+  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
       
 99509 -+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
       
 99510 -+  ;;
       
 99511 -+esac
       
 99512 -+
       
 99513 -+AC_CHECK_LIB([dld], [dld_link],
       
 99514 -+	[AC_DEFINE([HAVE_DLD], [1],
       
 99515 -+		   [Define if you have the GNU dld library.])
       
 99516 -+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
       
 99517 -+AC_SUBST([LIBADD_DLD_LINK])
       
 99518 -+
       
 99519 -+m4_pattern_allow([^LT_DLPREOPEN$])
       
 99520 -+LT_DLPREOPEN=
       
 99521 -+if test -n "$LT_DLLOADERS"
       
 99522 -+then
       
 99523 -+  for lt_loader in $LT_DLLOADERS; do
       
 99524 -+    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
       
 99525 -+  done
       
 99526 -+  AC_DEFINE([HAVE_LIBDLLOADER], [1],
       
 99527 -+            [Define if libdlloader will be built on this platform])
       
 99528 -+fi
       
 99529 -+AC_SUBST([LT_DLPREOPEN])
       
 99530 -+
       
 99531 -+dnl This isn't used anymore, but set it for backwards compatibility
       
 99532 -+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
       
 99533 -+AC_SUBST([LIBADD_DL])
       
 99534 -+
       
 99535 -+AC_LANG_POP
       
 99536 -+])# LT_LIB_DLLOAD
       
 99537 -+
       
 99538 -+# Old name:
       
 99539 -+AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD])
       
 99540 -+dnl aclocal-1.4 backwards compatibility:
       
 99541 -+dnl AC_DEFUN([AC_LTDL_DLLIB], [])
       
 99542 -+
       
 99543 -+
       
 99544 -+# LT_SYS_SYMBOL_USCORE
       
 99545 -+# --------------------
       
 99546 -+# does the compiler prefix global symbols with an underscore?
       
 99547 -+AC_DEFUN([LT_SYS_SYMBOL_USCORE],
       
 99548 -+[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
       
 99549 -+AC_CACHE_CHECK([for _ prefix in compiled symbols],
       
 99550 -+  [lt_cv_sys_symbol_underscore],
       
 99551 -+  [lt_cv_sys_symbol_underscore=no
       
 99552 -+  cat > conftest.$ac_ext <<_LT_EOF
       
 99553 -+void nm_test_func(){}
       
 99554 -+int main(){nm_test_func;return 0;}
       
 99555 -+_LT_EOF
       
 99556 -+  if AC_TRY_EVAL(ac_compile); then
       
 99557 -+    # Now try to grab the symbols.
       
 99558 -+    ac_nlist=conftest.nm
       
 99559 -+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
       
 99560 -+      # See whether the symbols have a leading underscore.
       
 99561 -+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
       
 99562 -+        lt_cv_sys_symbol_underscore=yes
       
 99563 -+      else
       
 99564 -+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
       
 99565 -+	  :
       
 99566 -+        else
       
 99567 -+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
       
 99568 -+        fi
       
 99569 -+      fi
       
 99570 -+    else
       
 99571 -+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
       
 99572 -+    fi
       
 99573 -+  else
       
 99574 -+    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
       
 99575 -+    cat conftest.c >&AS_MESSAGE_LOG_FD
       
 99576 -+  fi
       
 99577 -+  rm -rf conftest*
       
 99578 -+  ])
       
 99579 -+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
       
 99580 -+  AC_SUBST([sys_symbol_underscore])
       
 99581 -+])# LT_SYS_SYMBOL_USCORE
       
 99582 -+
       
 99583 -+# Old name:
       
 99584 -+AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE])
       
 99585 -+dnl aclocal-1.4 backwards compatibility:
       
 99586 -+dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [])
       
 99587 -+
       
 99588 -+
       
 99589 -+# LT_FUNC_DLSYM_USCORE
       
 99590 -+# --------------------
       
 99591 -+AC_DEFUN([LT_FUNC_DLSYM_USCORE],
       
 99592 -+[AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
       
 99593 -+if test x"$lt_cv_sys_symbol_underscore" = xyes; then
       
 99594 -+  if test x"$libltdl_cv_func_dlopen" = xyes ||
       
 99595 -+     test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
       
 99596 -+	AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
       
 99597 -+	  [libltdl_cv_need_uscore],
       
 99598 -+	  [libltdl_cv_need_uscore=unknown
       
 99599 -+          save_LIBS="$LIBS"
       
 99600 -+          LIBS="$LIBS $LIBADD_DLOPEN"
       
 99601 -+	  _LT_TRY_DLOPEN_SELF(
       
 99602 -+	    [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
       
 99603 -+	    [],				 [libltdl_cv_need_uscore=cross])
       
 99604 -+	  LIBS="$save_LIBS"
       
 99605 -+	])
       
 99606 -+  fi
       
 99607 -+fi
       
 99608 -+
       
 99609 -+if test x"$libltdl_cv_need_uscore" = xyes; then
       
 99610 -+  AC_DEFINE([NEED_USCORE], [1],
       
 99611 -+    [Define if dlsym() requires a leading underscore in symbol names.])
       
 99612 -+fi
       
 99613 -+])# LT_FUNC_DLSYM_USCORE
       
 99614 -+
       
 99615 -+# Old name:
       
 99616 -+AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE])
       
 99617 -+dnl aclocal-1.4 backwards compatibility:
       
 99618 -+dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], [])
       
 99619 -+
       
 99620 - # Helper functions for option handling.                    -*- Autoconf -*-
       
 99621 - #
       
 99622 - #   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
       
 99623 - #   Written by Gary V. Vaughan, 2004
       
 99624 - #
       
 99625 - # This file is free software; the Free Software Foundation gives
       
 99626 - # unlimited permission to copy and/or distribute it, with or without
       
 99627 - # modifications, as long as this notice is preserved.
       
 99628 -diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
       
 99629 ---- a/js/src/ctypes/libffi/configure
       
 99630 -+++ b/js/src/ctypes/libffi/configure
       
 99631 -@@ -747,16 +747,17 @@ am__EXEEXT_TRUE
       
 99632 - LTLIBOBJS
       
 99633 - LIBOBJS
       
 99634 - toolexeclibdir
       
 99635 - toolexecdir
       
 99636 - FFI_DEBUG_FALSE
       
 99637 - FFI_DEBUG_TRUE
       
 99638 - TARGETDIR
       
 99639 - TARGET
       
 99640 -+sys_symbol_underscore
       
 99641 - HAVE_LONG_DOUBLE
       
 99642 - ALLOCA
       
 99643 - PA64_HPUX_FALSE
       
 99644 - PA64_HPUX_TRUE
       
 99645 - PA_HPUX_FALSE
       
 99646 - PA_HPUX_TRUE
       
 99647 - PA_LINUX_FALSE
       
 99648 - PA_LINUX_TRUE
       
 99649 -@@ -5045,23 +5046,23 @@ test -z "$NM" && NM=nm
       
 99650 - 
       
 99651 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
       
 99652 - $as_echo_n "checking the name lister ($NM) interface... " >&6; }
       
 99653 - if test "${lt_cv_nm_interface+set}" = set; then :
       
 99654 -   $as_echo_n "(cached) " >&6
       
 99655 - else
       
 99656 -   lt_cv_nm_interface="BSD nm"
       
 99657 -   echo "int some_variable = 0;" > conftest.$ac_ext
       
 99658 --  (eval echo "\"\$as_me:5053: $ac_compile\"" >&5)
       
 99659 -+  (eval echo "\"\$as_me:5054: $ac_compile\"" >&5)
       
 99660 -   (eval "$ac_compile" 2>conftest.err)
       
 99661 -   cat conftest.err >&5
       
 99662 --  (eval echo "\"\$as_me:5056: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
       
 99663 -+  (eval echo "\"\$as_me:5057: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
       
 99664 -   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
       
 99665 -   cat conftest.err >&5
       
 99666 --  (eval echo "\"\$as_me:5059: output\"" >&5)
       
 99667 -+  (eval echo "\"\$as_me:5060: output\"" >&5)
       
 99668 -   cat conftest.out >&5
       
 99669 -   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
       
 99670 -     lt_cv_nm_interface="MS dumpbin"
       
 99671 -   fi
       
 99672 -   rm -f conftest*
       
 99673 - fi
       
 99674 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
       
 99675 - $as_echo "$lt_cv_nm_interface" >&6; }
       
 99676 -@@ -6257,17 +6258,17 @@ ia64-*-hpux*)
       
 99677 - 	HPUX_IA64_MODE="64"
       
 99678 - 	;;
       
 99679 -     esac
       
 99680 -   fi
       
 99681 -   rm -rf conftest*
       
 99682 -   ;;
       
 99683 - *-*-irix6*)
       
 99684 -   # Find out which ABI we are using.
       
 99685 --  echo '#line 6265 "configure"' > conftest.$ac_ext
       
 99686 -+  echo '#line 6266 "configure"' > conftest.$ac_ext
       
 99687 -   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
       
 99688 -   (eval $ac_compile) 2>&5
       
 99689 -   ac_status=$?
       
 99690 -   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 99691 -   test $ac_status = 0; }; then
       
 99692 -     if test "$lt_cv_prog_gnu_ld" = yes; then
       
 99693 -       case `/usr/bin/file conftest.$ac_objext` in
       
 99694 - 	*32-bit*)
       
 99695 -@@ -7783,21 +7784,21 @@ else
       
 99696 -    # (2) before a word containing "conftest.", or (3) at the end.
       
 99697 -    # Note that $ac_compile itself does not contain backslashes and begins
       
 99698 -    # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 99699 -    # The option is referenced via a variable to avoid confusing sed.
       
 99700 -    lt_compile=`echo "$ac_compile" | $SED \
       
 99701 -    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 99702 -    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
       
 99703 -    -e 's:$: $lt_compiler_flag:'`
       
 99704 --   (eval echo "\"\$as_me:7791: $lt_compile\"" >&5)
       
 99705 -+   (eval echo "\"\$as_me:7792: $lt_compile\"" >&5)
       
 99706 -    (eval "$lt_compile" 2>conftest.err)
       
 99707 -    ac_status=$?
       
 99708 -    cat conftest.err >&5
       
 99709 --   echo "$as_me:7795: \$? = $ac_status" >&5
       
 99710 -+   echo "$as_me:7796: \$? = $ac_status" >&5
       
 99711 -    if (exit $ac_status) && test -s "$ac_outfile"; then
       
 99712 -      # The compiler can only warn and ignore the option if not recognized
       
 99713 -      # So say no if there are warnings other than the usual output.
       
 99714 -      $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
       
 99715 -      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 99716 -      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
       
 99717 -        lt_cv_prog_compiler_rtti_exceptions=yes
       
 99718 -      fi
       
 99719 -@@ -8122,21 +8123,21 @@ else
       
 99720 -    # (2) before a word containing "conftest.", or (3) at the end.
       
 99721 -    # Note that $ac_compile itself does not contain backslashes and begins
       
 99722 -    # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 99723 -    # The option is referenced via a variable to avoid confusing sed.
       
 99724 -    lt_compile=`echo "$ac_compile" | $SED \
       
 99725 -    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 99726 -    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
       
 99727 -    -e 's:$: $lt_compiler_flag:'`
       
 99728 --   (eval echo "\"\$as_me:8130: $lt_compile\"" >&5)
       
 99729 -+   (eval echo "\"\$as_me:8131: $lt_compile\"" >&5)
       
 99730 -    (eval "$lt_compile" 2>conftest.err)
       
 99731 -    ac_status=$?
       
 99732 -    cat conftest.err >&5
       
 99733 --   echo "$as_me:8134: \$? = $ac_status" >&5
       
 99734 -+   echo "$as_me:8135: \$? = $ac_status" >&5
       
 99735 -    if (exit $ac_status) && test -s "$ac_outfile"; then
       
 99736 -      # The compiler can only warn and ignore the option if not recognized
       
 99737 -      # So say no if there are warnings other than the usual output.
       
 99738 -      $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
       
 99739 -      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
       
 99740 -      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
       
 99741 -        lt_cv_prog_compiler_pic_works=yes
       
 99742 -      fi
       
 99743 -@@ -8227,21 +8228,21 @@ else
       
 99744 -    # Insert the option either (1) after the last *FLAGS variable, or
       
 99745 -    # (2) before a word containing "conftest.", or (3) at the end.
       
 99746 -    # Note that $ac_compile itself does not contain backslashes and begins
       
 99747 -    # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 99748 -    lt_compile=`echo "$ac_compile" | $SED \
       
 99749 -    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 99750 -    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
       
 99751 -    -e 's:$: $lt_compiler_flag:'`
       
 99752 --   (eval echo "\"\$as_me:8235: $lt_compile\"" >&5)
       
 99753 -+   (eval echo "\"\$as_me:8236: $lt_compile\"" >&5)
       
 99754 -    (eval "$lt_compile" 2>out/conftest.err)
       
 99755 -    ac_status=$?
       
 99756 -    cat out/conftest.err >&5
       
 99757 --   echo "$as_me:8239: \$? = $ac_status" >&5
       
 99758 -+   echo "$as_me:8240: \$? = $ac_status" >&5
       
 99759 -    if (exit $ac_status) && test -s out/conftest2.$ac_objext
       
 99760 -    then
       
 99761 -      # The compiler can only warn and ignore the option if not recognized
       
 99762 -      # So say no if there are warnings
       
 99763 -      $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
       
 99764 -      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
       
 99765 -      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
       
 99766 -        lt_cv_prog_compiler_c_o=yes
       
 99767 -@@ -8282,21 +8283,21 @@ else
       
 99768 -    # Insert the option either (1) after the last *FLAGS variable, or
       
 99769 -    # (2) before a word containing "conftest.", or (3) at the end.
       
 99770 -    # Note that $ac_compile itself does not contain backslashes and begins
       
 99771 -    # with a dollar sign (not a hyphen), so the echo should work correctly.
       
 99772 -    lt_compile=`echo "$ac_compile" | $SED \
       
 99773 -    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
       
 99774 -    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
       
 99775 -    -e 's:$: $lt_compiler_flag:'`
       
 99776 --   (eval echo "\"\$as_me:8290: $lt_compile\"" >&5)
       
 99777 -+   (eval echo "\"\$as_me:8291: $lt_compile\"" >&5)
       
 99778 -    (eval "$lt_compile" 2>out/conftest.err)
       
 99779 -    ac_status=$?
       
 99780 -    cat out/conftest.err >&5
       
 99781 --   echo "$as_me:8294: \$? = $ac_status" >&5
       
 99782 -+   echo "$as_me:8295: \$? = $ac_status" >&5
       
 99783 -    if (exit $ac_status) && test -s out/conftest2.$ac_objext
       
 99784 -    then
       
 99785 -      # The compiler can only warn and ignore the option if not recognized
       
 99786 -      # So say no if there are warnings
       
 99787 -      $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
       
 99788 -      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
       
 99789 -      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
       
 99790 -        lt_cv_prog_compiler_c_o=yes
       
 99791 -@@ -10652,17 +10653,17 @@ if test "${lt_cv_dlopen_self+set}" = set
       
 99792 -   $as_echo_n "(cached) " >&6
       
 99793 - else
       
 99794 -   	  if test "$cross_compiling" = yes; then :
       
 99795 -   lt_cv_dlopen_self=cross
       
 99796 - else
       
 99797 -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
       
 99798 -   lt_status=$lt_dlunknown
       
 99799 -   cat > conftest.$ac_ext <<_LT_EOF
       
 99800 --#line 10660 "configure"
       
 99801 -+#line 10661 "configure"
       
 99802 - #include "confdefs.h"
       
 99803 - 
       
 99804 - #if HAVE_DLFCN_H
       
 99805 - #include <dlfcn.h>
       
 99806 - #endif
       
 99807 - 
       
 99808 - #include <stdio.h>
       
 99809 - 
       
 99810 -@@ -10748,17 +10749,17 @@ if test "${lt_cv_dlopen_self_static+set}
       
 99811 -   $as_echo_n "(cached) " >&6
       
 99812 - else
       
 99813 -   	  if test "$cross_compiling" = yes; then :
       
 99814 -   lt_cv_dlopen_self_static=cross
       
 99815 - else
       
 99816 -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
       
 99817 -   lt_status=$lt_dlunknown
       
 99818 -   cat > conftest.$ac_ext <<_LT_EOF
       
 99819 --#line 10756 "configure"
       
 99820 -+#line 10757 "configure"
       
 99821 - #include "confdefs.h"
       
 99822 - 
       
 99823 - #if HAVE_DLFCN_H
       
 99824 - #include <dlfcn.h>
       
 99825 - #endif
       
 99826 - 
       
 99827 - #include <stdio.h>
       
 99828 - 
       
 99829 -@@ -12356,16 +12357,71 @@ fi
       
 99830 - $as_echo "$libffi_cv_as_string_pseudo_op" >&6; }
       
 99831 -     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
       
 99832 - 
       
 99833 - $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h
       
 99834 - 
       
 99835 -     fi
       
 99836 - fi
       
 99837 - 
       
 99838 -+if test x$TARGET = xX86_WIN64; then
       
 99839 -+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5
       
 99840 -+$as_echo_n "checking for _ prefix in compiled symbols... " >&6; }
       
 99841 -+if test "${lt_cv_sys_symbol_underscore+set}" = set; then :
       
 99842 -+  $as_echo_n "(cached) " >&6
       
 99843 -+else
       
 99844 -+  lt_cv_sys_symbol_underscore=no
       
 99845 -+  cat > conftest.$ac_ext <<_LT_EOF
       
 99846 -+void nm_test_func(){}
       
 99847 -+int main(){nm_test_func;return 0;}
       
 99848 -+_LT_EOF
       
 99849 -+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
       
 99850 -+  (eval $ac_compile) 2>&5
       
 99851 -+  ac_status=$?
       
 99852 -+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 99853 -+  test $ac_status = 0; }; then
       
 99854 -+    # Now try to grab the symbols.
       
 99855 -+    ac_nlist=conftest.nm
       
 99856 -+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist\""; } >&5
       
 99857 -+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5
       
 99858 -+  ac_status=$?
       
 99859 -+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
       
 99860 -+  test $ac_status = 0; } && test -s "$ac_nlist"; then
       
 99861 -+      # See whether the symbols have a leading underscore.
       
 99862 -+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
       
 99863 -+        lt_cv_sys_symbol_underscore=yes
       
 99864 -+      else
       
 99865 -+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
       
 99866 -+	  :
       
 99867 -+        else
       
 99868 -+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&5
       
 99869 -+        fi
       
 99870 -+      fi
       
 99871 -+    else
       
 99872 -+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&5
       
 99873 -+    fi
       
 99874 -+  else
       
 99875 -+    echo "configure: failed program was:" >&5
       
 99876 -+    cat conftest.c >&5
       
 99877 -+  fi
       
 99878 -+  rm -rf conftest*
       
 99879 -+
       
 99880 -+fi
       
 99881 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5
       
 99882 -+$as_echo "$lt_cv_sys_symbol_underscore" >&6; }
       
 99883 -+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
       
 99884 -+
       
 99885 -+
       
 99886 -+    if test "x$sys_symbol_underscore" = xyes; then
       
 99887 -+
       
 99888 -+$as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h
       
 99889 -+
       
 99890 -+    fi
       
 99891 -+fi
       
 99892 -+
       
 99893 - case "$target" in
       
 99894 -      # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
       
 99895 -      *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
 99896 - 
       
 99897 - $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
       
 99898 - 
       
 99899 -      ;;
       
 99900 - esac
       
 99901 -diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
       
 99902 ---- a/js/src/ctypes/libffi/configure.ac
       
 99903 -+++ b/js/src/ctypes/libffi/configure.ac
       
 99904 -@@ -310,16 +310,23 @@ if test x$TARGET = xX86 || test x$TARGET
       
 99905 - 		       [libffi_cv_as_string_pseudo_op=no])
       
 99906 -     ])
       
 99907 -     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
       
 99908 -        AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1,
       
 99909 - 	       [Define if your assembler supports .string.])
       
 99910 -     fi
       
 99911 - fi
       
 99912 - 
       
 99913 -+if test x$TARGET = xX86_WIN64; then
       
 99914 -+    LT_SYS_SYMBOL_USCORE
       
 99915 -+    if test "x$sys_symbol_underscore" = xyes; then
       
 99916 -+        AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
       
 99917 -+    fi
       
 99918 -+fi
       
 99919 -+
       
 99920 - case "$target" in
       
 99921 -      # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
       
 99922 -      *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
 99923 -        AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
       
 99924 -                  [Cannot use malloc on this target, so, we revert to
       
 99925 -                    alternative means])
       
 99926 -      ;;
       
 99927 - esac
       
 99928 -diff --git a/js/src/ctypes/libffi/src/x86/win64.S b/js/src/ctypes/libffi/src/x86/win64.S
       
 99929 ---- a/js/src/ctypes/libffi/src/x86/win64.S
       
 99930 -+++ b/js/src/ctypes/libffi/src/x86/win64.S
       
 99931 -@@ -227,32 +227,40 @@ ret_void$:
       
 99932 - 	xor	rax, rax
       
 99933 - 
       
 99934 - 	lea	rsp, QWORD PTR [rbp+16]
       
 99935 - 	pop	rbp
       
 99936 - 	ret	0
       
 99937 - ffi_call_win64 ENDP
       
 99938 - _TEXT	ENDS
       
 99939 - END
       
 99940 --#else        
       
 99941 -+
       
 99942 -+#else
       
 99943 -+
       
 99944 -+#ifdef SYMBOL_UNDERSCORE
       
 99945 -+#define SYMBOL_NAME(name) _##name
       
 99946 -+#else
       
 99947 -+#define SYMBOL_NAME(name) name
       
 99948 -+#endif
       
 99949 -+
       
 99950 - .text
       
 99951 - 
       
 99952 --.extern _ffi_closure_win64_inner
       
 99953 -+.extern SYMBOL_NAME(ffi_closure_win64_inner)
       
 99954 - 
       
 99955 - # ffi_closure_win64 will be called with these registers set:
       
 99956 - #    rax points to 'closure'
       
 99957 - #    r11 contains a bit mask that specifies which of the
       
 99958 - #    first four parameters are float or double
       
 99959 - #
       
 99960 - # It must move the parameters passed in registers to their stack location,
       
 99961 - # call ffi_closure_win64_inner for the actual work, then return the result.
       
 99962 - # 
       
 99963 - 	.balign 16
       
 99964 --        .globl _ffi_closure_win64	
       
 99965 --_ffi_closure_win64:     
       
 99966 -+        .globl SYMBOL_NAME(ffi_closure_win64)
       
 99967 -+SYMBOL_NAME(ffi_closure_win64):
       
 99968 - 	# copy register arguments onto stack
       
 99969 - 	test	$1,%r11
       
 99970 - 	jne	.Lfirst_is_float	
       
 99971 - 	mov	%rcx, 8(%rsp)
       
 99972 - 	jmp	.Lsecond
       
 99973 - .Lfirst_is_float:
       
 99974 - 	movlpd	%xmm0, 8(%rsp)
       
 99975 - 
       
 99976 -@@ -282,27 +290,27 @@ END
       
 99977 - 
       
 99978 - .Ldone:
       
 99979 - #.ALLOCSTACK 40
       
 99980 - 	sub	$40, %rsp
       
 99981 - #.ENDPROLOG
       
 99982 - 	mov	%rax, %rcx	# context is first parameter
       
 99983 - 	mov	%rsp, %rdx	# stack is second parameter
       
 99984 - 	add	$48, %rdx	# point to start of arguments
       
 99985 --	mov	$_ffi_closure_win64_inner, %rax
       
 99986 -+	mov	$SYMBOL_NAME(ffi_closure_win64_inner), %rax
       
 99987 - 	callq	*%rax		# call the real closure function
       
 99988 - 	add	$40, %rsp
       
 99989 - 	movq	%rax, %xmm0	# If the closure returned a float,
       
 99990 -                                 # ffi_closure_win64_inner wrote it to rax
       
 99991 - 	retq
       
 99992 - .ffi_closure_win64_end:
       
 99993 - 
       
 99994 - 	.balign 16
       
 99995 --        .globl	_ffi_call_win64
       
 99996 --_ffi_call_win64:        
       
 99997 -+        .globl	SYMBOL_NAME(ffi_call_win64)
       
 99998 -+SYMBOL_NAME(ffi_call_win64):
       
 99999 -         # copy registers onto stack
       
100000 - 	mov	%r9,32(%rsp)
       
100001 - 	mov	%r8,24(%rsp)
       
100002 - 	mov	%rdx,16(%rsp)
       
100003 - 	mov	%rcx,8(%rsp)
       
100004 -         #.PUSHREG rbp
       
100005 - 	push	%rbp
       
100006 -         #.ALLOCSTACK 48
       
100007 diff --git a/js/src/ctypes/patches-libffi/04-bug-756740.patch b/js/src/ctypes/patches-libffi/04-bug-756740.patch
       
100008 deleted file mode 100644
       
100009 --- a/js/src/ctypes/patches-libffi/04-bug-756740.patch
       
100010 +++ /dev/null
       
100011 @@ -1,44 +0,0 @@
       
100012 -diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
       
100013 ---- a/js/src/ctypes/libffi/configure
       
100014 -+++ b/js/src/ctypes/libffi/configure
       
100015 -@@ -11251,17 +11251,17 @@ case "$host" in
       
100016 - 
       
100017 -   m68k-*-*)
       
100018 - 	TARGET=M68K; TARGETDIR=m68k
       
100019 - 	;;
       
100020 - 
       
100021 -   mips-sgi-irix5.* | mips-sgi-irix6.*)
       
100022 - 	TARGET=MIPS; TARGETDIR=mips
       
100023 - 	;;
       
100024 --  mips*-*-linux*)
       
100025 -+  mips*-*linux*)
       
100026 - 	# Support 128-bit long double for NewABI.
       
100027 - 	HAVE_LONG_DOUBLE='defined(__mips64)'
       
100028 - 	TARGET=MIPS; TARGETDIR=mips
       
100029 - 	;;
       
100030 - 
       
100031 -   moxie-*-*)
       
100032 -         TARGET=MOXIE; TARGETDIR=moxie
       
100033 - 	;;
       
100034 -diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
       
100035 ---- a/js/src/ctypes/libffi/configure.ac
       
100036 -+++ b/js/src/ctypes/libffi/configure.ac
       
100037 -@@ -113,17 +113,17 @@ case "$host" in
       
100038 - 
       
100039 -   m68k-*-*)
       
100040 - 	TARGET=M68K; TARGETDIR=m68k
       
100041 - 	;;
       
100042 - 
       
100043 -   mips-sgi-irix5.* | mips-sgi-irix6.*)
       
100044 - 	TARGET=MIPS; TARGETDIR=mips
       
100045 - 	;;
       
100046 --  mips*-*-linux*)
       
100047 -+  mips*-*linux*)
       
100048 - 	# Support 128-bit long double for NewABI.
       
100049 - 	HAVE_LONG_DOUBLE='defined(__mips64)'
       
100050 - 	TARGET=MIPS; TARGETDIR=mips
       
100051 - 	;;
       
100052 - 
       
100053 -   moxie-*-*)
       
100054 -         TARGET=MOXIE; TARGETDIR=moxie
       
100055 - 	;;
       
100056 diff --git a/js/src/ctypes/patches-libffi/05-bug-644136.patch b/js/src/ctypes/patches-libffi/05-bug-644136.patch
       
100057 deleted file mode 100644
       
100058 --- a/js/src/ctypes/patches-libffi/05-bug-644136.patch
       
100059 +++ /dev/null
       
100060 @@ -1,31 +0,0 @@
       
100061 -# HG changeset patch
       
100062 -# User Siarhei Siamashka <siarhei.siamashka@gmail.com>
       
100063 -# Date 1314529402 -3600
       
100064 -# Node ID 0be4a94258c28b97a7e6e87b099359c759941b22
       
100065 -# Parent  f1cf848b1ff22bad8980b673cc4410a21c8bdf28
       
100066 -Bug 644136 - Add missing fpu directive to fix libffi build on ARM hardfloat systems; r=bsmedberg
       
100067 -
       
100068 -diff --git a/js/src/ctypes/libffi/src/arm/sysv.S b/js/src/ctypes/libffi/src/arm/sysv.S
       
100069 ---- a/js/src/ctypes/libffi/src/arm/sysv.S
       
100070 -+++ b/js/src/ctypes/libffi/src/arm/sysv.S
       
100071 -@@ -224,16 +224,20 @@ ARM_FUNC_START ffi_call_SYSV
       
100072 - LSYM(Lepilogue):
       
100073 - 	RETLDM	"r0-r3,fp"
       
100074 - 
       
100075 - .ffi_call_SYSV_end:
       
100076 - 	UNWIND .fnend
       
100077 -         .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
       
100078 - 
       
100079 - 
       
100080 -+/* Below are VFP hard-float ABI call and closure implementations.
       
100081 -+   Add VFP FPU directive here. */
       
100082 -+	.fpu	vfp
       
100083 -+
       
100084 - 	@ r0:   fn
       
100085 - 	@ r1:   &ecif
       
100086 - 	@ r2:   cif->bytes
       
100087 - 	@ r3:   fig->flags
       
100088 - 	@ sp+0: ecif.rvalue
       
100089 - 
       
100090 - ARM_FUNC_START ffi_call_VFP
       
100091 - 	@ Save registers
       
100092 diff --git a/js/src/ctypes/patches-libffi/06-bug-778414.patch b/js/src/ctypes/patches-libffi/06-bug-778414.patch
       
100093 deleted file mode 100644
       
100094 --- a/js/src/ctypes/patches-libffi/06-bug-778414.patch
       
100095 +++ /dev/null
       
100096 @@ -1,99 +0,0 @@
       
100097 -diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
       
100098 ---- a/js/src/ctypes/libffi/configure
       
100099 -+++ b/js/src/ctypes/libffi/configure
       
100100 -@@ -12422,26 +12422,42 @@ case "$target" in
       
100101 -      *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
100102 - 
       
100103 - $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
       
100104 - 
       
100105 -      ;;
       
100106 - esac
       
100107 - 
       
100108 - if test x$TARGET = xX86_64; then
       
100109 --    { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
       
100110 --$as_echo_n "checking assembler supports unwind section type... " >&6; }
       
100111 -+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5
       
100112 -+$as_echo_n "checking toolchain supports unwind section type... " >&6; }
       
100113 - if test "${libffi_cv_as_x86_64_unwind_section_type+set}" = set; then :
       
100114 -   $as_echo_n "(cached) " >&6
       
100115 - else
       
100116 - 
       
100117 --	libffi_cv_as_x86_64_unwind_section_type=yes
       
100118 --	echo '.section .eh_frame,"a",@unwind' > conftest.s
       
100119 --	if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
       
100120 --	    libffi_cv_as_x86_64_unwind_section_type=no
       
100121 -+        cat  > conftest1.s << EOF
       
100122 -+.text
       
100123 -+.globl foo
       
100124 -+foo:
       
100125 -+jmp bar
       
100126 -+.section .eh_frame,"a",@unwind
       
100127 -+bar:
       
100128 -+EOF
       
100129 -+
       
100130 -+        cat > conftest2.c  << EOF
       
100131 -+extern void foo();
       
100132 -+int main(){foo();}
       
100133 -+EOF
       
100134 -+
       
100135 -+	libffi_cv_as_x86_64_unwind_section_type=no
       
100136 -+	# we ensure that we can compile _and_ link an assembly file containing an @unwind section
       
100137 -+	# since the compiler can support it and not the linker (ie old binutils)
       
100138 -+	if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
       
100139 -+           $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
       
100140 -+	    libffi_cv_as_x86_64_unwind_section_type=yes
       
100141 - 	fi
       
100142 - 
       
100143 - fi
       
100144 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_64_unwind_section_type" >&5
       
100145 - $as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; }
       
100146 -     if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
       
100147 - 
       
100148 - $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h
       
100149 -diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
       
100150 ---- a/js/src/ctypes/libffi/configure.ac
       
100151 -+++ b/js/src/ctypes/libffi/configure.ac
       
100152 -@@ -327,22 +327,38 @@ case "$target" in
       
100153 -      *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
       
100154 -        AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
       
100155 -                  [Cannot use malloc on this target, so, we revert to
       
100156 -                    alternative means])
       
100157 -      ;;
       
100158 - esac
       
100159 - 
       
100160 - if test x$TARGET = xX86_64; then
       
100161 --    AC_CACHE_CHECK([assembler supports unwind section type],
       
100162 -+    AC_CACHE_CHECK([toolchain supports unwind section type],
       
100163 - 	libffi_cv_as_x86_64_unwind_section_type, [
       
100164 --	libffi_cv_as_x86_64_unwind_section_type=yes
       
100165 --	echo '.section .eh_frame,"a",@unwind' > conftest.s
       
100166 --	if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
       
100167 --	    libffi_cv_as_x86_64_unwind_section_type=no
       
100168 -+        cat  > conftest1.s << EOF
       
100169 -+.text
       
100170 -+.globl foo
       
100171 -+foo:
       
100172 -+jmp bar
       
100173 -+.section .eh_frame,"a",@unwind
       
100174 -+bar:
       
100175 -+EOF
       
100176 -+
       
100177 -+        cat > conftest2.c  << EOF
       
100178 -+extern void foo();
       
100179 -+int main(){foo();}
       
100180 -+EOF
       
100181 -+
       
100182 -+	libffi_cv_as_x86_64_unwind_section_type=no
       
100183 -+	# we ensure that we can compile _and_ link an assembly file containing an @unwind section
       
100184 -+	# since the compiler can support it and not the linker (ie old binutils)
       
100185 -+	if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
       
100186 -+           $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
       
100187 -+	    libffi_cv_as_x86_64_unwind_section_type=yes
       
100188 - 	fi
       
100189 - 	])
       
100190 -     if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
       
100191 - 	AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
       
100192 - 		  [Define if your assembler supports unwind section type.])
       
100193 -     fi
       
100194 - fi
       
100195 - 
       
100196 diff --git a/js/src/ctypes/patches-libffi/07-bug-928381.patch b/js/src/ctypes/patches-libffi/07-bug-928381.patch
       
100197 deleted file mode 100644
       
100198 --- a/js/src/ctypes/patches-libffi/07-bug-928381.patch
       
100199 +++ /dev/null
       
100200 @@ -1,31 +0,0 @@
       
100201 -# HG changeset patch
       
100202 -# User Landry Breuil <landry@openbsd.org>
       
100203 -# Date 1382105758 -7200
       
100204 -#      Fri Oct 18 16:15:58 2013 +0200
       
100205 -# Node ID 5f82dae8c495a7fddf5ed935eb2a8be7f47b9bd8
       
100206 -# Parent  d50df2233e95f4d45b35eddbfbe84bcdda6a11e2
       
100207 -Bug 928381 - ctypes/libffi: Fix stack alignment on *BSD/i386 r=glandium
       
100208 -
       
100209 -diff --git a/js/src/ctypes/libffi/src/x86/freebsd.S b/js/src/ctypes/libffi/src/x86/freebsd.S
       
100210 ---- a/js/src/ctypes/libffi/src/x86/freebsd.S
       
100211 -+++ b/js/src/ctypes/libffi/src/x86/freebsd.S
       
100212 -@@ -44,16 +44,19 @@ ffi_call_SYSV:
       
100213 -         pushl %ebp
       
100214 - .LCFI0:
       
100215 -         movl  %esp,%ebp
       
100216 - .LCFI1:
       
100217 - 	/* Make room for all of the new args.  */
       
100218 - 	movl  16(%ebp),%ecx
       
100219 - 	subl  %ecx,%esp
       
100220 - 
       
100221 -+	/* Align the stack pointer to 16-bytes */
       
100222 -+	andl  $0xfffffff0, %esp
       
100223 -+
       
100224 - 	movl  %esp,%eax
       
100225 - 
       
100226 - 	/* Place all of the ffi_prep_args in position  */
       
100227 - 	pushl 12(%ebp)
       
100228 - 	pushl %eax
       
100229 - 	call  *8(%ebp)
       
100230 - 
       
100231 - 	/* Return stack to previous state and call the function  */
       
100232 diff --git a/js/src/ctypes/patches-libffi/08-bug-928390.patch b/js/src/ctypes/patches-libffi/08-bug-928390.patch
       
100233 deleted file mode 100644
       
100234 --- a/js/src/ctypes/patches-libffi/08-bug-928390.patch
       
100235 +++ /dev/null
       
100236 @@ -1,135 +0,0 @@
       
100237 -# HG changeset patch
       
100238 -# Parent e5f7246bf2158ac88b3e0727811925c467226d2e
       
100239 -# User Landry Breuil <landry@openbsd.org>
       
100240 -Bug 928390: Partially backport libffi upstream 049d8386ff for OpenBSD/mips/hppa. r=glandium
       
100241 -
       
100242 -diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
       
100243 ---- a/js/src/ctypes/libffi/configure
       
100244 -+++ b/js/src/ctypes/libffi/configure
       
100245 -@@ -11208,17 +11208,17 @@ case "$host" in
       
100246 -   cris-*-*)
       
100247 - 	TARGET=LIBFFI_CRIS; TARGETDIR=cris
       
100248 - 	;;
       
100249 - 
       
100250 -   frv-*-*)
       
100251 - 	TARGET=FRV; TARGETDIR=frv
       
100252 - 	;;
       
100253 - 
       
100254 --  hppa*-*-linux* | parisc*-*-linux*)
       
100255 -+  hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*)
       
100256 - 	TARGET=PA_LINUX; TARGETDIR=pa
       
100257 - 	;;
       
100258 -   hppa*64-*-hpux*)
       
100259 - 	TARGET=PA64_HPUX; TARGETDIR=pa
       
100260 - 	;;
       
100261 -   hppa*-*-hpux*)
       
100262 - 	TARGET=PA_HPUX; TARGETDIR=pa
       
100263 - 	;;
       
100264 -@@ -11251,17 +11251,17 @@ case "$host" in
       
100265 - 
       
100266 -   m68k-*-*)
       
100267 - 	TARGET=M68K; TARGETDIR=m68k
       
100268 - 	;;
       
100269 - 
       
100270 -   mips-sgi-irix5.* | mips-sgi-irix6.*)
       
100271 - 	TARGET=MIPS; TARGETDIR=mips
       
100272 - 	;;
       
100273 --  mips*-*linux*)
       
100274 -+  mips*-*linux* | mips*-*-openbsd*)
       
100275 - 	# Support 128-bit long double for NewABI.
       
100276 - 	HAVE_LONG_DOUBLE='defined(__mips64)'
       
100277 - 	TARGET=MIPS; TARGETDIR=mips
       
100278 - 	;;
       
100279 - 
       
100280 -   moxie-*-*)
       
100281 -         TARGET=MOXIE; TARGETDIR=moxie
       
100282 - 	;;
       
100283 -diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
       
100284 ---- a/js/src/ctypes/libffi/configure.ac
       
100285 -+++ b/js/src/ctypes/libffi/configure.ac
       
100286 -@@ -70,17 +70,17 @@ case "$host" in
       
100287 -   cris-*-*)
       
100288 - 	TARGET=LIBFFI_CRIS; TARGETDIR=cris
       
100289 - 	;;
       
100290 - 
       
100291 -   frv-*-*)
       
100292 - 	TARGET=FRV; TARGETDIR=frv
       
100293 - 	;;
       
100294 - 
       
100295 --  hppa*-*-linux* | parisc*-*-linux*)
       
100296 -+  hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*)
       
100297 - 	TARGET=PA_LINUX; TARGETDIR=pa
       
100298 - 	;;
       
100299 -   hppa*64-*-hpux*)
       
100300 - 	TARGET=PA64_HPUX; TARGETDIR=pa
       
100301 - 	;;
       
100302 -   hppa*-*-hpux*)
       
100303 - 	TARGET=PA_HPUX; TARGETDIR=pa
       
100304 - 	;;
       
100305 -@@ -113,17 +113,17 @@ case "$host" in
       
100306 - 
       
100307 -   m68k-*-*)
       
100308 - 	TARGET=M68K; TARGETDIR=m68k
       
100309 - 	;;
       
100310 - 
       
100311 -   mips-sgi-irix5.* | mips-sgi-irix6.*)
       
100312 - 	TARGET=MIPS; TARGETDIR=mips
       
100313 - 	;;
       
100314 --  mips*-*linux*)
       
100315 -+  mips*-*linux* | mips*-*-openbsd*)
       
100316 - 	# Support 128-bit long double for NewABI.
       
100317 - 	HAVE_LONG_DOUBLE='defined(__mips64)'
       
100318 - 	TARGET=MIPS; TARGETDIR=mips
       
100319 - 	;;
       
100320 - 
       
100321 -   moxie-*-*)
       
100322 -         TARGET=MOXIE; TARGETDIR=moxie
       
100323 - 	;;
       
100324 -diff --git a/js/src/ctypes/libffi/src/mips/ffi.c b/js/src/ctypes/libffi/src/mips/ffi.c
       
100325 ---- a/js/src/ctypes/libffi/src/mips/ffi.c
       
100326 -+++ b/js/src/ctypes/libffi/src/mips/ffi.c
       
100327 -@@ -32,17 +32,21 @@
       
100328 - 
       
100329 - #ifdef __GNUC__
       
100330 - #  if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))
       
100331 - #    define USE__BUILTIN___CLEAR_CACHE 1
       
100332 - #  endif
       
100333 - #endif
       
100334 - 
       
100335 - #ifndef USE__BUILTIN___CLEAR_CACHE
       
100336 --#include <sys/cachectl.h>
       
100337 -+#  if defined(__OpenBSD__)
       
100338 -+#    include <mips64/sysarch.h>
       
100339 -+#  else
       
100340 -+#    include <sys/cachectl.h>
       
100341 -+#  endif
       
100342 - #endif
       
100343 - 
       
100344 - #ifdef FFI_DEBUG
       
100345 - # define FFI_MIPS_STOP_HERE() ffi_stop_here()
       
100346 - #else
       
100347 - # define FFI_MIPS_STOP_HERE() do {} while(0)
       
100348 - #endif
       
100349 - 
       
100350 -diff --git a/js/src/ctypes/libffi/src/mips/ffitarget.h b/js/src/ctypes/libffi/src/mips/ffitarget.h
       
100351 ---- a/js/src/ctypes/libffi/src/mips/ffitarget.h
       
100352 -+++ b/js/src/ctypes/libffi/src/mips/ffitarget.h
       
100353 -@@ -24,17 +24,17 @@
       
100354 - 
       
100355 -    ----------------------------------------------------------------------- */
       
100356 - 
       
100357 - #ifndef LIBFFI_TARGET_H
       
100358 - #define LIBFFI_TARGET_H
       
100359 - 
       
100360 - #ifdef linux
       
100361 - # include <asm/sgidefs.h>
       
100362 --#else
       
100363 -+#elif !defined(__OpenBSD__)
       
100364 - # include <sgidefs.h>
       
100365 - #endif
       
100366 - #  ifndef _ABIN32
       
100367 - #    define _ABIN32 _MIPS_SIM_NABI32
       
100368 - #  endif
       
100369 - #  ifndef _ABI64
       
100370 - #    define _ABI64 _MIPS_SIM_ABI64
       
100371 - #  endif
       
100372